RoFormer: Enhanced Transformer with Rotary Position Embedding论文解读

news2024/11/15 12:33:36

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 背景知识

S N = { w i } i = 1 N S_N = \{w_i\}^N_{i=1} SN={wi}i=1N N N N个输入token的序列,其中 w i w_i wi是第 i i i个元素。 S N S_N SN对应的词嵌入记为 E N = { x i } i = 1 N E_N = \{x_i\}^N_{i=1} EN={xi}i=1N,其中 x i ∈ R d x_i \in \R^d xiRd,是token w i w_i wi不含位置信息的 d d d维词嵌入向量。自注意首先将位置信息合并到词嵌入中,并将其转换为query、key和value表示。
q m = f q ( x m , m ) , k n = f k ( x n , n ) , v n = f v ( x n , n ) q_m=f_q(x_m,m),\\ k_n=f_k(x_n,n),\\ v_n=f_v(x_n,n) qm=fq(xm,m),kn=fk(xn,n),vn=fv(xn,n)
其中, q m , k n , v n q_m,k_n,v_n qm,kn,vn分别通过了 f q , f k , f v f_q,f_k,f_v fq,fk,fv合并了第 m m m n n n个位置。然后使用query和key来计算注意力的权重,而输出则作为value的加权计算表示。
a m , n = e x p ( q m T k n d ) ∑ j = 1 N e x p ( q m T k j d ) , o m = ∑ n = 1 N a m , n ⋅ v n a_{m,n}=\frac{exp(\frac{q_m^T k_n}{\sqrt{d}})}{\sum_{j=1}^N exp(\frac{q_m^T k_j}{\sqrt{d}})},\\ o_m=\sum_{n=1}^N a_{m,n} \cdot v_n am,n=j=1Nexp(d qmTkj)exp(d qmTkn),om=n=1Nam,nvn
现有的基于transformer的位置编码方法主要集中在选择合适的函数形成式(1)。

2.2 绝对位置嵌入

