目录
1 XLNet引入了自回归语言模型及自编码语言模型
1.1 自回归语言模型(Autoregressive LM)
概念:
优点:
缺点:
1.2 自编码语言模型(Autoencoder LM)
概念:
优点:
缺点:
1.3 XLNet的思想及改进
1.3.1 能不能在自回归语言模型中,引入双向语言模型呢?(看上去仍是单向的输入和预测模式,但内部已经引入当前单词的上下文信息)XLNet是怎么做的?这也是它的主要理论创新,开启了自回归语言模型引入下文的思路
1.3.2 XLNet的主要改进点
1.3.3 哪些因素在起作用?
1.3.4 XLNet相比bert有哪些优势
2 与bert预训练过程的异同
2.1 XLNet对于阅读理解类任务,相对bert,性能有极大提升
2.2 其他类型的nlp任务,相对bert,效果有提升但是幅度不大
3 XLNet对nlp应用任务的影响
XLNet在自回归语言模型中,通过PLM引入了双向语言模型。也就是在预训练阶段,采用attention掩码的机制,通过对句子中单词的排列组合,把一部分下文单词排到上文位置。
PLM预训练目标、更多更高质量的预训练数据,transformerXL的主要思想。这就是XLNet的三个主要改进点,这使XLNet相比bert在生成类任务上有明显优势,对于长文档输入的nlp任务也会更有优势。
XLNet的实验可以看出,对于阅读理解类任务相对bert有极大提升,transformerXL的引入肯定是起了较大的作用,但由于数据差异没有抹平,所以无法确定是否是模型差异带来的效果差异。对于其他的nlp任务,效果有幅度不大的提升,同样无法确定这种性能提升来自于那个因素。其中磨平了数据规模因素的实验,可以发现,PLM和transformerXL确实带来了收益。
XLNet在长文档和生成类任务比较有优势,在优势领域的应用结果值得期待,以及在这些任务上的进一步改进模型。
从实验数据看,在某些场景下,XLNet相对bert确实有很大幅度的提升。
根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务,或者反过来也行,就是根据下文预测前面的单词。典型:GPT ELMo
其实跟下游NLP任务有关,比如生成类NLP任务,比如文本摘要,机器翻译等,在实际生成内容的时候,就是从左向右的,自回归语言模型天然匹配这个过程。而Bert这种DAE模式,在生成类NLP任务中,就面临训练过程和应用过程不一致的问题,导致生成类的NLP任务到目前为止都做不太好。
只能利用上文或者下文的信息,不能同时利用上文和下文的信息
Bert通过在输入X中随机Mask掉一部分单词,然后预训练过程的主要任务之一是根据上下文单词来预测这些被Mask掉的单词,如果你对Denoising Autoencoder比较熟悉的话,会看出,这确实是典型的DAE的思路。那些被Mask掉的单词就是在输入侧加入的所谓噪音。类似Bert这种预训练模式,被称为DAE LM。
能比较自然地融入双向语言模型,同时看到被预测单词的上文和下文
输入侧引入[Mask]标记,导致预训练阶段和Fine-tuning阶段不一致的问题,因为Fine-tuning阶段是看不到[Mask]标记的。DAE吗,就要引入噪音,[Mask] 标记就是引入噪音的手段,这个正常。
在第一个预训练阶段,XLNet相对bert要解决两个问题:
自回归语言模型天然适合生成类NLP任务,但不能同时利用上下文信息
自编码语言模型能利用上下文适合理解类的NLP任务,但是存在两阶段不一致问题
(XLNet实验部分并没有充分说明,这些因素各自发挥了多大作用,尤其是在和bert对比的时候,如果没有把数据规模这个变量磨平进行比较,是无法看出模型差异导致的性能差异的,所以最后一组实验磨平了数据规模差异后信息量更大的)
区别主要在于,一个显示mask,一个将mask的过程藏在了transformer内部
bert采用mask标记,在输入侧隐藏部分单词,让其在预测中不发挥作用,而利用上下文的其他单词去预测某个被mask的单词
XLNet则通过attention mask机制,在transformer内部随机mask部分单词(mask的单词比例与当前单词在句子中的位置有关,位置越靠前,被mask掉的比例越高),让这些被mask的单词在预测某个单词的时候不发生作用
其中,RACE和SQuAD 2.0是文档长度较长的阅读理解任务,任务难度也相对高。可以看出,在这两个任务中,XLNet相对 Bert_Large,确实有大幅性能提升(Race提升13.5%,SQuAD 2.0 F1指标提升8.6)。在Squad1.1上提升尽管稍微小些,F1提升3.9%,但是因为基准高,所以提升也比较明显。
说XLNet在阅读理解,尤其是长文档的阅读理解中,性能大幅超过Bert,这个是没疑问的。但是,因为XLNet融入了上文说的三个因素,所以不确定每个因素在其中起的作用有多大,而对于长文档,Transformer XL的引入肯定起了比较大的作用,Bert天然在这种类型任务中有缺点,其它两类因素的作用不清楚。感觉这里应该增加一个基准,就是Bert用与XLNet相同大小的预训练数据做,这样抹平数据量差异,更好比较模型差异带来的效果差异。当然,我觉得即使是这样,XLNet应该仍然是比Bert效果好的,只是可能不会差距这么大,因为XLNet的长文档优势肯定会起作用。
GLUE是个综合的NLP任务集合,包含各种类型的任务,因为ensemble模式里面包含了各种花式的trick,所以重点看上面一组实验,这里比较单纯。从实验数据看,XLNet相对Bert也有性能提升,当然不像阅读理解提升那么大,而且性能提升比较大的集中在RTE,MNLI和COLA数据集合,其它任务提升效果还好。
当然,仍然不确定这种性能提升主要来自于XLNet的哪个因素,或者哪几个因素各自的贡献,尤其是如果Bert加大预训练数据规模后,两者性能差异有多大。感觉这里Transformer XL的因素可能发挥的作用不会太大,其它两个因素在起作用,但是作用未知,这里感觉应该补充其它实验。
上面是文本分类任务和信息检索任务,可以看出,相对Bert,XLNet效果有提升,但是幅度不算大。仍然是上面的考虑,起作用的三个因素,到底哪个发挥多大作用,从数据方面看不太出来。
下面一组实验可以仔细分析一下,这组实验是排除掉上述第三个数据规模因素的实验的对比,就是说XLNet用的是和Bert相同规模的预训练数据,所以与Bert对比更具备模型方面的可比较性,而没有数据规模的影响。实验结果如下:
如果仔细分析实验数据,实验结果说明:
因为和Bert比较,XLNet使用相同的预训练数据。所以两者的性能差异来自于:Permutation Language Model预训练目标以及Transformer XL的长文档因素。而从中可以看出,DAE+Transformer XL体现的是长文档因素的差异,和Bert比,Race提升1个点,SQuAD F1提升3个点,MNLI提升0.5个点,SST-2性能稍微下降。这是Transformer XL因素解决长文档因素带来的收益,很明显,长文档阅读理解任务提升比较明显,其它任务提升不太明显。
而通过XLNet进一步和DAE+Transformer XL及Bert比,这一点应该拆解出Permutation Language Model和Mask的方式差异。可以看出:XLNet相对DAE+Transformer XL来说,Race进一步提升1个点左右;SQuAD进一步提升1.8个点左右,NMLI提升1个点左右,SST-B提升不到1个点。虽然不精准,但是大致是能说明问题的,这个应该大致是PLM带来的模型收益。可以看出,PLM还是普遍有效的,但是提升幅度并非特别巨大。
如果我们结合前面Race和SQuAD的实验结果看(上面两组实验是三个因素的作用,后面是排除掉数据量差异的结果,所以两者的差距,很可能就是第三个因素:数据规模导致的差异,当然,因为一个是Bert_base,一个是Bert_Large,所以不具备完全可比性,但是大致估计不会偏离真实结论太远),Race数据集合三因素同时具备的XLNet,超过Bert绝对值大约9个多百分点,Transformer因素+PLM因素估计贡献大约在2到4个点之间,那么意味着预训练数据量导致的差异大概在4到5个点左右;类似的,可以看出,SQuAD 2.0中,预训练数据量导致的差异大约在2到3个点左右,也就是说,估计训练数据量带来的提升,在阅读理解任务中大约占比30%到40%左右。
如果从实验结果归纳一下的话,可以看出:XLNet综合而言,效果是优于Bert的,尤其是在长文档类型任务,效果提升明显。如果进一步拆解的话,因为对比实验不足,只能做个粗略的结论:预训练数据量的提升,大概带来30%左右的性能提升,其它两个模型因素带来剩余的大约70%的性能提升。当然,这个主要指的是XLNet性能提升比较明显的阅读理解类任务而言。对于其它类型任务,感觉Transformer XL的因素贡献估计不会太大,主要应该是其它两个因素在起作用。
https_zhuanlan.zhihu.com/?url=https%3A%2F%2Fzhuanlan.zhihu.com%2Fp%2F70257427