DOI: 10.1016/j.neucom.2023.127063
Date: 2021/04/20
1 问题#
与 CNN, RNN 不同,预训练语言模型使用自注意力机制来从给定的语料库中来捕获上下文的语义学表示,但是无法天然感知序列词序,因此必须额外引入位置编码。目前的两类主流位置编码包括绝对位置编码和相对位置编码,大多直接将位置信息融合进上下文表征,无法适配线性自注意力结构。
本文提出了一种新的方法——旋转位置编码 (RoPE),将位置信息融入 PLM 的学习过程。具体而言,RoPE 利用旋转矩阵对绝对位置进行编码,同时在自注意力表达式中显式引入相对位置依赖关系。值得注意的是,所提出的 RoPE 相比现有方法具备诸多优良特性:支持任意序列长度、token 间依赖随相对距离增大而衰减,并且能够为线性自注意力配备相对位置编码能力。在多个长文本分类基准数据集上的实验结果表明,搭载旋转位置编码的 Transformer(RoFormer)相比基线模型取得更优性能,验证了 RoPE 方法的有效性。
2. 符号体系#
令 SN={wi}i=1N 为由 N 个输入 token 构成的序列,其中 wi 为第 i 个元素。SN 对应的嵌入记为 EN={xi}i=1N,式中 xi∈Rd是 wi 对应的 d 维嵌入向量,不含位置信息。自注意力机制首先将位置信息融入词嵌入,并将其转换为 QKV:
qmknvn=fq(xm,m)=fk(xn,n)=fv(xn,n)(1)式中的 qm,kn 和 vn 分别通过 fq,fk,fv 融入第 m 和第 n 个位置信息,随后利用 Q 与 V 计算注意力权重,输出结果则为对值表征的加权求和:
am,nom=∑j=1Nexp(dqm⊤kj)exp(dqm⊤kn)=n=1∑Nam,nvn(2)基于 Transformer 的语言建模通常借助自注意力机制利用各个 token 的位置信息。如 式(2) 所示,qm⊤kn 一般用于实现不同位置词元之间的信息传递。为引入相对位置信息,我们通过函数 g 计算 qm 与 kn 的内积,该函数仅以词嵌入 xm、xn 以及二者的相对位置 m−n 作为输入变量。本质上,我们希望该内积仅以相对形式对位置信息进行编码:
⟨fq(xm,m),fk(xn,n)⟩=g(xm,xn,m−n)(3)最终目标是找到一种等价编码机制,求解函数 fq(xm,m) 与 fk(xn,n) 使其满足上述关系。
3 方法#
3.1 RoPE#
3.1.1 2D 场景#
首先以简单的 d=2 的场景为例,利用二维平面上向量的几何性质及其复数形式,式(3) 的一组解如下:
fq(xm,m)fk(xn,n)g(xm,xn,m−n)=(Wqxm)eimθ=(Wkxn)einθ=Re[(Wqxm)(Wkxn)∗ei(m−n)θ](4)其中 Re[⋅] 是实部,(Wkxn)∗ 是 (Wkxn) 的共轭复数,θ 是预设的一个非 0 常量。我们还可以将 f{q,k} 写成矩阵乘法形式:
f{q,k}(xm,m)=(cosmθsinmθ−sinmθcosmθ)(W{q,k}(11)W{q,k}(21)W{q,k}(12)W{q,k}(22))(xm(1)xm(2))(5)其中 (xm(1),xm(2)) 为 xm 在二维坐标系下的表示。同理,g 也可写成矩阵形式。具体来说,引入相对位置嵌入的方式十分简洁:只需将经过仿射变换后的词嵌入向量,按照位置索引对应的角度倍数进行旋转。
将词嵌入经过线性层得到的 Q: Wqxm、K: Wkxn 看成二维复平面上的复数向量
乘上 eimθ 表示旋转 mθ 角度
做内积时 (Wqxmeimθ)⋅(Wkxneinθ)∗=(Wqxm)(Wkxn)∗ei(m−n)θ ,取实部就是点积 g
将 式(5) 展开,有:
RWx=((W(11)xm(1)+W(12)xm(2))cosmθ−(W(21)xm(1)+W(22)xm(2))sinmθ(W(11)xm(1)+W(12)xm(2))sinmθ+(W(21)xm(1)+W(22)xm(2))cosmθ)如果把 v=Wqxm 看成复数 v1+iv2,有:
(v1+iv2)⋅eimθ=(v1+iv2)(cosmθ+isinmθ)=(v1cosmθ−v2sinmθ)+i(v1sinmθ+v2cosmθ)可以看到两种表达形式等价。
3.2 一般形式#
将之前的结果从 2D 扩展到任意的 xi∈Rd,把 d 维空间拆分成 d/2 个子空间再组合:
f{q,k}(xm,m)=RΘ,mdW{q,k}xm(6)其中
RΘ,md=cosmθ1sinmθ100⋮00−sinmθ1cosmθ100⋮0000cosmθ2sinmθ2⋮0000−sinmθ2cosmθ2⋮00…………⋱……0000⋮cosmθd/2sinmθd/20000⋮−sinmθd/2cosmθd/2(7)θi 是第 i 个子空间的旋转角,高维向量两两分组独立旋转
是带有预定义参数 Θ={θi=10000−2(i−1)/d, i∈{1,2,…,d/2}} 的旋转矩阵,RoPE 的一个示意图如下:
图 1: RoPE 的实现将 RoPE 带入 式(2) 得:
qm⊤kn=(RΘ,mdWqxm)⊤(RΘ,ndWkxn)=xm⊤Wq⊤RΘ,m−ndWkxn(8)其中 RΘ,n−md=(RΘ,md)⊤RΘ,nd。注意,RΘd 是正交矩阵,这保证了位置信息编码过程的数值稳定性。
3.3 RoPE 的属性#
长距离衰减。设定 θi=10000−2i/d。可以证明,该参数设置具备长距离衰减性质,相对距离很远的一对 token 之间关联性应当更弱。
带 RoPE 的线性注意力。线性注意力的表达式如下:
Attention(Q,K,V)m=∑n=1Nϕ(qm)⊤ϕ(kn)∑n=1Nϕ(qm)⊤ϕ(kn)vn(9)其中 ϕ(⋅) 通常是非负函数。RoPE 通过旋转注入位置信息,该操作能够保持隐表示的范数不变,因此我们可以将旋转矩阵与非负函数的输出相乘,从而把 RoPE 和线性注意力结合起来:
Attention(Q,K,V)m=∑n=1Nϕ(qm)⊤ϕ(kn)∑n=1N(RΘ,mdϕ(qm))⊤(RΘ,ndϕ(kn))vn(10)值得注意的是,分母保持不变,以避免除零风险,同时分子的求和项可以包含负值。