当前位置: 首页 > news >正文

RoPE:现代 NLP 的位置编码范式

不仅解决了这个问题,还直接奠定了现代大模型中位置编码的事实标准,今天几乎所有主流开源大模型(LLaMA、Mistral、Qwen、GLM……)都在使用它。

这套方案就是旋转位置编码 RoPE(Rotary Position Embedding)

1. RoPE 的核心思路#

我们再再再看一遍标准的自注意力:

Attention(�,�,�)=softmax(����)�

这里 ��� 中的每个元素 ��⋅�� ,衡量的就是 token � 和 � 的内容相关性。

一直以来的问题都是:这个点积本身不知道任何位置信息。比如同一个词出现在位置 1 和位置 100,只要内容相同,点积结果就完全相同。

而之前提到过的 RPE 方案都是在"补救"这个问题,它们的共同特点是:

位置信息是通过种种逻辑"后加"到注意力分数上的,Q、K本身的语义仍然不变。

RoPE 的想法刚好相反:

不在注意力公式上做任何加法,而是让 Q 和 K 的向量表示本身就携带位置信息。

具体怎么做的?就是旋转

假设现在有一个 2 维向量 �=(�1,�2),我们让它绕原点旋转一个角度 �:

[�1′�2′]=[cos⁡�−sin⁡�sin⁡�cos⁡�][�1�2]

这就是一个标准的二维旋转矩阵 �(�),现在,我们定义一个函数,用这个矩阵对二维向量进行旋转,那就是:

�(�)=�(�)�

在这个基础上,我们再加入位置参数,看看如果我们对位置 � 的 Q 旋转 ��,对位置 � 的 K 旋转 ��,它们的点积会是什么?

�(�,�)=�(��)�,�(�,�)=�(��)�

�(�,�)��(�,�)=���(��)��(��)�

根据正交矩阵的转置等于逆和三角函数性质,我们得到:

�(��)��(��)=�(−��)�(��)=�((�−�)�)

最终结果如下:

�(�,�)��(�,�)=���((�−�)�)�

你会发现:点积结果只依赖于 �−�,即相对位置。
这一段推导下来说明的是什么?

如果我们用一个和位置相关的旋转函数对两个位置的 � 和 � 进行旋转,那么二者的点积结果,也就是注意力分数就会受到它们之间的相对位置影响。

这便是 RoPE 的核心思路。

2. RoPE 的具体逻辑#

2.1 高维空间推广问题#

二维旋转给了我们启发,但实际中向量维度 � 通常几百上千。
现在,一个很自然的想法就是:

直接对整个高维向量做一次整体旋转。

但这里会带来一个严重问题:

整体旋转造成大规模的信息耦合,导致优化困难。

首先,训练后,无论是词向量,还是经过线性变换后的 � 和 �,本质上都已经处于一个训练好的高维特征空间中。

虽然我们很难精确说:“第几维一定表示什么语义”。但模型已经通过大量训练,学会了不同维度间的语义关系、结构。
如果此时用一个矩阵直接对整个高维向量进行一次全局旋转,那么新的每个维度都是由所有原始维度大规模混合得到,破坏了原有的语义结构。
例如:

�1′=0.3�1+0.7�18−0.2�93+…

你可能会问:

通过反向传播,我们训练出来的语义空间本身不就是适应旋转操作的语义空间吗?

这句话本身是完全没有问题的,但是这时:一个维度会依赖大量其它维度、局部修改会影响整体结构、特征分工会变得困难、梯度传播会更加复杂。
因此,这种全局耦合会让优化会变得非常困难。

因此,问题就变成了:

如何最小入侵式地把位置信息注入到语义空间中?

RoPE 的答案是:

不对整个高维向量做一次整体旋转,而是把高维向量拆成多个二维子空间,每两个维度组成一组,在各自的小平面内独立旋转。

例如对于一个向量:

�=(�1,�2,�3,�4,�5,�6)

RoPE 会拆成:

(�1,�2),(�3,�4),(�5,�6)

然后分别进行二维旋转:

�(�1),�(�2),�(�3)

于是整个变换过程可以写成:

RoPE(�,�)=[�(��1)000�(��2)000�(��3)]�

这样:每个二维旋转块,只会影响自己对应的两个维度。
例如 (�1,�2) 只会在自身内部发生变化:

[�1′�2′]=�(�)[�1�2]

具体展开就是这样:

�1′=�1cos⁡�−�2sin⁡�

�2′=�1sin⁡�+�2cos⁡�

