2020,XLNet: Generalized Autoregressive Pretraining for Language Understanding

摘要

        由于具有双向上下文建模的能力,如BERT等基于去噪自编码的预训练比基于自回归语言建模的预训练方法具有更好的性能。然而,依赖于用掩码破坏输入,BERT忽略了掩码位置之间的依赖性,并存在预训练-微调差异。鉴于这些优缺点,我们提出了XLNet,一种广义自回归预训练方法,1)通过最大化分解顺序的所有排列的期望可能性来学习双向上下文,2)克服了BERT的自回归公式的局限性。此外,XLNet还将来自最先进的自回归模型transformer-xl的思想集成到预训练中。在可比的实验设置下,XLNet在20个任务上优于BERT,通常的优势很大,包括问题回答、自然语言推理、情绪分析和文档排名。 

一、介绍

        无监督表示学习在NLP领域取得了很大的成功。通常,这些方法首先在大规模的未标记文本语料库上对神经网络进行预训练,然后在下游任务上微调模型或表示。在这种共同的高水平思想下,已经在文献中探索了不同的无监督的训练前目标。其中,自回归(AR)语言建模自编码(AE)是预训练最成功的两个目标。

        AR语言建模试图用一个自回归模型[7,27,28]来估计一个文本语料库的概率分布。具体来说,给定一个文本序列x=(x1,···,xT),AR语言建模将可能性分解为正向积p(x)=QTt=1p(xt|x<)或向后积p(x)=Q1t=Tp(xt|x>)。一个参数模型(例如,一个神经网络)被训练来模拟每个条件分布。由于AR语言模型只被训练来编码单向上下文(正向或向后),因此它在建模深度双向上下文时并不有效。相反,下游语言理解任务通常需要双向的上下文信息。这导致了AR语言建模和有效的预训练之间的差距。

        相比之下,基于AE的预训练并不执行显式的密度估计,而是从损坏的输入中重建原始数据。给定输入的令牌序列,一定的令牌被一个特殊的符号[MASK]取代,并训练模型从损坏的版本中恢复原始令牌。由于密度估计不是目标的一部分,BERT被允许利用双向上下文用于重建。作为一个直接的好处,这消除了上述AR语言建模中的双向信息差距,从而提高了性能。然而,BERT在预训练中使用的[MASK]这样的人工符号在微调时的真实数据中缺失,导致了预训练-微调差异。此外,由于预测的令牌在输入中被掩盖,BERT不能像在AR语言建模中那样使用乘积规则对联合概率进行建模。换句话说,BERT假设预测的标记在未知标记的情况下是相互独立的,这被过度简化为高阶、长期依赖在自然语言[9]中普遍存在

        面对现有语言预训练目标的利弊,在这项工作中,我们提出了XLNet,一种广义的自回归方法,它利用了AR语言建模和AE的最佳效果,同时避免了它们的局限性。1)首先,XLNet不像传统的AR模型那样使用固定的前向或后向因子分解顺序,而是最大化了序列(即因子分解顺序的所有可能的排列)的期望对数似然。由于排列操作,每个位置的上下文都可以包含左右两边的标记。在期望中,每个位置学习利用来自所有位置的上下文信息即捕获双向上下文。2)其次,作为一个广义的AR语言模型,XLNet不依赖于数据损坏。因此,XLNet不受BERT所受到的训练前-微调差异。同时,自回归目标也提供了一种自然的方法来利用乘积规则来分解预测标记的联合概率,消除了BERT中所做的独立性假设。

        除了一个新的预训练目标,XLNet还改进了预训练的架构设计。1)受AR语言建模最新进展的启发,XLNet将transformer-XL[9]的片段递归机制和相对编码方案集成到预训练中,实验中提高了性能,特别是对于涉及较长文本序列的任务。2)天真地将变压器(-XL)体系结构应用于基于排列的语言建模是不起作用的,因为其分解顺序是任意的,而且目标是模糊的。作为一个解决方案,我们建议重新参数化变压器(-XL)网络,以消除歧义

        根据经验,在可比较的实验设置下,XLNet在许多问题上始终优于BERT[10],包括GLUE语言理解任务、阅读理解任务如SQuAD和RACE、文本分类任务如Yelp和IMDB,以及ClueWeb09-B文档排名任务。

        相关工作    基于排列的AR建模的想法已经在[32,12]中被探索过,但有几个关键的区别。首先,之前的模型旨在通过在模型中引入“无序”归纳偏差来改进密度估计,而XLNet的动机是使AR语言模型能够学习双向上下文。从技术上讲,为了构建有效的目标感知预测分布,XLNet通过双流注意将目标位置整合到隐藏状态中,而以往的基于排列的AR模型则依赖于其MLP体系结构中固有的隐式位置感知。最后,对于无秩序的NADE和XLNet,我们想强调的是,“无秩序”并不意味着输入序列可以随机排列,而是模型允许分布的不同因子分解顺序。另一个相关的想法是在文本生成[11]的上下文中执行自回归去噪,尽管它只考虑了一个固定的顺序。

