1.BART
BERT等預訓練語言模型主要應用于文本理解(NLU), 而在文本生成任務(NLG)中表現不佳 -- 這主要是由預訓練階段和下游任務階段的差異造成的。因此,BART提出了一種 符合生成任務的預訓練方法。
BART的全稱是Bidirectional and Auto-Regressive Transformers,顧名思義,就是兼具上下文語境信息(雙向)和自回歸(單向)特性的Transformer。BART其實并不是一個新的模型,因為它使用的結構還是傳統的Seq2seq Transformer;它是一種針對生成任務而設計的預訓練方法。
1.1 BART和GPT、BERT的區別與聯系
BART預訓練任務和GPT、BERT的對比如下圖:
BERT: 只有Transformer Encoder部分,隨機MASK掉一些token,然后利用上下文還原。
GPT:只有Transformer Decoder部分,采用自回歸的方法訓練,每個位置只能關注到其左邊的token。
BART:使用了完整的Transformer(Encoder+Decoder)。其encoder端的輸入是加了噪音的序列,decoder端的輸入是right-shifted的序列,decoder端的目標是原序列。模型設計的目的很明確,就是在利用encoder端的雙向建模能力的同時,保留自回歸的特性,以適用于生成任務。
1.2 BART使用的noise
相對于BERT中單一的noise類型 (只有簡單地用[MASK] token進行替換這一種noise),BART在encoder端嘗試了 多種更加靈活的noise (甚至可以改變序列的長度)然后decoder端試圖恢復這些noise。這樣做是因為:BERT的這種簡單替換導致的是encoder端的輸入攜帶了有關序列結構的一些信息(比如序列的長度等信息),而這些信息在文本生成任務中一般是不會提供給模型的。相比而言,BART采用更加多樣的noise, 意圖是破壞掉這些有關序列結構的信息 ,防止模型去依賴這樣的信息。
BART采用的noise
BART采用的一些noise包括:
Token Masking : BERT的方法--隨機將token替換成[MASK] -> 訓練模型推斷單個token的能力
Token Deletion : 隨機刪去token -> 訓練模型推斷單個token_及其位置_的能力
Text Infilling : 隨機將一段連續的token(稱作span)替換成[MASK],span的長度服從 lambda=3 的泊松分布。注意span長度為0就相當于插入一個[MASK]。這個方法帶來了更多的 靈活性 !->訓練模型推斷一個span對應多少token的能力
Sentence Permutation : 將一個document的句子打亂。->類似BERT中的 NSP 目標,訓練模型推斷不同句子之間關系的能力
Document Rotation : 從document序列中隨機選擇一個token,然后使得該token作為document的開頭。->訓練模型找到document開頭的能力
這些noise變換方式還可以組合,帶來了更多的靈活性。
1.3 BART在下游任務的應用
① Sequence Classification
將該序列同時輸入給encoder端和decoder端,然后取decoder最后一個token對應的final hidden state表征。注意我們需要在decoder端序列末尾增加一個[EOS],讓它能夠關注到整個句子。
② Token Classification
將該序列同時輸入給encoder端和decoder端,使用decoder的final hidden states作為每個token的表征
③ Sequence Generation
由于BART本身就是在sequence-to-sequence的基礎上構建并且預訓練的,它天然比較適合做序列生成的任務,比如生成式問答、文本摘要、機器對話等。encoder就是輸入的序列,decoder用自回歸的方法生成輸出序列
④ Machine Translation
BART能夠提升其他語言 翻譯到英語 的效果。具體的做法是將BART encoder端的embedding層替換成隨機初始化的encoder, 新的encoder也可以用不同的vocabulary 。通過這個新加的encoder,我們可以將新的語言映射到BART能解碼到English(假設BART是在English的語料上進行的預訓練)的空間。具體的finetune過程分兩階段:
第一步凍結大部分參數,只更新新加的encoder + BART positional embedding + BART的encoder第一層的self-attention 輸入映射矩陣。
第二步更新全部參數,但是只訓練很少的幾輪。
2. MASS
Masked Sequence to sequence pre-training for Language Generation
https://arxiv.org/pdf/1905.02450.pdf
和BART類似,MASS也是使用完整的Transformer結構,并且對encoder輸入進行一些破壞,讓decoder試圖還原之。MASS的提出早于BART,因此它提出的noise方法也沒有BART那么豐富。具體做法就是mask掉句子的一部分,再用decoder去預測之,如下圖所示:
和BART不同的是,這里的decoder只輸入應該被預測的token,這是為了可以讓decoder依賴于encoder的編碼,讓兩者更好地共同訓練。
BERT的MLM預訓練任務和GPT的自回歸生成任務,分別是MASS k = 1 和 k = m 的特例:
3. Pegasus
PEGASUS: Pre-training with Extracted Gap-sentences forAbstractive Summarization
https://arxiv.org/abs/1912.08777
PEGASUS是專門針對 生成式摘要 設計的預訓練模型?;舅枷刖褪菍⑤斎胛臋n的重要句子remove/mask,然后通過其他句子預測它們。其實驗效果刷新了12項summarization任務;在low-resource摘要方面展現驚人性能,僅用了1000個example就超過了6個數據集上的最新結果。
3.1 Gap Sentences Generation (GSG)
我們知道,預訓練目標與下游任務越接近,下游任務就會表現越好。那么,為了更好的完成文本摘要,可以mask掉文本中重要的一些句子,然后 拼接 這些gap-sentences形成偽摘要。相應位置的Gap-sentences用[MASK1]來替換。Gap sentences ratio(GSR)表示選中的gap sentences占總文檔的比例。選擇Gap Sentence的方法有:
Random: 隨機選m個句子
Lead: 選前m個句子
Principal: 選最重要的m個句子。如何衡量句子的重要性呢?文中又提出了四種方法:
① 獨立選擇(Ind.)/連續選擇(Seq.): 句子重要性可根據一個句子與其它句子集的ROUGE1-F1來計算,其公式為獨立選擇就是選擇得分最高的m個句子;連續選擇則是貪婪地最大化選中句子集Scup{x_{i}}與其余句子集的ROUGE1-F1值,具體算法如下:
② 計算ROUGE1-F1的方式也可分為兩種 -- Uniq 和 Orig。Uniq把n-gram當成集合處理(去重);Orig則允許重復n-gram出現。
因此,Ind/Seq 和 Uniq/Orig兩兩組合可得到四種方式。最后的實驗結果表明,選擇了文檔30%的句子作為Gap sentences,用Ind-Orig選重要句子效果最好。
3.2 預訓練任務
本文MASK的方式有兩種:
① MLM:選擇輸入文本的15%的tokens, 其中80%的被替換為[MASK2]、10%的被隨機的token替換、10%未發生變化。在encoder部分恢復這些token。
② GSG:以[MASK1]去mask選中的重要句子,在decoder部分恢復這些句子。
最終實驗表明,僅采用MLM效果最差,預訓練在100-200K steps時,GSG+MLM的效果在提升,但之后包含MLM效果在下降。因而最后PEGASUS-LARGE僅采用GSG,PEGASUS-BASE采用GSG+MLM。
4. UniLM
Unified Language Model Pre-training forNatural Language Understanding and Generation
https://arxiv.org/abs/1905.03197
UniLM是一種簡潔的預訓練方法,其模型的框架與BERT一致,是由一個多層Transformer Encoder網絡構成;但訓練方式不同,它是通過聯合訓練三種不同目標函數得到 -- 通過控制mask來控制預測單詞的 可見上下文詞語數量 ,在同一個模型中同時實現了bidirectional, unidirectional和seq2seq prediction 三種任務,因此可以同時用于語言生成和語言理解。
模型的三種預訓練目標如下圖所示:
seq2seq task在pretrain過程中,mask token可以出現在第一個文本序列中、也可以出現在第二個文本序列中;但是到了fine-tuning階段時,mask token僅出現在第二個文本序列中。
Bidirectional LM: 跟Bert模型一致。同時,與bert模型一樣,也進行NSP任務的預測。
Left-to-Right LM: 有從右到左和從左到右兩者,類似GPT。
Seq2seq LM :如果[Mask]出現在第一段文本中,僅可以使用第一段文本中所有的token進行預測;如果預測[Mask]出現在第二段文本中時,可以采用第一段文本中所有的token,和第二段文本中左側所有token預測。這種方法雖然不是seq2seq,但是通過mask可以做到seq2seq同樣的效果。
綜上,就是對于不同的語言模型,我們可以僅改變self-attention mask,就可以完成multi-task聯合訓練。
在預訓練時的一個batch中,使用1/3的數據進行bidirectional task,1/3的數據進行seq2seq task,1/6的數據進行left-to-right unidirectional task,1/6的數據進行right-to-left unidirectional task。
模型結構與BERT-large模型一致(layer = 24, hidden_size = 1024, head = 16),約有340M參數,并由訓練好的BERT-large模型進行初始化。MASK的概率為15%,在被掩掉的token中,有80%使用[MASK]替換,10%使用字典中隨機詞進行替換,10%保持越來token不變(這與BERT一致)。此外,在80%的情況下,每次隨機掩掉一個token,在剩余的20%情況下,掩掉一個二元token組或三元token組。
審核編輯:劉清
-
GPT
+關注
關注
0文章
354瀏覽量
15345
原文標題:介紹幾個語言生成的預訓練模型
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論