ar自回归 python_XLNet:语言理解的广义自回归预训练Summary

摘要

与基于自回归语言模型的预训练方法相比,Bert等基于自编码的预训练方法具有更好的双向上下文建模能力。但是,BERT依赖于使用mask破坏输入,因此忽略了mask位置之间的依赖性,并且存在预训练-微调差异。鉴于这些优点和缺点,我们提出了XLNet,这是一种广义的自回归预训练方法,该方法(1)通过最大化所有对象的预期可能性来实现双向上下文的学习。(2)克服了BERT的局限性,这归功于它的自回归公式。此外,XLNet将来自最先进的自回归模型Transformer-XL的思想整合到预训练中。 从经验上讲,XLNet在20个任务上通常比BERT表现出色,而且在包括答疑,自然语言推理,情感分析和文档排名在内的18项任务上取得了最新的成果。

1导言

无监督表示学习在自然语言处理领域非常成功。通常,这些方法首先会大规模预训练神经网络未标记的文本语料库,然后微调下游任务的模型或表示。 在这种共同的高级观念下,文献中探索了不同的无监督预训练目标。 其中,自回归(AR)语言建模和自编码(AE)是最成功的两个预训练目标。

AR语言建模旨在使用自动回归模型来估计文本语料库的概率分布。具体来说,给定一个文本序列:

3fa36d165705ab79288a00023a39171f.png

AR语言建模将可能性分解为前向乘积

98c6ae278da1ecedfe45467de911f29d.png

或者是向后的

2bb5067fbd0233e1819ab5195d467747.png

训练参数模型(例如神经网络)以对每个条件分布进行建模。 由于AR语言模型仅受过训练以编码单向上下文(向前或向后),因此在建模深度双向上下文时无效。 相反,下游语言理解任务通常需要双向上下文信息。 这导致AR语言建模与有效的预训练之间存在差距。

相比之下,基于AE的预训练不执行显式密度估计,而是旨在从损坏的输入中重建原始数据。 BERT是一个著名的例子,它是最先进的预训练方法。给定输入token序列,将token的某些部分替换为特殊符号[MASK],并训练模型以从损坏的版本中恢复原始token。由于密度估计不是目标的一部分,因此允许BERT利用双向上下文进行重建。作为直接好处,这消除了AR语言建模中的上述双向信息鸿沟,从而提高了性能。但是,在微调期间,真实数据中缺少BERT在预训练期间使用的人工符号,例如[MASK],导致预训练与预调整之间存在差异。此外,由于预测的token在输入中被屏蔽,因此BERT无法像AR语言建模那样使用乘积规则对联合概率进行建模。换句话说,给定未屏蔽的token,BERT假定预测的token彼此独立,这被简化为自然语言中普遍存在的高阶,长距离依赖性。

面对现有语言预训练目标的利弊,在这项工作中,我们提出XLNet,这是一种通用的自动回归方法,它充分利用了AR语言建模和AE的优点,同时避免了它们的局限性。

  • 首先,XLNet代替了常规AR模型中使用的固定前向或后向分解顺序,而使XLNet最大化了序列w.r.t的预期对数可能性。 分解阶数的所有可能排列。 多亏了permutation操作,每个位置的上下文都可以由左右两个标记组成。 期望地,每个位置学会从所有位置利用上下文信息,即捕获双向上下文。
  • 其次,作为通用的AR语言模型,XLNet不依赖数据损坏。 因此,XLNet不会遭受BERT所受的预训练-微调差异的困扰。 同时,自回归目标还提供了一种自然的方式,可以使用乘积规则将预测token的联合概率分解为因数,从而消除了BERT中的独立性假设。

除了一个新的预训练目标,XLNet改进了预训练的架构设计。

  • 受AR语言建模最新进展的启发,XLNet将分段递归机制和Transformer-XL的相对编码方案集成到预训练中,从而从经验上提高了性能,尤其是对于涉及较长文本序列的任务。
  • 仅仅将Transformer(-XL)体系结构应用于基于permutation的语言建模不起作用,因为分解顺序是任意的,并且目标是模棱两可的。 作为解决方案,我们建议重新配置Transformer(-XL)网络以消除歧义。

根据经验,XLNet在18项任务上获得了最先进的结果,即7项GLUE语言理解任务,3项阅读理解任务(包括SQuAD和RACE),7项文本分类任务(包括Yelp和IMDB)以及ClueWeb09-B文档排名任务 。 通过一系列公平的比较实验,XLNet在多个基准测试中始终优于BERT。