二、提出的方法

2.1 背景

        在本节中,我们首先回顾和比较传统的AR语言建模和BERT的语言预训练。给定一个文本序列x=[x1,···,xT],AR语言建模通过最大化前向自回归因子分解下的可能性来进行预训练:

 其中hθ(x1:t−1)是由神经模型产生的上下文表示,如rnn或变压器,e(x)表示x的嵌入。相比之下,BERT是基于去噪自动编码的。具体来说,对于一个文本序列x,BERT首先通过将x中的一部分(例如15%)标记随机设置为一个特殊的符号[MASK]来构建一个损坏的版本ˆx。让蒙面标记为¯x。训练的目标是从ˆx中重建¯x:

 其中mt=1表示xt被掩蔽,Hθ是一个转换器,它将一个长度-T的文本序列x映射到一个隐藏向量序列Hθ(x)=(Hθ(x)1,Hθ(x)2,···,Hθ(x)T]。我们从以下两个方面比较了这两个预训练目标的利弊:

        独立假设:正如在等式中的≈符号所强调的那样(2),BERT基于所有掩蔽令牌¯x分别重构的独立假设,分解联合条件概率p(¯x|ˆx)。相比之下,AR语言建模的目标(1)使用普遍没有这样的独立假设的乘积规则来分解pθ(x)

        输入噪声:BERT的输入包含像[MASK]这样的人工符号,这些符号在下游任务中永远不会出现,这造成了训练前微调差异。用[10]中的原始代牌替换[MASK]并不能解决问题,因为原始代牌只能以很小的概率使用——否则等式(2)的优化将会很简单。相比之下,AR语言建模不依赖于任何输入损坏,也不会出现这个问题

        上下文相关性:AR表示hθ(x1:t−1)仅限于t位置之前的令牌(即左边的令牌),而BERT表示Hθ(x)t可以访问两边的上下文信息。因此,BERT目标允许对模型进行预训练,以更好地捕获双向上下文

2.2 目标:排列语言建模

        借用无序NADE[32]的思想,我们提出了排列语言建模目标,它不仅保留了AR模型的好处,而且还允许模型捕获双向上下文。具体来说,对于长度为T的序列x,有T!用不同的阶数来执行有效的自回归分解。直观地说,如果模型参数在所有的分解顺序中共享,那么在期望中,模型将学习从两边的所有位置收集信息

        为了使这个想法形式化,让ZT是长度-T索引序列[1,2,……,T]的所有可能排列的集合。我们使用Zt和z<t来表示排列z∈ZT的第t个元素和前t-1个元素。然后,我们提出的排列语言建模目标可以表示为:

 本质上,对于文本序列x,我们一次采样一个分解顺序z,并根据分解顺序分解可能性pθ(x)。由于相同的模型参数θ在训练过程中在所有因子分解顺序中共享,在期望中,xt看到了序列中每个可能的元素xi ≠ xt,因此能够捕获双向上下文。此外,由于这一目标符合AR框架,它自然地避免了独立性假设和第2.1节中讨论的预训练前-微调差异。

        对排列的观察    所提出的目标只排列因子分解的顺序,而不是序列的顺序。换句话说,我们保持原始序列的顺序,使用与原始序列对应的位置编码,并在变压器中依赖一个适当的注意掩模来实现分解顺序的排列。请注意,这种选择是必要的,因为在微调过程中,模型只会遇到具有自然顺序的文本序列。

