在 Transformer 的世界里,位置编码(Positional Encoding)一直是一个微妙而关键的组件。从最初的 Sinusoidal 编码,到 Learnable 编码,再到 T5 的相对位置编码,人们一直在探索如何让模型更好地理解“序列顺序”。
直到 2021 年,苏剑林(Sci-Hub)等人提出的 Rotary Positional Embedding (RoPE) 横空出世。它以其优雅的几何解释和强大的外推能力,迅速统治了 LLaMA、PaLM、GLM 等几乎所有主流大模型。
本文将带你抛开复杂的公式推导,从几何直觉出发,理解 RoPE 到底在“转”什么。
朴素的绝对位置编码策略是为序列中的每个 token i 分配一个固定的位置向量 pi,并将其叠加到词嵌入向量 xi 上:
xi′=xi+pi
Transformer 原文中采用的正弦位置编码即属此类。尽管其具备良好的数学性质,但从定义上讲,它依赖于绝对索引 i。
在自然语言处理任务中,语义往往更多地依赖于 token 之间的相对距离而非绝对位置。例如,“猫在垫子上”这一语义结构,无论出现在文本的何处,其内部 token 间的依赖关系应当是不变的。
因此,理想的 Attention 机制应满足平移不变性,即 Attention 分数 Aij 仅依赖于位置差 m−n:
Attention(qm,kn)=f(qm,kn,m−n)
RoPE 的创新之处在于,它通过旋转(Rotation)操作,在不引入额外参数的情况下,巧妙地实现了相对位置编码的性质。
假设 Query 向量 q 和 Key 向量 k 均为二维向量。
RoPE 的核心操作是:将位置索引 m 映射为旋转角度 mθ。
对于位置 m 的向量 xm,我们在二维平面上对其进行逆时针旋转 mθ:
f(x,m)=Rmθ⋅x
其中 Rα 为标准的二维旋转矩阵:
Rα=(cosαsinα−sinαcosα)
引入复数可以更简洁地描述这一过程。
将二维实向量 x=[x1,x2]⊤ 等距同构为复数 z=x1+ix2。
此时,旋转操作等价于复数乘法:
f(x,m)≅x⋅eimθ
根据欧拉公式 eiθ=cosθ+isinθ,这对应于复平面上的旋转变换。这种表示法揭示了 RoPE 的代数本质。
考察两个位置 m 和 n 的 Query 和 Key 的内积(Attention Score):
⟨f(q,m),f(k,n)⟩=Re((qeimθ)∗(keinθ))=Re(q∗e−imθkeinθ)=Re(q∗kei(n−m)θ)
(注:此处使用复数内积定义 ⟨a,b⟩=Re(a∗b))
使用矩阵形式亦可得出相同结论:
⟨f(q,m),f(k,n)⟩=(Rmθq)⊤(Rnθk)=q⊤Rmθ⊤Rnθk=q⊤R−mθRnθk=q⊤R(n−m)θk
结论:计算结果仅包含 (n−m)θ,即相对距离。
绝对位置 m 和 n 在内积运算中,利用旋转矩阵的正交性质(Rα⊤Rβ=Rβ−α)相互抵消。
这完美实现了:通过绝对位置的编码方式(对每个 token 独立旋转),在内积空间中诱导出了相对位置编码的效果。
若从群论(Group Theory)的视角审视 RoPE,其有效性并非巧合,而是数学结构的必然。
- 位置空间:离散的位置索引 n∈Z 构成一个加法群 (Z,+)。我们关注的相对位置即为群元素之差 n−m。
- 特征空间:复平面上的单位圆群 U(1)={eiθ∣θ∈R}(同构于二维特殊正交群 SO(2))构成一个乘法群。
RoPE 的本质是构造一个从位置加法群到变换乘法群的群同态(Group Homomorphism)映射 f:Z→U(1):
f(m+n)=f(m)⋅f(n)
满足此性质的连续映射形式必然是指数函数:
f(n)=einθ
其中 θ 为基频。这从理论上解释了为何必须采用指数形式的旋转。
由同态性质可知 f(n)=f(m+(n−m))=f(m)⋅f(n−m),即 f(n−m)=f(m)−1⋅f(n)(在 U(1) 中,f(m)−1=f(m)∗)。
在计算 Attention 内积时,变换算子的共轭转置自然出现:
⟨f(m)q,f(n)k⟩=q⊤f(m)∗f(n)k=q⊤f(n−m)k
中间项 f(m)∗f(n) 依据同态性质“坍缩”为 f(n−m)。
这意味着:绝对位置的编码通过内积运算,自然地诱导出了相对位置的表示。
RoPE 实际上是找到了整数加法群在复数乘法群上的一个酉表示(Unitary Representation)。
对于高维向量(如 d=4096),RoPE 采用分组旋转(Block-wise Rotation)策略。
我们将 d 维空间分解为 d/2 个二维子空间,并在每个子空间中应用独立的旋转。
对于第 i 个子空间,分配旋转频率 θi。通常 θi 遵循几何级数衰减:
θi=10000−2i/d
在工程实现中,无需显式构建稀疏的旋转矩阵。利用复数乘法的性质,可以通过向量的逐元素操作高效计算:
(x1x2)⊗(cosθcosθ)+(−x2x1)⊗(sinθsinθ)
这仅涉及 Hadamard 积(Element-wise Product)和向量拼接,计算复杂度为 O(d)。
RoPE 具备自然的远程衰减(Long-term Decay)特性。
随着相对距离 ∣m−n∣ 的增加,高频分量的旋转振荡加剧,导致点积期望趋近于 0。这符合语言模型的局部性偏好(Locality Bias)。
针对长上下文(Long Context)外推问题,NTK-Aware Scaling 是一种有效的插值技术。
其核心思想源于神经正切核(Neural Tangent Kernel, NTK)理论:通过调整旋转频率的基数(Base),将高频旋转转化为低频旋转,从而在不微调的情况下扩展上下文窗口。
这本质上是在频域内进行插值(Interpolation)而非外推(Extrapolation),保证了旋转后的特征频率仍落在模型训练时的频谱范围内。
RoPE 是几何美学的胜利。
它没有引入额外的参数,没有增加计算复杂度(旋转可以看作逐元素乘法),却完美地统一了绝对位置和相对位置。
在 LLaMA 等大模型中,RoPE 已经成为标配。理解了“旋转”,你就理解了现代大模型是如何感知“距离”的。