Ch09 Transformer修订于 二〇二六年七月二日

9.4 位置编码 — Transformer 的"序列感知"

9.4.1 为什么需要位置编码

自注意力机制有一个根本性的”盲区”:它是置换不变的(permutation invariant)。如果你把输入序列中的词任意打乱,自注意力的输出(在置换意义下)完全相同——因为注意力权重只取决于 token 的内容(Q 和 K),而不取决于它们的位置。

换句话说,“我爱你”和”你爱我”在自注意力看来是完全等价的——每个 token 看到其他 token 的方式相同,只是 Q/K/V 向量的来源变了。这显然不是我们想要的。语言是顺序敏感的,词的位置携带了核心信息。

位置编码的作用就是在 token 表示中注入位置信息,打破置换不变性。它让模型知道”这个 token 是第 3 个位置”、“这个 token 在第 7 个位置之后”。

9.4.2 正弦位置编码

原始 Transformer 使用正弦和余弦函数的固定编码:

PE(pos, 2i)   = sin(pos / 10000^{2i/d_model})
PE(pos, 2i+1) = cos(pos / 10000^{2i/d_model})

关键性质:

  • 多频率:不同维度 i 使用不同的波长(从 2π 到 20000π)。低维度编码细粒度位置(快速振荡),高维度编码粗粒度位置(缓慢变化)。这类似于二进制计数:低位变化快,高位变化慢
  • 相对位置可线性表示:对于任意固定的偏移量 k,PE_{pos+k} 可以表示为 PE_{pos} 的线性变换。这意味着模型可以通过学习线性变换来关注相对位置关系
  • 有界性:值域在 [-1, 1],与 token embedding 的量级一致,不会主导表示
  • 外推能力:理论上可以处理训练时未见过的长度(因为 sin/cos 函数可以无限计算),但实践中外推效果有限,因为模型没学过那些位置

9.4.3 可学习位置编码

BERT 和 GPT-1/GPT-2 使用可学习的位置嵌入:为每个位置分配一个可训练的向量,形状为 (max_seq_len, d_model),直接加到 token embedding 上。

优点:简单,模型可以自由学习最优的位置表示。缺点:无法外推——如果训练时 max_seq_len=512,推理时无法处理第 513 个位置(没有对应的嵌入向量)。需要额外技术(如位置插值)来扩展上下文长度。

9.4.4 RoPE:旋转位置编码

RoPE(Rotary Position Embedding)是 2026 年所有 LLM 的标准位置编码方案。它的核心思想是:用旋转矩阵编码绝对位置,但让点积结果只依赖相对位置。

具体做法:对于位置 m,将 Q 和 K 的每对维度(2i, 2i+1)旋转一个角度 m·θ_i,其中 θ_i = 10000^{-2i/d}:

q_m = R_m · (W_Q · x_m)     -- 将 Q 向量旋转 m·θ
k_n = R_n · (W_K · x_n)     -- 将 K 向量旋转 n·θ

其中 R_m 是块对角旋转矩阵,每个 2×2 块是标准的旋转矩阵 [[cos(mθ), -sin(mθ)], [sin(mθ), cos(mθ)]]。

关键推导:旋转后,Q 和 K 的点积变为:

q_m^T · k_n = (W_Q x_m)^T · R_m^T · R_n · (W_K x_n)
            = (W_Q x_m)^T · R_{n-m} · (W_K x_n)

点积结果只依赖于相对位置 (n-m),而不是绝对位置 m 和 n。这完美地编码了相对位置关系——两个 token 相距越远,它们的 Q-K 点积越小(因为旋转角度差越大,余弦相似度越低)。

为什么 RoPE 赢了:

  • 自然编码相对位置,符合语言中”距离越远关联越弱”的直觉
  • 外推能力强:通过修改 θ_i 的基数(NTK 缩放),可以平滑扩展到训练时未见过的长度
  • 实现高效:旋转操作简单,可以融合到 Q/K 投影中
  • 2026 年状态:Llama、Qwen、Mistral、DeepSeek、Gemma 全部使用 RoPE。已成为事实标准

1

9.4.5 ALiBi:线性偏置

ALiBi(Attention with Linear Biases)采取了最简洁的方案:直接在注意力分数上减去一个线性偏置:

score_{i,j} = q_i^T · k_j - m · |i - j|

其中 m 是每个头特有的斜率(head-specific slope),按几何级数分配:m = 1/√2, 1/2, 1/(2√2), … 这样不同头有不同的”有效注意力窗口”——小斜率的头可以关注更远的位置,大斜率的头只关注近邻。

ALiBi 的优点:

  • 零参数:没有可学习的位置编码参数
  • 极强外推:训练时用 1024 长度,推理时可直接处理 10000+ 长度,无需任何修改
  • 简单:实现只需一行代码。注意:这只是 ALiBi 的”简单”,不是 Transformer 的”简单”

为什么 ALiBi 没有成为主流:虽然外推能力优秀,但在相同训练预算下,RoPE 的模型质量略高。ALiBi 主要用于 BLOOM 和一些 MPT 模型。

2

9.4.6 位置编码选择指南

方案外推能力参数2026 使用推荐场景
RoPE好(需 NTK)无所有主流 LLM通用首选
ALiBi极好无少数需要极长上下文外推
可学习差有仅遗留模型固定长度任务
正弦中无教学中理解原理/教学

2026 年建议:训练新模型直接用 RoPE(搭配 NTK 缩放用于长上下文外推)。


← 上一节:9.3 多头注意力 -- 为什么需要多个头 | 下一节:9.5 前馈网络(FFN)— Transformer 的"知识存储" →

注释

  1. Su et al., “RoFormer: Enhanced Transformer with Rotary Position Embedding”, 2021, https://arxiv.org/abs/2104.09864 ↩

  2. Press et al., “Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation”, 2022, https://arxiv.org/abs/2108.12409 ↩

关联6

知识图谱

局部图谱 · 点节点跳转