在 3.3 节中,我们推导了 Self-Attention 的核心机制:通过 Q、K、V 的交互计算,模型能够全局地捕捉任意两个 Token 之间的语义关联。但这里隐藏着一个致命的结构性缺陷——Self-Attention 本身是置换不变(Permutation Invariant)的。
换句话说,如果不加任何额外处理,你把句子中的词序完全打乱,Attention 计算出来的每个 Token 的输出值集合完全不变,只是顺序跟着变了。这意味着 Transformer 默认是“瞎子”:它分不清“狗咬人”和“人咬狗”在语义上的天壤之别。
为了赋予模型对序列顺序的感知能力,Transformer 架构必须引入位置编码(Positional Encoding)。本节将沿着技术演进的脉络,从经典的绝对位置编码出发,逐一拆解相对位置编码、RoPE 与 ALiBi 的设计逻辑。理解这四种方案,是你读懂当前主流大模型架构选型(如 Llama、Qwen、GLM、Bloom)的关键。
一、绝对位置编码:先给每个座位发一个固定编号
原始 Transformer(Attention Is All You Need, 2017)采用的是绝对位置编码(Absolute Positional Encoding)。其核心思想极其直白:既然 Attention 本身不认位置,那就人为地给每个位置发一个“位置名片”,与 Token 的语义 Embedding 相加后送入网络。
1.1 正弦/余弦位置编码(Sinusoidal PE)
Vaswani 等人设计了一套基于正弦和余弦函数的固定编码:
$$PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)$$
$$PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)$$
其中,$pos$ 是 Token 在序列中的绝对位置,$i$ 是维度索引,$d_{model}$ 是模型维度。
设计意图:
- 周期性:不同频率的正弦波让模型能区分不同尺度的位置模式;
- 相对位置可表达:通过三角恒等式,位置 $pos+k$ 的编码可以表示为位置 $pos$ 编码的线性变换,这为模型学习相对关系提供了数学基础;
- 外推性:理论上可以处理训练时未见过的更长序列(但实践中效果有限)。
1.2 可学习绝对位置编码(Learnable APE)
BERT 等模型采用了更简单的方案:不再用固定函数,而是直接把位置编码当作可训练参数,初始化为随机向量,与词 Embedding 一起通过反向传播更新。
优点:模型自主学习最适合自己的位置表示,短文本上往往表现更好。
缺点:
- 长度受限于训练时的最大序列长度,超出后需要插值或外推技巧;
- 每个位置独立存储向量,参数量随最大长度线性增长(虽然通常远小于主模型参数)。
实用认知:绝对位置编码方案简单有效,但它把“位置”当作了一个与内容无关的全局标签。模型必须额外耗费参数和训练数据去学会“第 42 号位置与第 43 号位置是相邻的”这种本应由架构先验保证的常识。
二、相对位置编码:从“你在第几排”到“你离我多远”
既然绝对位置的核心痛点是“模型需要死记硬背位置编号”,研究者自然想到:Attention 真正需要的不是绝对坐标,而是 Token A 与 Token B 之间的相对距离。
这就是相对位置编码(Relative Positional Encoding, RPE)的出发点。以 Shaw et al. (2018) 的方案为例,它在计算 Attention Score 时引入了一个与相对距离相关的偏置项:
$$Attention(Q, K, V) = \text{softmax}\left(\frac{QK^T + a_{rel}}{\sqrt{d_k}}\right)V$$
其中 $a_{rel}$ 不再依赖于 $pos$ 的绝对值,而只依赖于 $i - j$(即查询位置与键位置的距离)。
关键改进:
- 平移不变性:整句向前或向后移动一个位置,Token 间的相对关系保持不变,模型无需重新学习;
- 长度泛化:对未见过的长距离,可以通过学习到的相对距离模式进行有限外推。
局限:早期 RPE 实现需要在 Attention 矩阵计算中引入额外的位置嵌入查找,工程实现复杂,且随着序列长度增加,存储相对位置矩阵的内存开销较大。
三、RoPE:旋转位置编码——当前主流 LLM 的标配
时间来到 2021 年,苏剑林(Jianlin Su)等人提出了 Rotary Position Embedding(RoPE,旋转位置编码)。它 currently 被 Llama、Qwen、Baichuan、ChatGLM 等绝大多数主流开源大模型采用,可以视为位置编码领域的“最大公约数”。
3.1 核心思想:用旋转矩阵“拧”进位置信息
RoPE 的洞察非常深刻:与其把位置信息加到 Embedding 上,不如在 Q、K 向量内部通过旋转变换来编码位置。
具体来说,对于二维情况,RoPE 把位置 $m$ 处的向量 $\mathbf{x}$ 乘以一个旋转矩阵:
$$R_m = \begin{pmatrix} \cos m\theta & -\sin m\theta \\ \sin m\theta & \cos m\theta \end{pmatrix}$$
在更高维度上,RoPE 将向量每两维分为一组,每组施加不同频率的旋转。位置 $m$ 的 Query 和 Key 向量被旋转了 $m\theta$ 角度后再进行内积运算。
3.2 为什么 RoPE 如此成功?
- 相对位置的显式表达:
经过推导,位置 $m$ 的 Query 与位置 $n$ 的 Key 做内积时,其结果天然只依赖于它们的相对距离 $(m-n)$ 和各自的语义内容。这意味着 RoPE 用绝对位置编码的形式,实现了相对位置编码的功能——这是最优雅的数学特性。
- 与 Attention 的完美兼容:
RoPE 直接作用于 Q、K,不改变 Value,也不改变 Transformer 的宏观流程。它可以在标准 Self-Attention 中零侵入式地替换原有位置编码。
- 长度外推性的可扩展性:
原始 RoPE 的外推能力有限,但后续涌现了大量低成本改进:
- NTK-aware RoPE:通过调整频率基底,改善了对更长文本的泛化;
- YaRN / PI(Positional Interpolation):在微调阶段对旋转角度进行插值,使模型能适应数倍于训练长度的上下文(如从 4K 扩展到 128K)。
实用认知:如果你今天要在开源生态(Hugging Face、vLLM、SGLang)上部署或微调模型,遇到的 90% 以上都是 RoPE。掌握 RoPE,就等于掌握了大模型位置编码的工程现实。
四、ALiBi:不用位置编码的“位置编码”
在 RoPE 通过复杂旋转实现相对位置的同时,另一派思路走向了极致的简约。ALiBi(Attention with Linear Biases) 被 Bloom、MPT 等模型采用,其核心主张是:根本不需要给输入加位置向量,直接在 Attention Score 里按距离扣分的“罚款单”即可。
4.1 机制:距离越远,罚分越重
ALiBi 在计算 Attention Score 时加入一个与相对距离成正比的负偏置:
$$AttentionScore = \frac{QK^T}{\sqrt{d_k}} - m \cdot |i - j|$$
其中 $m$ 是一个预定义的斜率(不同注意力头使用不同斜率),$|i-j|$ 是 Token 之间的绝对距离。
简单来说:ALiBi 不告诉模型“你在第几号位置”,而是直接惩罚“看得太远”的行为。离当前词越远的上下文,其对 Attention Score 的贡献被线性削弱。
4.2 ALiBi 的独特优势
- 零训练开销的位置感知:
不需要额外的位置嵌入参数,也不需要正弦函数或旋转矩阵。ALiBi 的偏置项是纯推理时计算,对训练代码的侵入性极低。
- 极强的长度外推性:
这是 ALiBi 最响亮的卖点。由于惩罚函数是线性的,且对训练时未见过的距离天然有定义,ALiBi 模型在不经过任何微调的情况下,直接处理 2 倍、4 倍甚至更长序列时,性能衰减远小于传统 APE/RoPE。这在需要超长上下文(如 100K+ Token)的场景中极具吸引力。
- 显式的距离衰减先验:
它把“近距离更重要”这一语言学的强先验直接写进了架构,而不是让模型从零学习。
局限与权衡:
- 由于远距离被强制惩罚,ALiBi 对极度依赖长距离精确关联的任务(如某些代码依赖分析、超长文档的跨章节指代)可能不如经过插值扩展的 RoPE 灵活;
- 线性偏置的“硬截断”感较强,在超长上下文场景下,远距离 Token 的注意力值可能被压得过低。
五、四种方案对比与选型逻辑
| 特性 | 绝对位置编码 (APE) | 相对位置编码 (RPE) | RoPE | ALiBi |
|------|-------------------|-------------------|------|-------|
| 核心思想 | 给每个位置发唯一 ID | 编码 Token 间距离 | 旋转 Q/K 向量 | 距离越远罚分越多 |
| 参数开销 | 中(可学习版)/ 无(正弦版) | 中 | 无额外参数 | 无额外参数 |
| 与 Attention 的耦合度 | 低(前置相加) | 高(修改 Score) | 中(修改 Q/K) | 高(修改 Score) |
| 训练长度外推 | 差 | 一般 | 良好(配合 NTK/YaRN) | 极强 |
| 当前主流采用 | BERT/GPT-2 时代 | T5、部分早期模型 | Llama/Qwen/GLM 等绝对主流 | Bloom/MPT 等 |
| 工程实现复杂度 | 低 | 中高 | 中 | 极低 |
给工程师和架构师的实用建议:
- 如果你在选型开源基座模型做业务应用:
- 遇到 RoPE 模型(绝大多数):重点关注上下文长度扩展方案(是否有 YaRN/PI 支持)。当前 128K 长上下文的实现几乎全是基于 RoPE 的改进。
- 遇到 ALiBi 模型:享受其开箱即用的长度外推性,但若任务需要全局长程依赖,需实测远距离召回率。
- 如果你在设计新架构或深度二次开发:
- RoPE 是社区生态最成熟的选择(FlashAttention、vLLM 等推理引擎对其优化最完善);
- 若你的场景是超低成本训练 + 极限长度推理,ALiBi 值得纳入对比实验。
- 一个常见误区:
不要简单认为“没有位置编码参数 = 没有位置信息”。ALiBi 证明,位置感知可以通过修改注意力计算实现;RoPE 证明,位置信息可以通过旋转操作内嵌。位置编码的本质是打破置换不变性,至于“加在哪里、怎么加”,并没有唯一标准答案。
六、与后续章节的衔接
位置编码解决了“Token 在哪里”的问题,但 Attention 机制本身只负责信息的加权汇聚。在 3.6 节中,我们将继续深入 Transformer 的微观构造:前馈神经网络(FFN) 如何为每个位置提供非线性变换能力,层归一化(LayerNorm) 如何稳定深网络的训练动态,以及残差连接(Residual Connection) 如何缓解梯度消失、支撑起上百层的模型深度。
这三者与位置编码共同构成了 Transformer Block 的完整版图。如果说 Attention 是模型的“望远镜”(看多远、看哪里),那么 FFN 就是“显微镜”(局部细节的精细加工),而 LayerNorm 与残差连接则是让这架精密仪器能够稳定训练的“减震系统”。