Transformer 架构 高级

多头注意力与位置编码

理解为什么需要"多头"并行关注不同子空间,以及各类位置编码(绝对/相对/RoPE)的设计动机。

多头注意力:多双眼睛看句子

一组 Q/K/V 只能捕捉一种关系。把 d 维空间切成 h 份,各自独立做注意力再拼接:

head_i = Attention(Q·Wqⁱ, K·Wkⁱ, V·Wvⁱ)
MultiHead = Concat(head_1 … head_h) · Wo

实践发现各头会自发分工:有的头盯语法关系(主谓)、有的盯指代、有的盯相邻词。相当于 CNN 用多个卷积核提取不同特征 —— 多样性带来更强的表示能力。

位置编码:Transformer 的"盲点"补丁

注意力本身对词序完全无感("猫咬狗"和"狗咬猫"算出来一样),必须显式注入位置信息:

  • 正弦位置编码(原始论文):不同频率的 sin/cos 直接加上词向量,简单但固定;
  • 可学习绝对位置编码:每个位置一个可训练向量(BERT/GPT-2),超出训练长度就失效;
  • 相对位置 / RoPE 旋转位置编码:把相对距离编码进注意力计算本身。现代大模型主流(LLaMA、Qwen、GLM 系列),外推到更长序列更友好 —— 长上下文扩展(如 RoPE 缩放)都基于它。

与 LLM 应用的连接

  • 模型宣称的"上下文窗口 128K",上限由位置编码方案与其外推能力决定;
  • RAG 中文档块的位置、顺序信息,最终靠这些编码进入模型。

📝 课后练习

quiz-1 多头注意力的设计动机是?