2.3 架构:针对目标感知表示的双流自注意力

        由于排列语言建模目标具有所需的属性,而使用标准变压器参数化的朴素实现可能不起作用。看到这个问题,假设我们参数化下一个标记分布pθ(Xzt | xz<t)使用标准的Softmax公式,其中hθ(xz<t)表示在适当的掩码之后通过共享的Transformer网络产生的xz<t的隐藏表示。现在请注意,表示hθ(xz<t)并不依赖于它将预测的哪个位置,即zt的值。因此,无论目标位置如何,都可以预测相同的分布,这将无法学习有用的表示方法(具体示例见附录A.1)。为了避免这个问题,我们建议重新参数化下一个令牌分布,以实现目标位置感知

 其中,gθ(xz<t,zt)表示一种新的表示类型,它另外以目标位置zt作为输入。

        双流自注意力    虽然目标感知表示的思想消除了目标预测中的模糊性,但如何表示gθ(xz<t,zt)仍然是一个重要的问题。在其他可能性中,我们建议“站”在目标位置zt,并依靠位置zt通过注意力从上下文xz<t中收集信息。为了使这个参数化工作,在标准的变压器架构中有两个矛盾的要求:(1)来预测令牌xzt,gθ(xz<t,zt)应该只使用位置zt而不是内容xzt,否则目标就变得微不足道;(2)为了预测其它标记xzj,其中j>t,gθ(xz<t,zt)也应该编码内容xzt以提供完整的上下文信息。为了解决这一矛盾,我们建议使用两组隐藏表示,而不是一组:

        (1)内容表示hθ(xz≤t),或缩写为hzt,它的作用类似于变压器中的标准隐藏状态。这种表示法同时编码了上下文和xzt本身

        (2)查询表示gθ(xz<t,zt),或缩写为gzt,它只能访问上下文信息xz<t和位置zt,但不能访问内容xzt,如上所述。

        在计算上,第一层查询流用一个可训练的向量初始化,即gi(0)=w,而内容流被设置为相应的单词嵌入,即h(0)i=e(xi)。对于每个自注意层m=1,…,M,两个表示流通过一组共享的参数更新如下(如图1(a)和(b)):

 其中,Q、K、V表示注意操作[33]中的查询、键和值。内容表示的更新规则与标准的自注意完全相同,所以在微调过程中,我们可以简单地删除查询流,并将内容流作为一个普通的转换器(-XL)使用。最后,我们可以使用最后一层的查询表示g(M)zt来计算等式 (4).

 图1(a)是内容流注意力,这与标准的自我注意相同。(b)是查询流注意力,它没有关于内容xzt的访问信息。(c)是具有双流注意点的排列语言建模训练的概述。

        部分预测    虽然排列语言建模目标(3)有几个优点,但由于排列的原因,它是一个更具有挑战性的优化问题,在初步实验中导致收敛速度较慢。为了减少优化困难,我们选择只以分解顺序预测最后的标记。形式上,我们将z分成一个非目标子序列z≤c和一个目标子序列z>c,其中c是切割点。其目的是最大化以非目标子序列为条件的目标子序列的对数似然性,即:

 注意,选择z>c作为目标,因为它在给定当前分解顺序z的序列中具有最长的上下文。使用超参数K,选择大约1/K标记进行预测;例如,|z|/(|z|−c)≈K。对于未选择的标记,不需要计算它们的查询表示,这节省了速度和内存。

