XLNet:广义自回归预训练语言模型 2019 NIPS

在这里插入图片描述
论文链接:https://arxiv.org/pdf/1906.08237v1.pdf
代码链接:https://github.com/zihangdai/xlnet

导读

今天学习的是谷歌大脑的同学和 CMU 的同学的论文《XLNet: Generalized Autoregressive Pretraining for Language Understanding》,于 2019 年发表于 NIPS,目前引用超 300 次。

XLNet 是一个广义自回归预语言模型,它在 Transformer-XL 的基础上引入了排列语言模型(Permutation Language Model,以下简写 PLM),该方法可以很好解决自回归语言模型无法处理上下文建模的问题,最后用三倍于 BERT 的语料库进行预训练,并在 20 个 NLP 任务中屠榜。

摘要

由于上下文双向建模的表达能力更强,降噪自编码类型中的典型代表BERT能够比自回归语言模型取得更好的结果。即,上下文建模获得双向的信息在Language Understanding中是很重要的。但是BERT存在以下不足:

  • (1)在输入端依赖mask的掩模的方式,遮蔽部分的输入信息,而mask token在下游任务中是不存在的
  • (2)忽略了被mask位置之间的依赖性

这两点在预训练-微调两个阶段存在不符。即,上述2个方面在预训练和微调这2个阶段之间都是有差异的。

在正视了上述优缺点之后,本文提出一种通用(或者广义,英语原文是generalized)的自回归预训练方法:XLNet。XLNet的贡献在于

  • (1)新的双向上下文学习方法:分解输入的顺序,对其进行排列组合,并遍历所有的排列组合,获得最大似然期望。
  • (2)克服BERT自回归中的缺陷,即弥补mask位置之间的依赖性

XLNet在预训练中融合Transformer-XL和state-of-the-art自回归模型的优点。实验结果:XLNet在20个任务中超出了BERT,且很多是碾压式地超越。XLNet在其中18个任务中取得了目前最优结果,包括问答、自然语言推理、情感分析和文档排序。

1、引言

预训练+微调的NLP处理方案日渐成为主流,其中预训练阶段根据预训练目标的不同可以分为2种:自回归的语言模型(autoregressive,AR)和自动编码(autoencoding,AE)模型。

AR语言模型就是我们常见的语言模型,采用自回归模型估计一个文本语料的概率分布。其中包括从左到右的文本序列的条件概率和从右往左的序列条件概率。由此可以看出AR模型对于文本都是进行单向编码的,要么是从左往右,要么从右往左,这不能有效地对深层双向上下文进行建模。而下游的language understanding 任务常常需要双向的上下文信息。比较经典的模型代表有:ELMo、GPT、GPT2等。ELMo 虽然是联系了两个方向进行计算,但因为其是独立计算,所以 ELMo 还是自回归语言模型。 AR 语言模型的缺点在于只能利用单向信息进行建模,而不能同时利用上下文;其优点在于因为使用了单向的语言模型,所以其在文本生成之类(向前的方向)的 NLP 任务中便能取得不错的效果。

在这里插入图片描述
在这里插入图片描述
基于AE的预训练方法没有进行明确的密度估计,而是致力于从corrupted input中重建出原始的输入数据。其中一个显著的代表是BERT,BERT采用特定标识符[MASK]将输入的token序列进行特定的遮蔽操作。再训练模型从被遮蔽的输入序列(corrupted data)中恢复出原始的tokens。由于其目标不是进行密度估计,所以BERT可以利用文本的双向上下文信息进行输入的重建。这就弥补了上述AR语言建模中的双向信息鸿沟。从而提升结果性能指标。但是在BERT的预训练阶段中人为设定符号[MASK],会使其与真实场景中的微调数据存在出入。导致预训练-微调的不一致。此外,由于预测的token是输入中被masked的token,BERT不能够像AR语言模型中使用点乘的联合概率。换一句话说,BERT假设待预测的tokens之间是相互独立的,这被过于简化为自然语言中普遍存在的高阶、长程依赖关系。
在这里插入图片描述

本文提出的XLNet是一种通用的自回归方法,该方法充分利用了AR语言建模和AE的优点,同时避免了它们的局限性。

  • 不再如传统AR模型中那般使用前向或者反向的固定次序作为输入,XLNet最大化输入序列的全部排序组合的似然期望。由于采用排序组合的方式,每个位置的上下文可以由来自左边和右边的token组成。在期望中,每个位置都要学会利用来自所有位置的上下文信息,即,捕获双向上下文信息。

  • 作为一个通用的AR语言模型,XLNet不再使用data corruption,即不再使用特定标识符号[MASK]。因此也就不存在BERT中的预训练和微调的不一致性。同时,自回归在分解预测tokens的联合概率时候天然地使用乘法法则,这消除了BERT中的独立性假设。

