RoPE 深入:从 2D 子空间旋转拓展到 2D 图像位置编码
author:张一极
2026年02月05日21:20:42
1、引言
RoPE(Rotary Position Embedding)的核心思想是将 Embedding 向量两两分组,在2D 子空间中进行旋转。这种机制让 NLP 模型能够优雅地处理 1D 文本序列的相对位置。
图像是二维网格结构(高度 宽度 ),如果直接将其展平为 1D 序列使用标准 RoPE,会破坏图像在垂直方向上的相对位置关系。
本文将深入探讨 2D RoPE 的过程,即如何将旋转位置编码推广到二维数据(图像)中。
2、RoPE的2D与2D的RoPE不同
首先澄清一个概念:标准 RoPE 本身就是基于 2D 旋转矩阵的。
这里 是位置索引。在 NLP 中, 只是一个标量(第几个 token)。
而2D RoPE要做的事m变成2维索引(即图像内点的位置坐标x,y)
3、2D RoPE 的思路
对于图像,每个 patch(图块)的位置由两个坐标决定:,分别代表行(高度)和列(宽度)。
如果我们简单地把图像 Flatten 成序列:
那么位置 和 在序列中相邻,但在图像空间中它们可能相距甚远。使用 1D RoPE 无法反映这种二维空间关系。
2D RoPE 的核心思路:分解
我们将 Embedding 向量(维度为 )一分为二,这里的思想类似于神经网络中,你取某一个层分支去输出位置信息用于做位置训练一样,其实并不是真的他知道自己会去做位置训练,而是训练的数据赋予了这个含义:
这样,两个方向的位置信息是解耦的,通过 Concatenate(拼接)操作融合在一起。
4、2D RoPE 计算流程详解
假设我们有一个特征图 Feature Map,尺寸为 ,Embedding 维度(Head Dim)为 。
对于位于 的特征向量 :
第一步:向量切分 (Split)
将 切分为两部分:
其中 和 的维度均为 。
第二步:分别计算频率 (Frequencies)
我们需要两组频率,分别对应 和 。
假设标准 RoPE 频率计算函数为 。
高度编码:
对 应用位置索引 的 RoPE 旋转。
宽度编码:
对 应用位置索引 的 RoPE 旋转。
第三步:拼接 (Concat)
将旋转后的两部分拼接回去:
效果分析
当计算两个位置 和 的 Attention Score 时,点积结果将分解为两部分,一部分为两个token高度差,一部分为宽度差:
高度相对位置宽度相对位置 这样,Attention 就能同时感知垂直方向和水平方向的相对距离。
以上