距離上篇文章又一個月了。。。時光飛逝。。。再次立下一週一篇的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仍是給我開闊了新的思路(畢竟我沒什麼思路),其實仔細想這個想法也是不難想出來的,關鍵仍是要動手去驗證,而且花心思去提高效果,細節見英雄。