ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

相对位置编码与旋转位置编码(RoPE)浅析

相对位置编码与旋转位置编码(RoPE)浅析 绝对位置编码 vs 相对位置编码绝对位置编码绝对位置编码为序列中每个位置分配一个固定的编码向量然后与词嵌入相加输入词嵌入(token)位置编码(pos) 输入 词嵌入(token) 位置编码(pos)输入词嵌入(token)位置编码(pos)典型代表是原始 Transformer 的正余弦位置编码PE(pos,2i)sin⁡(pos100002i/dmodel),PE(pos,2i1)cos⁡(pos100002i/dmodel) PE(pos, 2i) \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right), \quad PE(pos, 2i1) \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)PE(pos,2i)sin(100002i/dmodel​pos​),PE(pos,2i1)cos(100002i/dmodel​pos​)优点无需训练无额外参数数值稳定值域[−1,1][-1, 1][−1,1]理论上可外推到任意位置。缺点直接建模的是绝对位置而不是相对距离长序列性能会衰减位置编码差异随距离增大而模糊实际外推能力有限训练时没见过的位置表现差。相对位置编码相对位置编码不直接编码“我在第几个位置”而是建模 token 之间的相对距离。它通常不在输入层加位置向量而是在注意力计算中引入相对位置信息。优点直接建模相对距离符合注意力本质外推能力更强对长序列更友好。缺点实现更复杂某些方法会增加计算量或参数量。旋转位置编码RoPE是目前最流行的相对位置编码被 LLaMA、GPT-J、PaLM 等大量先进模型采用。RoPE旋转位置编码是什么核心思想RoPE 的核心是对 Query 和 Key 向量进行旋转旋转角度与 token 的位置有关。这样两个 token 的 Q 和 K 做内积时结果只依赖于它们的相对距离。在二维空间中一个向量(x,y)(x,y)(x,y)逆时针旋转角度θθθ可以通过旋转矩阵实现R(θ)[cos⁡θ−sin⁡θsin⁡θcos⁡θ] R(\theta) \begin{bmatrix} \cos\theta -\sin\theta \\ \sin\theta \cos\theta \end{bmatrix}R(θ)[cosθsinθ​−sinθcosθ​]RoPE 对位置mmm的向量乘以R(mθ)R(m\theta)R(mθ)对位置nnn的向量乘以R(nθ)R(n\theta)R(nθ)。当计算注意力内积时(R(mθ)q)⊤(R(nθ)k)q⊤R(mθ)⊤R(nθ)kq⊤R((n−m)θ)k (R(m\theta)q)^\top (R(n\theta)k) q^\top R(m\theta)^\top R(n\theta)k q^\top R((n-m)\theta)k(R(mθ)q)⊤(R(nθ)k)q⊤R(mθ)⊤R(nθ)kq⊤R((n−m)θ)k内积只依赖于相对距离n−mn-mn−m与绝对位置无关。这就是 RoPE 的数学本质。例子二维子块旋转为了手算我们取一个很小的模型d_model 4 分成 2 个二维子块 频率θ_0 1, θ_1 0.1假设原始 Query 向量q[1,0,1,0]q [1, 0, 1, 0]q[1,0,1,0]原始 Key 向量k[1,0,1,0]k [1, 0, 1, 0]k[1,0,1,0]。我们计算位置m1m 1m1的 Q 和位置n3n 3n3的 K 的内积。位置 1 的 Q 旋转第一个子块(1,0)(1, 0)(1,0)旋转角度1×111 \times 1 11×11R(1)[10][cos⁡1−sin⁡1sin⁡1cos⁡1][10][cos⁡1sin⁡1][0.54030.8415] R(1)\begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\cos 1-\sin 1\\\sin 1\cos 1\end{bmatrix}\begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\cos 1\\\sin 1\end{bmatrix}\begin{bmatrix}0.5403\\0.8415\end{bmatrix}R(1)[10​][cos1sin1​−sin1cos1​][10​][cos1sin1​][0.54030.8415​]第二个子块(1,0)(1, 0)(1,0)旋转角度1×0.10.11 \times 0.1 0.11×0.10.1R(0.1)[10][cos⁡0.1−sin⁡0.1sin⁡0.1cos⁡0.1][10][cos⁡0.1sin⁡0.1][0.99500.0998] R(0.1)\begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\cos 0.1-\sin 0.1\\\sin 0.1\cos 0.1\end{bmatrix}\begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\cos 0.1\\\sin 0.1\end{bmatrix}\begin{bmatrix}0.9950\\0.0998\end{bmatrix}R(0.1)[10​][cos0.1sin0.1​−sin0.1cos0.1​][10​][cos0.1sin0.1​][0.99500.0998​]所以旋转后的 Qqm[0.5403,0.8415,0.9950,0.0998] q_m [0.5403, 0.8415, 0.9950, 0.0998]qm​[0.5403,0.8415,0.9950,0.0998]位置 3 的 K 旋转第一个子块(1,0)(1, 0)(1,0)旋转角度3×133 \times 1 33×13R(3)[10][cos⁡3sin⁡3][−0.99000.1411] R(3)\begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\cos 3\\\sin 3\end{bmatrix}\begin{bmatrix}-0.9900\\0.1411\end{bmatrix}R(3)[10​][cos3sin3​][−0.99000.1411​]第二个子块(1,0)(1, 0)(1,0)旋转角度3×0.10.33 \times 0.1 0.33×0.10.3R(0.3)[10][cos⁡0.3sin⁡0.3][0.95530.2955] R(0.3)\begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\cos 0.3\\\sin 0.3\end{bmatrix}\begin{bmatrix}0.9553\\0.2955\end{bmatrix}R(0.3)[10​][cos0.3sin0.3​][0.95530.2955​]所以旋转后的 Kkn[−0.9900,0.1411,0.9553,0.2955] k_n [-0.9900, 0.1411, 0.9553, 0.2955]kn​[−0.9900,0.1411,0.9553,0.2955]计算内积qm⋅kn0.5403×(−0.9900)0.8415×0.14110.9950×0.95530.0998×0.2955 q_m \cdot k_n 0.5403 \times (-0.9900) 0.8415 \times 0.1411 0.9950 \times 0.9553 0.0998 \times 0.2955qm​⋅kn​0.5403×(−0.9900)0.8415×0.14110.9950×0.95530.0998×0.2955逐项0.5403×(−0.9900)−0.53490.5403 \times (-0.9900) -0.53490.5403×(−0.9900)−0.53490.8415×0.14110.11870.8415 \times 0.1411 0.11870.8415×0.14110.11870.9950×0.95530.95050.9950 \times 0.9553 0.95050.9950×0.95530.95050.0998×0.29550.02950.0998 \times 0.2955 0.02950.0998×0.29550.0295总和−0.53490.11870.95050.02950.5638 -0.5349 0.1187 0.9505 0.0295 0.5638−0.53490.11870.95050.02950.5638验证只依赖于相对距离相对距离n−m3−12n - m 3 - 1 2n−m3−12。我们再取位置m0m 0m0的 Q 和位置n2n 2n2的 K相对距离也是 2。位置 0 的 Q角度为 0旋转后仍是[1,0,1,0][1, 0, 1, 0][1,0,1,0]。位置 2 的 K第一子块角度2×122 \times 1 22×12[cos⁡2,sin⁡2][−0.4161,0.9093][\cos 2, \sin 2] [-0.4161, 0.9093][cos2,sin2][−0.4161,0.9093]第二子块角度2×0.10.22 \times 0.1 0.22×0.10.2[cos⁡0.2,sin⁡0.2][0.9801,0.1987][\cos 0.2, \sin 0.2] [0.9801, 0.1987][cos0.2,sin0.2][0.9801,0.1987]所以k2[−0.4161,0.9093,0.9801,0.1987]k_2 [-0.4161, 0.9093, 0.9801, 0.1987]k2​[−0.4161,0.9093,0.9801,0.1987]。内积q0⋅k21×(−0.4161)0×0.90931×0.98010×0.19870.5640 q_0 \cdot k_2 1 \times (-0.4161) 0 \times 0.9093 1 \times 0.9801 0 \times 0.1987 0.5640q0​⋅k2​1×(−0.4161)0×0.90931×0.98010×0.19870.5640与之前算出的 0.5638 几乎相同差异来自舍入误差。这证明了内积只依赖于相对距离n−mn - mn−m与绝对位置无关。为什么大家都喜欢用 RoPE优点说明显式相对位置内积仅依赖相对距离符合注意力本质无限外推旋转是正交变换可无限延伸理论上可处理任意长度无参高效零额外参数计算开销可忽略与注意力天然结合直接在 Q、K 上旋转不改变模型结构多频率覆盖不同维度对用不同频率兼顾局部与全局正因为这些优势RoPE 已成为现代大模型位置编码的默认选择。P-RoPEProportional RoPE是什么2026 年 Gemma 4 引入了一种轻量变体 P-RoPE只对每个注意力头的前 25% 维度进行旋转其余维度保持原样。例如head_dim 512时仅前 128 维参与旋转。Gemma 4 采用“双 RoPE”配置滑动窗口层标准 RoPEθ10000\theta 10000θ10000全局注意力层P-RoPEθ1,000,000\theta 1,000,000θ1,000,000背后的假设位置信息的高频变化只需少数维度就能充分表达大部分维度可以保留为纯内容表示减少位置信号对语义空间的干扰。效果实现极其简单但在 Gemma 4 中被验证有效代表了位置编码从“全覆盖”向“按需分配”演变的新趋势。总结对比项绝对位置编码正弦相对位置编码RoPEP-RoPE编码对象绝对位置相对距离部分维度相对距离加入位置输入层相加注意力中旋转 Q、K仅旋转部分维度参数量000外推能力有限强强典型模型原始 TransformerLLaMA、GPT-J、PaLMGemma 4核心优势简单、无参相对位置、外推、高效减少位置干扰、按需分配一句话 RoPE 通过对 Q、K 做与位置相关的旋转让注意力内积只依赖相对距离它无参、高效、外推强因此成为现代大模型的首选。P-RoPE 则进一步只旋转部分维度在 Gemma 4 中验证有效代表了位置编码的新趋势。
返回列表