位置编码的技术演进线路:从绝对到相对,再到几何一致性

175 阅读6分钟

位置编码的技术演进线路:从绝对到相对,再到几何一致性

摘要
Transformer 的核心创新在于其“无序感知”机制——注意力机制(Attention)。
但要让序列模型理解“顺序”这一维度,位置编码(Positional Encoding) 便成为至关重要的桥梁。
从最初的正弦余弦绝对位置编码,到 Shaw 相对编码,再到 ALiBi 与旋转式位置编码(RoPE),
位置编码的演进史其实就是 Transformer 从“离散符号”迈向“几何空间理解”的过程。


一、为什么需要位置编码?

Transformer 的核心计算是:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V

但在没有任何顺序信息时,模型无法区分
“猫追狗” 与 “狗追猫”——
因为输入向量只是词向量堆叠,本身无序

因此,我们需要让每个 token 含有“位置意识”。
这就是 位置编码(Positional Encoding, PE) 的本质目标:

将“序列顺序”映射到连续空间中,使模型能感知位置信息的差异。


二、绝对位置编码:正弦余弦的周期构造

Transformer(Vaswani et al., 2017)提出的正弦-余弦位置编码公式如下:

PE(pos,2i)=sin(pos100002i/dmodel),PE(pos,2i+1)=cos(pos100002i/dmodel)PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right), \quad PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)

✳️ 原理

每个维度对应一个不同频率的正弦波。
这样一来,不同位置的编码在高维空间中呈现出周期性差异,
模型可以通过线性组合学习到相对位置模式。

✅ 优点

  • 不需要训练参数;
  • 理论上可以外推任意位置;
  • 在短序列任务(如翻译)中效果稳定。

❌ 缺点

  • 缺乏相对位置感知;
  • 对超长序列的“相位外推”不稳定;
  • 对旋转、平移不具备几何等价性。

这类编码相当于给每个 token 打上“绝对坐标标签”,
但模型无法知道“两个 token 相距多远”或“顺序差异”。


三、相对位置编码:显式建模距离差

2018 年,Shaw et al. 提出相对位置编码:

score(i,j)=qi(kj+rij)dk\text{score}(i, j) = \frac{q_i^\top (k_j + r_{i-j})}{\sqrt{d_k}}

其中 ( r_{i-j} ) 是与相对距离 ( i-j ) 相关的嵌入向量。
它直接将相对距离融入注意力分数,使模型能感知“相邻性”或“远近关系”。

✅ 优点

  • 明确引入相对位置信息;
  • 更符合语言中的相对语义(如“前一个词”“下一个句子”)。

❌ 缺点

  • 复杂度高(存储并检索 rijr_{i-j});
  • 不便于扩展到线性 Attention;
  • 难以保持几何一致性(矩阵乘法不再对称)。

相对编码的提出让 Transformer 从“静态坐标”走向“相对空间”,
但复杂度成为进一步发展的瓶颈。


四、ALiBi:Attention Linear Bias 的高效变体

ALiBi (Press et al., 2022) 提出直接在注意力得分上添加线性距离偏置:

score(i,j)=qikjdk+m(ij)\text{score}(i, j) = \frac{q_i^\top k_j}{\sqrt{d_k}} + m \cdot (i - j)

其中 ( m ) 是一个可学习的或固定的斜率。

✅ 优点

  • 不引入额外参数;
  • 高效、可扩展;
  • 与绝大多数 Transformer 结构兼容。

❌ 缺点

  • 破坏注意力的几何对称性;
  • 无法解释为显式的几何变换;
  • 相对性仅存在于“分数层面”,非向量层面。

ALiBi 之所以受欢迎,是因为它在“工程实用性”与“理论简洁性”之间取得平衡。
但它仍未回答一个更深的问题:

是否存在一种几何操作,使绝对位置编码天然包含相对位置信息?


五、RoPE:旋转式位置编码的几何一致性解法

这一问题由 Su et al. (2021) 在论文《RoFormer: Enhanced Transformer with Rotary Position Embedding》中提出并解决。

他们从一个非常优雅的假设出发:

f(q,m),f(k,n)=g(q,k,mn)\langle f(q, m), f(k, n) \rangle = g(q, k, m - n)

即希望存在一个函数 ( f ),
使得添加绝对位置编码后的内积,仅与相对位置差 ( m-n ) 有关。
这意味着 Attention 的几何结构能天然“编码相对性”。


🧭 一步步推导(二维情形)

我们将二维向量 ((q_0, q_1)) 视作复数 (q = q_0 + i q_1)。
对于位置 (m),我们定义一个位置变换 (f(q, m)),
希望它满足:

Re[f(q,m)f(k,n)]=g(q,k,mn)\text{Re}[f(q, m) f^*(k, n)] = g(q, k, m - n)

为此,假设:

f(q,m)=qeimθf(q, m) = q \cdot e^{i m \theta}

代入可得:

f(q,m)f(k,n)=qkei(mn)θf(q, m) f^*(k, n) = q k^* e^{i (m - n)\theta}

取实部:

Re[f(q,m)f(k,n)]=Re[qkei(mn)θ]\text{Re}[f(q, m) f^*(k, n)] = \text{Re}[q k^* e^{i (m - n)\theta}]

