返回文章列表

旋转的坐标:RoPE 位置编码如何成为大模型的"时间轴"

为什么几乎每个现代大模型都在用旋转位置编码(RoPE)?它如何用一组旋转矩阵把"绝对位置"编码成"相对距离"?从 RoFormer 的二维旋转、远程衰减的数学直觉,到位置插值、NTK-aware、YaRN 和 LongRoPE 的长度外推演进,再到 Selective RoPE、LeRoPE 等 2026 年的新方向,本文拆解这条贯穿 Transformer 的主线。

11 分钟阅读

一个看不见但处处存在的问题

Transformer 的注意力机制本身是"无序"的:Attention(Q, K, V) 对输入序列做的是集合级运算,交换两个 token 的位置,点积结果只是顺序换了一下,模型并不知道"张三说完了轮到李四"。为了让模型理解"谁先谁后",所有 Transformer 架构都必须给 token 注入位置信息,这就是位置编码(Position Encoding)。

位置编码有两个朴素的流派:绝对位置编码直接把位置编号加进 embedding(如正弦编码、可学习编码);相对位置编码则显式建模 token 对之间的距离(如 T5 的 bias、Transformer-XL)。但这两派各有代价——绝对编码外推差、不显式表达相对关系;相对编码往往要改注意力内核,难兼容高效实现。

旋转位置编码(Rotary Position Embedding,RoPE)给出了第三种答案:用旋转矩阵编码绝对位置,却让注意力分数天然只依赖相对距离。它由苏剑林团队在 2021 年《RoFormer》论文中提出,如今已是 LLaMA、Qwen、Baichuan、ChatGLM、DeepSeek 等主流模型的标配。2026 年回头看,RoPE 是少数从论文到工业界"零损耗"迁移的架构创新之一。

核心思想:把位置变成旋转角度

RoPE 的思路非常几何化:把 query 和 key 向量按维度两两配对,每对二维分量看成一个平面上的点,然后让这个点绕着原点旋转一个与位置成正比的角度

具体来说,对于第 m 个位置的 query 向量,先把它切成 d/2 个二维子向量 (x_{2i}, x_{2i+1}),每个子向量乘上一个 2×2 旋转矩阵:

R(θ_i, m) = [cos(mθ_i)  -sin(mθ_i)]
            [sin(mθ_i)   cos(mθ_i)]

其中 θ_i = b^(-2i/d) 是第 i 个频带的基频,b 通常取 10000。整个位置编码就是把 d/2 个这样的旋转矩阵拼成块对角矩阵 R_Θ,m,对 query 和 key 分别作用。

这个设计的美妙之处在于旋转矩阵的性质:R^T_m R_n = R_{n-m}。于是 query 和 key 的点积会自动坍缩成只与位置差有关的形式:

q^T_m k_n = (R_m q)^T (R_n k) = q^T R_{n-m} k

也就是说,模型看到的注意力分数只依赖 n-m 这个相对距离——绝对位置被编码进去,相对位置被解码出来。这就是"用绝对位置实现相对位置"的数学本质。

频率带:从高频到低频的时间轴

θ_i = b^(-2i/d) 是一个几何级数:维度越靠前,频率越高;维度越靠后,频率越低。这构成了一个多尺度"时钟":

  • 高频带i 小):旋转快,几个 token 就转完一整圈,擅长分辨邻近位置的细微差别。
  • 低频带i 大):旋转慢,旋转一整圈需要成千上万个 token,负责覆盖长距离的位置关系。

类似正弦编码的思路,不同频率带覆盖不同尺度,模型可以按需"读取"不同粒度的位置信息。这也是后续所有长度外推方法动手脚的抓手——要么改 b(基频),要么按频带做差异化缩放。

RoPE 还有个经常被忽略的性质:旋转矩阵是正交的,不改变向量的模长。这意味着注入位置信息不会干扰向量本身的语义强度,数值上比加性编码更稳定,这也是它训练更稳的原因之一。

远程衰减:直觉与争议

RoPE 论文还证明了它的**远程衰减(Long-Term Decay)**性质:注意力分数随相对距离增大而衰减,相邻 token 天然获得更高权重。这符合语言模型"邻近更重要"的归纳偏置,也让模型在训练时自然形成局部注意模式。

但 2024-2026 年的研究对这个结论做了重要修正。HoPE(2024)通过实验发现,实际学到的注意力模式并不是单调衰减的,而是呈现 U 形曲线——开头和结尾的 token 也拿到较高注意力。这提醒我们:远程衰减是 RoPE 引入的归纳偏置,但不是模型行为的全部,具体频带的贡献需要逐带分析,这直接催生了后来的选择性旋转方法。

长度外推:RoPE 最大的战场

RoPE 理论上可以编码任意长的位置,但实践中有个著名痛点:训练长度之外,性能断崖式下跌。模型在 4096 token 上训练,喂它 8192 token 的上下文,困惑度会显著上升。原因是外推时高频带的位置旋转角度超出训练分布,注意力分数分布失真。