相关工作 已经探索了基于permutation的AR建模的思想,但是存在几个关键差异。 先前的模型是无序的,而XLNet本质上是使用位置编码的顺序感知。 这对于语言理解很重要,因为无序模型缺乏基本的表达能力,简直就是一句话。 上述差异是由动机上的根本差异引起的。以前的模型旨在通过在模型中添加“无序”归纳偏差来改善密度估计,而XLNet是通过使AR语言模型能够学习双向上下文来激发的。

2 Proposed Method

2.1背景

在本节中,我们首先回顾并比较传统的AR语言建模和进行语言预训练的BERT。 给定文本序列

,AR语言建模通过在正向自回归分解下最大化似然性来执行预训练:

916f7ece431fd8f7be84e68e2176c0fe.png

是神经模型生成的上下文表示,例如RNNs或Transformers,
表示x的embedding。相比之下,BERT是基于降噪自动编码的。具体地,对于文本序列x,BERT首先通过将x中的token的一部分(例如15%)随机地设置为特殊符号[MASK]来构造损坏的版本
。 令被掩盖的标记为
。训练的目的是从
中重建

d8e75193064d29a03a6ea5a8eb4883f2.png

其中

表示xt被屏蔽,
是一个Transformer,将长度为T的文本序列x映射为一系列隐藏向量
。 在以下几个方面比较了两个预训练目标的优缺点:
  • 独立假设:正如方程式(2)中的≈符号所强调的,BERT分解联合条件概率
    基于一个独立假设,即所有被掩盖的token
    均被分别重建。 相比之下,AR语言建模目标(1)将因素分解
    使用在没有这种独立性假设的情况下普遍适用的乘积规则。
  • 输入噪声:BERT的输入包含诸如[MASK]之类的人工符号,这些符号在下游任务中永远不会出现,这会造成预训练与微调之间的差异。 用原始token替换[MASK]不能解决问题,因为原始token只能以很小的概率使用-否则等式(2)将是微不足道的优化。 相比之下,AR语言建模不依赖于任何输入损坏,也不会遭受此问题的困扰。
  • 上下文依赖关系:AR表示
    仅以token为条件,定位到t(即左侧的token),而BERT表示
    可以访问双方的上下文信息。 结果,BERT目标允许对模型进行预训练以更好地捕获双向上下文。

2.2 Objective: Permutation Language Modeling

借鉴无序NADE的思想,我们提出了置换语言建模的目标,该目标不仅保留了AR模型的优势,而且允许模型捕获双向上下文。 具体地说,对于长度为T的序列x,有T! 执行有效的自回归分解的不同顺序。 直观地,如果模型参数在所有分解阶数之间共享,则可以预期,模型将学习从双方所有位置收集信息。

为了使这个想法正式化,让

为length-T索引序列的所有可能排列的集合
。 我们使用
表示置换
的第t个元素和第一个t-1个元素。 然后,我们提出的置换语言建模目标可以表示如下:

7c53c44f7bbd10900495ccfd5afa4960.png

本质上,对于文本序列x,我们一次采样分解阶数z并根据分解阶数分解似然

。 由于在训练期间所有分解因子阶数上都共享相同的模型参数θ,因此预期
看到了序列中每个可能的元素
,因此能够捕获双向上下文。 此外,由于此目标适合AR框架,因此自然避免了第2.1节中讨论的独立性假设和预调-微调差异。

Remark on Permutation 提出的目标仅置换分解顺序,而不置换序列顺序。 换句话说,我们保持原始序列顺序,使用与原始序列相对应的位置编码,并依靠Transformers中的适当注意力mask来实现分解顺序的置换。 请注意,此选择是必要的,因为模型在微调期间只会遇到具有自然顺序的文本序列。

为了提供一个总体图,我们给出了一个示例,该示例在给定相同输入序列

但在图1分解因子不同的情况下预测token

63900a1f8ef8ff504036e37983e12cd6.png

8352ff35143989dca9b384d6d75d7543.png

2.3体系结构:针对目标感知表示的双流Self-Attention

尽管置换语言建模目标具有所需的属性,但是仅仅使用标准Transformer参数化的实现可能不起作用。要查看这个问题,假设我们将下一个token分布参数化

bfca6c12ea14fedeebdd6f993353fa56.png

使用标准的Softmax公式,即,

,其中
表示在正确屏蔽后由共享的Transformer网络产生的
的隐藏表示。

现在请注意,表示

不取决于它将预测哪个位置,即
的值。

因此,无论目标位置如何,都可以预测相同的分布,这无法学习有用的表示形式。为避免此问题,我们建议重新参数化下一个token分配以了解目标位置:

