Skip to main content

Transformer 注意力机制的本质

Transformer 架构中,注意力的本质可以用一句话概括:基于相关性的加权求和(Weighted Sum based on Relevance)

与其把它看作一种神秘的认知过程,不如从信息检索数据压缩的角度来理解。它的核心任务是在处理当前信息时,动态地决定从上下文的"记忆库"中提取多少相关信息来丰富当前的表征。


1. 核心机制:软寻址(Soft Addressing)

在传统的计算机内存中,我们通过具体的地址(如 0x1234)读取数据,这是"硬寻址"。而在 Transformer 中,注意力机制是一种基于内容的软寻址

为了实现这一点,Transformer 引入了三个核心向量的概念(灵感来自数据库查询):

  • Query (Q - 查询向量): 当前 Token 想要寻找什么信息?(例如,当处理单词 "bank" 时,Q 代表它在寻找 "river" 还是 "money" 相关的上下文)。
  • Key (K - 键向量): 上下文中每个 Token 的"标签"是什么?(用于和 Q 进行匹配)。
  • Value (V - 值向量): 每个 Token 实际携带的内容信息是什么?

本质过程

注意力机制计算 QQKK相似度(通常通过点积),得出一个权重分数。然后,利用这个分数对 VV 进行加权求和

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
  • 如果 QQ 和某个 KK 很相似: 点积很大 → Softmax 后权重接近 1 → 对应的 VV 被大量保留。
  • 如果 QQ 和某个 KK 不相关: 点积很小 → Softmax 后权重接近 0 → 对应的 VV 被忽略。

2. 语义本质:动态的上下文融合

在传统的 RNN(循环神经网络)中,信息必须按顺序一步步传递,距离越远,信息丢失越严重。

注意力的本质突破在于:全局视野与并行计算。

2.1 打破距离限制

无论两个词在句子中相隔多远,注意力机制都能让它们直接发生交互。词与词之间的路径长度永远是 O(1)O(1)

2.2 动态语境化(Contextualization)

举个例子:"The animal didn't cross the street because it was too tired."

当模型处理单词 "it" 时:

  1. "it"QQ 会扫描全句所有的 KK
  2. 它发现 "animal"KK 与其相关度最高(因为 "tired" 通常形容动物)。
  3. 注意力的输出会将 "animal"VV 融合进 "it" 的表示中。
  4. 结果:在这个层面上,"it" 不再只是一个代词,而是一个包含了"动物"属性的向量。

本质上,注意力机制就是让每个 Token 根据自身的需要,从全局上下文中"吸取"特征,从而更新自己的语义表示。


3. 几何视角:空间的重构

从向量空间的角度来看,注意力的本质是根据上下文动态调整向量的方向

  • 静态词向量(Word2Vec/GloVe): 无论上下文是什么,"Apple" 的向量永远固定不变。
  • 注意力机制下的向量: "Apple" 的向量会根据它是在"手机"旁边还是在"水果"旁边,被拉向不同的方向。

每一个注意力头(Head)都在不同的子空间里执行这种"拉扯"操作,最终拼接起来,形成了一个极度丰富、包含多重语义关系的表征。


4. 深层块中的信息演变:从"词法"到"逻辑"

一个关键问题是:后面的 Transformer Block 查询的到底是什么信息?

答案是:后面的块处理的是高度抽象、高度语义化的信息。 当你在深层进行"查询(Query)"时,你不再是查询"这个词是不是动词",而是在查询"基于之前复杂的逻辑推理,当前语境下最合理的下一个概念是什么"。

4.1 信息的层级演变

在 GPT 这种堆叠了数十层(甚至上百层)Transformer Block 的架构中,随着层数的加深,信息发生了质的变化:

层级关注重点Query 内容示例
浅层块语法与形态"我是 'San',我在找有没有 'Francisco' 在附近?"
中层块语义与事实"我是 '巴黎' 的向量,我在找上下文中提到的关于 '地标建筑' 的信息。"
深层块任务与逻辑"基于前面提到的讽刺语气和否定句式,我现在需要寻找一个表示 '失望' 但又委婉的特征。"

结论: 后面的块得到的信息,是经过层层加工、消除了歧义、融入了全局语境的高维语义向量


5. 残差流(The Residual Stream)

要理解"查询的是什么",必须理解残差连接(Residual Connection)

你可以把 GPT 的内部数据流想象成一条传送带(Residual Stream)

  1. 输入: 词向量(Embedding)被放到传送带上。
  2. 第 1 层: 注意力机制把数据拿下来看一眼,计算出一些新特征,然后加(Add) 回传送带上。
  3. ... 迭代 ...
  4. 第 N 层: 第 N 层的输入,包含了之前所有层处理结果的总和

所以,当第 10 层的注意力头进行"查询"时,它 Query、Key、Value 的来源是第 9 层输出的残差流。

这意味着:

  • Query (Q) 是高度抽象的:它代表了"到目前为止,模型对当前位置的理解"。
  • Key (K) 和 Value (V) 也是高度抽象的:它们代表了"上下文中的其他词在经过 9 层处理后,沉淀下来的深层含义"。

示例

如果输入是"苹果":

  • 在第 1 层,它可能只是"一种水果"。
  • 如果上下文谈论的是股市,到了第 20 层,这个位置的向量已经通过之前的注意力聚合,变成了代表"科技巨头/iPhone 制造商"的抽象向量。
  • 第 21 层的查询,就是在"科技巨头"这个概念层面上进行的,而不是在"红色的圆球"这个层面上。

6. 归纳头(Induction Heads)

研究发现,在 GPT 的深层块中,会出现一种特殊的注意力模式,称为归纳头(Induction Heads)

这是深层查询的一个典型行为:

  • 行为: 它们会回顾很久以前的上下文,寻找类似的模式。
  • 目的: 直接辅助"预测下一个词"。
  • 过程:
    1. 前面的层已经分析出:"这似乎是一个哈利波特的文本"。
    2. 深层的 Query 会问:"既然我们确定了是哈利波特语境(抽象信息),且刚才出现了 'Harry',那我现在要去之前的文中找 'Potter' 在这个语境下的表现形式。"
    3. 最后通过 Unembedding 层(输出层),将这个高度抽象的向量映射回词表中的单词。

7. 总结

Transformer 中注意力的本质是:

一种可微分的、基于内容的路由机制。它允许模型根据当前输入的需要,动态地分配关注资源的权重,将全局上下文中的离散信息,聚合成一个针对当前任务最优的连续向量表示。

核心要点回顾

维度本质理解
机制层面软寻址 —— 基于内容相似度的加权检索
语义层面动态上下文融合 —— 让每个 Token 根据需要"吸取"全局特征
几何层面空间重构 —— 根据上下文动态调整向量方向
深度层面层级抽象 —— 从词法到语义再到逻辑的渐进式推理

类比

这就好比侦探破案:

  • 第一层是在找指纹(原始信息)。
  • 中间层是在分析作案动机(语义整合)。
  • 最后一层是在基于动机和证据,查询谁最像凶手(基于高度抽象信息的最终推理)。

8. 参考资料