围绕这个问题,出现了一条清晰的方法演进线:

  • 位置插值(Position Interpolation,PI,2023):最简单的思路——把超出训练长度的位置坐标线性压缩回训练区间,如把 [0, 8192) 的位置统一除以 2 映射到 [0, 4096)。成本低、效果直接,但会让所有频带"变慢",高频细节损失。
  • NTK-aware 插值:把插值等价为调整基频 b。思想来自 Neural Tangent Kernel 的缩放规律,只动高频带,保留低频带的原始频率,长程能力损失更小。但它需要试探性调参,对基频的改动很敏感。
  • YaRN(2023):EleutherAI 提出更精细的"NTK-by-parts"方法——按波长把频带分成三类:波长远小于上下文窗口的高频带直接不缩放、波长接近窗口的中频带做线性插值、波长远超窗口的低频带原样保留。配合温度系数修正注意力熵,在 LLaMA 上实现了 64K 到 128K 的稳定扩展。
  • LongRoPE(2024):把"统一缩放"升级为"非均匀缩放"——用进化搜索为每个频带寻找独立的缩放因子,配合渐进式扩展(先扩到 256K 再微调、再扩到 2048K),首次把模型上下文窗口推到 2048K tokens。它的后续 LongRoPE2 通过分析训练不足问题与混合上下文窗口训练,在保持短上下文性能的同时把 LLaMA3-8B 的有效上下文扩展到 128K。

这条线揭示了一个通用规律:所有基于 RoPE 的长度扩展方法,本质上都是在重映射频带频率。谁对频带的处理更符合模型的实际使用方式,谁的效果就更好。

2026 年的新方向:选择性旋转与可学习频率

长度外推远不是终点。近两年的研究开始质疑 RoPE 的底层假设,出现了一批"修正 RoPE"的工作:

  • Partial RoPE / pp-RoPE(2024):研究发现模型实际把大部分注意力集中到低频带,低频带承载语义而非位置信息。于是干脆去掉最慢频带的旋转,只保留高频带做位置编码,长序列泛化反而更好。
  • Selective RoPE(ICLR 2026):把注意力机制和线性注意力统一到"旋转 + 门控"的视角下,指出纯旋转不够、选择性门控也是必要的,提出选择性旋转位置编码,在多个任务上超越标准 RoPE。
  • LeRoPE(2026):不再固定 b=10000 的几何频率,而是把频率参数变成可学习的,让模型自己决定每个频带的旋转速度。结果显示可学习频率能显著提升语言建模效果,说明固定基频本身就是一个次优假设。
  • Spiral RoPE(2026):针对二维视觉场景,把 1D 的平面旋转推广为 2D 螺旋旋转,解决图像 token 之间对角方向位置关系缺失的问题。
  • PoPE(2026):由 LSTM 之父团队提出,针对 RoPE 中"是什么"与"在哪里"信息纠缠的问题,用极坐标编码解耦二者,在多项任务上取得更优表现。

这些工作共同指向一个判断:RoPE 的几何框架是成功的,但固定频率 + 均匀旋转可能只是它的第一个版本,未来很可能是可学习、可选择、甚至频带自适应旋转的方向。

走向多模态:从一维线到二维面

RoPE 最初只为一维文本序列设计。随着多模态大模型兴起,研究者把它推广到图像、视频:

  • M-RoPE(Qwen2-VL):把位置分解为时间、高度、宽度三个分量,分别用不同维度的频带编码,让视觉 patch 的 2D 空间结构进入位置编码。
  • VRoPE(2025):针对视频-文本交错序列,指出扁平化 1D 处理会扭曲时空局部性,提出显式建模帧间位置的编码方式,缓解了 RoPE-3D 在视频-文本边界处的注意力断裂问题。

这类工作本质上是回答同一个问题:当"位置"从一条线变成一张图、一段视频,旋转该如何定义? 目前还没有统一答案,但 RoPE 的多维扩展已经是多模态架构的默认起点。

旋转的本质

RoPE 的贡献不是引入了一种新奇的数学工具,而是给出了一个同时满足三个目标的优雅解:编码绝对位置、解码相对距离、兼容线性注意力。它把"位置"从加法变成了乘法,把"编号"变成了"角度",从而让模型可以在不改变注意力内核的前提下获得相对位置信息。

理解 RoPE,也就理解了过去五年大模型架构的一条暗线:位置编码不是配料,而是决定模型能"看多远、记多准"的地基。从 10000 的基频到可学习频率,从一维旋转到二维螺旋,这条主线仍在延伸。

来源:RoFormer: Enhanced Transformer with Rotary Position Embedding(arXiv:2104.09864)Extending the RoPE / YaRN(EleutherAI Blog)LongRoPE: Extending LLM Context Window Beyond 2 Million Tokens(arXiv:2403.15368)LongRoPE2(arXiv:2410.01814)HoPE: A Novel Positional Encoding Without Long-Term Decay(arXiv:2410.21216)VRoPE: Rotary Position Embedding for Video Large Language Models(arXiv:2502.11664)Selective Rotary Position Embedding(arXiv:2511.17388)LeRoPE: Learnable RoPE Frequencies Improve Language Modeling(arXiv:2607.10134)旋转位置编码(百度百科)

(内容由AI生成,仅供参考)