XLNet: Generalized Autoregressive Pretraining for Language Understanding(中文翻译，完整版)
有了建模双向语境的能力，像BERT这样基于去噪自编码的预训练方法比基于自回归语言建模的预训练方法表现更好。然而，依赖于使用掩码来破坏输入，BERT忽略了掩码位置之间的依赖关系，并且存在预训练和微调之间的不一致性。鉴于这些优缺点，我们提出了XLNet，一种广义的自回归预训练方法，它(1)通过最大化因子分解顺序的所有排列的期望似然来实现学习双向上下文，并且(2)通过自回归公式克服了BERT的限制。此外，XLNet还将Transformer-XL的思想整合到了预训练中，这是最先进的自回归模型。在可比的实验设置下，从实证角度看，XLNet在20个任务上表现优于BERT，通常差距很大，包括问答、自然语言推理、情感分析和文档排名。无监督表示学习在自然语言处理领域取得了巨大成功[7,22,27,28,10]。通常情况下，这些方法首先在大规模无标签文本语料库上预训练神经网络，然后在下游任务上微调模型或表示。在这个共享的高级思想下，文献中已经探索了不同的无监督预训练目标。其中，自回归语言建模（AR）和自编码（AE）是最成功的两种预训练目标。AR（Autoregressive）语言建模旨在使用自回归模型[7，27，28]估计文本语料库的概率分布。具体来说，给定文本序列  ，AR语言建模将似然函数因式分解为正向乘积    或反向乘积   。参数模型（例如神经网络）被训练来建模每个条件分布。由于AR语言模型仅训练了单向上下文（正向或反向）的编码，因此它不适合建模深度双向上下文。相反，下游语言理解任务通常需要双向上下文信息。这导致AR语言建模和有效的预训练之间存在差距。相比之下，基于自编码器（AE）的预训练不执行显式的密度估计，而是旨在从损坏的输入中重构原始数据。一个著名的例子是BERT [10]，它一直是最先进的预训练方法。给定输入令牌序列，某些令牌被一个特殊符号[MASK]替换，模型被训练从损坏的版本中恢复出原始令牌。由于密度估计不是目标的一部分，BERT可以利用双向上下文进行重构。作为一个直接的好处，这消除了AR语言建模中的双向信息差距，从而提高了性能。然而，在预训练期间，BERT使用的[MASK]这样的人造符号在微调时从真实数据中缺失，导致预训练-微调之间存在差异。此外，由于预测的令牌在输入中被掩盖，BERT无法使用AR语言建模中的乘积规则来建模联合概率。换句话说，BERT假设预测的令牌在给定未掩盖的令牌的情况下彼此独立，这过于简化，因为高阶、长程依赖在自然语言中普遍存在[9]。面对现有语言预训练目标的优缺点，在这项工作中，我们提出了XLNet，一种综合了AR语言建模和AE的优点，避免它们的限制的广义自回归方法。在可比较的实验设置下，经验证明，XLNet在包括GLUE语言理解任务、类似SQuAD和RACE的阅读理解任务、如Yelp和IMDB的文本分类任务以及ClueWeb09-B文档排名任务在内的广泛问题上始终优于BERT [10]。相关工作 置换型AR建模的想法已经在[32, 12]中得到了探索，但存在一些关键差异。首先，先前的模型旨在通过将“无序”的归纳偏置嵌入模型中来改进密度估计，而XLNet的动机是使AR语言模型能够学习双向上下文。从技术上讲，为了构建一个有效的目标感知预测分布，XLNet通过双流注意力将目标位置合并到隐藏状态中，而先前的置换型AR模型则依赖于其MLP体系结构固有的隐式位置感知。最后，对于无序的NADE和XLNet，我们希望强调“无序”并不意味着输入序列可以随意置换，而是模型允许对分布进行不同的分解顺序。另一个相关的想法是在文本生成的上下文中执行自回归去噪[11]，不过这种方法只考虑一个固定的顺序。在本节中，我们首先回顾并比较传统的AR语言建模和BERT用于语言预训练。给定文本序列   ，AR语言建模通过最大化正向自回归分解下的似然来执行预训练： 其中  是由神经模型(如RNNs或Transformers)生成的上下文表示，  表示x的嵌入。相比之下，BERT基于去噪自编码。具体而言，对于一个文本序列x，BERT首先构造出一个受损版本  ，方法是随机将x中一部分(例如15%)的标记设为特殊符号[MASK]。设被屏蔽的标记为  。训练目标是从  中重建  ： 其中   表示   被掩盖，   是一个 Transformer 模型，将一个长度为   的文本序列  映射为一个隐藏向量序列 。下面从以下几个方面比较两种预训练目标的优缺点：• 独立性假设：正如公式(  )中的 ≈ 符号所强调的那样，BERT基于一个独立性假设，将联合条件概率  分解为所有掩蔽标记  分别重构。相比之下，AR语言建模目标（1）使用普遍成立的乘法规则来分解  ，而无需进行这样的独立性假设。• 输入噪声：BERT的输入包含人为符号，如[MASK]，这些符号在下游任务中从未出现，这造成了预训练和微调之间的差异。像[10]中所述，用原始标记替换[MASK]并不能解决这个问题，因为原始标记只能以很小的概率使用，否则公式(2) 将很容易被优化。相比之下，AR语言建模不依赖于任何输入损坏，并且不会受到这个问题的困扰。• 上下文依赖性：AR表示取决于位置t之前的标记（即左侧的标记），而BERT表示可以访问两侧的上下文信息。因此，BERT目标允许模型预训练更好地捕获双向上下文。根据上面的比较，AR语言建模和BERT在其他方面具有独特的优势。一个自然的问题是是否存在一种预训练目标，既能带来两者的优点，又能避免它们的弱点。借鉴无序NADE [32]的思想，我们提出置换语言建模目标，不仅保留AR模型的优点，而且允许模型捕获双向上下文。具体而言，对于长度为T的序列  ，有  种不同的顺序来执行有效的自回归因式分解。直观地说，如果模型参数在所有分解顺序上共享，那么在期望上，模型将学习从两侧的所有位置收集信息。为了形式化这个想法，令  是长度为  的索引序列  的所有可能排列的集合。我们使用 和  来表示置换  的第  个元素和前  个元素。然后，我们提出的置换语言建模目标可以表示为： 基本上，对于文本序列  ，我们在某个时刻对其进行分解顺序  的采样，并根据分解顺序分解似然概率  。由于同一模型参数  在训练期间共享所有分解顺序，在期望中，  已经看到了序列中的每个可能的元素 ，因此能够捕获双向上下文。关于排列的说明：所提出的目标仅排列分解顺序，而不是序列顺序。换句话说，我们保留原始的序列顺序，使用与原始序列相对应的位置编码，并依靠Transformer中的适当注意力掩码来实现分解顺序的排列。请注意，这种选择是必要的，因为模型在微调期间只会遇到自然顺序的文本序列。为了提供一个整体的图像，在附录A.7中，我们展示了在给定相同输入序列 但在不同分解顺序下预测标记 的示例，如图4所示。虽然排列语言建模目标具有期望的性质，但使用标准Transformer参数化的朴素实现可能无法奏效。为了看到这个问题，假设我们使用标准的Softmax公式来参数化下一个标记分布  ，即 ，其中  表示通过适当的掩码由共享的Transformer网络生成的  的隐藏表示。现在注意到，表示  不取决于它将预测的位置，即 的值。因此，无论目标位置如何，都会预测相同的分布，这无法学习有用的表示（请参见附录A.1中的具体示例）。为了避免这个问题，我们建议重新参数化下一个标记分布以使其具有目标位置感知性： 其中，  表示一种新型表示，额外以目标位置  作为输入。双流自注意力机制 虽然面向目标的表示的想法消除了目标预测中的歧义，但如何构造  仍然是一个非平凡的问题。在其他可能性中，我们建议在目标位置  “站立”，并依靠位置  通过注意力机制从上下文  中收集信息。为了使这种参数化起作用，在标准Transformer架构中有两个矛盾的要求：(1)为了预测标记  ， 应仅使用位置  而不是内容  ，否则目标将变得平凡；(2)为了预测其他的标记 还应编码内容  以提供完整的上下文信息。为了解决这种矛盾，我们建议使用两组隐藏表示，而不是一组：在计算上，第一层的查询流被初始化为一个可训练的向量，即 ，而内容流被设置为相应的词嵌入，即 。对于每个自注意力层  ，两个表示流使用一组共享的参数进行如下示意更新（如图1（a）和（b）所示）： 查询流（query stream）：使用 但不能看到  。 内容流（content stream）：同时使用  和  其中，Q、K、V分别表示注意力操作中的查询（query）、键（key）和值（value）[33]。内容表示的更新规则与标准自注意力完全相同，因此在微调期间，我们可以简单地丢弃查询流，将内容流用作普通的Transformer(-XL)。最后，我们可以使用最后一层的查询表示  来计算公式(4)。部分预测虽然排列语言建模目标(3)具有多个优点，但由于排列而导致优化问题更加具有挑战性，并且在初步实验中收敛速度较慢。为了减少优化难度，我们选择仅预测因子分解顺序中的最后几个标记。具体而言，我们将$z$分为非目标子序列  和目标子序列  ，其中 是切分点。目标是最大化给定非目标子序列的条件下目标子序列的对数似然，即: 需要注意的是，选择  作为目标，因为在给定当前因子分解顺序  的情况下，它在序列中具有最长的上下文。使用一个超参数  ，使得大约每  个标记选择一个进行预测；即  。对于未被选中的标记，它们的查询表示不需要被计算，这可以节省时间和内存。由于我们的目标函数适合于AR框架，我们将最先进的AR语言模型Transformer-XL [9]集成到我们的预训练框架中，并以此命名我们的方法。我们整合了Transformer-XL中的两个重要技术，即相对位置编码方案和分段循环机制。我们基于原始序列应用相对位置编码，这是直接的。现在我们讨论如何将循环机制整合到所提出的排列设置中，并使模型能够重用先前段落的隐藏状态。为了不失一般性，假设我们从长序列s中取出了两个段落，即  和  。令  和  分别为  和  的排列。然后，基于排列  ，我们处理第一个段落，并缓存每一层  获得的内容表示  。然后，对于下一个段落  ，具有记忆的注意力更新可以写成： 其中[., .]表示沿序列维度进行连接。请注意，位置编码仅依赖于原始序列中的实际位置。因此，一旦获得了表示 ，上述注意力更新就与  无关。这允许缓存和重用内存，而不需要知道先前段落的因子分解顺序。从期望上讲，模型学习利用上一个段落的所有因子分解顺序的内存。查询流可以采用相同的方式计算。最后，图1(c)展示了采用两个流注意力的排列语言建模的概述（有关更详细的说明，请参见附录A.7）。许多下游任务都有多个输入片段，例如，在问答中，问题和上下文段落就是两个输入片段。现在我们讨论如何在自回归框架下预训练XLNet来建模多个片段。在预训练阶段，我们像BERT一样随机抽样两个片段（可以来自同一上下文，也可以不是），并将两个片段的连接作为一个序列来执行排列语言建模。我们只重复使用属于同一上下文的记忆。具体来说，我们模型的输入与BERT相同：[CLS，A，SEP，B，SEP]，其中“SEP”和“CLS”是两个特殊符号，“A”和“B”是两个片段。虽然我们遵循两个片段的数据格式，但XLNet-Large不使用下一个句子预测[10]的目标，因为在我们的消融研究中它并没有显示出一致的改进（参见第3.4节）。相对片段编码 在结构上，与在每个位置上将绝对片段嵌入添加到单词嵌入中的BERT不同，我们扩展了Transformer-XL的相对编码思想，以对片段进行编码。给定序列中的两个位置i和j，如果i和j来自同一片段，则使用片段编码  ，否则使用  ，其中  和  是每个注意力头的可学习模型参数。换句话说，我们只考虑两个位置是否在同一片段中，而不是考虑它们来自哪些具体的片段。这与相对编码的核心思想一致，即仅对位置之间的关系进行建模。当i关注j时，片段编码  用于计算注意力权重  ，其中  是标准注意操作中的查询向量，b是可学习的头特定偏置向量。最后，将值  加到正常的注意力权重中。使用相对片段编码有两个好处。首先，相对编码的归纳偏差可以提高泛化能力[9]。其次，它打开了在具有多个输入片段的任务上微调的可能性，而使用绝对片段编码是不可能的。将公式(2)和(5)进行比较，我们可以发现BERT和XLNet都进行了部分预测，即只预测序列中的一部分标记。对于BERT来说，这是一种必要的选择，因为如果所有标记都被掩盖，就不可能做出任何有意义的预测。此外，对于BERT和XLNet，部分预测的作用是通过只预测具有足够上下文的标记来降低优化难度。然而，在第2.1节中讨论的独立假设阻止了BERT对目标之间的依赖关系进行建模。为了更好地理解这个区别，我们考虑一个具体的例子。假设我们要在句子“I played football in the park with my friends yesterday.”中预测单词“football”。在BERT中，输入序列中的一些标记被随机掩盖，模型只预测掩盖的标记。假设“football”是其中一个被掩盖的标记。BERT只能使用未被掩盖的标记的信息来预测“football”，这可能是不足够的。相比之下，XLNet不进行部分预测，而是在所有标记上进行条件建模，包括目标标记“football”。这使得XLNet能够建模目标标记与上下文标记之间的依赖关系，从而提高其预测准确性。为了更好地理解这个区别，让我们考虑一个具体的例子[New, York, is, a, city]。假设BERT和XLNet都选择[New, York]作为预测目标，并最大化  。另外，假设XLNet使用因式分解顺序[is, a, city, New, York]进行采样。在这种情况下，BERT和XLNet的目标分别为: , 注意到XLNet能够捕捉到BERT忽略的(New, York)之间的依赖关系。虽然在这个例子中，BERT学习到了一些依赖对，例如(New, city)和(York, city)，但很明显，XLNet始终会在给定相同目标的情况下学习到更多的依赖对，并且包含“更密集”的有效训练信号。关于更正式的分析和进一步讨论，请参阅附录A.5。我们遵循BERT[10]的方法，将BooksCorpus [40]和英文维基百科作为我们的预训练数据的一部分，它们组合起来拥有13GB的纯文本。此外，我们还包括Giga5（16GB文本）[26]、ClueWeb 2012-B（从[5]扩展）和Common Crawl [6]进行预训练。我们使用启发式方法大量过滤ClueWeb 2012-B和Common Crawl中的短文本或低质量文章，分别得到19GB和110GB的文本。经过使用SentencePiece [17]进行分词后，我们得到了Wikipedia、BooksCorpus、Giga5、ClueWeb和Common Crawl的2.78B、1.09B、4.75B、4.30B和19.97B个子单词，总计32.89B个子单词。我们最大的模型XLNet-Large具有与BERT-Large相同的架构超参数，因此模型大小相似。在预训练期间，我们始终使用完整的序列长度512。首先，为了与BERT（第3.2节）进行公平比较，我们还在BooksCorpus和Wikipedia上训练了XLNet-Large-wikibooks，其中我们重用了所有预训练超参数，就像在原始BERT中一样。然后，我们通过使用上述所有数据集来扩大XLNet-Large的训练。具体来说，我们使用512个TPU v3芯片进行了500K步的训练，使用Adam权重衰减优化器、线性学习率衰减和批量大小为8192，这大约需要5.5天的时间。观察到在训练结束时，该模型仍然未能充分利用数据。最后，我们基于XLNet-Base-wikibooks进行了消融研究（第3.4节）。由于引入了循环机制，我们使用双向数据输入管道，其中正向和反向方向分别占用批量大小的一半。对于训练XLNet-Large，我们将部分预测常数K设置为6（参见第2.3节）。我们的微调过程遵循BERT [10]，除非另有说明。我们采用基于跨度的预测思想，首先我们随机采样一个长度L ∈ [1, · · · , 5]，然后在(KL)个标记的上下文中随机选择一个连续跨度为L的标记序列作为预测目标。我们使用各种自然语言理解数据集来评估我们方法的性能。有关所有数据集设置的详细描述，请参见附录A.3。3.3 RoBERTa 的对比：扩大规模在我们的论文初次发表之后，另外几个预训练模型被发布，如RoBERTa [21]和ALBERT [19]。由于ALBERT需要将模型的隐藏大小从1024增加到2048/4096，因此在FLOPs计算方面大大增加了计算量，我们在以下结果中排除了ALBERT，因为它很难得出科学结论。为了与RoBERTa进行相对公平的比较，本节实验基于完整的数据，并重用RoBERTa的超参数，如第3.1节所述。我们将结果呈现在表2（阅读理解和文档排名）、表3（问题回答）、表4（文本分类）和表5（自然语言理解）中，其中XLNet通常优于BERT和RoBERTa。此外，我们还做出了两个有趣的观察：我们进行了一个消融实验，以了解每个设计选择的重要性，基于四个具有不同特征的数据集。具体来说，我们希望研究三个主要方面：• 仅使用排列语言建模目标的有效性，特别是与BERT使用的去噪自编码目标相比。• 使用Transformer-XL作为骨干神经架构的重要性。• 一些实现细节的必要性，包括基于跨度的预测、双向输入管道和下一句预测。考虑到这些目的，在表6中，我们比较了6个具有不同实现细节的XLNet-Base变体（第3-8行），原始BERT-Base模型（第1行）和一个使用与BERT相同的去噪自编码（DAE）目标，但是采用双向输入管道的额外Transformer-XL基线（第2行）。为了公平比较，所有模型都基于12层架构，具有与BERT-Base相同的模型超参数，并仅在Wikipedia和BooksCorpus上进行训练。所有报告的结果都是5次运行的中位数。请注意：由于篇幅限制，本回答只能回答部分内容，无法涵盖全部内容。表6的第1-4行显示，Transformer-XL和排列语言模型显然为XLNet相对于BERT的卓越性能做出了贡献。此外，如果我们删除记忆缓存机制（第5行），性能会明显下降，特别是对于涉及最长上下文的RACE。此外，第6-7行显示，基于区间的预测和双向输入管道在XLNet中发挥了重要作用。最后，我们意外地发现，BERT提出的下一个句子预测目标在我们的设置中并不一定会带来改进。因此，我们从XLNet中排除了下一个句子预测目标。最后，我们还进行了关注模式的定性研究，其包含在附录A.6中。本文介绍了一种名为XLNet的广义自回归预训练方法，该方法使用置换语言建模目标，结合了自回归和自编码方法的优点。XLNet的神经架构被开发出来以无缝地与自回归目标一起工作，包括集成Transformer-XL和精心设计的双流注意力机制。XLNet在各种任务上取得了显着的改进。致谢： 作者感谢Qizhe Xie和Adams Wei Yu提供有关该项目的有用反馈，感谢Jamie Callan提供ClueWeb数据集，感谢Youlong Cheng、Yanping Huang和Shibo Wang提供改进TPU实现的想法，感谢Chenyan Xiong和Zhuyun Dai澄清文档排名任务的设置。ZY和RS获得了美国海军研究办公室N000141812861，美国国家科学基金会（NSF）IIS1763562，Nvidia Fellowship和Siebel奖学金的支持。ZD和YY部分地获得了NSF IIS-1546329和DOE-Office of Science ASCR #KJ040201的支持。