From f130e6e39c590888e2427f4488883ed9142ef119 Mon Sep 17 00:00:00 2001 From: Ning Guo Date: Tue, 29 Jul 2025 11:29:05 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E8=A1=A5=E5=85=85=E6=BF=80=E6=B4=BB?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E8=AF=B4=E6=98=8E,=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=96=87=E6=9C=AC=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cn-Book/2.处理文本数据.md | 2 +- cn-Book/3.实现注意力机制.md | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cn-Book/2.处理文本数据.md b/cn-Book/2.处理文本数据.md index 3b857c2..0e4d2fc 100644 --- a/cn-Book/2.处理文本数据.md +++ b/cn-Book/2.处理文本数据.md @@ -869,7 +869,7 @@ Targets: > > GPT 类模型(以及其他深度神经网络)是基于大量的矩阵运算和数值计算构建的,尤其是神经元之间的连接权重和偏置在训练过程中不断更新。这些运算要求输入的数据是**数值形式的向量**,因为神经网络只能对数值数据进行有效计算,而无法直接处理原始的离散文字数据(如单词、句子)。 > -> + **向量表示: **通过将每个单词、句子或段落转换为连续向量(Embedding),可以在高维空间中表示文本的语义关系。例如,通过词嵌入(如 Word2Vec、GloVe)或上下文嵌入(如 GPT 中的词嵌入层),每个单词都被转换为一个向量,这个向量可以用于神经网络的计算。 +> + **向量表示**:通过将每个单词、句子或段落转换为连续向量(Embedding),可以在高维空间中表示文本的语义关系。例如,通过词嵌入(如 Word2Vec、GloVe)或上下文嵌入(如 GPT 中的词嵌入层),每个单词都被转换为一个向量,这个向量可以用于神经网络的计算。 > > 2. **向量嵌入的作用** > diff --git a/cn-Book/3.实现注意力机制.md b/cn-Book/3.实现注意力机制.md index d8cab54..82ce27d 100644 --- a/cn-Book/3.实现注意力机制.md +++ b/cn-Book/3.实现注意力机制.md @@ -345,6 +345,16 @@ Sum: tensor(1.) > + **便于优化**:在分类任务中,Softmax 输出的概率分布可与真实的标签概率进行比较,从而计算交叉熵损失。交叉熵损失的梯度较为稳定,便于模型的优化。 > + **概率解释**:Softmax 输出可以解释为“模型对每个类别的信心”,使得输出直观可理解。 > + **与交叉熵的结合**:Softmax 与交叉熵损失函数结合效果特别好,可以直接将模型预测的概率分布与真实标签比较,从而更快收敛,效果更好。 +> +> 4. **激活函数** +> +> 激活函数(`Activation Function`)是神经网络中的核心组件,它的作用类似于神经元的“**开关**”或“**过滤器**”,负责决定神经元**是否被激活**(即输出信号),以及**激活的程度**。 +> +> 在神经网络中,激活函数通常用于将输入信号转换为输出信号,从而实现**非线性变换**。 常见的激活函数包括: +> +> + **Sigmoid**:将输入信号转换为0到1之间的概率值,常用于二分类问题。 +> + **ReLU**:将输入信号转换为0到正无穷之间的值,常用于多分类问题。 +> + **Softmax**:将输入信号转换为0到1之间的概率值,常用于多分类问题。 现在我们已经计算出了归一化的注意力权重,接下来可以执行图 3.10 所示的最后一步:通过将嵌入后的输入 token x(i) 与相应的注意力权重相乘,再将所得向量求和来计算上下文向量 z(2)。 @@ -629,7 +639,7 @@ print(attn_score_22) > > **Kit = Wk * (Eit + Posit)** > -> 其中 **Ecat**和**Eit**是这两个词的嵌入向量,表示该词的基本语义信息,在不同的上下文中是固定的,根据公式可知,要使最终算出的**score_cat_it**与上下文语义相关,最重要的是**Wq** 和**Wk**这两个权重参数应该能反映出不同上下文语义的相关性。在标准的自注意力机制中,W、K、V向量都是固定的,然而,由于 GPT 模型是由多层自注意力模块堆叠而成,每一层都会根据当前输入和上下文信息,动态调整查询、键和值向量的权重矩阵。因此,即使初始的词嵌入和权重矩阵是固定的,经过多层处理后,模型能够生成与当前上下文相关的 Q、K、V 向量权重矩阵,最终计算出的Q、K、V 向量也就能反映出上下文的语义了。GPT多层的实现的细节后文会详述。 +> 其中 **Ecat**和**Eit**是这两个词的嵌入向量,表示该词的基本语义信息,在不同的上下文中是固定的,根据公式可知,要使最终算出的**score_cat_it**与上下文语义相关,最重要的是**Wq** 和 **Wk** 这两个权重参数应该能反映出不同上下文语义的相关性。在标准的自注意力机制中,W、K、V向量都是固定的,然而,由于 GPT 模型是由多层自注意力模块堆叠而成,每一层都会根据当前输入和上下文信息,动态调整查询、键和值向量的**权重矩阵**。因此,即使初始的词嵌入和权重矩阵是固定的,经过多层处理后,模型能够生成与当前上下文相关的 Q、K、V 向量权重矩阵,最终计算出的Q、K、V 向量也就能反映出上下文的语义了。GPT多层的实现的细节后文会详述。 我们可以再次通过矩阵乘法将其应用到所有注意力得分的计算: