PTM|乘风破浪的 PTM,深度解读预训练模型的进展( 三 )


 PTM|乘风破浪的 PTM,深度解读预训练模型的进展
文章图片
Encoder-Decoder 结构如上图所示。 这种结构在 Encoder 侧,单独使用一个 Transformer,采用了 Encoder-AE 的结构。也就是说,编码阶段采用双向语言模型,任意两个单词两两可见,以更充分地编码输入信息;而在 Decoder 侧,使用另外一个 Transformer,采用了 Decoder-AR 结构,从左到右逐个生成单词。当然,Decoder 侧和标准的 Decoder-AR 不同的地方还是有的:Decoder 侧生成的单词 [公式] ,除了像 Decoder-AR 结构一样能看到在它之前生成的单词序列 [公式] 外,还能看到 Encoder 侧的所有输入单词 。而这一般是通过 Decoder 侧对 Encoder 侧单词,进行 Attention 操作方式来实现的,这种 Attention 一般放在 Encoder 顶层 Transformer Block 的输出上。
在进行预训练的时候,Encoder 和 Decoder 会同时对不同 Mask 部分进行预测:Encoder 侧双向语言模型生成被随机 Mask 掉的部分单词;Decoder 侧单向语言模型从左到右生成被 Mask 掉的一部分连续片断。两个任务联合训练,这样 Encoder 和 Decoder 两侧都可以得到比较充分地训练。
 PTM|乘风破浪的 PTM,深度解读预训练模型的进展
文章图片
模型结构比较(From UniLM v2)从目前对比实验看,无论是语言理解类的任务(参考 Encoder-AE 部分 Google T5 论文中展示的效果对比图),还是语言生成类的任务(参考上面来自于 UniLM v2 的效果对比),貌似 Encoder-Decoder 结构相对其它几种结构来说,效果都是最好的之一。而且,它有另外一个优点,就是用这个结构,可以同时做生成类和理解类的 NLP 任务,基本做到了不同任务在模型结构上的统一,这点还是很好的,一个结构可以到处使用,比较方便。但是,它也有个问题,因为两侧各用了一个 Transformer,所以相对其它结构参数量翻倍,计算量也增加了,就是说比其它模型笨重。而且,Encoder-Decoder 结构比其它结构效果好,很可能主要原因来自于参数量增加导致的模型容量增大,当然这是个人猜测。目前,采用这个结构的效果很好的模型包括 Google T5 以及 BART 等模型。
Prefix LM
 PTM|乘风破浪的 PTM,深度解读预训练模型的进展
文章图片
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 侧已经生成的单词,但是不能看未来尚未产生的单词,就是说是从左到右生成。目前的一些对比实验证明,在其它条件相同的情况下,关于语言理解类的任务(参考 Encoder-AE 部分 Google T5 论文中的相关实验),Prefix LM 结构的效果要弱于标准 Encoder-Decoder 结构。这里是值得深入思考下的,因为看上去 Prefix LM 和标准的 Encoder-Decoder 结构是等价的。那么,为什么它的效果比不过 Encoder-Decoder 结构呢?我想,一方面的原因估计是两者的参数规模差异导致的;另外一方面,可能与它这种模式的 Decoder 侧对 Encoder 侧的 Attention 机制有关。在 Decoder 侧,Transformer 的每层 Block 对 Encoder 做 Attention 的时候,标准的 Encoder-Decoder 模式,Attention 是建立在 Encoder 侧的最后输出上,这样可以获得更全面完整的全局整合信息;而 Prefix LM 这种结构,Decoder 侧的每层 Transformer 对 Encoder 侧的 Attention,是建立在 Encoder 的对应层上的,因为这种模式的 Encoder 和 Decoder 分割了同一个 Transformer 结构,Attention 只能在对应层内的单词之间进行,很难低层跨高层。这可能是影响这种结构效果的原因之一。当然这只是个人猜测,无证据证明,还请谨慎参考。
关于语言生成类的任务,Prefix LM 效果虽然要弱于 Encoder-Decoder 结构(参考 Encoder-Decoder 小节 UniLM v2 论文效果对比图),但是总体而言,两者相差不大,相对其它模型,Prefix LM 结构在生成类任务表现也比较突出。
Prefix LM 因为是 Encoder-Decoder 的变体,所以可以看出,它的优势也在于可以同时进行语言理解和语言生成类任务,而且相对 Encoder-Decoder 来说,因为只用了一个 Transformer,所以模型比较轻,这是 Prefix LM 的优势。缺点则是在效果方面,貌似要弱于 Encoder-Decoder 模型的效果,语言理解类任务相对有明显差距,生成类任务的效果相差不大。
Permuted Language Model(PLM)
PLM 最早是在 XLNet 的论文中提出的,目前有些后续模型也在 PLM 上进行改进,所以我们把 PLM 也放在这里一起说一下。对于不熟悉 XLNet 的同学,可以参考去年 XLNet 刚出来时候我写的解读文章,补充下基础知识:


推荐阅读