RoPE:旋转如何记住相对位置?
把四维 Q、K 拆成两个二维平面。亲手移动 token 位置,观察不同频率的旋转,再用数值验证相对位置恒等式。
分量对 0:高频旋转
分量对 1:低频旋转
中间向量:每步旋转一个分量对
完整旋转的相对位置恒等式
此处预览两对全部旋转后的结果。因为 R(m)ᵀR(n) = R(n − m),同时平移两个位置不会改变内积。
从绝对旋转得到相对关系
θᵢ = b^(−2i/d),d = 4,i ∈ {0, 1} R(pθ)[x,y] = [x cos(pθ) − y sin(pθ), x sin(pθ) + y cos(pθ)]
蓝色为 Q,橙色为 K;虚线是原向量,实线与圆点是当前向量。旋转角为正时逆时针。不同二维分量对使用不同频率,而不是所有维度转同一个角度。调节两个方向会改变原始向量,两个平面中的向量长度固定。
试一试:把 m、n 都增加 1,比较完整内积;再让 m = n,比较旋转前后的内积。b 越大,第二对转得越慢,第一对频率保持为 1。
边界:这里仅实现 4 维 RoPE 及内积,不是训练过程或完整语言模型。真实模型维度更高;未实现长上下文缩放变体。此处显示的是未经 √d 缩放和 softmax 的内积,不能直接理解成注意力概率。