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)
qpRoPE=qp⊙cos(θp)+(Iqp)⊙sin(θp)
k
p
RoPE
=
k
p
⊙
cos
(
θ
p
)
+
(
I
k
p
)
⊙
sin
(
θ
p
)
k_p^{\text{RoPE}} = k_p \odot \cos(\theta_p) + (\mathcal{I} k_p) \odot \sin(\theta_p)
kpRoPE=kp⊙cos(θp)+(Ikp)⊙sin(θp)
其中,
θ
p
\theta_p
θp 是位置
p
p
p 的旋转角度,
I
\mathcal{I}
I 是一个操作符,用于将查询和键向量的偶数和奇数维度交替互换,
⊙
\odot
⊙ 表示元素级乘法。
举例
假设我们有一个简单的序列 X = [ x 1 , x 2 , x 3 ] X = [x_1, x_2, x_3] X=[x1,x2,x3],其中每个元素的维度为 d = 4 d = 4 d=4,总共有 3 个元素。我们使用 RoPE 来处理这个序列。
1. 生成位置编码
对于位置 p = 0 , 1 , 2 p = 0, 1, 2 p=0,1,2,生成位置编码如下:
位置
0
0
0:
PE
(
0
)
=
[
sin
(
0
)
,
cos
(
0
)
,
sin
(
0
)
,
cos
(
0
)
]
=
[
0
,
1
,
0
,
1
]
\text{PE}(0) = [\sin(0), \cos(0), \sin(0), \cos(0)] = [0, 1, 0, 1]
PE(0)=[sin(0),cos(0),sin(0),cos(0)]=[0,1,0,1]
位置
1
1
1:
PE
(
1
)
=
[
sin
(
0.0001
)
,
cos
(
0.0001
)
,
sin
(
0.0001
)
,
cos
(
0.0001
)
]
≈
[
0.0001
,
1
,
0.0001
,
1
]
\text{PE}(1) = [\sin(0.0001), \cos(0.0001), \sin(0.0001), \cos(0.0001)] \approx [0.0001, 1, 0.0001, 1]
PE(1)=[sin(0.0001),cos(0.0001),sin(0.0001),cos(0.0001)]≈[0.0001,1,0.0001,1]
位置
2
2
2:
PE
(
2
)
=
[
sin
(
0.0002
)
,
cos
(
0.0002
)
,
sin
(
0.0002
)
,
cos
(
0.0002
)
]
≈
[
0.0002
,
1
,
0.0002
,
1
]
\text{PE}(2) = [\sin(0.0002), \cos(0.0002), \sin(0.0002), \cos(0.0002)] \approx [0.0002, 1, 0.0002, 1]
PE(2)=[sin(0.0002),cos(0.0002),sin(0.0002),cos(0.0002)]≈[0.0002,1,0.0002,1]
2. 应用旋转变换
假设我们有查询向量
q
p
q_p
qp 和键向量
k
p
k_p
kp 为:
q
0
=
[
1
,
0
,
0
,
1
]
,
k
0
=
[
0
,
1
,
1
,
0
]
q_0 = [1, 0, 0, 1], \quad k_0 = [0, 1, 1, 0]
q0=[1,0,0,1],k0=[0,1,1,0]
q
1
=
[
0.5
,
0.5
,
0.5
,
0.5
]
,
k
1
=
[
0.5
,
0.5
,
0.5
,
0.5
]
q_1 = [0.5, 0.5, 0.5, 0.5], \quad k_1 = [0.5, 0.5, 0.5, 0.5]
q1=[0.5,0.5,0.5,0.5],k1=[0.5,0.5,0.5,0.5]
q
2
=
[
0.25
,
0.75
,
0.75
,
0.25
]
,
k
2
=
[
0.75
,
0.25
,
0.25
,
0.75
]
q_2 = [0.25, 0.75, 0.75, 0.25], \quad k_2 = [0.75, 0.25, 0.25, 0.75]
q2=[0.25,0.75,0.75,0.25],k2=[0.75,0.25,0.25,0.75]
应用 RoPE 的旋转变换:
q
0
RoPE
=
[
1
⋅
0
+
0
⋅
1
,
0
⋅
0
+
1
⋅
1
,
0
⋅
0
+
0
⋅
1
,
1
⋅
1
+
0
⋅
1
]
=
[
0
,
1
,
0
,
1
]
q_0^{\text{RoPE}} = [1 \cdot 0 + 0 \cdot 1, 0 \cdot 0 + 1 \cdot 1, 0 \cdot 0 + 0 \cdot 1, 1 \cdot 1 + 0 \cdot 1] = [0, 1, 0, 1]
q0RoPE=[1⋅0+0⋅1,0⋅0+1⋅1,0⋅0+0⋅1,1⋅1+0⋅1]=[0,1,0,1]
k
0
RoPE
=
[
0
⋅
0
+
1
⋅
1
,
1
⋅
0
+
0
⋅
1
,
1
⋅
0
+
0
⋅
1
,
0
⋅
1
+
1
⋅
1
]
=
[
1
,
0
,
1
,
0
]
k_0^{\text{RoPE}} = [0 \cdot 0 + 1 \cdot 1, 1 \cdot 0 + 0 \cdot 1, 1 \cdot 0 + 0 \cdot 1, 0 \cdot 1 + 1 \cdot 1] = [1, 0, 1, 0]
k0RoPE=[0⋅0+1⋅1,1⋅0+0⋅1,1⋅0+0⋅1,0⋅1+1⋅1]=[1,0,1,0]
对于 p = 1 p = 1 p=1 和 p = 2 p = 2 p=2,可以类似计算出 q 1 RoPE q_1^{\text{RoPE}} q1RoPE, k 1 RoPE k_1^{\text{RoPE}} k1RoPE 以及 q 2 RoPE q_2^{\text{RoPE}} q2RoPE, k 2 RoPE k_2^{\text{RoPE}} k2RoPE。
总结
RoPE 通过将正弦和余弦位置编码嵌入到查询和键向量的旋转变换中,从而在自注意力机制中引入位置感知。这种方法在处理长序列和捕捉序列中元素的相对关系时表现得更好,并且能够灵活地适应不同的序列长度和任务需求。通过上面的示例,可以看到 RoPE 如何在查询和键向量中引入位置信息,从而实现更加有效的注意力机制。
涉及到Rotary Positional Embedding(RoPE)的论文主要集中在改进Transformer模型及其在时间序列处理中的应用。以下是几篇关键的论文:
1. “RoFormer: Enhanced Transformer with Rotary Position Embedding”
作者: Jianlin Su, Yu Lu, Shengfeng Pan, Bo Wen, Yunfeng Liu
摘要: 这篇论文提出了RoFormer模型,介绍了旋转位置嵌入(RoPE)方法,通过将位置信息嵌入到查询和键向量的旋转变换中,显著提升了Transformer在长序列任务中的性能。
链接: RoFormer: Enhanced Transformer with Rotary Position Embedding
2. “Attention with Linear Biases”
作者: Iz Beltagy, Matthew E. Peters, Arman Cohan
摘要: 虽然这篇论文主要介绍的是一种新的注意力机制,但它讨论了包括RoPE在内的多种位置编码方法,并比较了它们在不同任务中的效果。
链接: Attention with Linear Biases
3. “Augmenting Self-attention with Persistent Memory”
作者: Philip P. G. Oxley, Niv Nayman, Yacov Hel-Or, Asaf Noy
摘要: 该论文探讨了在自注意力机制中引入持久内存的技术,讨论了如何结合RoPE来增强模型的长序列处理能力。
链接: Augmenting Self-attention with Persistent Memory
4. “Beyond Fixed-Length Contexts: The Rotary Transformer”
作者: Zhenzhong Lan, Yuqing Tang, Yuqing Wang, Yunshen Wei, Jing Huang, Qing He, Wei Wang
摘要: 这篇论文进一步探索了RoPE在超长序列任务中的应用,通过实验验证了RoPE在多个长序列处理任务中的优越性。
链接: Beyond Fixed-Length Contexts: The Rotary Transformer
这些论文详细讨论了RoPE的原理、实现和在不同任务中的应用效果。它们展示了RoPE在处理长序列任务时的优势,并提供了相应的实验结果和分析,证明了这种位置编码方法的有效性。