一个典型可供选择的公式1是
f t : t ∈ { q , k , v } ( x i , i ) : = W t : t ∈ { q , k , v } ( x i + p i ) f_{t:t \in \{ q,k,v\} }(x_i,i):=W_{t:t \in \{q,k,v \} }(x_i+p_i) ft:t{q,k,v}(xi,i):=Wt:t{q,k,v}(xi+pi)
其中 p i ∈ R d p_i \in \R^d piRd是一个 d d d维向量,取决于token x i x_i xi的位置。之前的工作Devlin等人[2019],Lan等人[2020],Clark等人[2020],Radford等人[2019],Radford和Narasimhan[2018]介绍了使用一组可训练向量 p i ∈ { p t } t = 1 L p_i \in \{p_t\}^L_{t=1} pi{pt}t=1L,其中 L L L是最大序列长度。Vaswani等人[2017]的作者提出使用正弦函数生成 p i p_i pi
{ p i , 2 t = sin ⁡ ( k / 1000 0 2 t / d ) p i , 2 t + 1 = cos ⁡ ( k / 1000 0 2 t / d ) \left\{\begin{matrix} p_{i,2t} &=\sin(k/10000^{2t/d}) \\ p_{i,2t+1} &=\cos(k/10000^{2t/d}) \end{matrix}\right. {pi,2tpi,2t+1=sin(k/100002t/d)=cos(k/100002t/d)
其中, p i , 2 t p_{i,2t} pi,2t d d d维向量的第 2 t 2t 2t个元素。在下一节中,我们将从正弦函数的角度说明我们所提出的RoPE与这种直觉有关。但是,RoPE并没有直接将位置添加到上下文表示中,而是建议通过与正弦函数相乘来合并相对位置信息。

Shaw等人[2018]将式(1)的不同设置应用如下:
f q ( x m ) : = W q x m , f k ( x n , n ) : = W k ( x n + p ~ r k ) , f v ( x n , n ) : = W v ( x n + p ~ r v ) f_q(x_m):=W_q x_m,\\ f_k(x_n,n):=W_k(x_n+\tilde{p}_r^k),\\ f_v(x_n,n):=W_v(x_n+\tilde{p}_r^v) fq(xm):=Wqxm,fk(xn,n):=Wk(xn+p~rk),fv(xn,n):=Wv(xn+p~rv)
p ~ r k , p ~ r v ∈ R d \tilde{p}_r^k,\tilde{p}_r^v \in \R^d p~rk,p~rvRd是可训练的相对位置嵌入。请注意, r = c l i p ( m − n , r m i n , r m a x ) r = clip(m−n, r_{min}, r_{max}) r=clip(mn,rmin,rmax)表示位置 m m m n n n之间的相对距离。他们在假设精确的相对位置信息在一定距离之外没有用处的情况下剪辑了相对距离。保持式(3)的形式,作者Dai等人[2019]提出将式(2)中的 q m T k n q^T_mk_n qmTkn分解为
q m T k n = x m T W q T W k x n + x m T W q T W k p n + p m T W q T W k x n + p m T W q T W k p n q_m^T k_n=x_m^T W_q^T W_k x_n +x_m^T W_q^T W_k p_n +p_m^T W_q^T W_k x_n + p_m^T W_q^T W_k p_n qmTkn=xmTWqTWkxn+xmTWqTWkpn+pmTWqTWkxn+pmTWqTWkpn
关键思想是将绝对位置嵌入 p n p_n pn替换为其正弦编码的相对对应物 p ~ m − n \tilde{p}_{m−n} p~mn,而将第三项和第四项中的绝对位置 p m p_m pm替换为独立于query位置的两个可训练向量 u u u v v v W k W_k Wk进一步区分基于内容和基于位置的key向量 x n x_n xn p n p_n pn,分别记为 W k W_k Wk W ~ k \widetilde{W}_k W k,得到:
q m T k n = x m T W q T W k x n + x m T W q T W ~ k p ~ m − n + u T W q T W k x n + v T W q T W ~ k p ~ m − n q_m^T k_n=x_m^T W_q^T W_k x_n +x_m^T W_q^T \widetilde{W}_k \tilde{p}_{m-n} +u^T W_q^T W_k x_n + v^T W_q^T \widetilde{W}_k \tilde{p}_{m-n} qmTkn=xmTWqTWkxn+xmTWqTW kp~mn+uTWqTWkxn+vTWqTW kp~mn
值得注意的是,value项中的位置信息通过设置 f v ( x j ) : = W v x j f_v(x_j):= W_v x_j fv(xj):=Wvxj被移除。之后的工作Raffel等人[2020]、He等人[2020]、Ke等人[2020]、Huang等人[2020]遵循这些设置,仅将相对位置信息编码为注意力权重。然而,Raffel等人[2020]的作者将式(6)改造为:
q m T k n = x m T W q T W k x n + p m T W q T W k p n + b i , j q_m^T k_n =x_m^T W_q^T W_k x_n + p_m^T W_q^T W_k p_n + b_{i,j} qmTkn=xmTWqTWkxn+pmTWqTWkpn+bi,j
其中 b i , j b_{i,j} bi,j是可训练偏置。Ke等人[2020]研究了式(6)中间两项,发现绝对位置与单词之间的相关性很小。Raffel等人[2020]的作者提出使用不同的投影矩阵对一对单词或位置建模。
q m T k n = x m T W q T W k x n + p m T U q T U k p n + b i , j q_m^T k_n =x_m^T W_q^T W_k x_n + p_m^T U_q^T U_k p_n +b_{i,j} qmTkn=xmTWqTWkxn+pmTUqTUkpn+bi,j
He等人[2020]的作者认为,两个符号的相对位置只能使用式(6)的中间两项进行完全建模。因此,绝对位置嵌入 p m p_m pm p n p_n pn被简单地替换为相对位置嵌入 p ~ m − n \tilde{p}_{m−n} p~mn:
q m T k n = x m T W q T W k x n + x m T W q T W k p ~ m − n + p ~ m − n T W q T W k x n q_m^T k_n =x_m^T W_q^T W_k x_n + x_m^T W_q^T W_k \tilde{p}_{m-n} + \tilde{p}_{m-n}^T W_q^T W_k x_n qmTkn=xmTWqTWkxn+xmTWqTWkp~mn+p~mnTWqTWkxn
Radford和Narasimhan[2018]对相对位置嵌入的四种变体进行了比较,结果表明,与式(10)相似的变体是其他三种变体中效率最高的。一般来说,这些方法都试图在式(2)中的自注意设置下,在式(3)的分解基础上对式(6)进行修正,该方法最初由Vaswani等人[2017]提出。它们通常用于将位置信息直接添加到上下文表示中。不太一样的是,我们的方法旨在从式(1)中得到一些约束条件下的相对位置编码。接下来,我们展示了通过将相对位置信息与上下文表示的旋转结合起来,派生的方法更具可解释性。

3、我们所提出的方法

在本节中,我们将讨论所提出的旋转位置嵌入(RoPE)。我们首先在(3.1)节中表述相对位置编码问题,然后在(3.2)节中推导出RoPE,并在(3.3)节中研究它的性质。

3.1 概述

基于transformer的语言建模通常通过自注意机制利用单个token的位置信息。由式(2)可以看出, q m T k n q^T_m k_n qmTkn典型地实现了不同位置的token之间的知识传递。为了包含相对位置信息,我们要求query q m q_m qm和key k n k_n kn的内积由函数 g g g表示,该函数 g g g只将词嵌入 x m x_m xm x n x_n xn及其相对位置 m − n m−n mn作为输入变量。换句话说,我们希望内积只以相对形式编码位置信息:
< f q ( x m , m ) , f k ( x n , n ) > = g ( x m , x n , m − n ) <f_q(x_m,m),f_k(x_n,n)>=g(x_m,x_n,m-n) <fq(xm,m),fk(xn,n)>=g(xm,xn,mn)
最终目标是找到一种等效的编码机制来求解函数 f q ( x m , m ) f_q(x_m, m) fq(xm,m) f k ( x n , n ) f_k(x_n, n) fk(xn,n)以符合上述关系。

3.2 旋转位置编码

3.2.1 2维的情况

我们从一个维数 d = 2 d = 2 d=2的简单情况开始。在这些设置下,我们利用二维平面上向量的几何性质及其复形式来证明(详见第(3.4.1)节)式(11)的解为:
f q ( x m , m ) = ( W q x m ) e i m θ , f k ( x n , n ) = ( W k x n ) e i n θ , g ( x m , x n , m − n ) = R e [ ( W q x m ) ( W k x n ) ∗ e i ( m − n ) θ ] f_q(x_m,m)=(W_q x_m)e^{im \theta},\\ f_k(x_n,n)=(W_k x_n) e^{in \theta},\\ g(x_m,x_n,m-n)=Re[(W_q x_m)(W_k x_n) * e^{i(m-n) \theta}] fq(xm,m)=(Wqxm)eimθ,fk(xn,n)=(Wkxn)einθ,g(xm,xn,mn)=Re[(Wqxm)(Wkxn)ei(mn)θ]
其中 R e [ ⋅ ] Re[·] Re[]是复数的实部, ( W k x n ) ∗ (W_k x_n)∗ (Wkxn)表示( W k x n W_k x_n Wkxn)的共轭复数。 θ ∈ R θ∈\R θR是一个预设的非零常数。我们可以把 f { q , k } f_{\{q,k\}} f{q,k}进一步写成乘法矩阵:
f { q , k } ( x m , m ) = ( cos ⁡   m θ − sin ⁡   m θ sin ⁡   m θ cos ⁡   m θ ) ( W { q , k } ( 11 ) W { q , k } ( 12 ) W { q , k } ( 21 ) W { q , k } ( 22 ) ) ( x m ( 1 ) x m ( 2 ) ) f_{\{ q,k \}}(x_m,m)= \begin{pmatrix} \cos \ m \theta & -\sin \ m \theta \\ \sin \ m \theta & \cos \ m \theta \end{pmatrix} \begin{pmatrix} W_{\{ q,k\}}^{(11)} & W_{\{ q,k\}}^{(12)} \\ W_{\{ q,k\}}^{(21)} & W_{\{ q,k\}}^{(22)} \end{pmatrix} \begin{pmatrix} x_{m}^{(1)} \\ x_{m}^{(2)} \end{pmatrix} f{q,k}(xm,m)=(cos mθsin mθsin mθcos mθ)(W{q,k}(11)W{q,k}(21)W{q,k}(12)W{q,k}(22))(xm(1)xm(2))
其中 ( x m ( 1 ) , x m ( 2 ) ) (x^{(1)}_m, x^{(2)}_m) (xm(1),xm(2))为二维坐标下的 x m x_m xm。同样地, g g g可以被看作是一个矩阵,从而可以求解第(3.1)节中在二维情况下的公式。具体地说,合并相对位置嵌入是直接的:只需将仿射变换的词嵌入向量旋转角度乘以其位置索引,从而解释旋转位置嵌入背后的直觉。

3.2.2 通用的格式

为了将我们在2D中的结果推广到任何 d d d为偶数的 x i ∈ R d x_i \in \R^d xiRd,我们将 d d d维空间划分为 d / 2 d/2 d/2个子空间,并根据内积的线性性将它们组合起来,将 f { q , k } f_{\{q,k\}} f{q,k}转化为:
f { q , k } ( x m , m ) = R Θ , m d W { q , k } x m f_{\{ q,k \}}(x_m,m)=R_{\Theta,m}^d W_{\{q,k\}} x_m f{q,k}(xm,m)=RΘ,mdW{q,k}xm

R Θ , m d = ( cos ⁡ m θ 1 − sin ⁡ m θ 1 0 0 ⋯ 0 0 sin ⁡ m θ 1 cos ⁡ m θ 1 0 0 ⋯ 0 0 0 0 cos ⁡ m θ 2 − sin ⁡ m θ 2 ⋯ 0 0 0 0 sin ⁡ m θ 2 cos ⁡ m θ 2 ⋯ 0 0 ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ 0 0 0 0 ⋯ cos ⁡ m θ d / 2 − sin ⁡ m θ d / 2 0 0 0 0 ⋯ sin ⁡ m θ d / 2 cos ⁡ m θ d / 2 ) \boldsymbol{R}_{\Theta, m}^{d}=\left(\begin{array}{ccccccc} \cos m \theta_{1} & -\sin m \theta_{1} & 0 & 0 & \cdots & 0 & 0 \\ \sin m \theta_{1} & \cos m \theta_{1} & 0 & 0 & \cdots & 0 & 0 \\ 0 & 0 & \cos m \theta_{2} & -\sin m \theta_{2} & \cdots & 0 & 0 \\ 0 & 0 & \sin m \theta_{2} & \cos m \theta_{2} & \cdots & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & 0 & \cdots & \cos m \theta_{d / 2} & -\sin m \theta_{d / 2} \\ 0 & 0 & 0 & 0 & \cdots & \sin m \theta_{d / 2} & \cos m \theta_{d / 2} \end{array}\right) RΘ,md= cosmθ1sinmθ10000sinmθ1cosmθ1000000cosmθ2sinmθ20000sinmθ2cosmθ2000000cosmθd/2sinmθd/20000sinmθd/2cosmθd/2

是具有预定义参数的旋转矩阵 Θ = { θ i = 1000 0 − 2 ( i − 1 ) / d , i ∈ [ 1 , 2 , … , d / 2 ] } Θ = \{ \theta_i = 10000^{−2(i−1)/d}, i \in [1,2,\ldots, d / 2]\} Θ={θi=100002(i1)/d,i[1,2,,d/2]}。如图(1)所示,将RoPE应用于式(2)中的自我注意,可得:
q m T k n = ( R Θ , m d W q x m ) T ( R Θ , n d W k x n ) = x T W q R Θ , n − m d W k x n q_m^T k_n =(R_{\Theta ,m}^d W_q x_m)^T (R_{\Theta ,n}^d W_k x_n)=x^T W_q R_{\Theta,n-m}^d W_kx_n qmTkn=(RΘ,mdWqxm)T(RΘ,ndWkxn)=xTWqRΘ,nmdWkxn
R Θ , n − m d = ( R Θ , m d ) T R Θ , n d R_{\Theta,n-m}^d=(R_{\Theta,m}^d)^T R_{\Theta,n}^d RΘ,nmd=(RΘ,md)TRΘ,nd请注意, R Θ d R^d_Θ RΘd是一个正交矩阵,这保证了编码位置信息过程中的稳定性。此外,由于 R Θ d R^d_Θ RΘd的稀疏性,如式(16)直接应用矩阵乘法计算效率不高;我们在理论解释上提供了另一种实现。

与前人(3)至(10)式所采用的位置嵌入方法的加性不同,我们的方法是乘性的。此外,RoPE在自注意机制应用时,通过旋转矩阵积自然地纳入相对位置信息,而不是改变加性位置编码扩展公式中的项

3.3 RoPE的特性

长距离衰减(Long-term decay):根据Vaswani等人[2017],我们设 θ i = 1000 0 − 2 i / d θ_i = 10000^{−2i/d} θi=100002i/d。我们可以证明这个设置提供了一个长期衰减的性质(详细信息请参阅第(3.4.3)节),这意味着当相对位置增加时内积将衰减。这一特性与相对距离较长的一对token之间的联系较少的直觉相吻合。

RoPE有线性attention。自注意力可以改写成更一般的形式。
Attention ( Q , K , V ) m = ∑ n = 1 N s i m ( q m , k n ) v n ∑ n = 1 N s i m ( q m , k n ) \text{Attention}(Q,K,V)_m=\frac{\sum_{n=1}^N sim(q_m,k_n)v_n}{\sum_{n=1}^N sim(q_m,k_n)} Attention(Q,K,V)m=n=1Nsim(qm,kn)n=1Nsim(qm,kn)vn
原始的自注意选择 s i m ( q m , k n ) = e x p ( q m T k n / d ) sim(q_m, k_n) = exp(q^T_m k_n/\sqrt{d}) sim(qm,kn)=exp(qmTkn/d )。需要注意的是,原来的自注意需要计算每对token的查询和键的内积,其复杂度为二次型 O ( n 2 ) O(n^2) O(n2)。按照Katharopoulos等人[2020]的方法,线性注意将式(17)重新表示为
Attention ( Q , K , V ) m = ∑ n = 1 N ϕ ( q m ) T φ ( k n ) v n ∑ n = 1 N ϕ ( q m ) T φ ( k n ) \text{Attention}(Q,K,V)_m=\frac{\sum_{n=1}^N \phi (q_m)^T \varphi (k_n) v_n}{\sum_{n=1}^N \phi (q_m)^T \varphi (k_n)} Attention(Q,K,V)m=n=1Nϕ(qm)Tφ(kn)n=1Nϕ(qm)Tφ(kn)vn
其中 ϕ ( ⋅ ) \phi (·) ϕ() φ ( ⋅ ) φ(·) φ()通常是非负函数。Katharopoulos等人[2020]提出 ϕ ( x ) = φ ( x ) = e l u ( x ) + 1 \phi (x) = φ(x) = elu(x) + 1 ϕ(x)=φ(x)=elu(x)+1,并首先使用矩阵乘法的结合律计算key和value之间的乘法。Shen等人[2021]使用softmax函数将query和value在内积之前分别归一化,相当于 ϕ ( q i ) = s o f t m a x ( q i ) \phi (q_i) = softmax(q_i) ϕ(qi)=softmax(qi) φ ( k j ) = e x p ( k j ) φ(k_j) = exp(k_j) φ(kj)=exp(kj)。关于线性注意力的更多细节,我们鼓励读者参考原始论文。在本节中,我们将重点讨论将RoPE与式(18)结合。由于RoPE通过旋转注入位置信息,从而保持隐藏表示的范数不变,我们可以通过将旋转矩阵与非负函数的输出相乘来将RoPE与线性注意力结合起来。
Attention(Q,K,V) m = ∑ n = 1 m ( R Θ , m d ϕ ( q m ) ) T ( R Θ , n d φ ( k n ) ) v n ∑ n = 1 N ϕ ( q m ) T φ ( k n ) \text{Attention(Q,K,V)}_m=\frac{\sum_{n=1}^m (R_{\Theta ,m}^d \phi(q_m))^T (R_{\Theta,n}^d \varphi (k_n))v_n}{\sum_{n=1}^N \phi (q_m)^T \varphi(k_n)} Attention(Q,K,V)m=n=1Nϕ(qm)Tφ(kn)n=1m(RΘ,mdϕ(qm))T(RΘ,ndφ(kn))vn
值得注意的是,我们保持分母不变,以避免除零的风险,分子中的和可能包含负项。虽然式(19)中每个值 v i v_i vi的权重不是严格的概率归一化的,但我们直觉地认为,计算仍然可以模拟值的重要性。

3.4 理论分析

3.4.1 RoPE在2D下的求导

d = 2 d = 2 d=2的情况下,考虑两字嵌入向量 x q x_q xq x k x_k xk分别对应query和key中对应位置为 m m m n n n。根据eq.(1),它们的位置编码对应为:
q m = f q ( x q , m ) , k n = f k ( x k , n ) q_m=f_q(x_q,m),\\ k_n=f_k(x_k,n) qm=fq(xq,m),kn=fk(xk,n)
其中 q m q_m qm k n k_n kn的下标表示已编码的位置信息。假设存在一个函数 g g g,它定义了由 f { q , k } f_{\{q,k\}} f{q,k}产生的向量之间的内积:
q m T k n = < f q ( x m , m ) , f k ( x n , n ) > = g ( x m , x n , n − m ) q_m^T k_n =< f_q(x_m,m),f_k(x_n,n) >=g(x_m,x_n,n-m) qmTkn=<fq(xm,m),fk(xn,n)>=g(xm,xn,nm)
我们进一步要求满足以下初始条件:
q = f q ( x q , 0 ) , k = f k ( x k , 0 ) q=f_q(x_q,0),\\ k=f_k(x_k,0) q=fq(xq,0),k=fk(xk,0)
可以读取为空位置信息编码的向量。给定这些设置,我们试图找到 f q f_q fq f k f_k fk的解。首先,我们利用向量在二维中的几何意义及其复对偶部分,将式(20)和式(21)中的函数分解为:
f q ( x q , m ) = R q ( x q , m ) e i Θ q ( x q , m ) , f k ( x k , n ) = R k ( x k , n ) e i Θ k ( x k , n ) , g ( x q , x k , n − m ) = R g ( x q , x k , n − m ) e i θ g ( x q , x k , n − m ) f_q(x_q,m)=R_q(x_q,m)e^{i\Theta_q (x_q,m)},\\ f_k(x_k,n)=R_k(x_k,n)e^{i\Theta_k (x_k,n)},\\ g(x_q,x_k,n-m)=R_g(x_q,x_k,n-m)e^{i \theta_g(x_q,x_k,n-m)} fq(xq,m)=Rq(xq,m)eiΘq(xq,m),fk(xk,n)=Rk(xk,n)eiΘk(xk,n),g(xq,xk,nm)=Rg(xq,xk,nm)eiθg(xq,xk,nm)
其中 R f R_f Rf, R g R_g Rg Θ f Θ_f Θf Θ g Θ_g Θg分别是 f { q , k } f_{\{q,k\}} f{q,k} g g g的根分量(radical)和角分量(angular)。代入式(21),得到关系式:
R q ( x q , m ) R k ( x k , n ) = R g ( x q , x k , n − m ) , Θ k ( x k , n ) − Θ q ( x q , m ) = Θ g ( x q , x k , n − m ) R_q(x_q,m)R_k(x_k,n)=R_g(x_q,x_k,n-m),\\ \Theta_k(x_k,n)-\Theta_q(x_q,m)=\Theta_g(x_q,x_k,n-m) Rq(xq,m)Rk(xk,n)=Rg(xq,xk,nm),Θk(xk,n)Θq(xq,m)=Θg(xq,xk,nm)
对应初始化条件为:
q = ∥ q ∥ e i θ q = R q ( x q , 0 ) e i Θ q ( x q , 0 ) , k = ∥ k ∥ e i θ k = R k ( x k , 0 ) e i Θ k ( x k , 0 ) , q=\parallel q \parallel e^{i \theta_q}=R_q(x_q,0)e^{i\Theta_q (x_q,0)},\\ k=\parallel k \parallel e^{i \theta_k}=R_k(x_k,0)e^{i\Theta_k (x_k,0)}, q=∥qeiθq=Rq(xq,0)eiΘq(xq,0),k=∥keiθk=Rk(xk,0)eiΘk(xk,0),
其中, ∥ q ∥ \parallel q \parallel q ∥ k ∥ \parallel k \parallel k θ q θ_q θq θ k θ_k θk分别是 q q q k k k在二维平面上的radial和角度angular部分。

接下来,我们令式(24)中的 m = n m = n m=n,并考虑式(25)中的初始条件:
R q ( x q , m ) R k ( x k , m ) = R q ( x q , x k , 0 ) = R k ( x q , 0 ) R k ( x k , 0 ) = ∥ q ∥ ∥ k ∥ , Θ k ( x k , m ) − Θ q ( x q , m ) = Θ g ( x q , x k , 0 ) = ∥ Θ k ( x k , 0 ) − Θ q ( x q , 0 ) ∥ = ∥ θ k − θ q ∥ R_q(x_q,m)R_k(x_k,m)=R_q(x_q,x_k,0)=R_k(x_q,0)R_k(x_k,0)=\parallel q \parallel \parallel k \parallel,\\ \Theta_k (x_k,m) -\Theta_q(x_q,m)=\Theta_g(x_q,x_k,0)=\parallel\Theta_k(x_k,0)-\Theta_q(x_q,0) \parallel =\parallel \theta_k -\theta_q \parallel Rq(xq,m)Rk(xk,m)=Rq(xq,xk,0)=Rk(xq,0)Rk(xk,0)=∥q∥∥k,Θk(xk,m)Θq(xq,m)=Θg(xq,xk,0)=∥Θk(xk,0)Θq(xq,0)∥=∥θkθq
一方面,由式(26a)可以得到 R f R_f Rf的直接解:
R q ( x q , m ) = R q ( x q , 0 ) = ∥ q ∥ , R k ( x k , n ) = R k ( x k , 0 ) = ∥ k ∥ , R g ( x q , x k , n − m ) = R g ( x q , x k , 0 ) = ∥ q ∥ ∥ k ∥ R_q(x_q,m)=R_q(x_q,0)=\parallel q \parallel,\\ R_k(x_k,n)=R_k(x_k,0)=\parallel k \parallel,\\ R_g(x_q,x_k,n-m)=R_g(x_q,x_k,0)=\parallel q \parallel \parallel k \parallel Rq(xq,m)=Rq(xq,0)=∥q,Rk(xk,n)=Rk(xk,0)=∥k,Rg(xq,xk,nm)=Rg(xq,xk,0)=∥q∥∥k
说明radial函数 R q R_q Rq R k R_k Rk R g R_g Rg与位置信息无关。另一方面,在式(26b)中可以注意到, Θ q ( x q , m ) − θ q = Θ k ( x k , m ) − θ k Θ_q(x_q, m)−θ_q = Θ_k(x_k, m)−θ_k Θq(xq,m)θq=Θk(xk,m)θk表明angular函数不依赖于query和key,我们将它们设置为 Θ f : = Θ q = Θ k Θ_f:= Θ_q = Θ_k Θf:=Θq=Θk,术语 Θ f ( x { q , k } , m ) − θ { q , k } Θ_f(x_{\{q,k\}},m)−θ_{\{q,k\}} Θf(x{q,k},m)θ{q,k}是位置 m m m的函数,与字嵌入 x { q , k } x_{\{q,k\}} x{q,k}无关,我们将其表示为 ϕ ( m ) \phi (m) ϕ(m),得到:
Θ f ( x { q , k } , m ) = ϕ ( m ) + θ { q , k } \Theta_f(x_{\{ q,k \}},m)=\phi (m)+\theta_{\{ q,k \}} Θf(x{q,k},m)=ϕ(m)+θ{q,k}
进一步,将 n = m + 1 n = m + 1 n=m+1代入式(24),考虑上式,可得:
ϕ ( m + 1 ) − ϕ ( m ) = Θ g ( x q , x k , 1 ) + θ q − θ k \phi(m+1) -\phi(m)=\Theta_g(x_q,x_k,1)+\theta_q-\theta_k ϕ(m+1)ϕ(m)=Θg(xq,xk,1)+θqθk
由于RHS是一个与 m m m无关的常数, ϕ ( m ) \phi(m) ϕ(m)与连续整数输入产生等差数列:
ϕ ( m ) = m θ + γ \phi(m)=m \theta + \gamma ϕ(m)=mθ+γ
其中 θ , γ ∈ R θ,γ \in \R θ,γR是常数, θ θ θ是非零的。总结式(27)到式(30)的解:
f q ( x q , m ) = ∥ q ∥ e i θ q + m θ + γ = q e i ( m θ + γ ) , f k ( x k , m ) = ∥ k ∥ e i θ k + n θ + γ = k e i ( n θ + γ ) , f_q(x_q,m)=\parallel q \parallel e^{i \theta_q + m \theta + \gamma}=q e^{i(m \theta + \gamma)},\\ f_k(x_k,m)=\parallel k \parallel e^{i \theta_k + n \theta + \gamma}=k e^{i(n \theta + \gamma)}, fq(xq,m)=∥qeiθq+mθ+γ=qei(mθ+γ),fk(xk,m)=∥keiθk+nθ+γ=kei(nθ+γ),
注意,我们没有对式(22)的 f q f_q fq f k f_k fk施加任何约束,因此 f q ( x m , 0 ) f_q(x_m, 0) fq(xm,0) f k ( x n , 0 ) f_k(x_n, 0) fk(xn,0)可以自由选择。为了使我们的结果与式(3)相比较,我们定义:
q = f q ( x m , 0 ) = W q x n , k = f k ( x n , 0 ) = W k x n q=f_q(x_m,0)=W_q x_n,\\ k=f_k(x_n,0)=W_k x_n q=fq(xm,0)=Wqxn,k=fk(xn,0)=Wkxn
那么,我们只需在最终解的式(31)中设 γ = 0 γ = 0 γ=0
f q ( x m , m ) = ( W q x m ) e i m θ , f k ( x n , n ) = ( W k x n ) e i n θ f_q(x_m,m)=(W_q x_m) e^{im \theta},\\ f_k(x_n,n)=(W_k x_n) e^{in \theta} fq(xm,m)=(Wqxm)eimθ,fk(xn,n)=(Wkxn)einθ

3.4.2 实现计算高效旋转矩阵乘法

利用式(15)中 R Θ , m d R^d_{Θ,m} RΘ,md的稀疏性, R Θ d R^d_Θ RΘd x ∈ R d x \in \R^d xRd相乘实现计算效率更高的为:
R θ , m d x = ( x 1 x 2 x 3 x 4 ⋮ x d − 1 x d ) ⊗ ( cos ⁡ m θ 1 cos ⁡ m θ 1 cos ⁡ m θ 2 cos ⁡ m θ 2 ⋮ cos ⁡ m θ d / 2 cos ⁡ m θ d / 2 ) + ( − x 2 x 1 − x 4 x 3 ⋮ − x d − 1 x d ) ⊗ ( sin ⁡ m θ 1 sin ⁡ m θ 1 sin ⁡ m θ 2 sin ⁡ m θ 2 ⋮ sin ⁡ m θ d / 2 sin ⁡ m θ d / 2 ) \boldsymbol{R}_{\theta, m}^{d} \boldsymbol{x}=\left(\begin{array}{c} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \\ \vdots \\ x_{d-1} \\ x_{d} \end{array}\right) \otimes\left(\begin{array}{c} \cos m \theta_{1} \\ \cos m \theta_{1} \\ \cos m \theta_{2} \\ \cos m \theta_{2} \\ \vdots \\ \cos m \theta_{d / 2} \\ \cos m \theta_{d / 2} \end{array}\right)+\left(\begin{array}{c} -x_{2} \\ x_{1} \\ -x_{4} \\ x_{3} \\ \vdots \\ -x_{d-1} \\ x_{d} \end{array}\right) \otimes\left(\begin{array}{c} \sin m \theta_{1} \\ \sin m \theta_{1} \\ \sin m \theta_{2} \\ \sin m \theta_{2} \\ \vdots \\ \sin m \theta_{d / 2} \\ \sin m \theta_{d / 2} \end{array}\right) Rθ,mdx= x1x2x3x4xd1xd cosmθ1cosmθ1cosmθ2cosmθ2cosmθd/2cosmθd/2 + x2x1x4x3xd1xd sinmθ1sinmθ1sinmθ2sinmθ2sinmθd/2sinmθd/2

3.4.3 RoPE的长距离衰减

我们可以将向量 q = W q x m q = W_q x_m q=Wqxm k = W k x n k = W_k x_n k=Wkxn的项成对分组,式(16)中RoPE的内积可以写成复数乘法。
( R Θ , m d W q x m ) T ( R Θ , n d W k x n ) = Re [ ∑ i = 0 d / 2 − 1 q [ 2 i : 2 i + 1 ] k [ 2 i : 2 i + 1 ] ∗ e i ( m − n ) θ i ] (R_{\Theta,m}^d W_q x_m)^T(R_{\Theta,n}^d W_k x_n)=\text{Re} \left [ \sum_{i=0}^{d/2-1} q_{[2i:2i+1] k_{[2i:2i+1]}^*}e^{i(m-n) \theta_i} \right ] (RΘ,mdWqxm)T(RΘ,ndWkxn)=Re i=0d/21q[2i:2i+1]k[2i:2i+1]ei(mn)θi
式中, q [ 2 i : 2 i + 1 ] q_{[2i:2i+1]} q[2i:2i+1]表示 q q q的第 2 i 2i 2i ( 2 i + 1 ) (2i +1) (2i+1)个元素。令 h i = q [ 2 i : 2 i + 1 ] k [ 2 i : 2 i + 1 ] ∗ h_i = q_{[2i:2i+1]}k^∗_{[2i:2i+1]} hi=q[2i:2i+1]k[2i:2i+1],且 S j = ∑ i = 0 j − 1 e i ( m − n ) θ i S_j =\sum^{j−1}_{i=0} e^{i(m−n)θ_i} Sj=i=0j1ei(mn)θi,令 h d / 2 = 0 h_{d/2} =0 hd/2=0 S 0 = 0 S_0 =0 S0=0,我们可以用Abel变换重写求和式
∑ i = 0 d / 2 − 1 q [ 2 i : 2 i + 1 ] k [ 2 i : 2 i + 1 ] ∗ e i ( m − n ) θ i = ∑ i = 0 d / 2 − 1 h i ( S i + 1 − S i ) = − ∑ i = 0 d / 2 − 1 S i + 1 ( h i + 1 − h i ) \sum_{i=0}^{d/2-1}q_{[2i:2i+1]}k^*_{[2i:2i+1]}e^{i(m-n) \theta_i}=\sum_{i=0}^{d/2-1} h_i (S_{i+1}-S_i)=-\sum_{i=0}^{d/2-1} S_{i+1}(h_{i+1}-h_i) i=0d/21q[2i:2i+1]k[2i:2i+1]ei(mn)θi=i=0d/21hi(Si+1Si)=i=0d/21Si+1(hi+1hi)
然而,
∣ ∑ i = 0 d / 2 − 1 q [ 2 i : 2 i + 1 ] k [ 2 i : 2 i + 1 ] ∗ e i ( m − n ) θ i ∣ = ∣ ∑ i = 0 d / 2 − 1 S i + 1 ( h i + 1 − h i ) ∣ ≤ ∑ i = 0 d / 2 − 1 ∣ S i + 1 ∣ ∣ ( h i + 1 − h i ) ∣ ≤ ( max ⁡ i ∣ h i + 1 − h i ∣ ) ∑ i = 0 d / 2 − 1 ∣ S i + 1 ∣ \begin{align*} |\sum_{i=0}^{d/2-1}q_{[2i:2i+1]}k^*_{[2i:2i+1]}e^{i(m-n) \theta_i}| & =|\sum_{i=0}^{d/2-1} S_{i+1}(h_{i+1}-h_i)| \\ & \le \sum_{i=0}^{d/2-1}|S_{i+1}| |(h_{i+1}-h_i)| \\ & \le (\max_i |h_{i+1}-h_i|) \sum_{i=0}^{d/2-1} |S_{i+1}| \end{align*} i=0d/21q[2i:2i+1]k[2i:2i+1]ei(mn)θi=i=0d/21Si+1(hi+1hi)i=0d/21Si+1∣∣(hi+1hi)(imaxhi+1hi)i=0d/21Si+1
请注意,如图(2)所示,当 θ i = 1000 0 − 2 i / d θ_i = 10000^{−2i/d} θi=100002i/d时, 1 d / 2 ∑ i = 1 d / 2 ∣ S i ∣ \frac{1}{d/2} \sum^{d/2}_{i=1} |S_i| d/21i=1d/2Si的值随着 m − n m−n mn的相对距离的增加而衰减。

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 β_1 = 0.9 β1=0.9 β 2 = 0.98 β_2 = 0.98 β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在长文本任务上能取得更好的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络原理--传输层协议(TCP协议十大特性)

目录 1.认识TCP协议 TCP的协议段格式 2. 确认应答机制 3.超时重传 4.连接管理 <

Spring的事务传播机制

多个事务方法相互调用时&#xff0c;事务如何在这些方法之间进行传播&#xff0c;Spring中提供了七种不同的传播机制&#xff0c;来保证事务的正常执行&#xff1a; REQUIRED&#xff1a;默认的传播机制&#xff0c;如果存在事务&#xff0c;则支持/加入当前事务&#xff0c;如…

大数据技术架构(组件)35——Spark:Spark Streaming(1)

2.3、Spark Streaming2.3.0、OverviewSpark Streaming 是核心 Spark API 的扩展&#xff0c;它支持实时数据流的可扩展、高吞吐量、容错流处理。数据可以从许多来源&#xff08;如 Kafka、Kinesis 或 TCP 套接字&#xff09;获取&#xff0c;并且可以使用复杂的算法进行处理&am…

jieba+wordcloud 词云分析 202302 QCon 议题 TOP 关键词

效果图 步骤 &#xff08;1&#xff09;依赖 python 库 pip install jieba wordcloud数据 概览 $ head -n 5 input.txt 中国软件技术发展洞察和趋势预测报告 2023 QCon 大会内容策划思路 FinOps&#xff1a;从概念到落地 开源芯片的发展现状、机遇和未来 乐观者前行&#xff0…

Axure 9 实战案例,动态面板的应用 4.1,省市区三级联动下拉菜单(重制简易版)

前言 Hello&#xff01;欢迎来到Axure 9 实战案例教程专栏。 本次课程我们继续来学习一下&#xff0c;动态面板的应用。本篇我们来讲解一下&#xff0c;如何绘制省市区联动下拉菜单&#xff08;重新撰写简易版&#xff09;。 下拉菜单初稿为了节省时间&#xff0c;这里提前把…

vue实现打印浏览器页面功能(两种方法)

推荐使用方法二 方法一&#xff1a;通过npm 安装插件 1&#xff0c;安装 npm install vue-print-nb --save 2&#xff0c;引入 安装好以后在main.js文件中引入 import Print from vue-print-nbVue.use(Print); //注册 3&#xff0c;现在就可以使用了 div id"printTest…

ChatGPT爆火,释放了什么不寻常信号?

ChatGPT&#xff0c;真的火了&#xff01; 相信许多朋友都听说过 ChatGPT&#xff0c;但并不清楚它是个啥。 体制内让ChatGPT写材料&#xff0c;广告行业让ChatGPT写策划案&#xff0c;媒体让ChatGPT写新闻稿&#xff0c;程序员让ChatGPT写代码甚至还带修BUG服务。 可以说是“…

告诉ChatGPT,我想读博了!

告诉ChatGPT&#xff0c;我想读博了&#xff01; 上篇文章详细写了如何体验ChatGPT。在实际使用中发现它对固定模板式的文字工作做的比较好。于是我瞬间想起了毕业前被论文支配的恐惧&#xff0c;我突然有一个大胆的想法&#xff0c;那么ChatGPT是否能帮我写一篇毕业论文呢&am…

【求解器-COPT】COPT的版本更新中,老版本不能覆盖的问题

【求解器-COPT】COPT的版本更新中&#xff0c;老版本不能覆盖的问题方法1方法2如果license还是找不到作者&#xff1a;刘兴禄 参考网址&#xff1a; COPT的下载和配置步骤如下&#xff1a; 教程 | Windows系统下如何安装COPT求解器并配置许可文件&#xff1a; https://zhuan…

山洪灾害监测预警平台 山洪灾害监测预警系统解决方案 以人为本 科学防御

平升电子山洪灾害监测预警平台 山洪灾害监测预警系统解决方案&#xff0c;集信息采集、传输、分析和预警等功能于一体&#xff0c;实现预警信息及时、准确地上传下达&#xff0c;提升监测预警能力&#xff0c;使可能受灾区域能够及时采取措施&#xff0c;最大程度减少人员伤亡和…

典型相关分析与R语言实现

典型相关分析学习目标学习内容典型相关分析的原理典型相关分析的理论内容例子具体实现方法内容小结注意解决方法学习目标 我们所采用的学习内容来自B站的Lizongzhang老师的R语言的学习分享 今天学习的主要内容是关于 典型相关分析 学习内容 首先声明,典型相关分析的内容理解…

性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

四、Jmeter配置InfluxDB4.1 后端监听器(BackendListener)介绍1、什么是后端监听器(BackendListener)&#xff1f;源码给出的解释是&#xff1a;BackendListener是一种异步监听并获取到测试结果的实现类。也就是说发出的如http等响应请求的结果&#xff0c;都会被封装在SampleRe…

[chatGPT]问题分析示例一,mtu太小ip6地址加不进去

根据这两个条件&#xff0c;去查询chatGPT&#xff0c;发现可以找到对应的代码片段。看着chatGPT&#xff0c;已经将Linux代码整合过来了。很强大的一个功能。 Human: if mtu set to 64, why add ipv6 failure? AI: If the MTU is set to 64, it can cause IPv6 fragmentation…

Hudi系列17:离线批量导入

文章目录一. 离线批量导入概述二. 数据源准备三. 案例1&#xff1a;COW表导入(写checkpoint&#xff0c;并行度:1)3.1 Flink SQL端操作3.2 查看任务运行情况四. 案例2&#xff1a;COW表导入(写checkpoint&#xff0c;并行度:4)4.1 Flink SQL 端操作4.2 查看任务运行情况4.2 使用…

CSP-《有趣的数》-感悟

题目 做题过程 注&#xff1a;黄色高亮表示需要注意的地方&#xff0c;蓝色粗体表示代码思路 根据题意可以第一位数字为2&#xff0c;因此只需要考虑后面n-1位的排列&#xff0c;在这n-1位数字中&#xff0c;0和1的总数可能取2,3,……,n-2&#xff0c;当总数为 i 时&#xff0…

“深度学习”学习日记。--加深网络

2023.2.13 深度学习 是加深了层的深度神经网络的学习过程。基于之前介绍的网络&#xff0c;只需要通过 叠加层&#xff0c; 就可以创建深度网络 之前的学习&#xff0c;已经学习到了很多东西&#xff0c;比如构成神经网络的各种层、参数优化方法、误差反向传播法&#xff0c;…

android kotlin 协程(二) 基本入门2

android kotlin 协程(二) config: system: macOS android studio: 2022.1.1 Electric Eel gradle: gradle-7.5-bin.zip android build gradle: 7.1.0 Kotlin coroutine core: 1.6.4 tips:前面几篇全都是协程的基本使用,没有源码,等后面对协程有个基本理解之后,才会简单的…

(一)初识Streamlit(附安装)

本入门指南介绍Streamlit的工作原理、如何在您首选的操作系统上安装Streamlit&#xff0c;以及如何创建第一个Streamlit应用程序&#xff01; 1 安装 1.1 先决条件 Python 3.7 – Python 3.11 **注&#xff1a;我这里使用的是anaconda的虚拟环境&#xff0c;用pycharm编写代…

JavaWeb--MavenMybatis基础

JavaWeb--Maven&Mybatis基础1 Maven1.1 Maven简介1.1.1 Maven模型1.1.2 仓库1.2 Maven基本使用1.2.1 Maven 常用命令1.2.2 Maven 生命周期1.3 IDEA使用Maven1.3.1 IDEA配置Maven环境1.3.2 Maven 坐标详解1.3.3 IDEA 创建 Maven项目1.3.4 IDEA 导入 Maven项目1.4 依赖管理1.…

UVa 11212 Editing a Book 编辑书稿 IDA* Iterative Deepening A Star 迭代加深搜剪枝

题目链接&#xff1a;Editing a Book 题目描述&#xff1a; 给定nnn个(1<n<10)1<n<10)1<n<10)数字&#xff0c;数字分别是1,2,3,...,n1, 2, 3, ...,n1,2,3,...,n&#xff0c;但是顺序是打乱的&#xff0c;你可以选择一个索引区间的数字进行剪切操作。问最少进…