编辑
2025-05-19
深度学习
00

目录

🌀 RoPE 旋转位置编码详解与计算示例
一、RoPE 的数学基础
1. 频率参数生成
2. 二维旋转矩阵构造
3. 向量旋转公式
二、实际计算示例
示例设定:
步骤 1:计算频率参数
步骤 2:计算旋转角度
步骤 3:构建旋转矩阵并应用
对维度 $ i = 0 $ 和 $ i = 1 $:
对维度 $ i = 2 $ 和 $ i = 3 $:
最终结果:
三、总结

🌀 RoPE 旋转位置编码详解与计算示例

一、RoPE 的数学基础

1. 频率参数生成

给定维度 dd 和位置 mm,定义频率参数:

θi=1100002i/d\theta_i = \frac{1}{10000^{2i/d}}

其中:

  • ii:维度索引(从 0 开始), 这个公式很好记忆,d 是向量维度,比如128。而ii 乘以2不能超过d,所以当d=128d=128 的时候,
  • dd:向量总维度。

2. 二维旋转矩阵构造

对每个维度 ii,构建对应的二维旋转矩阵:

R(i)=[cos(mθi)sin(mθi)sin(mθi)cos(mθi)]R(i) = \begin{bmatrix} \cos(m \theta_i) & -\sin(m \theta_i) \\ \sin(m \theta_i) & \cos(m \theta_i) \end{bmatrix}

3. 向量旋转公式

对于查询向量 qm[i],qm[i+1]q_m[i], q_m[i+1],旋转后的位置编码为:

qm[i]=qm[i]cos(mθi)qm[i+1]sin(mθi)qm[i+1]=qm[i]sin(mθi)+qm[i+1]cos(mθi)\begin{aligned} q'_m[i] &= q_m[i] \cdot \cos(m \theta_i) - q_m[i+1] \cdot \sin(m \theta_i) \\ q'_m[i+1] &= q_m[i] \cdot \sin(m \theta_i) + q_m[i+1] \cdot \cos(m \theta_i) \end{aligned}

二、实际计算示例

示例设定:

  • 维度 d=4d = 4
  • 位置 m=2m = 2
  • 查询向量 qm=[1,2,3,4]q_m = [1, 2, 3, 4]

步骤 1:计算频率参数

对每个维度 i=0,1,2,3i = 0, 1, 2, 3

θ0=1100000/2=1,θ1=1100001/2=0.01,θ2=1100002/2=0.0001,θ3=1100003/2=0.00001\theta_0 = \frac{1}{10000^{0/2}} = 1,\quad \theta_1 = \frac{1}{10000^{1/2}} = 0.01,\quad \theta_2 = \frac{1}{10000^{2/2}} = 0.0001,\quad \theta_3 = \frac{1}{10000^{3/2}} = 0.00001

步骤 2:计算旋转角度

使用 m=2m = 2,得到:

mθ0=2×1=2mθ1=2×0.01=0.02mθ2=2×0.0001=0.0002mθ3=2×0.00001=0.00002\begin{aligned} m \theta_0 &= 2 \times 1 = 2 \\ m \theta_1 &= 2 \times 0.01 = 0.02 \\ m \theta_2 &= 2 \times 0.0001 = 0.0002 \\ m \theta_3 &= 2 \times 0.00001 = 0.00002 \end{aligned}

步骤 3:构建旋转矩阵并应用

对维度 i=0i = 0i=1i = 1

R(0)=[cos(2)sin(2)sin(2)cos(2)][0.41610.90930.90930.4161]R(0) = \begin{bmatrix} \cos(2) & -\sin(2) \\ \sin(2) & \cos(2) \end{bmatrix} \approx \begin{bmatrix} -0.4161 & -0.9093 \\ 0.9093 & -0.4161 \end{bmatrix}

将向量 [1,2][1, 2] 应用旋转:

qm[0]=1(0.4161)20.9093=2.2347qm[1]=10.9093+2(0.4161)=0.0771\begin{aligned} q'_m[0] &= 1 \cdot (-0.4161) - 2 \cdot 0.9093 = -2.2347 \\ q'_m[1] &= 1 \cdot 0.9093 + 2 \cdot (-0.4161) = 0.0771 \end{aligned}

对维度 i=2i = 2i=3i = 3

R(2)=[cos(0.0002)sin(0.0002)sin(0.0002)cos(0.0002)][0.999999980.00020.00020.99999998]R(2) = \begin{bmatrix} \cos(0.0002) & -\sin(0.0002) \\ \sin(0.0002) & \cos(0.0002) \end{bmatrix} \approx \begin{bmatrix} 0.99999998 & -0.0002 \\ 0.0002 & 0.99999998 \end{bmatrix}

将向量 [3,4][3, 4] 应用旋转:

qm[2]=30.9999999840.0002=2.99999194qm[3]=30.0002+40.99999998=4.00000594\begin{aligned} q'_m[2] &= 3 \cdot 0.99999998 - 4 \cdot 0.0002 = 2.99999194 \\ q'_m[3] &= 3 \cdot 0.0002 + 4 \cdot 0.99999998 = 4.00000594 \end{aligned}

最终结果:

旋转后向量:

qm=[2.2347, 0.0771, 2.99999194, 4.00000594]q'_m = [-2.2347,\ 0.0771,\ 2.99999194,\ 4.00000594]

三、总结

  • RoPE 的优势

    • 捕捉相对位置信息;
    • 保持向量模长不变;
    • 可扩展至高维空间;
    • 支持长序列建模。
  • 应用场景

    • Transformer 架构中用于增强位置感知能力;
    • 大型语言模型(LLM)中的上下文建模。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!