除了提出一个新的预训练目标,XLNet还改善了预训练的框架设计:

  • 受AR语言模型的最新进展启发,XLNet在预训练中借鉴了Transformer-XL中的segment recurrence机制和的相对编码方案。其性能提升在长文本序列上尤为显著。

  • 在基于排列组合的语言建模中单纯地使用Transformer-XL框架是无法工作的,这是由于分解后次序是任意的,而target是不明确的。所以,本文提出采用重置Transformer-XL网络(reparameterize the Transformer(-XL) network)以消除上述的不确定性。

相关工作
排序组合的自回归模型先哲们已经提出,本文所不同的在以下几点:

  • (1)此前的模型是无序的,但是XLNet本质上是有序的,因为其带有位置编码信息。这对于语言理解是至关重要的,否则无序模型直接退化为词袋模型,从而缺乏基本的表达能力。
  • (2)动机不同。之前的模型致力于通过在模型中引入“无序”诱导偏差来改进密度估计。但是XLNet的动机是使得自回归语言模型能够习得双向的上下文信息。

2、XLNet模型

2.1、背景

先对比传统的自回归语言模型和BERT。对于给定的文本序列 x = [ x 1 , ⋯   , x T ] x=[x_1,\cdots,x_T] x=[x1,,xT],AR语言模型:
max ⁡ θ log ⁡ p θ ( x ) = ∑ t = 1 T log ⁡ p θ ( x t ∣ x ≤ t ) = ∑ t = 1 T log ⁡ exp ⁡ ( h θ ( x 1 : t − 1 ) ⊤ e ( x t ) ) ∑ x ′ exp ⁡ ( h θ ( x 1 : t − 1 ) ⊤ e ( x ′ ) ) (1) \max_{\theta} \log p_{\theta}(\mathbf{x})=\sum_{t=1}^{T}\log p_{\theta}(x_{t} | \mathbf{x}_{\le t})=\sum_{t=1}^{T} \log \frac{\exp (h_{\theta}(\mathbf{x}_{1 : t-1})^{\top} e(x_{t}))}{\sum_{x^{\prime}} \exp (h_{\theta}(\mathbf{x}_{1 : t-1})^{\top} e(x^{\prime}))} \tag{1} θmaxlogpθ(x)=t=1Tlogpθ(xtxt)=t=1Tlogxexp(hθ(x1:t1)e(x))exp(hθ(x1:t1)e(xt))(1)
其中 h h h是神经网络模型所产生的上下文表征,如RNN或者Transformer。 e ( x ) e(x) e(x)表示 x x x的词嵌入。

