位置编码的技术演进线路:从绝对到相对,再到几何一致性
摘要:
Transformer 的核心创新在于其“无序感知”机制——注意力机制(Attention)。
但要让序列模型理解“顺序”这一维度,位置编码(Positional Encoding) 便成为至关重要的桥梁。
从最初的正弦余弦绝对位置编码,到 Shaw 相对编码,再到 ALiBi 与旋转式位置编码(RoPE),
位置编码的演进史其实就是 Transformer 从“离散符号”迈向“几何空间理解”的过程。
一、为什么需要位置编码?
Transformer 的核心计算是:
但在没有任何顺序信息时,模型无法区分
“猫追狗” 与 “狗追猫”——
因为输入向量只是词向量堆叠,本身无序。
因此,我们需要让每个 token 含有“位置意识”。
这就是 位置编码(Positional Encoding, PE) 的本质目标:
将“序列顺序”映射到连续空间中,使模型能感知位置信息的差异。
二、绝对位置编码:正弦余弦的周期构造
Transformer(Vaswani et al., 2017)提出的正弦-余弦位置编码公式如下:
✳️ 原理
每个维度对应一个不同频率的正弦波。
这样一来,不同位置的编码在高维空间中呈现出周期性差异,
模型可以通过线性组合学习到相对位置模式。
✅ 优点
- 不需要训练参数;
- 理论上可以外推任意位置;
- 在短序列任务(如翻译)中效果稳定。
❌ 缺点
- 缺乏相对位置感知;
- 对超长序列的“相位外推”不稳定;
- 对旋转、平移不具备几何等价性。
这类编码相当于给每个 token 打上“绝对坐标标签”,
但模型无法知道“两个 token 相距多远”或“顺序差异”。
三、相对位置编码:显式建模距离差
2018 年,Shaw et al. 提出相对位置编码:
其中 ( r_{i-j} ) 是与相对距离 ( i-j ) 相关的嵌入向量。
它直接将相对距离融入注意力分数,使模型能感知“相邻性”或“远近关系”。
✅ 优点
- 明确引入相对位置信息;
- 更符合语言中的相对语义(如“前一个词”“下一个句子”)。
❌ 缺点
- 复杂度高(存储并检索 );
- 不便于扩展到线性 Attention;
- 难以保持几何一致性(矩阵乘法不再对称)。
相对编码的提出让 Transformer 从“静态坐标”走向“相对空间”,
但复杂度成为进一步发展的瓶颈。
四、ALiBi:Attention Linear Bias 的高效变体
ALiBi (Press et al., 2022) 提出直接在注意力得分上添加线性距离偏置:
其中 ( m ) 是一个可学习的或固定的斜率。
✅ 优点
- 不引入额外参数;
- 高效、可扩展;
- 与绝大多数 Transformer 结构兼容。
❌ 缺点
- 破坏注意力的几何对称性;
- 无法解释为显式的几何变换;
- 相对性仅存在于“分数层面”,非向量层面。
ALiBi 之所以受欢迎,是因为它在“工程实用性”与“理论简洁性”之间取得平衡。
但它仍未回答一个更深的问题:
是否存在一种几何操作,使绝对位置编码天然包含相对位置信息?
五、RoPE:旋转式位置编码的几何一致性解法
这一问题由 Su et al. (2021) 在论文《RoFormer: Enhanced Transformer with Rotary Position Embedding》中提出并解决。
他们从一个非常优雅的假设出发:
即希望存在一个函数 ( f ),
使得添加绝对位置编码后的内积,仅与相对位置差 ( m-n ) 有关。
这意味着 Attention 的几何结构能天然“编码相对性”。
🧭 一步步推导(二维情形)
我们将二维向量 ((q_0, q_1)) 视作复数 (q = q_0 + i q_1)。
对于位置 (m),我们定义一个位置变换 (f(q, m)),
希望它满足:
为此,假设:
代入可得:
取实部:
这意味着:
内积的相对相位差就是位置差。
即便我们对 ( q, k ) 都进行了“绝对位置编码”,
它们之间的内积仍然只依赖于相对距离 ( m - n )。
🌀 几何解释:旋转操作
在二维平面中,这个变换等价于一个旋转矩阵:
更高维的情况,只需把每两个通道视为一对复数通道即可拼接:
然后让每个 ( q ) 与 ( k ) 分别乘以对应的旋转矩阵 ( R_m, R_n ),
注意力内积满足:
这正是我们期望的 几何相对性 恒等式。
⚙️ 实现形式(工程化表达)
在实际实现中,我们不会真的乘以矩阵,而是用更高效的向量运算:
其中 表示将偶数、奇数维度交错取负交换(实现复数乘法),
这样在 PyTorch / TensorFlow / NumPy 中都可以用逐元素操作完成。
✳️ 总结 RoPE 的核心思想:
- 通过复数旋转实现绝对编码;
- 内积相位差自动体现相对距离;
- 保持模长不变(正交变换),不破坏模型稳定性。
因此,RoPE 实现了一个几何意义上的统一:
它不再区分“绝对位置”与“相对位置”,
而是通过旋转相位实现了“相对性在几何上的守恒”。
六、长上下文扩展:YaRN 与 NTK-Aware RoPE
随着大语言模型(LLM)应用场景中上下文长度不断增长,传统 RoPE 的固定频率设计面临两个核心问题:
-
高维通道的旋转过快
RoPE 中每一对通道对应一个固定角频率 ,
随着位置 增大,高维通道的旋转角度 很快超过 ,导致内积中出现相位模糊(phase aliasing),模型难以区分远距离 token 的相对位置。 -
频率分布不均衡
原始 RoPE 采用指数分布 ,
低维通道旋转慢,高维通道旋转快。对于超长序列,低频信息可以外推,高频信息则失效,导致长上下文表示能力下降。
1️⃣ YaRN (Yet another RoPE extension)
核心思想:对原始 RoPE 的频率分布进行再映射,使旋转角度在整个序列长度上更加平滑且均衡。
-
方法:
- 对每个通道 定义新的角频率 ,其中 是目标最长上下文长度;
- 对高维通道角频率进行放缩,降低旋转速率,避免超长序列中的高频“折叠”;
- 保持低维通道角频率与短序列训练一致,保证预训练权重兼容性。
-
效果:
- 高频通道在长序列中不再快速旋转,从而保留可分辨的相对相位;
- 模型可以稳定扩展到 32K、64K 或更长上下文窗口。
2️⃣ NTK-Aware Scaling
背景:NTK(Neural Tangent Kernel)方法提供了一种分析深度网络训练行为的工具。
NTK-Aware RoPE 通过 核方法理论 对旋转角频率重新标定,使长序列下的内积统计行为与训练短序列保持一致。
-
方法:
- 计算原始 RoPE 在短序列长度 (L_0) 下的内积分布;
- 对每个通道频率进行缩放,使长序列 (L > L_0) 的内积方差和分布匹配短序列;
- 保证旋转操作保持 正交性,不破坏向量模长,避免梯度爆炸或消失。
-
直观理解:
- 相当于对旋转“做归一化”,让每个位置在超长上下文下仍保持可区分;
- 保持了 RoPE 的几何一致性,同时解决了训练-推理序列长度差异带来的分布偏移。
🔑 两者共同目标
- 相对位置可分辨性:保证内积计算中的相位差仍然能精确反映相对距离;
- 旋转可逆性:向量旋转不会产生信息丢失,保持注意力稳定性;
- 长上下文可扩展性:将 RoPE 从原本数千长度拓展至数万甚至十万 token。
⚙️ 工程实现提示
- 对于 YaRN,可在初始化位置编码矩阵时直接用新的频率曲线填充;
- 对于 NTK-Aware,可在训练前计算缩放系数,并在推理时应用同样缩放;
- 两种方法可与 ALiBi 或线性 Attention 结合,实现超长上下文下的高效注意力机制。
通过 YaRN 和 NTK-Aware,RoPE 不再局限于短序列,而是可以保持相对相位的一致性,
为 LLM 提供了可靠的超长上下文建模能力。
七、位置编码的演进路线图
绝对位置编码 (Sin/Cos embedding)
↓ [问题:外推能力差]
相对位置编码 (Shaw et al., 2018)
↓ [问题:计算复杂度高]
ALiBi (Press et al., 2022)
↓ [问题:几何不一致]
RoPE (Su et al., 2021)
↓ [实现几何一致性与相位相对性]
YaRN / NTK-Aware (2023)
↓ [实现长上下文稳健扩展]
RoPE 及其后续变体的成功,不仅仅在于性能提升,
而是将 Transformer 的注意力从符号运算,
真正提升到了 几何计算(Geometric Computation) 的层面。
八、总结:从函数编码到几何一致性
| 阶段 | 方法 | 核心思想 | 几何解释 | 局限 |
|---|---|---|---|---|
| 2017 | Sin/Cos | 用周期函数编码绝对位置 | 固定坐标 | 无相对性 |
| 2018 | Shaw | 显式引入相对距离偏置 | 距离依赖 | 复杂度高 |
| 2022 | ALiBi | 距离线性衰减偏置 | 平面线性近似 | 缺乏旋转对称 |
| 2021 | RoPE | 复数旋转实现相对性 | 相位旋转 | 频率固定 |
| 2023 | YaRN / NTK | 频率重映射 | 相位几何保真 | 参数调优难 |
从工程视角看,RoPE 是一种“计算与几何的最小公倍数”:
它在不破坏模型结构的前提下,让注意力具备了相对不变性,
这是深度学习几何化的一个关键转折点。