***************************原文 https://zhuanlan.zhihu.com/p/420090646 ********************************
自回歸 auturegression 語言模型,例如GPT,采用自左向右解碼的方式,適用於自然語言生成NLG任務
自編碼 autoencoder 語言模型,如BERT,每個時刻的輸出都可以充分利用雙向信息,適用於自然語言理解任務。但是在NLG表現不佳。
如上圖右三,UniLM將通過修改attention mask,將Encoder和Decoder結合,這種方式稱作Prefix LM。結構上還是只是使用了encoder
Bart和T5的結構又回到了最原始的Transformers結構。
圖中方塊代表序列中的元素,線代表attention,深色的線代表全可見attention,淺色的線代表因果掩碼 causal masking,即當前時刻只能看見之前的元素。不能看見未來的元素。
Attention的掩碼矩陣如下圖所示:
左圖:完全可見矩陣,模型輸出可以看見任意時刻的輸入,Transformer的Encoder Bert用的就是這種掩碼
中圖:因果掩碼矩陣,模型輸出只能看見當前時刻之前的輸入,黑色部分,這樣可以防止未來的輸入干擾當前輸入的結果。TRM的Decoder GPT等單向語言模型使用的就是這種掩碼
右圖:帶有前綴的因果掩碼矩陣,前綴部分和完全可見矩陣一樣,輸出能夠看見前綴任意時刻的輸入,超過前綴范圍使用的因果掩碼。UniLM采用這種掩碼。
Bart和T5模型
Bart是FaceBook提出
T5是Google提出。都是在19年10月份提出。
動機
- BART想要統一BERT和GPT,從一開始就確定了使用Transformers的原始結構。BART探究了各種目標函數的有效性,即對輸入加各種類型的噪聲,在輸出時將其還原。BART在NLU任務上保持了和RoBerta差不多的前提下,在多個NLG任務中取得了SOTA成績。論文算上參考文獻總共長度10頁。
- T5其實是一篇關於語言模型的Survey,其思路是從頭開始,找出語言模型的最優結構,在嘗試了多種結構之后發現Seq2Seq結構是最好的,然后從模型的目標函數,數據集,訓練時間,模型大小,多任務學習,等角度做了大量的實驗,確定方向之后擴大模型規模,最終在多個NLU和NLG任務中達到了SOTA水平。此外,這個工作還產出了一個干凈的大規模英文預料:C4。論文算上參考文獻長達67頁。
預訓練任務
BART的預訓練任務是將帶有噪音的輸入還原,。最終采用的是 Text Infilling+Sentence permutation
其中Text Infilling起到了最主要的作用。其實就是Span級別的mask,只不過這里允許span的長度為0,span的長度服從泊松分布,總共mask 30%的字符。
T5使用兩種任務,分為無監督和有監督。無監督也是span級別的mask。只不過輸出不需要還原整句。只需要輸出mask掉的tokens就可以。總共mask 15%字符。
微調
BART的微調方式如下圖:
1 左邊是分類任務的微調方式,輸入將會同時送入encoder和decoder,最終使用最后一個輸出為文本分類表示
2 右邊是翻譯任務的微調方式,由於翻譯任務的詞表可能和模型詞表不同,所以這里使用給一個新的小型encoder 替換bart中的embedding
T5的微調方式如下圖
無論是分類任務還是生成任務,全都視為生成式任務
一些其他的細節
位置編碼:
Transformer使用position encoding。使用的是sinusoidal函數
BERT和Bart使用的是可學習的絕對位置嵌入
T5改成了相對位置嵌入 relative position embeddings
激活函數:
Transformer最開始使用的是Relu,Bert和GPT使用的是Gelu,Bart使用的是 GElu,不過T5還是使用當初的ReLU。