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