技术博客

二维 RoPE 与多模态位置

第 84 / 147 篇 · 2025-06-26 · ai · RoPE多模态位置编码

文本是序列,图像和视频是场。把 RoPE 搬进多模态模型,第一件事就是把"位置"从一维下标换成坐标 $(x, y)$(视频再加 $t$)。形式上只需要一句话:head dim 够长,切成几段,每个坐标轴用一段做独立的一维 RoPE。但这段切法里藏着几个值得算清楚的权衡。

轴向二维 RoPE:分组旋转

设 head dim $d$,均分为两组。位置 $(x,y)$ 的作用:

$$ f(q, (x,y)) = \big(\,R(x\,\Theta)\, q_{1:d/2},\;\; R(y\,\Theta)\, q_{d/2+1:d}\,\big), $$

其中 $R(\cdot)$ 是第 5060 篇的标准逐对旋转,$\Theta$ 是基频向量。两组共享同一套基频——这不是必需,只是最省参的做法。打分内积随之分解:

$$ \big\langle f(q,(x_1,y_1)),\, f(k,(x_2,y_2))\big\rangle = \underbrace{q_{1}^{\top} R(\Delta x\,\Theta)\, k_{1}}_{\text{水平相对位移}} + \underbrace{q_{2}^{\top} R(\Delta y\,\Theta)\, k_{2}}_{\text{垂直相对位移}}, $$

即注意力打分只依赖 $(\Delta x, \Delta y)$——二维平移不变性由结构保证,和语言里 RoPE 保证一维平移不变性完全同构。轴向方案在 ViT 系的实践里很常见(如 ViT-22B 用的 2D sincos 可视为其固定相位特例,部分视觉模型直接用轴向 RoPE)。

为什么不直接展平成一维

把 $H\times W$ 的 patch 按行展平成序列再用一维 RoPE,不是不行,是把一个已知结构先扔掉再让模型重新学回来:

  • 距离度量失真。展平后一维距离 $|i-j|$ 把"同一行相邻列"(距离 1)和"相邻行同列"(距离 $W$)放进同一个刻度,但视觉统计里两者都是局部邻接。轴向 RoPE 用 $(\Delta x, \Delta y)$ 分别编码,两个方向的局部性先验都对。
  • 平移不变性丢失。一维 RoPE 只保证序列方向平移不变;图像平移对应行、列同时变,轴向方案两个轴各自不变,组合起来二维不变。
  • 代价是 head dim 预算减半。每个轴只分到 $d/2$ 维,对数波长谱的覆盖范围按轴收缩(第 5070 篇的账本对每轴重算一遍)。图像 32×32=1024 patch 的规模下问题不大;分辨率再高,要么加 base 要么接受长波维不足。

M-RoPE:视频的三段式与时间戳对齐

视频多一个时间轴,Qwen2-VL 的 M-RoPE(Multimodal RoPE)把 head dim 切成三段:$t$ 段、$h$ 段、$w$ 段,各做独立旋转。规则的巧妙处在文本与图像如何塞进同一套坐标:

  • 纯文本 token 只有 $t$ 段随位置变化,$h,w$ 段固定在基准值——退化为标准一维 RoPE;
  • 图像 token 的 $t$ 段固定(一张图没有时序),$h,w$ 按 patch 行、列坐标旋转;
  • 视频帧的 token 三者都动:$t$ 取帧序号,$h,w$ 取帧内坐标。

这样图文混排的序列里,每个 token 的"位置"都是合法的三维坐标,注意力打分统一依赖相对坐标差。实现上就是第 5060 篇缓存表的推广:预计算三张 cos/sin 表,按 token 类型(文本/图像/视频帧)从对应表取行。

一个工程细节值得提:视频抽帧率不固定时,$t$ 刻度按时间戳而非帧序号编码,帧率差异被坐标本身吸收——用整数帧号会让 24fps 和 30fps 的同一段视频有完全不同的位置序列,时间戳编码则保持一致。这类"坐标语义化"的处理是位置编码从文本走向多模态后新增的设计维度。

和小结相关的边界

二维化不是免费的午餐,两个已知边界:其一,轴向方案对旋转(图像转 45°)不具备任何不变性——坐标轴是人为选的先验,和卷积的方形网格一样;其二,分辨率变化时(训练 224、推理 448)同样遇到外推问题,手段还是那套(插值、NTK、按轴缩放),第 5080–5110 篇的整套分析对每轴独立成立。位置编码的数学在多模态里没有变复杂,变复杂的是"位置"这个词本身的含义——从序列下标到场坐标,再到带语义的时间戳。

轴向二维 RoPE:每个坐标轴各占一段 head dim,内积只依赖 (Δx, Δy) (1,0) (0,2) y x t 段(时间/文本序) h 段(图像行/帧高) w 段(图像列/帧宽) 每段独立 RoPE 旋转 文本 token:只有 t 变 图像 token:t 固定,h w 按坐标 视频 token:t=时间戳, h w=帧内 内积 = R(ΔxΘ) 段内积 + R(ΔyΘ) 段内积 → 二维平移不变由结构保证