BERT是基于降噪自编码,对于一个输入 x x x,先在一定位置(比如15%)随机地用特定符号[MASK]替代原始tokens,从而得到corrupted version的输入 x ^ \hat{x} x^ 。被遮蔽掉的tokens记为 x ‾ \overline{x} x,训练的目标是从 x ^ \hat{x} x^重建出 x ‾ \overline{x} x max ⁡ θ log ⁡ p θ ( x ‾ ∣ x ^ ) ≈ ∑ t = 1 T m t log ⁡ p θ ( x t ∣ x ^ ) = ∑ t = 1 T m t log ⁡ exp ⁡ ( H θ ( x ^ ) t ⊤ e ( x t ) ) ∑ x ′ exp ⁡ ( H θ ( x ^ ) t ⊤ e ( x ′ ) ) (2) \max _{\theta} \log p_{\theta}(\overline{\mathbf{x}} | \hat{\mathbf{x}}) \approx \sum_{t=1}^{T} m_{t} \log p_{\theta}(x_{t} | \hat{\mathbf{x}})=\sum_{t=1}^{T} m_{t} \log \frac{\exp(H_{\theta}(\hat{\mathbf{x}})_{t}^{\top} e(x_{t}))}{\sum_{x^{\prime}}\exp(H_{\theta}(\hat{\mathbf{x}})_{t}^{\top} e(x^{\prime}))} \tag{2} θmaxlogpθ(xx^)t=1Tmtlogpθ(xtx^)=t=1Tmtlogxexp(Hθ(x^)te(x))exp(Hθ(x^)te(xt))(2)其中 m t = 1 m_t=1 mt=1表示 x t x_t xt被masked, H θ H_\theta Hθ表示将长度为T的文本序列通过Transformer映射为特征向量: H θ ( x ) = [ H θ ( x ) 1 , H θ ( x ) 2 , ⋯   , H θ ( X ) T ] H_{\theta}(x)=[H_{\theta}(x)_1,H_{\theta}(x)_2,\cdots,H_{\theta}(X)_T] Hθ(x)=[Hθ(x)1,Hθ(x)2,,Hθ(X)T]上述两种预训练目标的优缺点对比如下:

  • 独立性假设:注意上述方程(2)中采用的是约等号。BERT假设所有被masked tokens之间是独立的,可以分别独立地重建,据此将条件概率 p ( x ‾ ∣ x ^ ) p(\overline{x}|\hat{x}) p(xx^)进行分解。自回归语言模型的目标分解 p θ ( x ) p_\theta(x) pθ(x)则是采用乘法法则。这在没有独立假设的情况下普遍成立。

  • 输入干扰:BERT的输入包含人为设定的符号如[MASK],而这些符号在真实的下游任务中是不会出现的。这就使得预训练与微调这两个阶段存在不一致。BERT的原始论文也没有解决该问题,原始的tokens只会以一个很小的概率被使用到,否则方程(2)的优化将微不足道。相比较而言,自回归语言模型不依赖于任何输入上的corruption,自然也就不存在预训练和微调不一致的问题。

  • 上下文依赖:自回归模型对于t位置的预测仅仅依赖于t-1位置之前的资讯(从左到右)。但是BERT可以从双向获得表征信息。所以,BERT可以使得模在预训练阶段型捕获到双向的上下文信息。

2.2、目标:排列组合语言模型

对比上述的2种预训练目标,那么是否存在一种预训练目标包含上述二者的优点,且能够避免其不足?受无序NADE[32]的想法的启发,本文提出一个排列组合语言模型,该模型能够保留自回归模型的优点,同时能够捕获双向的上下文信息。一个长度为 T T T的序列,其排序组合为 T ! T! T!种,直观上,如果所有排列组合次序的参数共享,那么模型应该会从左右两个方向的所有位置收集到信息。

假设 Z T Z_T ZT表示长度为 T T T序列的所有可能的排序组合。本文提出的排列组合语言模型的目标是:
max ⁡ θ E z ∼ Z T [ ∑ t = 1 T log ⁡ p θ ( x z t ∣ x z ≤ t ) ] (3) \max _{\theta} \quad \mathbb{E}_{\mathbf{z} \sim \mathcal{Z}_{T}}\left[\sum_{t=1}^{T} \log p_{\theta}\left(x_{z_{t}} | \mathbf{x}_{\mathbf{z}_{\le t}}\right)\right] \tag{3} θmaxEzZT[t=1Tlogpθ(xztxzt)](3)

如此 x t x_t xt可以看到其他所有位置的信息,即可以捕获双向的上下文信息。在自回归模型中引入该目标,则可以避免独立性假设和预训练-微调不一致问题。

Remark on Permutation

所提出的目标仅仅排列分解的次序,而不是序列的顺序。换一句话说,我们依然保持序列的原始顺序不变,而采用与原始序列对应的位置编码,再在Transformer中采用一个attention mask以获得分解次序(factorization order)的排列组合。注意:这个选择是必要的,因为模型只会在finetuning过程中遇到具有自然顺序的文本序列。

Figure1为一个例子,其中token x 3 x_3 x3是待预测的,对于输入序列 x x x的不同排列组合:
在这里插入图片描述
第1种,3->2->4->1。3的前面是mem。
第2种,2->4->3->1。3的前面是2和4,此外还有mem。所以只需要对这些进行attention即可。其他的排序组合同理。
如果将1,2,3,4打乱为3->2->4->1,再采用自回归模型的话,则优化的似然函数为:
P ( x ) = P ( x 1 ∣ x 3 , x 2 , x 4 ) × P ( x 4 ∣ x 3 , x 2 ) × P ( x 2 ∣ x 3 ) × P ( x 3 ) P(x)=P(x_1|x_3,x_2,x_4) \times P(x_4|x_3,x_2) \times P(x_2|x_3) \times P(x_3) P(x)=P(x1x3,x2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值