第二章 Transformer 架构(注意力机制)
注意力机制
核心思想
注意力机制源于计算机视觉,其核心思想是模仿人类的认知过程:在处理信息时,并非对所有内容一视同仁,而是将“注意力”集中在最关键、最相关的部分上,从而提高处理效率和准确性。在NLP中,这意味着模型在处理一个词时,可以动态地关注输入序列中其他词的重要性。
为什么需要注意力机制?(RNN的局限性)
在Transformer出现之前,RNN及其变体(如LSTM)是处理序列数据的主流模型,但它们存在两大固有缺陷:
- 并行计算能力差:RNN必须按时间步顺序处理序列,前一个时刻的计算结果是后一个时刻的输入。这种串行模式无法充分利用GPU的并行计算能力,导致训练速度慢、效率低下。
- 长距离依赖捕捉困难:随着序列长度的增加,早期信息在传递过程中容易“遗忘”或“稀释”,导致模型难以捕捉相距较远的词之间的依赖关系(梯度消失/爆炸问题)。尽管LSTM通过门机制有所缓解,但问题依然存在。
注意力机制,特别是Transformer模型,正是为了解决这两个问题而被提出和应用的。
注意力机制的核心三要素
注意力机制通过三个核心变量进行计算:
- Query (查询值 Q):代表当前需要关注或查询的内容,可以理解为“我在找什么?”
- Key (键值 K):代表被查询信息的关键部分,用于与Query匹配,可以理解为“可供匹配的索引是什么?”
- Value (真值 V):代表被查询信息的实际内容,是最终需要提取的信息,可以理解为“索引对应的具体内容是什么?”
计算逻辑:通过计算Query与每个Key的相似度,得到一组“注意力分数”,再将这组分数作为权重,对所有的Value进行加权求和,最终得到一个融合了全局信息的、聚焦于Query的输出。
注意力机制的数学公式推导与理解
我们可以通过一个“查字典”的类比来理解其计算过程:
- 基础模型:精确匹配(如Query=“apple” -> Key=“apple” -> Value=10)。这无法处理模糊概念(如Query=“fruit”)。
- 引入权重:对于模糊概念,我们为每个Key分配一个权重(如apple:0.6, banana:0.4, chair:0),然后加权求和Value(
0.6*10 + 0.4*5 + 0*2 = 8)。这个权重就是注意力分数。 - 如何计算权重?:利用词向量。语义相近的词,其向量点积(
q ⋅ k)结果更大。因此,我们可以用Query向量与每个Key向量的点积来衡量相似度。 - 形成矩阵运算:
- 将所有Key向量堆叠成矩阵 K,所有Value向量堆叠成矩阵 V。
- 将所有Query向量堆叠成矩阵 Q。
- 计算相似度矩阵:
QK^T(Q的每一行与K的每一行做点积)。
- 归一化权重:通过 Softmax 函数将相似度矩阵转换为每一行和为1的权重矩阵,得到最终的注意力分数。
- 加权求和:将权重矩阵与Value矩阵 V 相乘,得到最终输出。
最终公式:
为了防止点积结果过大导致Softmax梯度消失(当向量维度d_k较大时),需要对点积结果进行缩放(除以√d_k)。
Attention(Q, K, V) = softmax( (QK^T) / √d_k ) V
这个公式是Transformer架构的核心,它允许模型以可并行的方式,动态地计算序列中任意两个位置之间的依赖关系,完美地解决了RNN的两大缺陷。

浙公网安备 33010602011771号