现在, 特征只会在两个维度间进行局部混合,不会像之前一样发生全局混合。
这样,原本的大尺度语义结构仍然保留,特征之间的稳定关系就不会被整体破坏,优化也更容易进行。

值得一提的是,为了合理应用 RoPE 和其他相关技术,我们会刻意设计模型输入维度为偶数,如果出现了奇数情况,那么最后一维不旋转。

除此之外,旋转本身还有一个极其重要的性质:

旋转矩阵是正交矩阵,应用只会改变向量方向,而不会改变长度。

这相比之前的直接修改特征值或额外叠加位置特征,RoPE 更接近在原有语义结构上,施加一种轻量级的几何变化。

到这里,我们先初步解决了高维向量的旋转带来的优化问题,下面才是旋转在语义逻辑中的真实应用。

2.2 不同频率的旋转#

在之前的 T5 中,我们就提到过可学习编码相对固定编码的优势:适应能力,但这也让其失去了外推能力。
而 RoPE 以一种及其巧妙的方式几乎实现了二者兼得,我们来具体展开:

首先,如果所有二维子空间都使用同一个角度 � 旋转,那么位置 � 的旋转就是:

�(��)

你会发现这时位置 � 所在 token 的所有维度都会以完全同步的方式旋转。这会导致一个严重问题:整个高维空间实际上只拥有一种位置变化模式。

这样模型能够表达的位置关系非常有限。 因为不同的距离会被混在同一种旋转节奏中,很容易出现 “不同 token 间:我正好比你多转一个周期,咱们俩是一样的” 这种情况,这就会混淆模型对近距离和远距离的感知。

所以,RoPE 同样给出了解决方案:

不同二维子空间使用不同旋转频率。

即不同维度拥有不同的 ��,通常定义为:

��=10000−2��

这样,低维部分更高频,对位置变化更敏感,高维部分更低频,更适合远距离关系。
我们举一个简单的实例,假设现在只有两个二维子空间:

,,�1=1,�2=0.01

对于位置�=1 :

,,1�1=1,1�2=0.01

而当位置变成 �=100 时:

,,100×1=100,100×0.01=1

你会发现:

  1. 高频部分疯狂旋转,相邻 token 的差异会被迅速放大,它更适合编码近距离关系。
  • 低频部分变化缓慢,即使位置跨度很大,角度差异仍然保持稳定,它更适合编码长距离关系。

这样即使某一个频率“绕了一圈”,其它频率通常仍然不会同步重复。多个频率共同组合后,模型就能够唯一地区分大量不同位置。

现在,我们就可以回到开始的问题:

为什么说 RoPE 同时具备“固定编码”和“可学习编码”的优点?

首先,RoPE 的旋转规律是固定的,因此它保留了数学连续性,从而确保了外推能力。
于此同时,真正承载语义信息的 � 或 � 仍然是自适应的,以 � 为例:

�=���

中的 �� 仍然是可学习的,于是模型会主动学习哪些特征适合高频旋转、哪些特征适合低频旋转、如何组织语义空间去适应旋转结构等逻辑,而这就确保了其同时拥有一定的适应能力。

3. RoPE 的优势所在#

最终,RoPE没有修改 Attention 公式,没有增加额外 Bias,没有显式位置表,只是对 �,� 做了一个几何变换,就让其天然变成了与相对位置相关的注意力机制。

在实现中,整个 RoPE 操作只是逐对执行:

RoPE(�,�)=[�1cos⁡(��0)−�2sin⁡(��0)�1sin⁡(��0)+�2cos⁡(��0)�3cos⁡(��1)−�4sin⁡(��1)�3sin⁡(��1)+�4cos⁡(��1)⋮]

这意味着整个操作复杂度是 �(�),和 Q/K 本身的线性变换完全同量级。连额外计算开销都几乎没有。

此外,值得一提的是,在 RoPE 的框架下,两个距离很远的 token 的 QK 点积上界会自然变小。
可以理解为:不同频率的旋转角度随着 |�−�| 增大会产生不同程度的累积。高频维度在远距离时旋转了太多圈,两个向量的方向越来越难对齐,于是点积上界自然降低。
而这种位置越远的 token,对当前 token 的影响上限越低,这恰好是语言模型需要的一种归纳偏置。

再结合 Cache 等工程优化,从 2023 年开始,RoPE 几乎成了开源大语言模型位置编码的标准答案:

模型系列备注
LLaMA / LLaMA 2 / LLaMA 3RoPE + Position Interpolation 扩展
Mistral / Mixtral滑动窗口 + RoPE
Qwen 系列RoPE + NTK-aware 扩展
GLM 系列RoPE
GemmaRoPE
DeepSeek改进版 RoPE

