ROPE的远程衰减

98 阅读2分钟

对于ROPE的原理,可以参看 juejin.cn/post/753462…

一、背景知识

1. Abel变换

Abel变换,也称为分部求和法,是一种在级数求和中非常有用的技巧。

(1) Abel变换公式

{an}\{a_n\}{bn}\{b_n\}是两个数列,记Bn=k=1nbkB_n=\sum_{k = 1}^{n}b_k(其中B0=0B_0 = 0 ),则:

k=1nakbk=anBnk=1n1(ak+1ak)Bk\sum_{k=1}^{n}a_kb_k=a_nB_n-\sum_{k = 1}^{n - 1}(a_{k + 1}-a_k)B_k

(2) 推导过程

k=1nakbk=k=1nak(BkBk1)=a1(B1B0)+a2(B2B1)+a3(B3B2)++an(BnBn1)=a1B0+(a1a2)B1+(a2a3)B2++(an1an)Bn1+anBn \begin{align*} \sum_{k=1}^{n}a_kb_k&=\sum_{k = 1}^{n}a_k(B_k - B_{k - 1})\\ &=a_1(B_1 - B_0)+a_2(B_2 - B_1)+a_3(B_3 - B_2)+\cdots +a_n(B_n - B_{n - 1})\\ &= -a_1B_0+(a_1 - a_2)B_1+(a_2 - a_3)B_2+\cdots+(a_{n - 1}-a_n)B_{n - 1}+a_nB_n\\ \end{align*}

因为B0=0B_0 = 0,所以就得到k=1nakbk=anBnk=1n1(ak+1ak)Bk\sum_{k=1}^{n}a_kb_k=a_nB_n-\sum_{k = 1}^{n - 1}(a_{k + 1}-a_k)B_k

二、 PE相关内容

1. PE的理想状态

在理想状态下,PE应满足以下核心特性:

(1)单调平滑的衰减曲线

注意力分数随相对距离的增加而单调下降,避免周期性震荡。例如,当相对距离Δ从0增加到L时,内积值应呈现类似高斯函数的衰减模式:

Attention(Δ)αΔ \text{Attention}(\Delta) \propto {-\alpha \Delta}

其中α为衰减系数。这种平滑衰减能确保模型对远距离token的依赖度稳定降低,避免因高频维度周期性导致的注意力分数“回升”现象。

(2)无限外推能力

模型在训练长度之外仍能保持衰减规律。例如,当训练长度为4k时,外推至16k甚至100k时,衰减曲线的形状和速率应与训练范围内一致。

2. 旋转编码的周期性震荡

ROPE的远程衰减呈现波浪线形状,其根本原因在于旋转编码的周期性维度混叠效应的共同作用。

(1)旋转矩阵的周期性

对于三角函数sin(wx),它的周期是 T=2π/ω。 对应到RoPE里的每个维度sin(mθj),cos(mθj)sin(⁡mθ_j),cos(mθ_j),其中 θj=b2(j1)/d,j[1,2,...,d/2]\theta_j=b^{-2(j-1)/d}, j \in [1,2,...,d/2]

计算得到周期为:2πmb2(j1)d\frac{2\pi}{m} b^{\frac{2(j-1)}{d}}。其中,用 b 表示base,即10,000,m是指token位置,j是指token的embedding维度。

  • 当m为1时,j为0,对应周期为2πb0=2π=6.282π*b^0=2π=6.28
  • 当m为1时,j为d/2时,对应周期为2πb=2π10,000=62,831.852π*b=2π*10,000=62,831.85

3. 远程衰减原理推演

θi\theta_i的选择上,作者沿用了Transformer作者的位置编码的方案,即 θi=100002i/d\theta_i = 10000^{-2i/d},它可以带来一定的远程衰减性。

具体证明如下:将 q,k\boldsymbol{q},\boldsymbol{k} 两两分组后,它们加上RoPE后的内积可以用复数乘法表示

(Rmq)TRnk=Re[i=0d/21q[2i:2i+1]k[2i:2i+1]ej(mn)θi](14)(\boldsymbol{R}_m{q})^T \boldsymbol{R}_n {k} =\operatorname{Re} \left[ \sum_{i=0}^{d/2-1} \boldsymbol{q}_{[2i:2i+1]} \boldsymbol{k}^*_{[2i:2i+1]} e^{\mathrm{j}(m-n)\theta_i} \right] \tag{14}

hi=q[2i:2i+1]k[2i:2i+1]h_i = \boldsymbol{q}_{[2i:2i+1]} \boldsymbol{k}_{[2i:2i+1]}^*Sj=i=0jej(mn)θiS_j = \sum_{i=0}^j e^{\mathrm{j}(m-n)\theta_i},并约定 hd/2=0h_{d/2} = 0S0=0S_0 = 0,那么由Abel变换(分部求和法)可以得到:

