RoFormer: Enhanced Transformer with Rotary Position Embedding
论文:RoFormer: Enhanced Transformer with Rotary Position Embedding (arxiv.org)
代码:ZhuiyiTechnology/roformer: Rotary Transformer (github.com)
期刊/会议:未发表
摘要
位置编码最近在transformer架构中显示出了有效性。它为序列中不同位置的元素之间的依赖建模提供了有价值的监督。在本文中,我们首先研究了将位置信息集成到基于transformer的语言模型的学习过程中的各种方法。在此基础上,我们提出了一种新的旋转位置嵌入方法(RoPE)来有效地利用位置信息。具体而言,该方法使用旋转矩阵对绝对位置进行编码,同时在自注意公式中加入显式相对位置依赖。值得注意的是,RoPE支持有价值的属性,包括序列长度的灵活性、随着相对距离的增加而衰减的标记间依赖性,以及用相对位置编码来装备线性自注意的能力。最后,我们在各种长文本分类基准数据集上评估了具有旋转位置嵌入的增强transformer模型,也称为RoFormer。我们的实验表明,它总是能战胜它的替代品。我们也对部分实验结果进行了理论分析。
关键词:预训练语言模型,位置信息编码,预训练,自然语言处理
1、简介
单词的顺序对理解自然语言有很大的价值。基于循环神经网络(RNNs)的模型通过沿时间维度递归计算隐藏状态来编码token的顺序。基于卷积神经网络(CNNs)的模型(CNNs), Gehring等人[2017]通常被认为位置是不可知的,但最近的工作Islam等人[2020]表明常用的填充操作可以隐式地学习位置信息。最近,在transformer Vaswani等人[2017]的基础上建立了预训练语言模型(PLMs),已经实现了各种自然语言处理(NLP)任务最先进性能,包括上下文表示学习Devlin等人[2019],机器翻译Vaswani等人[2017],以及语言建模Radford等人[2019],仅举几例。与RNNs和基于CNNs的模型不同,PLMs利用自注意机制从语义上捕获给定语料库的上下文表示。因此,与RNN相比,PLMs在并行化方面取得了显著的改进,并且与CNNs相比提高了更长的token内关系的建模能力。
值得注意的是,当前PLMs的自注意体系结构已被证明是位置不可知的Yun等人[2020]。根据这一主张,提出了各种方法将位置信息编码到学习过程中。一方面,通过Vaswani等人[2017]预先定义的函数生成绝对位置编码将其添加到上下文表示中,而可训练的绝对位置编码Gehring等人[2017],Devlin等人[2019],Lan等人[2020],Clark等人[2020],Radford等人[2019],Radford和Narasimhan[2018]。另一方面,之前的工作Parikh等人[2016]、Shaw等人[2018]、Huang等人[2018]、Dai等人[2019]、Yang等人[2019]、Raffel等人[2020]、Ke等人[2020]、He等人[2020]、Huang等人[2020]侧重于相对位置编码,通常将相对位置信息编码到注意机制中。除了这些方法,Liu等人[2020]作者从Neural ODE Chen等人[2018a]的角度提出了对位置编码的依赖关系进行建模,Wang等人[2020]作者提出了对复杂空间中的位置信息进行建模。尽管这些方法很有效,但它们通常将位置信息添加到上下文表示中,因此不适合线性自注意体系结构。
在本文中,我们介绍了一种新的方法,即旋转位置嵌入(RoPE),将位置信息利用到PLMS的学习过程中。具体来说,RoPE使用旋转矩阵对绝对位置进行编码,同时将显式相对位置依赖纳入自注意公式中。请注意,提出的RoPE通过有价值的属性优先于现有的方法,包括序列长度的灵活性,随着相对距离的增加而衰减的token间依赖性,以及用相对位置编码装备线性自注意的能力。在各种长文本分类基准数据集上的实验结果表明,具有旋转位置嵌入的增强transformer模型,即RoFormer,与基线替代方案相比,可以提供更好的性能,从而证明了所提出的RoPE的有效性。
简短来说,我们的贡献如下所示:
- 我们研究了现有的相对位置编码方法,发现它们大多是基于将位置编码添加到上下文表示的分解思想构建的。我们引入了一种新的方法,即旋转位置嵌入(RoPE),将位置信息利用到PLMS的学习过程中。关键思想是通过将上下文表示与具有明确理论解释的旋转矩阵相乘来编码相对位置。
- 我们研究了RoPE的性质,并表明它随着相对距离的增加而衰减,这是自然语言编码所需要的。我们善意地认为,以前基于相对位置编码的方法与线性自我注意不兼容。
- 我们在各种长文本基准数据集上评估拟议的RoFormer。我们的实验表明,与其他选择相比,它始终能够获得更好的性能。
本文的其余部分组织如下。我们在第(2)节中对自注意结构中的位置编码问题进行了形式化描述,并回顾了之前的工作。然后在第(3)节中描述了旋转位置编码(RoPE)并研究了其性质。在第(4)节中报告了实验。最后,在第(5)节中总结了本文。
2、背景和相关工作
2.1 背景知识
现有的基于transformer的位置编码方法主要集中在选择合适的函数形成式(1)。
2.2 绝对位置嵌入
一个典型可供选择的公式1是
其中,p i , 2 t 是d 维向量的第2 t 个元素。在下一节中,我们将从正弦函数的角度说明我们所提出的RoPE与这种直觉有关。但是,RoPE并没有直接将位置添加到上下文表示中,而是建议通过与正弦函数相乘来合并相对位置信息。
Shaw等人[2018]将式(1)的不同设置应用如下:
Radford和Narasimhan[2018]对相对位置嵌入的四种变体进行了比较,结果表明,与式(10)相似的变体是其他三种变体中效率最高的。一般来说,这些方法都试图在式(2)中的自注意设置下,在式(3)的分解基础上对式(6)进行修正,该方法最初由Vaswani等人[2017]提出。它们通常用于将位置信息直接添加到上下文表示中。不太一样的是,我们的方法旨在从式(1)中得到一些约束条件下的相对位置编码。接下来,我们展示了通过将相对位置信息与上下文表示的旋转结合起来,派生的方法更具可解释性。
3、我们所提出的方法
在本节中,我们将讨论所提出的旋转位置嵌入(RoPE)。我们首先在(3.1)节中表述相对位置编码问题,然后在(3.2)节中推导出RoPE,并在(3.3)节中研究它的性质。
3.1 概述
3.2 旋转位置编码
3.2.1 2维的情况
我们从一个维数d=2的简单情况开始。在这些设置下,我们利用二维平面上向量的几何性质及其复形式来证明(详见第(3.4.1)节)式(11)的解为:
3.2.2 通用的格式
为了将我们在2D中的结果推广到任何d为偶数的x i ∈ R d ,我们将d 维空间划分为d / 2个子空间,并根据内积的线性性将它们组合起来,将f { q , k } 转化为:
与前人(3)至(10)式所采用的位置嵌入方法的加性不同,我们的方法是乘性的。此外,RoPE在自注意机制应用时,通过旋转矩阵积自然地纳入相对位置信息,而不是改变加性位置编码扩展公式中的项。
3.3 RoPE的特性
长距离衰减(Long-term decay):根据Vaswani等人[2017],我们设θ i = 1000 0 − 2 i / d 。我们可以证明这个设置提供了一个长期衰减的性质(详细信息请参阅第(3.4.3)节),这意味着当相对位置增加时内积将衰减。这一特性与相对距离较长的一对token之间的联系较少的直觉相吻合。
RoPE有线性attention。自注意力可以改写成更一般的形式。
值得注意的是,我们保持分母不变,以避免除零的风险,分子中的和可能包含负项。虽然式(19)中每个值v i 的权重不是严格的概率归一化的,但我们直觉地认为,计算仍然可以模拟值的重要性。
3.4 理论分析
3.4.1 RoPE在2D下的求导
在d=2的情况下,考虑两字嵌入向量x q ,x k 分别对应query和key中对应位置为m 和n。根据eq.(1),它们的位置编码对应为:
我们进一步要求满足以下初始条件:
可以读取为空位置信息编码的向量。给定这些设置,我们试图找到f q ,f k 的解。首先,我们利用向量在二维中的几何意义及其复对偶部分,将式(20)和式(21)中的函数分解为:
对应初始化条件为:
接下来,我们令式(24)中的m = n m = nm=n,并考虑式(25)中的初始条件:
一方面,由式(26a)可以得到R f 的直接解:
进一步,将n=m+1代入式(24),考虑上式,可得:
由于RHS是一个与m无关的常数,ϕ(m)与连续整数输入产生等差数列:
ϕ ( m ) = m θ + γ
其中θ , γ ∈ R 是常数,θ 是非零的。总结式(27)到式(30)的解:
注意,我们没有对式(22)的f q 和f k施加任何约束,因此f q ( x m , 0 )和f k ( x n , 0 ) 可以自由选择。为了使我们的结果与式(3)相比较,我们定义:
那么,我们只需在最终解的式(31)中设γ = 0 :
3.4.2 实现计算高效旋转矩阵乘法
3.4.3 RoPE的长距离衰减
我们可以将向量q = W q x m 和k = W k x n 的项成对分组,式(16)中RoPE的内积可以写成复数乘法。
4、实验和评估
我们在各种NLP任务上评估所提出的RoFormer。我们验证了所提出的解决方案在机器翻译任务(4.1)上的性能。然后,在第(4.2)节的预训练阶段,我们将RoPE实现与BERT Devlin等人[2019]进行比较。基于预训练的模型,在第(4.3)节中,我们进一步对GLUE benchmarks Singh等人[2018]的不同下游任务进行评估。此外,我们使用(4.4)节中PerFormer Choromanski等人[2020]提出的具有线性注意力的RoPE进行了实验。最后,在第(4.5)节中加入了对中文数据的附加检验。所有的实验都运行在两台云服务器上,使用4 x V100 GPUs。
4.1 机器翻译
我们首先演示了RoFormer在Seq2Seq语言翻译任务中的性能。
4.1.1 实验设置
我们选择了Bojar等人[2014]的标准WMT 2014 English-German数据,该数据由大约450万句对组成。我们将基于transformer的基线替代方案Vaswani等人[2017]进行了比较。
4.1.2 实施细节
我们对基线模型Vaswani等人[2017]的自注意层进行了一些修改,使RoPE能够进行学习过程。我们复制了基于联合源和目标字节对编码(BPE)Sennrich等人[2015]的37k词汇表的英语到德语翻译的设置。在评估过程中,通过平均最后5个检查点得到单个模型。结果使用beam search,beam size为4,长度罚(length penalty)为0.6。我们在fairseq工具包(MIT许可证)Ott等人[2019]中实现了PyTorch中的实验。我们的模型使用Adam优化器进行优化,使用β 1 = 0.9, β 2 = 0.98,学习率从1e−7线性增加到5e−4,然后按比例衰减到步数的平方根的倒数。还采用了0.1的标签平滑。我们报告BLEU Papineni等人[2002]在测试集上的分数作为最终指标。
4.1.3 结果
我们在相同的设置下训练基线模型和RoFormer,并将结果报告在表(1)中。可以看到,与基线Transformer相比,我们的模型给出了更好的BLEU分数。
4.2 预训练语言模型
第二个实验是验证我们的建议在学习上下文表征方面的表现。为了实现这一点,我们在预训练步骤中用RoPE替换BERT的原始正弦位置编码。
4.2.1 实验设置
我们使用BookCorpus Zhu等人[2015]和来自Huggingface数据集库(Apache License 2.0)的Wikipedia语料库基金会[2021]进行预训练。语料库进一步按8:2的比例分成训练集和验证集。我们使用遮掩语言建模(MLM)的损失值的训练过程作为一个评估指标。采用著名的BERT Devlin等人[2019]作为我们的基线模型。注意,我们在实验中使用的是bert-base-uncased。
4.2.2 实施细节
对于RoFormer,我们将基线模型的自注意块中的正弦位置编码替换为我们提出的RoPE,根据式(16)实现自注意。我们训练BERT和RoFormer,批大小为64,最大序列长度为512,用于100k步。使用AdamW Loshchilov and Hutter[2017]作为优化器,学习率为1e-5。
4.2.3 实验结果
图(3)左边的图显示了预训练期间的MLM损失。与vanilla BERT相比,RoFormer收敛速度更快。
4.3 在GLUE任务上进行微调
与之前的实验一致,我们在各种GLUE任务上微调预训练RoFormer的权重,以评估其在下游NLP任务上的泛化能力。
4.3.1 实验设置
我们查看了GLUE的几个数据集,即MRPC Dolan和Brockett [2005], SST-2 Socher等人[2013],QNLI Rajpurkar等人[2016],STS-B AI-Natsheh [2017], QQP Chen等人[2018b]和MNLI Williams等人[2018]。MRPC和QQP数据集采用F1-score, STS-B数据集采用spearman相关性,其余数据集采用准确性作为评价指标。
4.3.2 实施细节
我们使用Huggingface transformer库(Apache License 2.0)Wolf等人[2020]对上述每个下游任务进行了3个周期的微调,最大序列长度为512,批大小为32,学习率为2,3,4,5e-5。继Devlin等人[2019]之后,我们报告了验证集上的最佳平均结果。
4.3.3 结果
微调任务的评估结果如表(2)所示。可以看出,RoFormer在6个数据集中的3个数据集上的性能都明显优于BERT,且提升幅度相当大。
4.4 Performer with ROPE
Performer Choromanski等人[2020]引入了一种替代注意机制,线性注意,旨在避免二次计算成本随输入序列长度的扩展。正如第(3.3)节所讨论的,所提出的RoPE可以很容易地在PerFormer模型中实现,以实现相对位置编码,同时保持其线性缩放的复杂性在自关注中。我们用语言建模的预训练任务来证明它的性能。
4.4.1 实施细节
我们对Mahoney[2006]的Enwik8数据集进行了测试,该数据集来自英语维基百科,除英语文本外,还包括标记、特殊字符和其他语言的文本。我们将绳子合并到12层基于字符的Performer中,具有768个维度和12个头部。为了更好地说明RoPE的有效性,我们报告了在相同设置下,即学习率1e-4,批大小128和固定的最大序列长度1024等,有和没有RoPE的预训练过程的损失曲线。
4.4.2 结果
如图(3)右侧的图所示,在相同的训练步数下,将RoPE替换为Performer,收敛速度更快,损失更小。除了线性复杂性之外,这些改进使Performer更具吸引力。
4.5 在中文数据集上进行评估
除了在英语数据上的实验外,我们还展示了在中文数据上的附加结果。为了验证RoFormer在长文本上的性能,我们对长度超过512个字符的长文档进行了实验。
4.5.1 实施细节
在这些实验中,我们对WoBERT Su[2020]进行了一些修改,将绝对位置嵌入替换为我们提出的RoPE。为了与BERT Devlin等[2019]、WoBERT Su[2020]、NEZHA Wei等人[2019]等中文预训练的transformer模型进行交叉比较,我们将其标记化水平和位置嵌入信息列在表(3)中。
4.5.2 预训练
我们用从中文维基百科、新闻和论坛收集的大约34GB数据预训练RoFormer。预训练分多个阶段进行,改变批大小和最大输入序列长度,以使模型适应各种场景。从表(4)可以看出,随着序列长度上限的增加,RoFormer的准确率也随之提高,这说明RoFormer具有较长的文本处理能力。我们认为这是所提出的RoPE具有出色的泛化性的原因。
4.5.3 下游任务或者数据集
我们选择了Chinese AI和Law 2019相似案例匹配(CAIL2019-SCM)Xiao等[2019]数据集来说明RoFormer处理长文本的能力,即语义文本匹配。CAIL2019-SCM包含最高人民法院公布的8964个案例三元组。输入的三元组,表示为(A, B和C),是对三种情况的事实描述。任务是在预定义的相似度度量下预测对(A, B)是否比(A, C)更接近。请注意,由于文档的长度(即大多数超过512个字符),现有的方法在CAIL2019-SCM数据集上大多不能显著执行。我们根据众所周知的6:2:2的比例拆分训练集、验证集和测试集。
4.5.4 结果
我们将预先训练好的RoFormer模型应用到不同输入长度的CAIL2019-SCM中。在相同的预训练数据上,将该模型与预训练的BERT和WoBERT模型进行比较,如表(5)所示。RoFormer的结果与WoBERT相当,比BERT实现略好。然而,当最大输入文本长度增加到1024时,RoFormer比WoBERT的绝对提高了1.5%。
4.5.5 工作的局限性
尽管我们提供了理论依据以及有希望的实验证明,但我们的方法受到以下事实的限制:
- 尽管我们在数学上将相对位置关系格式化为2D子空间下的旋转,但缺乏对为什么它比包含其他位置编码策略的基线模型收敛得更快的彻底解释。
- 尽管我们已经证明了我们的模型对于intern-token产品具有良好的长期衰减特性(章节(3.3)),这类似于现有的位置编码机制,但我们的模型在长文本上表现出优于同行模型的性能,我们还没有提出一个确定的的解释。
我们提出的RoFormer是建立在基于transformer的基础设施之上的,它需要硬件资源来进行预训练。
5、总结
在这项工作中,我们提出了一种新的位置嵌入方法,在自注意中加入显式相对位置依赖,以提高transformer结构的性能。我们的理论分析表明,相对位置可以在自注意中使用矢量产生自然地表述,而绝对位置信息通过旋转矩阵编码。此外,我们从数学上说明了该方法应用于transformer时的优点。最后,在英语和中文基准数据集上的实验表明,我们的方法在预训练中促进了更快的收敛。实验结果也表明,我们提出的RoFormer在长文本任务上能取得更好的性能。