Transformer模型中的位置编码(Positional Encoding)用于为模型提供序列中单词的位置信息,因为Transformer本身是一个无序列的模型,它并不像RNN那样具有顺序处理的能力。
位置编码的公式通常分为两种形式:正弦和余弦函数,具体形式如下:
给定位置 pos 和维度 i,位置编码的计算公式为:
PE(pos,2i)=sin(100002i/dpos)
PE(pos,2i+1)=cos(100002i/dpos)
其中:
- pos 是词在序列中的位置(从0开始)。
- i 是位置编码的维度索引(从0到 d−1,其中 d 是位置编码的总维度)。
- 10000 是一个常数,用于控制位置编码的尺度。
- d 是位置编码的维度。
解释:
- 正弦和余弦函数:通过对不同频率的正弦和余弦函数进行编码,不同维度的编码能够在不同的尺度上表示位置差异。这有助于模型捕捉到位置间的相对关系。
- 频率:随着维度的增加,频率逐渐增大,这意味着低维度的编码表示较大范围的位置信息,而高维度的编码则表示较小范围的位置信息。
这种设计使得位置编码可以为每个词提供一个唯一的、非线性变化的表示,从而帮助Transformer模型理解输入序列的顺序信息。
使用位置编码:
位置编码通常与输入的词向量相加,生成最终的输入表示:
Inputfinal=Inputembedding+Positional Encoding
这种加和方式使得模型可以同时利用词语的语义信息和其在序列中的位置。
向量的旋转
向量旋转的数学公式基于二维平面中的旋转矩阵,其表达式如下:
假设一个二维向量 v=[xy],我们希望将它绕原点逆时针旋转一个角度 θ。旋转后的向量 v′ 可通过以下公式计算:
v′=R(θ)⋅v
其中旋转矩阵 R(θ) 的定义是:
R(θ)=[cosθsinθ−sinθcosθ]
将公式展开,结果为:
v′=[cosθsinθ−sinθcosθ]⋅[xy]=[xcosθ−ysinθxsinθ+ycosθ]
RoPE 旋转位置编码
在 RoPE(Rotary Position Embedding) 中,位置编码的核心思想是通过旋转变换将位置信息融入到输入向量中,而不是直接通过加法的方式。
RoPE 的公式如下:
给定位置 p 和维度索引 i,我们通过旋转变换操作将输入的特征向量进行编码。具体公式如下:
输入向量表示
假设输入向量为 x=[x1,x2,…,xd],其中 d 是特征向量的维度。RoPE 将 x 中每两个相邻维度视为一对,并施加旋转操作。
RoPE 的旋转公式
对于每个位置 p,输入向量 x 中的每对维度 (x2i,x2i+1) 进行如下旋转操作:
RoPE(x,p)=[x2icos(θp)−x2i+1sin(θp)x2isin(θp)+x2i+1cos(θp)]
其中:
θp=100002i/dp
解释
- 旋转角度 θp:与 Transformer 中的位置编码类似,频率 100002i/d1 控制了旋转的幅度,位置 p 影响了旋转角度。
- 偶数维度 x2i:施加 cos 和 sin 的旋转变换。
- 奇数维度 x2i+1:配合偶数维度的旋转变换,形成二维平面上的旋转效果。
RoPE 整体公式
RΘ,mdx=⎣⎡x0x1x2x3⋮xd−2xd−1⎦⎤⊗⎣⎡cos(mθ0)cos(mθ0)cos(mθ1)cos(mθ1)⋮cos(mθd/2−1)cos(mθd/2−1)⎦⎤+⎣⎡−x1x0−x3x2⋮−xd−1xd−2⎦⎤⊗⎣⎡sin(mθ0)sin(mθ0)sin(mθ1)sin(mθ1)⋮sin(mθd/2−1)sin(mθd/2−1)⎦⎤
- RΘ,mdx:旋转位置编码后的向量。
- x:输入向量 x=[x0,x1,…,xd−1]。
- ⊗:逐元素乘法操作。
- cos(mθi) 和 sin(mθi):分别为旋转角的正余弦分量,定义为:
θi=100002i/dp
RoPE 理解
1. 频率越低,对相对位置越不敏感
在 RoPE 中,低频成分对应的是公式中 i 较小(即较低的维度),此时:
100002i/d1
的值较大,导致 θp 的变化很慢(角度变化较小)。这种慢速变化对应于较长周期的正弦和余弦波,位置编码的相邻值之间差异不大。
- 直观理解:低频成分对序列中长距离位置之间的变化较为稳定,能够更好地捕获远距离依赖关系。例如:句首单词如何影响句尾单词的关系。
2. 高频:短距离依赖
在 RoPE 中,高频成分对应的是公式中 i 较大(即较高的维度),此时:
100002i/d1
的值较小,导致 θp 的变化很快(角度变化较大)。这种快速变化对应于较短周期的正弦和余弦波,位置编码的相邻值之间差异显著。
- 直观理解:高频成分对序列中短距离的位置变化更敏感,能够精确捕捉局部上下文之间的依赖关系。例如:单词与其前后邻近单词的关系。
3. 旋转操作的作用
RoPE 的旋转操作将输入特征向量的各个维度进行正弦和余弦的加权处理,让模型能够利用高频和低频成分来捕获不同尺度的位置信息:
- 高频部分的旋转(维度较高):赋予模型捕捉局部依赖的能力。
- 低频部分的旋转(维度较低):赋予模型捕捉远距离依赖的能力。
通过将这些高频和低频成分在旋转后的结果中叠加起来,RoPE 能够让 Transformer 既关注短距离模式(局部结构),也能理解长距离关系(全局依赖)。