88ea5e8b485911996100f9b8469c5945.png

其中

表示一种新型的表示形式,它另外将目标位置
作为输入。

双流 Self-Attention 尽管目标感知表示的想法消除了歧义,在目标预测中,如何公式化

仍然是一个不小的问题。除其他可能性外,我们建议“站在”目标位置
并依靠位置
通过注意力从上下文
收集信息。为了使此参数化起作用,在标准Transformer体系结构中有两个矛盾的要求:(1)预测token
应该仅使用位置
而不是内容
,否则 目标变得微不足道;(2)为了预测j> t的其他标记
,
也应该对内容xzt进行编码以提供完整的上下文信息。 为了解决这种矛盾,我们建议使用两组隐藏的表示形式,而不是一组:
  • 内容表示形式
    ,或缩写为
    ,其作用与Transformer中的标准隐藏状态相似。 此表示对上下文和
    本身都进行编码。
  • 如上所述,查询表示形式
    或缩写为
    ,它仅可访问上下文目标信息
    和位置
    ,而不能访问内容

计算上,第一层查询流用可训练向量初始化,即

,而内容流被设置为相应的单词嵌入,即
。对于每个自我注意层m=1,......m,这两个表示流是用一组共享参数更新的,如下所示(如图2(A)和(B)所示):

0b4894d24da1af8d0f131a7f46ace6fd.png

a308d6aeea9ed54de7c7823289a46e5a.png

其中Q、K、V表示attention操作中的查询、键和值。内容表示的更新规则与标准的自我注意完全相同,因此在微调期间,我们可以简单地删除查询流,并将内容流用作普通的Transformer(-XL)。 最后,我们可以使用最后一层查询表示形式

来计算方程(4)。

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

4bc9cf442e6638d06651fd8252936266.png

请注意,选择z> c作为目标是因为在给定当前分解阶数z的情况下,它在序列中拥有最长的上下文。 使用超参数K,以便选择约1 / K的token进行预测; 即| z | /(| z | − c)≈K。对于未选择的标记,无需计算其查询表示形式,从而节省了速度和内存。

2.4结合Transformer-XL的想法

由于我们的目标函数适合AR框架,因此我们将最新的AR语言模型Transformer-XL整合到我们的预训练框架中,并以此命名。我们在Transformer-XL中集成了两项重要技术,即相对位置编码方案和分段递归机制。 我们根据

如先前讨论的原始序列,这很简单。 现在我们讨论如何将递归机制集成到建议的排列设置中,并使模型能够重用隐藏的对象

前段的状态。 在不失一般性的前提下,假设我们有两个取自长序列s的片段; 即,

并且
。 令
分别为[1···T]和[T + 1···2T]的置换。然后,基于排列
,我们处理第一段,然后为每个层m缓存获得的内容表示
。 然后,对于下一段
,记忆的注意力更新可以写成:

2618b1d0aaabd36dcc39dd9334bc5f58.png

其中[.,.]表示沿序列维的串联。 请注意,位置编码仅取决于原始序列中的实际位置。 因此,一旦获得表示

,则上述注意更新与
无关。 这允许缓存和重用内存,而无需知道前一段的分解顺序。 不出所料学会在最后一段的所有分解阶数上利用内存。 可以以相同的方式计算查询流。 最后,图2(c)给出了建议排列的概述语言建模具有两方面的注意力。

2.5建模多段

许多下游任务具有多个输入段,例如,问题和回答问题的上下文段落。 现在,我们讨论如何在自回归框架预先训练XLNet。 在预训练阶段,跟随BERT,我们随机采样两个片段(来自或不来自同一上下文),并将两个片段的串联视为一个序列以执行置换语言建模。 我们仅重用属于相同上下文的内存。 具体来说,我们模型的输入类似于BERT:[A,SEP,B,SEP,CLS],其中“ SEP”和“ CLS”是两个特殊符号,而“ A”和“ B”是这两个段。 尽管我们遵循两段数据格式,但是XLNet-Large并未使用下一句预测的目标[10],因为它在我们的消融研究中并未显示出持续的改善。

相对段编码 在架构上,与添加绝对段的BERT不同,在每个位置嵌入单词的过程中,我们从Transformer-XL扩展了相对编码的思想,也对片段进行了编码。给定序列中的一对位置i和j,如果i和j来自同一段,则我们使用一段编码

