乘风破浪的PTM:预训练的发动机

2021-07-16 12:13:19 浏览数 (1)

《乘风破浪的PTM》系列,讲述两年来预训练模型(Pre-Training Model, PTM)的技术进展,本篇主要整理预训练模型中的发动机:模型结构。错过前文的小伙伴可以通过?以下链接直接阅读哦~

  • 预训练模型中的强基准RoBERTa

背景

Bert模型自18年10月推出,到目前为止快两年了。它卜一问世即引起轰动,之后,各种改进版本的预训练模型(Pre-Training Model, PTM)与应用如过江之鲫,层出不穷。Bert及它的继任者们,确实也不负众望,在NLP各个领域攻城略地,所向披靡,多种NLP数据集竞赛榜单,连续多年被各种新出现的预训练模型霸榜,有些榜单,个别模型已经把指标刷到超过人类。

那么,在近两年的时间里,诸多改进模型中,有哪些令人印象深刻的新模型?

在那些表现突出的新模型中,是哪些因素导致它们的良好表现?

预训练模型技术本身有重大的改动或创新么?

或者,关于预训练模型,目前有哪些相对明确的结论?

根据目前的技术发展水准,如何根据现有结论,来打造最强的预训练模型?

本文通过梳理现有技术文献,试图来回答上述一系列问题。本文的数据都客观有出处,但是对数据的解读,带有严重的个人色彩,偏颇难免,还请谨慎参考

预训练的发动机:模型结构

对于预训练模型来说,目前的主流模型大都采用Transformer作为特征抽取器,现阶段看,Transformer的潜力仍然没有被充分挖掘,还有很大潜力可挖,意思是,Transformer效果足够好,而且还可以更好,貌似改进Transformer并非当务之急的事情。

预训练模型的知识,是通过Transformer在训练迭代中从数据中不断学习,并以模型参数的形式编码到模型中的。虽然,大家都是用的Transformer,但是怎么用它搭建模型结构学习效率更高?这是一个问题。

所谓学习效率高,就是给定相同大小规模的训练数据,它能编码更多的知识到模型里,这就意味着它的学习效率更高。不同的Transformer用法,会产生不同的模型结构,就会导致不同结构的差异化的学习效率。

本节我们归纳下目前能得到的,关于模型结构的现有研究结论,会介绍常见的五种模型结构。当然,这里用模型结构来表达不足够确切,因为除了模型结构外,一般还包含自监督的学习方法,常见的学习方法包括AutoEncoding(简称AE)和AutoRegressive(简称AR)。AE即我们常说的双向语言模型,而AR则代表从左到右的单向语言模型。

Encoder-AE结构

Encoder-AE结构如上图所示。这其实是包括原始版本Bert在内的,大多数后续改进模型采取的结构。整个结构就是一个标准的Transformer,在语言模型预训练的时候,采用AE方法。

也就是说,输入句中的未被Mask的任意单词两两可见,但是被Mask掉的单词之间都相互独立,互不可见。在预测某个被Mask掉的单词的时候,所有其它被Mask的单词都不起作用,但是句内未被Mask掉的所有单词,都可以参与当前单词的预测。可以看出,Encoder-AE是个采用双向语言模型的单Transformer结构。

模型结构比较(From BART)

模型结构比较(From Google T5)

从目前对比实验看(上面两图),除了下文要讲述的Encoder-Decoder结构外,貌似对于语言理解类的NLP任务,这种结构都是效果最好的,但是对于语言生成类的任务,这种结构效果相对很差。也就是说,这种结构比较适合做语言理解类的任务。

Decoder-AR结构

Decoder-AR结构如上图所示。它和Encoder-AE结构相同,都是采用单个的标准Transformer,主要区别在于:语言模型预训练的时候,采用AR方法,就是从左到右逐个生成单词,第i个单词Wi只能看到它之前的第1到第(i-1)个单词 Wi-1 ,不能看到后面的单词。采用这种结构的典型模型就是GPT1、GPT2、GPT3系列了。GPT3在文本生成任务方面的表现,确实是出乎意料地好。当然,这不能仅仅归功于这个结构本身,更复杂的模型和更大量的数据可能是主因。可以看出,Decoder-AR结构是个单向语言模型的单Transformer结构。

