大模型基础--Transformer自注意力机制
1. Transformer注意力的哲学前提
“You shall know a word by the company it keeps.” —— J.R. Firth (1957)
“分布假设”——即一个词的含义由它周围的词决定。不需要看定义:不需要查字典知道“苹果”是什么,只需要看它经常和“吃、水果、手机、乔布斯”一起出现,就能推断它的语义范畴。数学化表达:词的语义表示就是该词上下文概率分布的统计量。
Transformer的自注意机制学习词和语句的关系。词的含义随句子不同而动态变化,句子随着词的变化也动态变化。通过建模句子中词的权重,调节词含义在句子中的贡献,准确学习句子语义。通过大规模学习句子语义的过程,掌握语言统计规律。
2. 自注意力机制
自注意力机制(Self-Attention)是 Transformer核心结构之一,它的作用是在序列内部建立各位置之间的语义关系,使模型能够为每个位置生成融合全局信息的表示。之所以被称为“自”注意力,是因为模型在计算每个位置的表示时,所参考的信息全部来自同一个输入序列本身。
1)自注意力计算过程
(1)生成Query、Key、Value向量
自注意力机制的第一步,是将输入序列中的每个位置表示映射为三个不同的向量,分别是 查询(Query,绿色)、键(Key,深红色) 和 值(Value,黄色)。

Query:表示当前词的用于发起注意力匹配的向量;Wq是可学习的矩阵,学习的方向是词尽可能反应词自身语义。
Key:表示序列中每个位置的内容标识,用于与 Query 进行匹配;Wk是可学习的矩阵,学习的方向是词尽可能反应序列整体语义。
Value:表示该位置携带的信息,用于加权汇总得到新的表示。Wv是可学习的矩阵,学习的方向是均匀的通过词反应序列整体语义(每个词对语义的贡献相同)。
(2)计算位置间相关性
使用每个位置的 Query 向量与所有位置的 Key 向量进行相关性评分。

评分函数采用向量点积形式。由于在高维空间中,点积的数值可能过大,会影响 softmax 的稳定性,因此在实际计算中对结果进行了缩放。最终的评分函数为:
dk是key向量的维度,用于缩放点积的幅度.这个分数越大,表示第 i 个位置越应该关注第 j 个位置的信息。
点积评分是注意力机制中最简单、最直接的一种相关性评分方法。其含义可以理解为:如果两个向量方向越一致(即越接近),它们的点积就越大,表示相关性越强,模型应当给予更多注意力。
数学理论基础来源于
。
假设向量A中的Ai符合标准正态分布均值为 0、方差为 1和向量B中的Bi符合标准正态分布均值为 0、方差为 1:
第一步Ai2的分布就趋向于自由度为dk的卡方分布,所以Ai2均值为dk。Bi2的分布就趋向于自由度为dk的卡方分布,所以Bi2均值为dk。
第二步
等于dk2,dk为常量,矩阵中的所有向量的维度必然相同。
从上面得出只要Query和Key内的各个向量里面的元素在向量内部的分布符合标准正态分布,
不仅可以表示相似性,并且相似性已经量化,具有可比性。
假设Query矩阵中向量q,q中的qi符合标准正态分布均值为 0、方差为 1和Key矩阵中向量k,向量k中的kj符合标准正态分布均值为 0、方差为 1:
第一步
得到的新向量s,s内的元素的分布服从于自由度为dk的正态分布,所以向量s分布的特点是均值为0,方差为dk.
第二步随着dk的增长,就会出现比较大的值Vmax。考虑到下一步模型会使用 softmax 函数进行归一化,参看下面的公式,eVmax值比例会接近于1,向量内的其他元素几乎贡献梯度为0。

第三步为了解决上面问题,将向量s的分布标准化,只需要将s各个元素除以
(s的标准差)。新的s分布服从标准正态分布。
从上面得出只要Query和Key内的各个向量里面的元素在向量内部的分布符合标准正态分布,
解决了softmax 函数的梯度问题,score也服从标准正态分布。
上面的结论都是基于Query矩阵中向量q,q中的qi服从标准正态分布和Key矩阵中向量k,向量k中的kj服从标准正态分布。所以这就是X的归一化和W的初始化之后的分布,就需要特别的设计.
第一步X进行标准归一化:


第二步W的初始化方式选择正态分布,均值为0,方差未知.假设方差是1,则W服从标准正态分布。则xi.wj符合正态分布,均值为0,方差为dk。为了使xi.wj服从标准正态分布,所以wj除以
。所以得出W的初始化方式选择正态分布,均值为0,标准差为(1/
)。Xavier正态分布初始化:均值为0,标准差为
。He正态分布初始化:均值为0,标准差为
的正态分布(Kaiming方法通过设置标准差
来补偿GELU等激活函数对信号方差的减半效应)。
可以从GPT-2的重大架构创新之一Pre-LayerNorm得到验证。

(3)计算注意力权重
在得到每个位置与所有位置之间的相关性评分后,模型会使用 softmax 函数进行归一化,确保每个位置对所有位置的关注程度之和为 1,从而形成一个有效的加权分布。

(4)加权汇总生成输出
模型会根据注意力权重对所有位置的 Value 向量进行加权求和,得到每个位置融合全局信息后的新表示。

综上所述整个自注意力机制的完整的计算公式如下:


2)多头自注意力计算过程
自然语言本身具有高度的语义复杂性,一个句子往往同时包含多种类型的语义关系。为此,Transformer 引入了多头注意力机制(Multi-Head Attention)。其核心思想是通过不同注意力头分别专注于不同的语义关系,最后将各头的输出拼接融合。
多头注意力的计算过程如下:
(1)分别计算各头注意力
每个 Self-Attention Head 独立计算一套注意力输出:

多个输出矩阵按维度拼接,再乘以Wo得到最终多头注意力的输出:

3. 从模型的训练过程可以知道模型到底学习到了什么。
GPT仅使用Transformer解码器,解码器的核心就是Masked 自注意力。模型预训练任务是基于前文,预测当前位置应出现的词。
BERT仅适用Transformer编码器。模型预训练核心任务之一就是掩码语言模型(Masked Language Modeling, MLM)。
T5在完整的 Transformer 编码器-解码器结构。模型的预训练目标被称为Corrupted span prediction,具体过程如下:1)随机遮盖输入文本中的若干连续片段(span);2)将每个被遮盖的连续片段替换为一个个特殊token;3)令模型学习生成这些遮盖片段的内容,作为输出序列。
可以得出的结论:预训练就是在践行一个词的含义由它周围的词决定。而注意力机制就是在建模一个词和其他周围词关系的过程。自注意机制从输入的语料学习语言规律,随着输入增多,就学习到丰富的语言规律。
- 点赞
- 收藏
- 关注作者
评论(0)