一句话定义
注意力本身不感知词序,位置编码负责把「顺序」注入模型:早期用绝对位置向量,现代主流是旋转位置编码(RoPE),ALiBi 则用线性偏置实现无需训练的位置外推。
为什么重要
「猫咬狗」与「狗咬猫」的词元集合完全相同,顺序全靠位置编码区分。更重要的是:上下文长度扩展(长窗口)、外推能力(训练短、推理长)都由位置编码方案决定——这是各家模型长上下文竞争的技术分水岭。
前置知识
- kp-011(注意力机制)
核心概念
- 正弦位置编码:原论文方案,不同频率的 sin/cos 叠加,可外推但与注意力耦合弱。
- 可学习绝对位置:为每个位置学一个向量(GPT-2 等),简单但上限=训练长度。
- RoPE(旋转位置编码):把位置信息实现为对 Q/K 向量按位置角度的旋转,使注意力分数只依赖相对位置差。
- ALiBi(线性偏置注意力):不改向量,直接在注意力分数上加「随距离线性衰减」的偏置,天然外推。
- 位置插值(Position Interpolation):把长位置坐标压缩回训练范围,是 RoPE 模型扩窗的常用手法。
原理与机制
RoPE 的核心性质:对位置 m 的 Q 向量旋转 mθ、对位置 n 的 K 旋转 nθ,二者的点积只含相对角度 (m−n)θ——「绝对位置操作、相对位置生效」。低频维度编码远距离、高频维度编码近距离,天然多尺度。ALiBi 的直觉:允许近期内容免惩罚、远期内容按距离线性扣分,把「位置先验」硬编码进偏置,短训长测时性能衰减小。
公式或模型
RoPE 旋转形式(二维分量示意):
q_m = R(mθ) · q ; R(nθ)ᵀR(mθ) = R((m−n)θ)
⟨q_m, k_n⟩ 只依赖 m − n
⟨q_m, k_n⟩ 只依赖 m − n
ALiBi 偏置:
A_tj ← A_tj − s_h · |t − j|
图示
绝对位置: id=0→[v0] id=1→[v1] ... 查表加到嵌入上
RoPE: 对每维"指针"按位置旋转角度 mθ,点积只看角度差
ALiBi: 分数矩阵上叠一层"越远越扣分"的斜坡
直观类比
RoPE 像「时钟指针」:不需要记录绝对时刻,两根指针的夹角自然告诉你时间差;ALiBi 像「礼堂座位规则」:距离越远说话声音越小(线性衰减),即使扩建礼堂(加长上下文)规则不变照样适用。
实例或案例
LLaMA 系与绝大多数 2023 后开源模型采用 RoPE;训练 2K 上下文后用位置插值 + 少量长文本微调扩到 32K 以上是该路线的标准操作;BLOOM 等模型采用 ALiBi 验证了短训长测的可行性。外推与插值的选择已成为模型技术报告的固定章节。
常见误区
- 「注意力天然知道词序」:不知道;打乱输入顺序而不用位置编码,输出几乎不变。
- 「外推 = 免费加长上下文」:未经处理的外推性能显著劣化,主流做法是插值或微调配合。
- 「位置编码只影响长文本」:短文本的语序理解同样依赖它,只是问题在长程更突出。
与其他知识点的关系
自测题
- RoPE 如何实现「绝对位置操作、相对位置生效」?答案要点:Q/K 按位置角度旋转,点积只含位置差 (m−n)θ。
- ALiBi 与 RoPE 的机制差异?答案要点:RoPE 改造 Q/K 向量;ALiBi 不改向量、直接对注意力分数加随距离线性衰减的偏置。
- 为什么直接外推效果差,需要位置插值?答案要点:超出训练范围的相对角度未被模型见过,分布外导致注意力失真;插值把新位置压缩回已见范围。
延伸阅读
- RoFormer: Enhanced Transformer with Rotary Position Embedding(Su 等,2021)
- Train Short, Test Long(Press 等,2022):ALiBi