4.3 旋转位置编码:为什么旋转能编码相对位置
旋转位置编码(Rotary Position Embedding,RoPE)由 Su 等人在 2021 年提出,现已成为包括 Llama、Gemma、DeepSeek 等主流大语言模型的标准位置编码方案。它的核心创新在于:用向量的“旋转”来优雅地同时编码绝对位置和相对位置。
4.3.1 核心直觉
RoPE 的基本思想可以用二维空间来直观理解。
想象一个二维平面上的向量。将它旋转一个角度 $\theta$,就得到了一个新的向量。关键观察是:两个被不同角度旋转的向量之间的点积,只取决于它们旋转角度的差值,而非各自的绝对角度。
数学上,如果向量 $q$ 被旋转 $m\theta$ 度(位置 $m$),向量 $k$ 被旋转 $n\theta$ 度(位置 $n$),那么:
R(mθ)q⋅R(nθ)k=qTR((m−n)θ)k
其中 $R(\alpha)$ 是旋转矩阵。结果只依赖于 $(m-n)$,即两个位置的相对距离。这正是需要的性质——注意力分数自然地编码了相对位置信息。
4.3.2 数学形式
在二维情况下,位置 $m$ 的旋转矩阵为:
Rm=(cosmθsinmθ−sinmθcosmθ)
对于 $d$ 维向量($d$ 为偶数),将其视为 $d/2$ 个二维子空间,每个子空间独立旋转,使用不同的频率 $\theta_i$:
θi=10000−2i/d
这与正弦位置编码使用了相同的频率公式,但应用方式截然不同:正弦编码是与嵌入相加,RoPE 是对查询和键进行旋转(乘法)。
RoPE 只应用于查询和键($Q$ 和 $K$),而不应用于值($V$)。这是因为位置信息需要影响的是“哪些位置应该互相关注”(由 $QK^T$ 决定),而非“关注后提取什么信息”(由 $V$ 决定)。
4.3.3 为什么 RoPE 如此成功
RoPE 的成功源于几个关键特性:
天然的相对位置编码。 注意力分数 $q_m^T k_n$ 在经过旋转后,自动变为相对位置 $(m-n)$ 的函数。模型不需要学习从绝对位置推导相对位置——这种关系直接嵌入在了数学结构中。
长度外推的潜力。 由于旋转操作对任意位置值都有定义,RoPE 理论上适用于任意序列长度。配合长度外推技术(如位置内插、NTK 感知缩放、YaRN 等),RoPE 能够从较短的训练长度外推到数倍甚至数十倍的推理长度。
远距离衰减特性。 研究表明,RoPE 中位置距离较远的词元对之间的注意力分数有自然衰减的趋势——距离越远,高频分量在旋转过程中“抵消”越多。这种隐式的局部性偏置在实践中是有益的:大多数有意义的语言关系确实存在于相对较近的上下文中。
下面的代码直观展示了这种衰减特性——固定一个查询向量,依次计算它与不同相对距离处的键的注意力分数:

图 4-2:RoPE 注意力分数随相对距离的衰减
从图中可以观察到,注意力分数随着相对距离的增加呈现出高频振荡且整体衰减的趋势。在近距离范围内分数波动较大且幅度较高;随着距离增大,高频分量的“旋转抵消”效应使得分数幅度逐步降低。这种自然的衰减特性使 RoPE 隐式具备了局部性偏置,无需额外机制即可让模型优先关注近距离的上下文。
实现高效。 RoPE 的旋转操作可以分解为逐元素的乘法和加法,计算成本几乎可以忽略不计,且不引入额外的可学习参数。
4.3.4 长度外推技术
虽然 RoPE 理论上支持任意长度,但直接外推到训练长度的数倍时,性能仍会下降。这催生了一系列长度外推技术:
位置内插(Position Interpolation):将推理时的位置索引线性压缩到训练时的范围内。例如,如果训练时最大长度为 4096,推理时长度为 8192,则将位置索引除以 2。
NTK 感知缩放:不是均匀地压缩所有频率,而是更多地缩放高频分量(它们对外推更敏感),保留低频分量。
YaRN(Yet another RoPE extensioN):结合了频率缩放和注意力温度调整,在多种长度外推基准上表现出色,被 Llama 3 等模型采用。
这些技术使得 RoPE 能够高效地支持 128K 甚至更长的上下文窗口,是现代大语言模型处理长文本的关键技术之一。
最后更新于