这意味着:

内积的相对相位差就是位置差

即便我们对 ( q, k ) 都进行了“绝对位置编码”,
它们之间的内积仍然只依赖于相对距离 ( m - n )。


🌀 几何解释:旋转操作

在二维平面中,这个变换等价于一个旋转矩阵:

f(q,m)=(cos(mθ)sin(mθ)sin(mθ)cos(mθ))(q0q1)f(q, m) = \begin{pmatrix} \cos(m\theta) & \sin(m\theta) \\ -\sin(m\theta) & \cos(m\theta) \end{pmatrix} \begin{pmatrix} q_0 \\ q_1 \end{pmatrix}

更高维的情况,只需把每两个通道视为一对复数通道即可拼接:

Rm=blockdiag(Rθ0(m),Rθ1(m),,Rθd/21(m))R_m = \text{blockdiag}(R_{\theta_0}(m), R_{\theta_1}(m), \dots, R_{\theta_{d/2-1}}(m))

然后让每个 ( q ) 与 ( k ) 分别乘以对应的旋转矩阵 ( R_m, R_n ),
注意力内积满足:

(Rmq)(Rnk)=qRnmk(R_m q)^\top (R_n k) = q^\top R_{n-m} k

这正是我们期望的 几何相对性 恒等式。


⚙️ 实现形式(工程化表达)

在实际实现中,我们不会真的乘以矩阵,而是用更高效的向量运算:

q~=qcos(mθ)+qswapsin(mθ)\tilde{q} = q \odot \cos(m\theta) + q_{\text{swap}} \odot \sin(m\theta)

其中 qswapq_{\text{swap}} 表示将偶数、奇数维度交错取负交换(实现复数乘法),
这样在 PyTorch / TensorFlow / NumPy 中都可以用逐元素操作完成。


✳️ 总结 RoPE 的核心思想:

  1. 通过复数旋转实现绝对编码;
  2. 内积相位差自动体现相对距离;
  3. 保持模长不变(正交变换),不破坏模型稳定性。

因此,RoPE 实现了一个几何意义上的统一:

它不再区分“绝对位置”与“相对位置”,
而是通过旋转相位实现了“相对性在几何上的守恒”。


六、长上下文扩展:YaRN 与 NTK-Aware RoPE

随着大语言模型(LLM)应用场景中上下文长度不断增长,传统 RoPE 的固定频率设计面临两个核心问题:

  1. 高维通道的旋转过快
    RoPE 中每一对通道对应一个固定角频率 θi\theta_i
    随着位置 mm 增大,高维通道的旋转角度 mθim \cdot \theta_i 很快超过 2π2\pi,导致内积中出现相位模糊(phase aliasing),模型难以区分远距离 token 的相对位置。

  2. 频率分布不均衡
    原始 RoPE 采用指数分布 θi100002i/d\theta_i \sim 10000^{-2i/d}
    低维通道旋转慢,高维通道旋转快。对于超长序列,低频信息可以外推,高频信息则失效,导致长上下文表示能力下降。


1️⃣ YaRN (Yet another RoPE extension)

核心思想:对原始 RoPE 的频率分布进行再映射,使旋转角度在整个序列长度上更加平滑且均衡。

  • 方法

    1. 对每个通道 ii 定义新的角频率 θi=f(Lmax,i)\theta_i' = f(L_{\text{max}}, i),其中 LmaxL_{\text{max}} 是目标最长上下文长度;
    2. 对高维通道角频率进行放缩,降低旋转速率,避免超长序列中的高频“折叠”;
    3. 保持低维通道角频率与短序列训练一致,保证预训练权重兼容性。
  • 效果

    • 高频通道在长序列中不再快速旋转,从而保留可分辨的相对相位;
    • 模型可以稳定扩展到 32K、64K 或更长上下文窗口。

2️⃣ NTK-Aware Scaling

背景:NTK(Neural Tangent Kernel)方法提供了一种分析深度网络训练行为的工具。
NTK-Aware RoPE 通过 核方法理论 对旋转角频率重新标定,使长序列下的内积统计行为与训练短序列保持一致。

  • 方法

    1. 计算原始 RoPE 在短序列长度 (L_0) 下的内积分布;
    2. 对每个通道频率进行缩放,使长序列 (L > L_0) 的内积方差和分布匹配短序列;
    3. 保证旋转操作保持 正交性,不破坏向量模长,避免梯度爆炸或消失。
  • 直观理解

    • 相当于对旋转“做归一化”,让每个位置在超长上下文下仍保持可区分;
    • 保持了 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) 的层面。


八、总结:从函数编码到几何一致性

阶段方法核心思想几何解释局限
2017Sin/Cos用周期函数编码绝对位置固定坐标无相对性
2018Shaw显式引入相对距离偏置距离依赖复杂度高
2022ALiBi距离线性衰减偏置平面线性近似缺乏旋转对称
2021RoPE复数旋转实现相对性相位旋转频率固定
2023YaRN / NTK频率重映射相位几何保真参数调优难

从工程视角看,RoPE 是一种“计算与几何的最小公倍数”:
它在不破坏模型结构的前提下,让注意力具备了相对不变性
这是深度学习几何化的一个关键转折点。