2.4 结合了来自Transformer-XL的想法

        由于我们的目标函数适合于AR框架,我们将最先进的AR语言模型,转换器-xl[9],合并到我们的预训练框架中,并以其名称命名我们的方法。我们在变压器-xl中集成了两种重要的技术,即相对位置编码方案段递归机制。如前面所述,我们基于原始序列应用相对位置编码,这很简单。现在我们将讨论如何将递归机制集成到所提出的排列设置中,并使模型能够重用以前的片段中的隐藏状态。不失一般性,假设我们从一个长序列s中取出两个节段;即,˜x=s1:T和x=sT+1:2T。设˜z和z分别为[1···T]和[T+1···2T]的排列。然后,根据排列˜z,对第一段进行处理,然后对每一层m缓存得到内容表示˜h(m)。然后,对于下一段x,带有记忆的注意力更新可以写为:

 其中[.,.]表示沿着序列维度的连接。请注意,位置编码仅取决于原始序列中的实际位置。因此,一旦得到表示˜h(m),上述注意更新就独立于˜z。这允许缓存和重用内存,而不知道前面的段的分解顺序。在期望中,模型学习利用最后一段的所有分解阶上的记忆。查询流也可以用同样的方式进行计算。最后,图1(c)概述了所提出的置换语言建模的双流关注(更详细的说明见附录a.7)。

2.5 建模多个段

        许多下游任务都有多个输入段,例如,一个问题和一个回答问题中的上下文段落。现在我们讨论如何预训练XLNet在自回归框架中建模多个段。在训练前阶段,在BERT之后,我们随机抽取两个片段(是否来自同一上下文),并将两个片段的连接视为一个序列来进行排列语言建模。我们只重用属于同一上下文的内存。具体来说,我们的模型的输入与BERT相同:[CLS,A,SEP,B,SEP],其中“SEP”和“CLS”是两个特殊的符号,“A”和“B”是两个部分。尽管我们遵循两段数据格式,XLNet-Large没有使用下一个句预测[10]的目标,因为它在我们的消融研究中没有显示出一致的改善(见第3.4节)。

        相对段编码    在架构上,与BERT在每个位置为单词嵌入添加绝对片段嵌入不同,我们从变压器-xl扩展了相对编码的思想,也对片段进行编码。给定序列中的一对位置i和j,如果i和j来自同一个段,我们使用编码sij=s+或其他sij=s−的段,其中s+和s−是每个注意头的可学习模型参数。换句话说,我们只考虑这两个位置是否在同一个段内,而不是考虑它们来自哪个特定的线段。这与相对编码的核心思想是一致的;也就是说,只建模位置之间的关系。当i关注j时,段编码sij被用来计算一个注意权值aij=(qi+b)Tsij,其中qi是一个标准注意操作中的查询向量,b是一个可学习的头部特异性偏差向量。最后,将值aij添加到正常注意权重中。使用相对段编码有两个好处。首先,相对编码的归纳偏差提高了泛化[9]。其次,它开启了对具有两个以上输入段的任务进行微调的可能性,这是使用绝对段编码是不可能的。

2.6 讨论

        “比较等式”(2)和(5),我们观察到BERT和XLNet都进行了部分预测,即只预测序列中的一个标记子集。这是BERT的一个必要选择,因为如果所有的令牌都被掩盖了,那么就不可能做出任何有意义的预测。此外,对于BERT和XLNet,部分预测通过仅预测具有足够上下文的标记,发挥了降低优化难度的作用。然而,在第2.1节中讨论的独立性假设禁止了BERT对目标之间的依赖关系进行建模。

        为了更好地理解两者的区别,让我们考虑一个具体的例子[New, York, is, a, city]。假设BERT和XLNet都选择了两个标记[New,York]作为预测目标,并最大化log p(New York|is a city)。同时假设XLNet对因子分解顺序进行抽样[is,a,city, New, York]。在这种情况下,BERT和XLNet分别减少到以下目标:

 请注意,XLNet能够捕获这对对象(New,York)之间的依赖关系,而BERT省略了这一点。虽然在这个例子中,BERT学习了一些依赖对,如(New,city)和(York, city),但很明显,XLNet在给定相同的目标时总是学习更多的依赖对,并且包含“更密集”的有效训练信号