4. 二维 RPE 现状#

需要强调的是:RoPE 虽然成为了现代 NLP 的 RPE 范式,但其在二维数据中却并不能很好地直接迁移。

其根本原因可以总结为:

RoPE 建模的是“序列距离关系”,而视觉更依赖“空间几何关系”。

在 NLP 中,token 的位置天然是一条线性序列,而图像中的位置却是二维坐标:
虽然可以简单地将两个方向分别做 RoPE 旋转,但这种方式本质上只是两个一维编码的拼接,难以真正表达二维空间中的方向性、几何结构、局部纹理关系等视觉信息。

此外,RoPE 还有我们上面提到的: “距离越远,相关性更容易衰减。” 的逻辑。但在视觉任务中:两个距离很远的 patch 仍然可能高度相关,例如天空纹理等。

因此,目前二维位置编码仍然没有像 NLP 中的 RoPE 那样的统一标准答案。

当前主流方案主要包括:

方向本质目标
Relative Bias显式建模二维距离
2D RoPE尝试保留 RoPE 的相对位置性质
LePE / Conv PE补充局部纹理与方向归纳偏置
Hybrid 方法同时结合全局 Attention 与局部几何结构
http://www.jsqmd.com/news/1150683/

相关文章:

  • 5款主流机器人仿真软件对比:Gazebo、Webots、CoppeliaSim、MuJoCo、RoboDK 2024选型指南
  • PromptHero 与 Lexica.art 深度对比:3大维度解析AI绘画提示词库的精准度与效率
  • 3种主流AI绘画API对比:OpenAI gpt-image-1 vs DALL·E 3 vs 文心一格,实测生成速度与成本
  • ROS 2 Humble 三选一:Webots、Gazebo、Stage 2024年新手入门决策指南
  • 多模态AI模型对比:GPT-4V vs. Gemini Pro Vision 图像理解能力实测
  • TINYCD 与 BIT 模型对比评测:参数量减少150倍下的性能取舍分析
  • VirtualBox搭建Ubuntu开发环境:隔离性与快照驱动的实验沙盒实践
  • 元学习 vs 微调:CDFSL 场景下3种策略选择与2个关键超参分析
  • 揭秘Mermaid实时编辑器:5分钟创建专业图表的技术革命
  • LBL/SBL/USBL 3大水声定位系统对比:精度、成本与部署复杂度实测分析
  • 知识蒸馏温度系数 T 调参实战:从 0.1 到 10.0 对模型精度影响分析
  • Webots 2023 与 Gazebo 11 对比:5 项核心指标实测与 3 大场景选型建议
  • 什么是大模型API网关?2026年开发者必知的概念入门指南
  • 基于MP2672A与STM32的锂电池主动均衡系统设计
  • ROS 2 Humble 3大仿真平台选型指南:Webots、Gazebo、Stage 的 5 个关键维度对比
  • 格拉姆角场 GAF 与 MTF 对比:2 种时序转图像方法在 CNN 分类中的性能差异分析
  • 4D毫米波雷达水上应用:WaterScenes 数据集在3类感知任务中的性能基准
  • Windows 11 部署 TensorFlow GPU:WSL2 对比原生安装的 3 大优势与实测
  • TINYCD 2022 轻量变化检测实战:EfficientNet_b4 主干实现 13-150 倍参数量压缩
  • 3大核心功能+5个实战技巧:Escrcpy让你轻松玩转电脑控制安卓手机
  • 基于STM32单片机空气质量监测 温湿度 光照 无线传输报警系统213(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • ONNX 模型部署避坑:动态输入转静态输入的 2 种方法与精度验证
  • OpenCV 4.9.0 Canny边缘检测实战:5步实现医学影像血管分割(附Python代码)
  • 注意力机制 3 种变体对比:MHA、MQA、GQA 的原理与适用场景解析
  • 强化学习3大核心算法对比:Q-Learning、DQN、PPO在Atari游戏中的性能与适用性分析
  • ROS Noetic 4款SLAM算法实战对比:gmapping/hector/cartographer/ORB_SLAM2 建图精度与效率实测
  • 空气质量预测数据预处理实战:Python处理缺失值与异常值的5种方法对比
  • qmc-decoder深度指南:3步解锁QQ音乐加密文件的终极方案
  • RTX 3060 12G 部署 Stable-Diffusion-WebUI:5 分钟启动优化与 xFormers 配置实测
  • USVInland 与 FloW 数据集:3大任务(SLAM/立体/分割)与毫米波雷达融合实战