距离上篇文章又一个月了。。。时光飞逝。。。再次立下一周一篇的flag优化
最近读了一篇专栏文章BERT时代与后时代的NLP,收获颇丰。算是做者的同行,最近也在作相似的东西,可是做者都给总结了起来,让我又从新串了一遍那些思想,查漏补缺。另外最近没怎么追踪前沿,看到做者又列举了两篇我一直关注的transformer系文章,赶忙打出来看了,顺便写篇文章记录下收获。编码
MASS的主要贡献是提出一种新的Pre-train seq2seq任务的方法。spa
BERT的成功把nlp带向了pretrain+finetune时代,而对于文本生成任务(机器翻译、文本摘要、生成问答),因为语料对较少,更须要使用pretrain的模型来减小标注代价。翻译
看到这里的读者能够先本身想一下如何pretrain seq2seq的任务。你们首先能想到的估计就是BERT+LM,由于BERT的编码能力比其余BiLM的能力强一些。但这样pretrain的问题就是,若是咱们的语料是unsupervised,就要分开预训练encoder和decoder,可能会致使二者的分布不一致。code
因而MASS的做者就借鉴了Masked LM的思想,只用一句话就让encoder和decoder同时训练。具体作法是mask掉句子的一部分x,再用decoder去预测x,以下图:orm
注意,在经典的seq2seq结构中,decoder的输入都是完整的,而这里只输入应该被预测的token,做者的解释是这样可让decoder依赖于encoder的编码,让二者更好地共同训练。cdn
以后,做者更进一步,竟然把BERT和GPT统一了起来:blog
图a): 可能会有同窗以为decoder不是双向的,无法把encoder和decoder当作BERT,但其实只把encoder当作BERT就能够,decoder看做classifier层。token
图b): 单向LM(GPT),从左到右进行预测,encoder没有给decoder任何信息。get
整体来说,MASS仍是给我开阔了新的思路(毕竟我没什么思路),其实仔细想这个想法也是不难想出来的,关键仍是要动手去验证,而且花心思去提高效果,细节见英雄。