从目前对比实验看(参考Encoder-AE小节的两张效果对比图),除了Encoder-Decoder结构外,貌似对于语言生成类的任务,这种结构是效果最好的结构之一。但是相应的,语言理解类的任务,采用这种结构,效果比Encoder-AE结构差距非常明显,这也好理解,因为只看到上文看不到下文,对于很多语言理解类任务而言,信息损失很大,所以效果不好也在情理之中。也就是说,这种结构比较适合做语言生成类的任务。

Encoder-Decoder结构

既然Encoder-AE比较适合做语言理解类的任务,Encoder-AR比较适合做语言生成类的任务。那么,我们能否结合两者的优势,使得预训练模型既能做好生成类NLP任务,又能做好理解类任务呢?这是个很自然的想法,而Encoder-Decoder结构就是如此将两者结合的。最早明确提出使用Encoder-Decoder结构做通用领域预训练的,应该是微软提出的MASS模型,不过和这里介绍的做法有差异。

Encoder-Decoder结构如上图所示。这种结构在Encoder侧,单独使用一个Transformer,采用了Encoder-AE的结构。也就是说,编码阶段采用双向语言模型,任意两个单词两两可见,以更充分地编码输入信息;而在Decoder侧,使用另外一个Transformer,采用了Decoder-AR结构,从左到右逐个生成单词。

在进行预训练的时候,Encoder和Decoder会同时对不同Mask部分进行预测:Encoder侧双向语言模型生成被随机Mask掉的部分单词;Decoder侧单向语言模型从左到右生成被Mask掉的一部分连续片断。两个任务联合训练,这样Encoder和Decoder两侧都可以得到比较充分地训练。

Prefix LM

Prefix LM结构是Google T5论文中给出的叫法,这种结构最早由UniLM模型提出,我们沿用Google T5的这种称谓。如果深入分析的话,Prefix LM其实是Encoder-Decoder模型的变体:标准的Encoder-Decoder模型,Encoder和Decoder各自使用一个独立的Transformer;而Prefix LM,相当于Encoder和Decoder通过分割的方式,分享了同一个Transformer结构,Encoder部分占用左部,Decoder部分占用右部,这种分割占用是通过在Transformer内部使用Attention Mask来实现的。与标准Encoder-Decoder类似,Prefix LM在Encoder部分采用AE模式,就是任意两个单词都相互可见,Decoder部分采用AR模式,即待生成的单词可以见到Encoder侧所有单词和Decoder侧已经生成的单词,但是不能看未来尚未产生的单词,就是说是从左到右生成。

Permuted Language Model(PLM)

PLM一样采用单个Transformer模型作为主干结构,但是从训练方法上来说,是个很另类也很有创意的做法,是种“形为AR,实为AE”的做法。在语言模型预训练过程中,它看上去遵循AR从左到右的输入过程,这符合一般生成任务的外在表现形式,但是在内部通过Attention Mask,实际做法其实是AE的做法,无非是把AE的做法隐藏在Transformer内部。

总结

上面内容简述了常见的五种预训练模型结构,如果总结一下的话:

首先,从模型效果来看,Encoder-Decoder结构无论在语言理解类还是语言生成类任务中,都是效果最好的。当然,效果好的原因很可能在于模型参数多,模型容量大,而不一定是自身结构带来的优势。它的优点一个是效果好,一个是能够将理解和生成任务统一在一个框架下;缺点是参数多计算多,所以模型比较重。采用这个结构的代表模型包括Google T5和BART。

其次,因为Encoder-Decoder模型比较重,所以,如果从相对轻量结构里进行选择的话,对于语言理解类任务,Encoder-AE结构相对而言效果较好,代表模型很多,典型的比如ALBert、RoBERTa;对于语言生成类任务,Decoder-AR结构和Prefix LM结构相对而言效果较好,都可考虑,Decoder-AR的代表模型是GPT系列,Prefix LM的代表模型是UniLM。语言理解类任务应该用AE任务,语言生成类任务应该用AR任务,这点也很明确了。

谈完了模型结构,下面我们来盘点下表现比较好的预训练模型,并分析下效果好背后的原因。

参考资料

  • https://zhuanlan.zhihu.com/p/141517705

0 人点赞