RoPE:旋转位置编码
我们为什么需要位置编码?
绝对位置编码
把词嵌入向量
正余弦位置编码(Transformer)
其中,
我们为什么需要 RoPE?
正余弦位置编码的局限
正余弦位置编码具备一定的表达相对位置的能力:
- token
的词嵌入向量为 ,位置向量为 - token
的词嵌入向量为 ,位置向量为
attention 得分的本质是计算 token对 token 的关注度。
当与 做内积时,模型虽然能够间接捕捉到位置关系, 但需要额外“费力”从内积结果中分离出位置差异与语义相关度。
把位置信息乘上词嵌入向量
这就是 RoPE(Rotary Positional Embedding) 的思想。 设:
- 位置为
的 token 为 - 位置为
的 token 为
将词嵌入向量与绝对位置信息相乘:
此时我们计算两个 token 之间的注意力:
因此,RoPE 通过旋转操作自然地将相对位置信息编码进了注意力计算中。
为什么叫旋转位置编码?
词嵌入向量与绝对位置信息相乘,相当于把向量进行旋转。
因此这种方法被称为旋转位置编码(Rotary Positional Embedding, RoPE)。
RoPE 的优点
- 将相对位置信息显式融入注意力得分计算;
- 具备外推(extrapolation) 的潜力,能处理超出训练长度的序列。
什么是外推?怎么外推?
外推的定义
外推是指解决训练长度与预测长度不一致的问题。
成因
- 预测时会用到未训练过的位置编码;
- 预测时注意力机制要处理的 token 远超训练阶段的局部范围。
一个解决思路:“超强基线模型”
- 采用局部 attention;
- 使用掩码(masking),让预测时每个 token 只能看到训练长度范围内的 token。
实际效果
这种方法在实践中效果有限,仍存在性能衰减问题。
可能的原因:开头的几个token很重要,不能mask掉。
线性缩放(位置内插 Positional Interpolation)
将超长的位置按比例压缩,这一过程称为位置内插。
它通过压缩邻近 token 的距离,使模型在较长序列中依然能处理位置编码。
但这种方法会严重扰乱模型的局部分辨率。
- 外推:from
1—1—1—1—1—1—1—1to1——1——1——1——1——1——1 - 内插:from
1——1——1——1——1——1——1to1-1-1-1-1-1-1-1
NTK-aware Scaled RoPE
思想
低频内插,高频外推
将外推压力平均分摊到每一个维度上。 在 RoPE 中:
- 维度越高 → 频率越低 → 波长越长
- 维度越低 → 频率越高 → 波长越短
训练位置范围(高频 → 低频):
推理位置范围(高频 → 低频):
实现思路
- 低频维度:波长极长,采用内插,即压缩全局位置信息;
- 高频维度:波长极短,采用外推,保留局部位置的精细差异。 示意:
高频:1—1—1—1—1—1—1—1—1—1—1—1低频
高频:1——1——1——1-1-1-1-1-1-1-1-1低频
NTK-aware Scaled RoPE 存在的问题
当波长大于原最大序列长度时(即低频分量), 若对这些维度进行外推,会引入模型从未见过的旋转角度。
这些旋转角度对应的正余弦值在训练过程中模型也未曾学习过, 从而导致外推性能下降。
解决办法
- 对于波长大于训练长度(低频) 的维度:仅进行内插;
- 对于波长很短(高频) 的维度:进行完全外推;
- 对于中间频率的维度:采用原始的 NTK-aware Scaled RoPE。 这种分区处理的改进方法被称为:NTK-by-parts。
YaRN:Yet another RoPE extension method
论文标题:
YaRN: Efficient Context Window Extension of Large Language Models
作者:
Bowen Peng¹, Jeffrey Quesnelle¹, Honglu Fan²³, Enrico Shippole
¹Nous Research ²EleutherAI ³University of Geneva
方法核心
YaRN = NTK-by-parts + attention-scaling 它结合了 NTK-by-parts 的分频插值策略与注意力缩放机制,从而高效扩展大模型的上下文窗口。
Leaky ReRoPE
思想
只要窗口大小
就可以通过控制参数
让所有位置编码都不超过训练时的最大长度。
方法原理
通过平滑过渡的方式,将直接外推与位置内插结合:
- 当位置小于
时,使用标准编码; - 当位置超过
时,通过控制 缓慢递增,使得外推角度逐步“泄漏”(Leaky); - 这种方法能在不破坏局部信息的情况下,扩展可用上下文长度。 示意图中红色部分表示标准编码区域(训练范围内), 绿色部分表示“泄漏外推”区域(超出训练长度后平滑延伸)。

Leaky ReRoPE 的极限情况
当
Leaky ReRoPE 退化为 ReRoPE(Recurrent RoPE)。 此时,无论输入序列长度是多少, 其位置编码范围都被限制在
特点
- 位置编码不会继续增长,而是循环或复用已有编码;
- 理论上可以支持任意长度的上下文(Context);
- 兼具稳定性与扩展性,避免外推引发的角度漂移问题。