去年11月份,谷歌研究团队在GitHub上发布了万众期待的BERT,它不仅在11项NLP测试中刷新了最高成绩,甚至还表现出全面超越人类的惊人结果。但BERT 带来的震撼还未平息,今日又一个令众多NLPer兴奋的消息发布: CMU 与谷歌大脑提出的全新XLNet 在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果!而更令人激动的是,目前 XLNet 已经开放了训练代码和大型预训练模型。AI 科技评论将其具体内容整理如下。
BERT与XLNet 的关系
与基于自回归语言建模的预训练处理方法相比,基于自编码的预训练处理方法(比如BERT)具有良好的双向上下文建模能力。然而,由于依赖于使用掩码破坏输入,BERT忽略了掩码位置之间的依赖关系,并出现了预训练-微调(pretrain-finetune)差异。
XLNet则是基于BERT的优缺点,提出的一种泛化自回归预训练方法。它通过最大化因子分解顺序所有排列的期望似然来实现双向上下文的学习;通过自回归公式克服了BERT的局限性,并将来自Transformer-XL(最先进的自回归模型)的思想集成到预训练中,在长文本表示的语言任务中表现出了优异的性能。
XLNet 诞生背景
首先,我们要理解两个概念:自回归(AR)语言建模和自编码(AE)。
无监督表示学习在自然语言处理领域非常成功。通常,这些方法首先在大规模无标记文本语料库上对神经网络进行预训练,然后对下游任务的模型或表示进行微调。在这一共同的高层次思想下,不同的无监督预训练目标在相关文献中得到了探索。其中,自回归语言建模和自编码是两个最成功的预训练目标。
AR语言建模是利用自回归模型估计文本语料库的概率分布。具体来说,给定一个文本序列x = (x1, …,xT), AR语言模型将这种可能性分解为前向乘积或后向乘积。一个参数模型(如神经网络)被训练来对每个条件分布建模。由于AR语言模型仅被训练为编码单向上下文(向前或向后),因此它在建模深层双向上下文时并没有产生效果。相反的是下游语言理解任务,通常需要双向上下文信息。这导致了AR语言建模和有效的预训练之间的差距。
相比之下,基于AE的预训练不执行显式密度估计,而是旨在从输入重构原始数据。而一个著名的例子就是BERT,它采用了最先进的预训练方法。给定输入token序列,用一个特殊符号[MASK]替换其中的特定部分,并且训练模型从损坏的版本中恢复原token。
由于密度估计不是目标的一部分,BERT可以利用双向上下文进行重建。直接的好处就是这消除了AR语言建模中的双向信息差距,从而提高了性能。然而,BERT在预训练使用的[MASK]等人工符号实际数据中并不存在,导致了预训练的网络差距。此外,由于预测的token在输入中被重新掩盖,BERT无法像AR语言建模一样使用乘积规则对联合概率进行建模。
因此,针对现有语言预训练目标的优缺点,CMU 与谷歌大脑提出了将AR和AE的优点充分结合的泛化自回归预训练模型 XLNet。
XLNet详解
首先,XLNet 不使用传统 AR 模型中固定的前向或后向因式分解顺序,而是最大化所有可能因式分解顺序的期望对数似然。因为是对因式分解顺序的排列操作,每个位置的上下文都可以由来自左右两边的token组成。在期望中,每个位置都要学会利用来自所有位置的上下文信息,即捕获双向上下文。
其次,作为一种泛化的AR语言模型,XLNet不依赖于残余数据。因此,XLNet不受BERT的预训练-微调差异的影响。同时,自回归目标也提供了一种自然的方法来使用乘积规则对预测 token 的联合概率执行因式分解,消除了BERT中做出的独立性假设。
除了一个新的预训练目标,XLNet还改进了预训练的架构设计。
受AR语言建模最新进展的启发,XLNet将Transformer-XL的分段重复机制和相对编码方案集成到预训练中,在较长文本序列的任务中提高了性能。
需要注意的是,将Transformer(-XL)架构简单应用于基于排列的语言建模是不起作用的,因为分解顺序是任意的且目标是模糊的。作为一种解决方案,研究者们提出重新参数化Transformer(-XL)网络,以消除歧义。
实验结果
截至2019年6月19日,XLNet 在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果(state-of-the-art),包括机器问答、自然语言推断、情感分析和文档排序。
以下是XLNet-Large和Bert-Large的一些比较:
在最终的20项任务中,XLNet的表现优于BERT,并且在18项任务中取得了最先进的结果。
发布模型
截至目前,已提供以下模式:
XLNet-Large, Cased:24-layer, 1024-hidden,16-heads,
每个.zip文件包含三个项:
TensorFlow checkpoint(xlnet_model.ckpt),包含预先训练的权重。
SentencePiece模型(spiece.model),用于(de)标记化。
一个配置文件(xlnet_config.json),指定模型的超参数。
未来释放计划
后续开发者还计划在不同的环境下继续发布更多的预训练模型,包括:
基本模型——将在2019年6月底发布一个XLNet-Base。
Uncased模型——目前, Cased XLNet-Large比Uncased XLNet-Large性能更好。开发者仍在观察与研究,当得出结论时,他们将马上发布Uncased模型。(预计时间不会太久)
在维基百科上进行微调的预训练模型,这可用于维基百科文本的任务,如SQuAD和HotpotQA。
其他超参数配置的预训练模型,可以用于特定的下游任务。
与新技术关联的预训练模型。
相关链接
论文地址:
https://arxiv.org/pdf/1906.08237.pdf
预训练模型及代码地址:
https://github.com/zihangdai/xlnet
本文转自公众号 AI科技评论,原文地址