专栏首页朴素人工智能[预训练语言模型专题] XLNet:公平一战!多项任务效果超越BERT

[预训练语言模型专题] XLNet:公平一战!多项任务效果超越BERT

本文为预训练语言模型专题的第14篇。

感谢清华大学自然语言处理实验室对预训练语言模型架构的梳理,我们将沿此脉络前行,探索预训练语言模型的前沿技术,红框中为已介绍的文章,绿框中为本期介绍的XLNet,欢迎大家留言讨论交流。

XLNet: Generalized Autoregressive Pretraining for Language Understanding(2019)

XLNet是由卡内基梅隆大学和Google AI Brain Team的作者共同发表的。文章摘要中提到,他们认为BERT由于在预训练时加入了[MASK]的token,导致pretrain 和 finetune 在训练数据上有差异,以致于降低了模型的效果。所以它们提出了XLNet,一种通用的自回归预训练模型,解决了这个问题,在包括问答,推断,极性分析,文档排序等20个自然语言任务上超过BERT,甚至在某些任务上超出了不少。

无监督的预训练在自然语言处理中已经取得了巨大的成功。典型的做法就是在大规模无标注数据上预训练,然后在下游任务上finetune得到模型或表示。在这个前提思想下,不同的预训练语言模型训练目标纷纷被提出。其中,autoregressive (AR) 自回归语言模型 和 autoencoding (AE) 自编码语言模型是最成功的两个。

  • 自回归语言模型(AR) 代表模型为ELMo和GPT,他们的语言模型任务是已知一段文本序列去建模后向或前向文本的概率分布。比如已知前t个文本的序列,来获得t位置文本的条件概率分布。它由回归分析发展而来,而这里预测的是该文本自己,所以被称为自回归。由这种定义,自回归语言模型是仅能建模单向的文本的概率分布,无法有效地深层双向的context。但众所周知,双向信息对预训练语言模型是很重要的,这也是自回归语言模型的一大问题。
  • 自编码语言模型(AE) 代表模型为BERT,自编码语言模型的目的就不是去直接地估计下一段文本的条件密度,而是从被掩盖或残缺的文本中来重新构建原始的文本。像BERT,原始文本中的一定比例token会被mask掉,然后训练模型从被mask掉的文本中重现原来的文本。因为并非用条件概率密度估计作为目标,BERT就可以同时利用上下文的信息来重构原始文本,带来了极大的收益。但是BERT的一个问题是在预训练的时候,输入文本因为任务的原因,含有不少[MASK] token,但是在finetune的时候是没有的,导致了pretrain-finetune discrepancy。同时,BERT的mask策略导致它假设每个被预测(掩蔽的)词 在给定未屏蔽的 词 的情况下彼此独立,这在很多时间是不成立的,掩盖的词之前常常也会有相关联系。

对于这两种训练模式的优缺点,本文提出了XLNet,一种通用的自回归训练方法,权衡了两者的优点,回避了他们各自的不足,主要的思路是两点:

  1. 相比于AR模型任务中用前向或者后向的极大似然来建模。XLNet对所有可能的分解顺序排列进行最大对数似然的优化。通过这种操作,每个位置能看到的context都可以包含左边和右边的tokens。每个位置能够学到所有位置的上下文信息,以此实现双向建模。
  2. 作为AR语言模型的一种,XLNet不依赖于数据重建,所以不会像BERT一样有预训练和finetune的差别。同时,自训练目标很自然地利用乘法原则,获得所预测token的联合概率,从而避免了BERT中的被屏蔽词独立假设。

同时,XLNet还做了一些额外的改进:

  • 基于AR语言模型的最新进展,XLNet在预训练中融入了Transformer-xl的片段循环机制及相对位置编码,提升了任务地效果,特别是对比较长的文本。
  • 直接将Transformer或者Transformer-xl应用于重排列的语言模型效果不好,目标也比较模糊,所以XLNET重新调整了Transformer(-XL)使模糊性消除。

在可比较的实验设置上,XLNet在GLUE上多个自然语言理解数据集上,得到了比BERT更好的结果。

Objective: Permutation Language Modeling

经过上面的比较,AR语言模型和BERT各有各的优点,如何取长补短得到更好的语言模型呢?XLNet借鉴和提出了一种混合排列的语言模型目标。比如说,对于一个长为T的序列x,它有T!种不同的排列方式。如果模型参数是所有顺序共享的,那模型就能从不同的方向接受序列的信息。

比如说,Zt是序列的一种排序,那么这种排序下的模型目标是

一旦我们采样出一种排序方式Zt,就可以形成一个似然的优化目标。因为所有的顺序都可能出现,所以模型能够学到序列两个方向上所有的信息。同时,因为是AR框架的训练目标,它自然地避免了独立性假设和预训练和finetune时数据的不一致性。

实际上,本文提出的这种训练目标仅仅是改变了因式的顺序,而非序列的顺序。换句话说,作者保持了原来的序列顺序和位置编码,只是在Transformers中使用了合适的attention mask达成了因式的顺序。这种方式是必要的,因为在finetune时,模型只会根据序列的自然顺序进行编码。

比如在上图中,要预测x3,我们分别用四种不同的分解顺序,当顺序为3-2-4-1时,由于3出现在最前面,所以不能看到其他的字符,于是只通过前面循环存储来进行预测。当顺序为2-4-3-1时,由于3出现在第三位,所以第2和4个字符也可以参与进行x3的预测。同理,当顺序为1-4-2-3时,第1,2,3个字符都可以加入进行预测。