或否则
的段,其中
是每个关注头可学习的模型参数。换句话说,我们只考虑两个位置是否在同一段内,而不是考虑它们来自哪个特定段。这与相对编码的核心思想是一致的。即仅建模位置之间的关系。当我参加j时,使用段编码
来计算注意力权重
,其中
是标准向量注意操作中的查询向量,
是可学习的特定于头部的偏向向量。最后,将值
添加到正常注意权重。使用相对段编码有两个好处。首先,相对编码的归纳偏差改善了泛化性。其次,它提供了对具有两个以上输入段的任务进行微调的可能性,这是使用绝对段编码无法实现的。

2.6讨论与分析

2.6.1与BERT的比较

比较式 在(2)和(5)中,我们观察到BERT和XLNet都执行部分预测,即仅预测序列中的token子集。 这是BERT的必要选择,因为如果所有标记都被屏蔽,则不可能做出任何有意义的预测。 另外,对于BERT和XLNet而言,局部预测通过仅预测具有足够上下文的token而起到降低优化难度的作用。 但是,第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分别减少到以下目标:

9491b20ce8fbb18162eba30ba401fc70.png

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

为了证明一个例子之外的一般性观点,我们现在转向更正式的表达方式。 受先前工作的启发,给定序列

,我们定义了一组感兴趣的目标-上下文对,
,其中
的token集构成
的上下文。 直观地,我们希望模型通过预训练损耗项
来学习
的依赖性。 例如,给定以上句子,可以将兴趣对
实例化为:

d0954c14d0bc25a648ed6935396aa104.png

请注意,

只是一个没有唯一基本事实的虚拟概念,无论
如何实例化,我们的分析都将成立。

给定一组目标令牌T和一组非目标令牌N = x T,BERT和XLNet都最大化log p(T | N),但公式不同:

37101c0e378a36fe2a97b21d315d915a.png

其中,T<x表示T中在x之前具有因式分解顺序的记号。这两个目标都包括以

形式出现的多个损失项。直观地,如果存在一个目标上下文对
使得
,则损失项
向该对象提供训练信号给
之间的依赖关系。为了方便起见,我们说一个目标上下文对
,如果
,则由模型(目标)确定。

根据定义,我们考虑两种情况:

  • 如果U⊆N,则BERT和XLNet都覆盖依赖项(x,U)。
  • 如果
    并且
    ,则依赖项只能被XLNet覆盖,而不能覆盖BERT,因此XLNet可以覆盖比BERT更多的依赖项。 换句话说,XLNet目标包含更有效的训练信号,从经验上讲,这会导致第3节中更好的表现。

2.6.2与语言模型的比较

借用第2.6.1节中的示例和符号,像GPT这样的标准AR语言模型只能涵盖依赖项(x = York,U = {New}),而不能涵盖(x = New,U = {York})。XLNet 另一方面,它能够满足所有因式分解顺序的期望。 AR语言建模的这种限制在实际应用中可能至关重要。 例如,考虑范围提取为“ Thom Yorke is the singer of Radiohead”和问题“ Who is the singer of Radiohead”的回答任务。 “ Thom Yorke”的表示形式不依赖于AR语言建模中的“ Radiohead”,因此它们不会被选作通过对所有令牌表示采用softmax的标准方法来回答。 更正式地,考虑一个上下文目标对(x,U):

  • 如果
    ,其中
    表示原始序列中x之前的标记,则AR语言建模无法涵盖依赖性。
  • 相比之下,XLNet能够在期望中覆盖所有依赖项。

像Elmo这样的方法以浅浅的方式将前向和后向语言模型连在一起,这不足以模拟两个方向之间的深层次交互。

2.6.3 弥合语言建模和预训练之间的差距

语言建模已在密度估计中扎根,已成为一个快速发展的研究领域。 但是,由于缺乏双向上下文建模的能力(如2.6.2节中所述),语言建模和预训练之间存在差距。 某些机器学习从业人员甚至向语言建模提出挑战,如果它不能直接改善下游任务,那么语言建模是否有意义。 XLNet概括了语言建模并弥合了这种差距。 结果,它进一步“证明”了语言建模研究。 此外,可以利用语言建模研究的快速发展进行预训练。 例如,我们将Transformer-XL集成到XLNet中,以演示最新语言建模进展的有用性。

结论

XLNet是一种通用的AR预训练方法,它使用置换语言建模目标来结合AR和AE方法的优点。 XLNet的神经体系结构旨在与AR目标无缝协作,包括集成Transformer-XL和精心设计的两流式注意机制。 XLNet大大改进了各种任务,从而实现了最新的结果。 将来,我们设想将XLNet应用到更广泛的任务中,例如视觉和强化学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值