跳转到内容
English

RoPE-ViT:让位置进入特征比较

交互教程

绝对位置给 token 加地址;旋转位置改变两个 token 的比较方式。

前置阅读:ViT · 注意力与自回归

ViT 在输入中加入可学习绝对位置编码。序列模型已有 RoPE,通过旋转 query 与 key 编码相对位移。RoPE-ViT 研究如何将其用于两个空间轴。

将 Q/K 的每对通道视为二维向量,在位置 (x,y) 旋转相位 ωx x + ωy y。Axial RoPE 将通道对分别分配给各轴;mixed RoPE 让同一通道对同时使用两轴并学习频率,从而直接表示斜向频率。这不意味着 axial Transformer 无法识别斜向物体。

阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。

坐标

从实际 patch 网格生成 x、y。

x = index % width
y = index // width

mixed 相位

每个频率对组合两个空间轴。

phase = omega_x * x + omega_y * y
q_rot = rotate_pairs(q, phase)
k_rot = rotate_pairs(k, phase)

注意力分数

对旋转后的特征执行标准缩放内积。

scores = q_rot @ k_rot.transpose(-1,-2) / sqrt(head_dim)

查看固定版本来源

(Rϕ(p)q)T(Rϕ(s)k)=qTRϕ(s)−ϕ(p)k(R_{\phi(p)}q)^T(R_{\phi(s)}k)=q^TR_{\phi(s)-\phi(p)}k

Q 与 K 都会旋转,其内积取决于两者相位差。两位置平移相同距离,会在相位差中抵消。内容仍然重要:旋转不能取代学习得到的 Q/K 投影。

演示固定 y 相对位移为 2,调整 x 相对位移和频率方向。它只展示一个单位频率通道对。真实注意力头会累加多个不同频率、不同内容的通道对。

改变参数,查看计算值,再把它与上方的真实模型说明对照。

解析教学模型 · 控件改变的是例子,不是训练后的研究模型。

Δ = (x, 2)φ = ωx Δx + ωy Δy

一个通道对、单位频率;真实 attention 还会合并多个通道对及内容相关的 Q/K。

当前例子的计算值
量值
mixed 相位(弧度)2.828
旋转后单位向量内积-0.951

固定实现不旋转 class token,频率计算使用 float32,mixed 频率可训练。RoPE 在各层注意力内部作用,也可与绝对位置表并存。下列分类证据使用 224²、400 epoch 的 DeiT-III 训练协议。

条件指标数值解释
ViT-S,APE,测试 224 / 512Top-1 accuracy (%)80.4 / 75.4表 5,同一训练模型在两个分辨率测试
ViT-S,mixed,测试 224 / 512Top-1 accuracy (%)80.9 / 79.1仅分类;越高越好

分类分辨率外推不能证明重建或文字渲染更好。网格形状也重要:token 数相同不代表坐标相同。矩形网格的高或宽变化时必须使位置缓存失效。无空间锚点的 TiTok slots 不会因为数量是平方数就具有二维坐标。

展开公式推导

旋转矩阵是正交矩阵。Q 上的旋转经过转置后角度变号;两个平面旋转角度相加,因此最终只包含相位差。

Rϕ(p)TRϕ(s)=R−ϕ(p)Rϕ(s)=Rϕ(s)−ϕ(p)R_{\phi(p)}^TR_{\phi(s)}=R_{-\phi(p)}R_{\phi(s)}=R_{\phi(s)-\phi(p)}

线性坐标相位中,共同平移会抵消。这是旋转比较的性质,不能证明完整有限图像网络具有平移不变性。

ϕ(p+u)−ϕ(s+u)=ωT(p−s)\phi(p+u)-\phi(s+u)=\omega^T(p-s)
为什么同时旋转 Q 与 K?

成对旋转使比较依赖相位差;仅旋转 Q 会保留绝对相位依赖。

返回学习地图

本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。