Rotary Positional Embedding (RoPE)
Rotary Positional Embedding (RoPE) 是一种新颖的位置编码方法,通过引入旋转变换,将位置信息嵌入到查询和键向量中,从而实现位置感知。RoPE 尤其适用于处理长序列任务,并且在实践中表现出色。
原理
RoPE 的核心思想是将位置编码与查询和键向量结合,通过旋转变换,使得位置编码能够以一种更加灵活和有效的方式影响注意力机制。具体来说,RoPE 利用正弦和余弦函数生成位置编码,并将其嵌入到查询和键向量的旋转变换中。
数学公式
假设有一个维度为 d d d 的输入序列 X X X,其中每个位置 p p p 由一个 d d d 维向量表示。RoPE 的位置编码过程可以表示如下:
1. 生成正弦和余弦位置编码
对于位置 p p p,位置编码为:
PE ( p , 2 i ) = sin ( p 1000 0 2 i d ) \text{PE}(p, 2i) = \sin\left(\frac{p}{10000^{\frac{2i}{d}}}\right) PE(p,2i)=sin(10000d2ip)
PE ( p , 2 i + 1 ) = cos ( p 1000 0 2 i d ) \text{PE}(p, 2i+1) = \cos\left(\frac{p}{10000^{\frac{2i}{d}}}\right) PE(p,2i+1)=cos(10000d2ip)
其中, i i i 表示维度索引, d d d 表示模型的维度。
2. 应用旋转变换
将位置编码与查询和键向量结合,通过旋转变换来实现位置感知。具体来说,对于每个位置 p p p 的查询向量 q p q_p qp 和键向量 k p k_p kp,应用 RoPE 的旋转变换如下:
q p RoPE = q p ⊙ cos ( θ p ) + ( I q p ) ⊙ sin ( θ p ) q_p^{\text{RoPE}} = q_p \odot \cos(\theta_p) + (\mathcal{I} q_p) \odot \sin(\theta_p) qp