Architecture: Two-Stream Self-Attention for Target-Aware Representations

这种语言模型方式很好,但是在标准的Transformer上使用可能效果不佳,文中附录中举了一个例子。如果有两种不同的排列zt1和zt2,满足

根据原本的极大似然计算方式,下面两个式子的结果应该是一样的,实际上,根据所预测target不同,其真实的分布必然应该是不同的。

因此,为了解决这个问题,作者把预测下个词概率的公式,改成和目标的位置有关了,其中g函数将目标的位置也作为输入来进行计算了。

但是,在不作为预测目标的token,我们是应该了解其token内容的,于是为了在引入zt位置的同时保证大于t时隐层能得到正确的结果,作者提出使用两组隐层g, h表示来代替一组隐层h。h为content表示,使用上下文以及所预测字符编码而成。而g为query表示,只能了解target的位置zt,而不应获得具体的内容。

换句话说,一个token X 将服务两种角色。当它被用作内容来预测其他标记时,我们可以使用content表示(通过内容流注意力来学习)来表示X。但是如果我们想要预测X,我们应该只知道它的位置而不是它的内容。

Incorporating Ideas from Transformer-XL

本文借鉴了不少Transformer-XL中的方法,而且以"XL"命名。这些方法主要包括相对位置编码和片段循环机制。有关内容可以参考我们关于Transformer-XL的推送。下图为XLNet中片段循环的公式。

模型细节

最后,XLNet使用了很多数据来预训练,包括BooksCorpus,Engligh Wikipedia, Giga5,ClueWeb 2012-B,Common Crawl总共大概158G左右的文本,这个比BERT用的就多了不少。尺寸最大的XLNET是和BERT-large同一个大小,在512TPU v3 chips上训练了500k步,batchsize 8192, 大概训练了5.5天。同时,为了和BERT进行公平比较,作者也训练了XLNET在BooksCorpus,Engligh Wikipedia上的模型进行相同设置下的PK。结果如下:

从结果中可以看出XLNet是好了不少的。但是,在Roberta出现以后,在不少结果上超过了XLNet初次发布的结果。让人们怀疑XLNet是否是靠着其使用了更多的数据而取得了优势,其本质上没有太大提升。

但是本文(那之后更新),又用与RoBERTa相同的设置和数据进行训练,做了一次公平的比较,结果如下图,总体来说,XLNet又超过了BERT和RoBERTa。

再看在阅读理解数据集上结果,XLNet也领先于两者。

总的而言,XLNet使用了重排列的语言模型目标,结合了AR模型和AE模型的优点,同时XLNet继承了Transformer-XL的片段循环机制和相对编码特性,对文本长时序列进行了更好地处理,在很多任务上超过了之前的模型。

本文分享自微信公众号 - 朴素人工智能(sunnyday_no1),作者:管扬

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史

    来自 | 知乎 地址 | https://zhuanlan.zhihu.com/p/146325984

    朴素人工智能
  • [预训练语言模型专题] RoBERTa: 捍卫BERT的尊严

    5-8:[BERT来临]、[浅析BERT代码]、[ERNIE合集]、[MT-DNN(KD)]

    朴素人工智能
  • Kaggle TensorFlow 2.0 Question Answering 16名复盘

    这是Kaggle春节前结束的一个阅读理解的比赛[1],我和管老师曹老师最终获得16/1233的成绩。成绩来自于管老师的提交,我自己的最好成绩大概排在23名的样子...

    朴素人工智能
  • 互联网新闻情感分析比赛,复赛第8名(8/2745)解决方案及总结

    本次比赛的任务是对给定文本进行情感极性分析,情感极性包括正中负三类。这次比赛我的成绩是复赛第8名(共2745支参赛队伍,实际有效提交851个提交)。借助分享本次...

    double
  • NLP新标杆!谷歌大脑CMU联手推出XLNet,20项任务全面超越BERT

    近日,谷歌大脑主任科学家Quoc V. Le在Twitter上放出一篇重磅论文,立即引发热议:

    新智元
  • 【NLP】初次BERT使用者的可视化指南

    用可视化的方式演示了如何用Bert来做一个句子分类的应用,每一步都有非常详细的图解,特别的清楚。

    yuquanle
  • 快讯:Oracle自治事务处理数据库发布和19c路线图

    此前 Oracle 已经发布了 Autonomous Data Warehouse 服务(ADW),现在 Autonomous Transaction Proc...

    数据和云
  • AS3初学者容易迷糊的几个问题

    1.Sprite/MovieClip的Enter_Frame事件,不受addChild/removeChild影响 简单点讲:Sprite或MovieClip对...

    菩提树下的杨过
  • 近期必读 ICLR 2021 【模型压缩】&【预训练】相关论文】

    本期的关注焦点是【模型压缩】&【预训练】的7篇论文。点击文末“阅读原文”,获取正在接受盲审的论文列表。

    Houye
  • 让机器更好地理解数字,微信AI登顶数字离散推理榜单

    机器阅读理解一直是自然语言处理中的重要任务。近来很多研究都在致力于解决这一问题,包括采用专家规则、机器学习和神经网络,以及最近较为火热的预训练语言模型等。尽管目...

    机器之心

扫码关注云+社区

领取腾讯云代金券