i=0d/21q[2i:2i+1]k[2i:2i+1]ej(mn)θi=i=0d/21hi(Si+1Si)=i=0d/21Si+1(hi+1hi)(15)\sum_{i=0}^{d/2-1} \boldsymbol{q}_{[2i:2i+1]} \boldsymbol{k}_{[2i:2i+1]}^* e^{\mathrm{j}(m-n)\theta_i} = \sum_{i=0}^{d/2-1} h_i (S_{i+1} - S_i) = -\sum_{i=0}^{d/2-1} S_{i+1} (h_{i+1} - h_i) \tag{15}

所以

i=0d/21q[2i:2i+1]k[2i:2i+1]ej(mn)θi=i=0d/21Si+1(hi+1hi)i=0d/21Si+1hi+1hi(maxihi+1hi)i=0d/21Si+1(16) \begin{aligned} \left| \sum_{i=0}^{d/2-1} \boldsymbol{q}_{[2i:2i+1]} \boldsymbol{k}_{[2i:2i+1]}^* e^{\mathrm{j}(m-n)\theta_i} \right| &= \left| \sum_{i=0}^{d/2-1} S_{i+1} (h_{i+1} - h_i) \right| \\ &\leq \sum_{i=0}^{d/2-1} |S_{i+1}| \, |h_{i+1} - h_i| \\ &\leq \left( \max_i |h_{i+1} - h_i| \right) \sum_{i=0}^{d/2-1} |S_{i+1}| \tag{16} \end{aligned}

因此我们可以考察 1d/2i=1d/2Si\boldsymbol{\dfrac{1}{d/2} \sum_{i=1}^{d/2} |S_i|} 随着相对距离的变化情况来作为衰减性的体现,Mathematica代码如下 (注:上述公式中 j\mathrm{j} 为虚数单位,若习惯用 ii 表示虚数,可将 j\mathrm{j} 替换为 ii;向量 q,k\boldsymbol{q},\boldsymbol{k} 的下标 [2i:2i+1][2i:2i+1] 表示取第 2i2i2i+12i+1 维的子向量。)

image.png

4. case说明衰减

公式推导与结论

假设我们考虑第0个query和第n个key的内积,且 q\boldsymbol{q}k\boldsymbol{k} 均为 ones 向量。

(Rmq)T(Rnk)=qTRnmk=2i=0d/21cos((nm)θi)(\boldsymbol{R}_m\boldsymbol{q})^T(\boldsymbol{R}_n\boldsymbol{k}) = \boldsymbol{q}^T\boldsymbol{R}_{n - m}\boldsymbol{k} = 2\sum_{i = 0}^{d/2 - 1} \cos\left((n - m)\theta_i\right)

设相对距离 nmn - mxx ,则相对距离为 xx 的向量之间注意力得分:

g(x)=2i=0d/21cos(xθi)g(x) = 2\sum_{i = 0}^{d/2 - 1} \cos\left(x\theta_i\right)

特殊情况分析

  • 当任意 θi=0\theta_i = 0: 代入 g(x)g(x) 可得 g(x)=dg(x) = d ,即无论相对距离多大,注意力得分都相等 。

  • 当任意 θi=1\theta_i = 1: 代入 g(x)g(x) 可得 g(x)=dcosxg(x) = d\cos x ,此时随着相对距离增大,注意力得分呈周期性变化,但不会震荡衰减 。

image.png

  • 对于每个θi\theta_icos(xθi)\cos(x\theta_i)的周期大小TiT_i满足:

Ti=2πθi=2π10000i/d=2π108i/dT_i = \frac{2\pi}{\theta_i} = \frac{2\pi}{10000^{-i/d}} = 2\pi \cdot 10^{8i/d}

由此可知,ii越大,TiT_i越大 。最小周期为T0=2πT_0 = 2\pi,最大周期为Td/21=2π10(48d)T_{d/2 - 1} = 2\pi \cdot 10^{\left(4 - \frac{8}{d}\right)}

若对于xx,满足x<14Td/21=π210(48d)x < \frac{1}{4}T_{d/2 - 1} = \frac{\pi}{2} \cdot 10^{\left(4 - \frac{8}{d}\right)} ,则意味着cos(xθd/21)\cos\left(x\theta_{d/2 - 1}\right)处于单调递减区间(对应下方蓝色区间 )。

image.png

由于前面的cosxθi\cos x\theta_{i}呈周期变化,而周期变化的函数 + 单调递减的函数 = 震荡递减的函数。因此,注意力得分g(x)g(x)随着相对距离xx的增大而震荡减小。

比如在LLaMA中,hidden_size=4096hidden\_size = 4096head_size=4096/32=128head\_size = 4096/32 = 128,即d=128d = 12814Td/21=13602\frac{1}{4}T_{d/2 - 1} = 13602,由 于实际应用中,最大序列长度一般不会大于10410^4,所以相对距离x<14Td/21x < \frac{1}{4}T_{d/2 - 1}一般是成立的,当然,也可以增大θi=100002i/d\theta_{i} = 10000^{-2i/d}中的1000010000,这样Td/21T_{d/2 - 1}会变得更大。

  • query的不同位置

image.png

  • 不同的embedding大小

image.png

参考:blog.csdn.net/luxurie/art…