今天学习的是谷歌大脑的同学和 CMU 的同学的论文《XLNet: Generalized Autoregressive Pretraining for Language Understanding》,于 2019 年发表于 NIPS,目前引用超 300 次。
XLNet 是一个广义自回归预语言模型,它在 Transformer-XL 的基础上引入了排列语言模型(Permutation Language Model,以下简写 PLM),该方法可以很好解决自回归预编无法处理上下文建模的问题,最后用三倍于 BERT 的语料库进行预训练,并在 20 个 NLP 任务中屠榜。
1.Introduction
XLNet 采用了二阶训练的方式,先在大规模语料库中进行无监督的预训练,然后针对下游任务进行微调。
XLNet 也是一个类似于 BERT 的模型,但是其和 BERT 的最大差距在于:XLNet 采用的是自回归(autoregressive)的预训练方法,而 BERT 采用的是自编码(autoencoding)的预训练方法。
我们先来介绍下自回归和自编码:
自回归语言模型(Autoregressive Language Model)是利用上文预测下文或下文预测上文,要么向前,要么向后,不能同时联系上下文信息进行建模,比较经典的模型代表有:ELMo、GPT、GPT2等。ELMo 虽然是联系了两个方向进行计算,但因为其是独立计算,所以 ELMo 还是自回归语言模型。
AR 语言模型的缺点在于只能利用单向信息进行建模,而不能同时利用上下文;其优点在于因为使用了单向的语言模型,所以其在文本生成之类(向前的方向)的 NLP 任务中便能取得不错的效果。
自编码语言模型(Autoencoding Language Model)是利用上下文来建模,比较经典的模型有 BERT,其做法为用 [MASK] 代替一部分的数据,然后利用上下文来预测被 [MASK] 的数据。
AE 语言模型的优点在于利用了上下文建模;其缺点在于预训练中的 [MASK] token 不存在于下游的微调任务中,从而导致了预训练与微调之间的差异。此外,[MASK] 的另一个缺点在于,对于给定了 [MASK] token,模型假定其彼此相互独立,这时就会出现一个问题,比如说 “2008 年全球金融危机”,假如我们 MASK 了金融和危机,AE 模型在预测时会假设两个 [MASK] 之间相互独立,但我们知道,这两个 [MASK] token 之间是有相关性的。
而本文介绍的 XLNet 是一种新的 AR 语言模型,其既能学习上下文信息,又能避免了 AE 语言模型的缺点。
2.XLNet
2.1 AE & AR Language Model
我们先给出 AE 和 AR 模型的数学表达式,首先 AE 模型是利用上文预测下文,通过最大似然来进行预训练:
m a x l o g p θ ( x ) = ∑ t = 1 T l o g p θ ( x t ∣ x < t ) max\quad log\;p_{\theta}(x) = \sum_{t=1}^{T}log\;p_{\theta}(x_t|\mathrm{x_{<t}}) \\ maxlogpθ(x)=t=1∑Tlogpθ(xt∣x<t)
而 AR 模型是重构 [MASK] 的 token:
m a x l o g p θ ( x ˉ ∣ x ^ ) ≈ ∑ t = 1 T m