第二章 Transformer 架构(注意力机制)

注意力机制

核心思想

  注意力机制源于计算机视觉,其核心思想是模仿人类的认知过程:在处理信息时,并非对所有内容一视同仁,而是将“注意力”集中在最关键、最相关的部分上,从而提高处理效率和准确性。在NLP中,这意味着模型在处理一个词时,可以动态地关注输入序列中其他词的重要性。

为什么需要注意力机制?(RNN的局限性)

在Transformer出现之前,RNN及其变体(如LSTM)是处理序列数据的主流模型,但它们存在两大固有缺陷:

  1. 并行计算能力差:RNN必须按时间步顺序处理序列,前一个时刻的计算结果是后一个时刻的输入。这种串行模式无法充分利用GPU的并行计算能力,导致训练速度慢、效率低下。
  2. 长距离依赖捕捉困难:随着序列长度的增加,早期信息在传递过程中容易“遗忘”或“稀释”,导致模型难以捕捉相距较远的词之间的依赖关系(梯度消失/爆炸问题)。尽管LSTM通过门机制有所缓解,但问题依然存在。

注意力机制,特别是Transformer模型,正是为了解决这两个问题而被提出和应用的。

注意力机制的核心三要素

注意力机制通过三个核心变量进行计算:

  1. Query (查询值 Q):代表当前需要关注或查询的内容,可以理解为“我在找什么?”
  2. Key (键值 K):代表被查询信息的关键部分,用于与Query匹配,可以理解为“可供匹配的索引是什么?”
  3. Value (真值 V):代表被查询信息的实际内容,是最终需要提取的信息,可以理解为“索引对应的具体内容是什么?”

计算逻辑:通过计算Query与每个Key的相似度,得到一组“注意力分数”,再将这组分数作为权重,对所有的Value进行加权求和,最终得到一个融合了全局信息的、聚焦于Query的输出。

注意力机制的数学公式推导与理解

我们可以通过一个“查字典”的类比来理解其计算过程:

  1. 基础模型:精确匹配(如Query=“apple” -> Key=“apple” -> Value=10)。这无法处理模糊概念(如Query=“fruit”)。
  2. 引入权重:对于模糊概念,我们为每个Key分配一个权重(如apple:0.6, banana:0.4, chair:0),然后加权求和Value(0.6*10 + 0.4*5 + 0*2 = 8)。这个权重就是注意力分数。
  3. 如何计算权重?:利用词向量。语义相近的词,其向量点积(q ⋅ k)结果更大。因此,我们可以用Query向量与每个Key向量的点积来衡量相似度。
  4. 形成矩阵运算:
    • 将所有Key向量堆叠成矩阵 K,所有Value向量堆叠成矩阵 V。
    • 将所有Query向量堆叠成矩阵 Q。
    • 计算相似度矩阵:QK^T(Q的每一行与K的每一行做点积)。
  5. 归一化权重:通过 Softmax 函数将相似度矩阵转换为每一行和为1的权重矩阵,得到最终的注意力分数。
  6. 加权求和:将权重矩阵与Value矩阵 V 相乘,得到最终输出。

最终公式:
为了防止点积结果过大导致Softmax梯度消失(当向量维度d_k较大时),需要对点积结果进行缩放(除以√d_k)。

Attention(Q, K, V) = softmax( (QK^T) / √d_k ) V

这个公式是Transformer架构的核心,它允许模型以可并行的方式,动态地计算序列中任意两个位置之间的依赖关系,完美地解决了RNN的两大缺陷。

posted @ 2025-11-14 23:57  十一分平庸  阅读(46)  评论(0)    收藏  举报