三、实验

3.1 预训练和实现

        由于引入了递归机制,我们使用了一个双向数据输入管道,其中每个正向和向后的方向都占批处理大小的一半。对于训练XLNet-Large,我们将部分预测常数K设置为6(见第2.3节)。除另有规定外,我们的微调程序遵循BERT[10]3。我们采用了一种基于跨度的预测的想法,首先采样长度为L∈[1,···,5],然后在(KL)标记的上下文中随机选择一个连续的L标记作为预测目标。

3.2 与BERT公平的比较

        在这里,我们首先比较了BERT和XLNet的性能,以解耦使用更多数据的影响,以及从BERT到XLNet的改进。在表1中,我们比较了使用相同的数据和超参数训练的BERT和(2)XLNet的三种不同变体的(1)最佳性能。正如我们所看到的,在相同的数据上使用几乎相同的训练方法进行训练时,XLNet在所有考虑的数据集上都大大超过了BERT。

 3.2 与RoBERTa的比较:扩大规模

        结果如表2(阅读理解和文档排名)、表3(问题回答)、表4(文本分类)和表5(自然语言理解)所示,其中XLNet的性能一般优于BERT和RoBERTa。此外,我们还做了两个更有趣的观察结果:1)对于涉及更长上下文的像SQuAD和RACE这样的显式推理任务,XLNet的性能增益通常更大。这种在处理更长的上下文方面的优势可能来自于XLNet中的转换器-xl主干。2)对于已经有大量监督例子的分类任务,如MNLI(>390K)、Yelp(>560K)和Amazon(>3M),XLNet仍然会带来巨大的收益

 3.4 消融研究

        我们进行了一项消融研究,以了解基于四个具有不同特征的数据集的每个设计选择的重要性。具体来说,我们希望研究三个主要方面:1)排列语言建模目标本身的有效性,特别是与BERT使用的去噪自动编码目标相比;2)使用变压器-xl作为主干神经结构的重要性;3)一些实现细节的必要性,包括基于跨度的预测、双向输入管道和下一个句子的预测。

        考虑到这些目的,在表6中,我们比较了6个具有不同实现细节的XLNet-Base变体(第3-8行),原始的BERT-Base模型(第1行),以及一个使用BERT中使用的去噪自动编码(DAE)目标,但使用双向输入管道(第2行)。为了进行公平的比较,所有的模型都是基于一个12层的架构,具有与BERT-Base相同的模型超参数,并且只在维基百科和图书语料库上进行训练。所有报告的结果都是5次运行的中位数。

        检查表6中的第1-4行,我们可以看到变压器-xl和排列LM都清楚地使XLNet的性能优于BERT。此外,如果我们删除内存缓存机制(第5行),性能就会明显下降,特别是对于RACE,它涉及到4个任务中最长的上下文。此外,第6-7行表明,基于跨度的预测和双向输入管道在XLNet中都起着重要的作用。最后,我们意外地发现,在原始的BERT中提出的下一句话的预测目标并不一定会导致改善我们的设置。因此,我们从XLNet中排除了下一句话的预测目标。

 四、总结

        XLNet是一种广义的AR预训练方法,它使用排列语言建模目标来结合AR和AE方法的优点。XLNet的神经结构可以与AR目标无缝地工作,包括集成变压器-xl和双流注意机制的精心设计。XLNet在各种任务上比之前的预训练目标有了实质性的改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值