在文本理解任務(wù)(Natural Language Understanding)上,預(yù)訓(xùn)練模型已經(jīng)取得了質(zhì)的飛躍,語言模型預(yù)訓(xùn)練+下游任務(wù)fine-tune基本上已經(jīng)成為標(biāo)配。
很多人曾經(jīng)嘗試將 BERT 等預(yù)訓(xùn)練語言模型應(yīng)用于文本生成任務(wù)(Natural Language Generation),然而結(jié)果并不理想。究其原因,是在于預(yù)訓(xùn)練階段和下游任務(wù)階段的差異。
BART這篇文章提出的是一種符合生成任務(wù)的預(yù)訓(xùn)練方法,BART的全稱是Bidirectional and Auto-Regressive Transformers,顧名思義,就是兼具上下文語境信息和自回歸特性的Transformer。那么它的細(xì)節(jié)和效果如何呢,就讓我們一起來看看吧
論文名稱:《BART: Denoising Sequence-to-Sequence Pre-training for NaturalLanguage Generation, Translation, and Comprehension》
論文鏈接:https://arxiv.org/pdf/1910.13461.pdf
1. 從GPT,BERT到BART
GPT:是一種 Auto-Regressive(自回歸)的語言模型。它也可以看作是Transformer model的Decoder部分,它的優(yōu)化目標(biāo)就是標(biāo)準(zhǔn)的語言模型目標(biāo):序列中所有token的聯(lián)合概率。GPT采用的是自然序列中的從左到右(或者從右到左)的因式分解。
BERT:是一種Auto-Encoding(自編碼)的語言模型。它也可以看作是Transformer model的Encoder部分,在輸入端隨機(jī)使用一種特殊的[MASK]token來替換序列中的token,這也可以看作是一種noise,所以BERT也叫Masked Language Model。
表1. GPT和BERT的對(duì)比
BART:吸收了 BERT 的 bidirectional encoder 和 GPT 的 left-to-right decoder 各自的特點(diǎn);是建立在標(biāo)準(zhǔn)的 seq2seq Transformer model 的基礎(chǔ)之上,這使得它比 BERT 更適合文本生成的場景;此外,相比GPT也多了雙向上下文語境信息。在生成任務(wù)上獲得進(jìn)步的同時(shí),它也可以在一些文本理解類任務(wù)上取得SOTA。
圖1. BERT、GPT和BART對(duì)比
1.1. 關(guān)于BART的討論
Loss Function 就是重構(gòu)損失, 也就是decoder的輸出和原文ground truth之間的交叉熵。
BART 的結(jié)構(gòu)在上圖中已經(jīng)很明確了:就是一個(gè)BERT+GPT的結(jié)構(gòu);但是不同之處在于(也是作者通篇在強(qiáng)調(diào)的),相對(duì)于BERT中單一的noise類型(只有簡單地用[MASK] token進(jìn)行替換這一種noise),BART在encoder端嘗試了多種noise。其原因和目的也很簡單:
BERT的這種簡單替換導(dǎo)致的是encoder端的輸入攜帶了有關(guān)序列結(jié)構(gòu)的一些信息(比如序列的長度等信息),而這些信息在文本生成任務(wù)中一般是不會(huì)提供給模型的。
BART采用更加多樣的noise,意圖是破壞掉這些有關(guān)序列結(jié)構(gòu)的信息,防止模型去“依賴”這樣的信息。
1.2. BART中的多種Noise
Token Masking: 就是BERT的方法----隨機(jī)將token替換成[MASK]。
Token Deletion: 隨機(jī)刪去token。
Text Infilling: 隨機(jī)將一段連續(xù)的token(稱作span)替換成一個(gè)[MASK],span的長度服從 的泊松分布。注意span長度為0就相當(dāng)于插入一個(gè)[MASK]。
Sentence Permutation: 將一個(gè)document的句子打亂。
Document Rotation: 從document序列中隨機(jī)選擇一個(gè)token,然后使得該token作為document的開頭。
表2. 不同noise及其作用
注意這里不同的noising變換方式還可以組合。
2. BART在下游任務(wù)上的應(yīng)用
2.1. Sequence Classification Task
將該序列同時(shí)輸入給encoder端和decoder端,然后取decoder最后一個(gè)token對(duì)應(yīng)的final hidden state作為label,輸入給一個(gè)線性多分類器。
圖2. BART用于序列分類任務(wù)
注意在序列的最后要加一個(gè)token,保證seq2seq模型輸出的label包含序列中每一個(gè)token的信息,這是因?yàn)閐ecoder的輸入是right-shifted的,不這樣做的話label將不包含最后一個(gè)token的信息。
2.2. Token Classification Task
這一類問題意思是,將序列的所有token都看作獨(dú)立的選項(xiàng),序列長度為M,那么選項(xiàng)的個(gè)數(shù)就是M,在序列的所有token中選擇k個(gè)。屬于這類的經(jīng)典問題有SQuAD,即answer endpoint classification。
將該序列同時(shí)輸入給encoder端和decoder端,使用decoder的final hidden states作為每個(gè)token的向量表征,該向量表征作為分類問題的輸入,輸入到分類系統(tǒng)中去。
2.3. Sequence Generation Task
由于BART本身就是在sequence-to-sequence的基礎(chǔ)上構(gòu)建并且預(yù)訓(xùn)練的,它天然比較適合做序列生成的任務(wù),比如概括性的問答,文本摘要,機(jī)器翻譯等。
2.4. Machine Translation
具體的做法是將BART的encoder端的embedding層替換成randomly initialized encoder,新的encoder也可以用不同的vocabulary。
通過新加的Encoder,我們可以將新的語言映射到BART能解碼到English(假設(shè)BART是在English的語料上進(jìn)行的預(yù)訓(xùn)練)的空間。具體的finetune過程分兩階段:
第一步只更新randomly initialized encoder + BART positional embedding + BART的encoder第一層的self-attention 輸入映射矩陣。
第二步更新全部參數(shù),但是只訓(xùn)練很少的幾輪。
圖3. BART用于機(jī)器翻譯
3. 實(shí)驗(yàn)1: 不同預(yù)訓(xùn)練目標(biāo)的比較
論文對(duì)不同的pretrain objective,在多個(gè)下游任務(wù)上進(jìn)行了比較嚴(yán)謹(jǐn)詳盡的實(shí)驗(yàn)對(duì)比。模型結(jié)構(gòu): Transformer-base。
不同的Pre-train Objective有:
GPT: (Auto-Regressive) Language model
XLNET: Permuted Language Model
BERT: Masked Language Model
UniLM: Multitask Masked Language Model
MASS: Masked Seq-to-Seq
對(duì)比實(shí)驗(yàn)涉及的下游任務(wù)有:
SQuAD: 將context和question連在一起輸入Encoder和Decoder,輸出的是context中的span。
MNLI: 將2個(gè)句子連在一起輸入Encoder和Decoder(中間加上[EOS]表示隔開),模型輸出的是兩個(gè)句子之間的關(guān)系,是典型的序列分類問題。
ELI5: 抽象的問答,將context和question連在一起輸入,模型輸出抽象摘要文本。
XSum: 新聞?wù)扇蝿?wù)
ConvAI2: 對(duì)話生成任務(wù)
CNN/DM:摘要生成任務(wù)
3.1 結(jié)論
不同預(yù)訓(xùn)練方法各有千秋,在不同下游任務(wù)上的效果差異很大:比如說Language Model在ELI5任務(wù)上最好,但是在SQuAD任務(wù)上是最差的。
BART預(yù)訓(xùn)練中的Token Masking作用很關(guān)鍵:Token Masking包括Token Masking,Token Deletion,Text Infilling。從表中可以看出,只做Document Rotation / Sentence Shuffling的預(yù)訓(xùn)練模型效果很差。另外,Deletion比Masking效果好。
Left-to-Right Pretraining會(huì)提升生成任務(wù)的效果:和Masked Language Model和Permuted Language Model相比,包含Left-to-Right預(yù)訓(xùn)練的模型在生成任務(wù)上表現(xiàn)更好。
Masked Language Model和Permuted Language Model相比于包含Left-to-Right Auto-regressive Pre-training的模型,在生成任務(wù)上明顯表現(xiàn)要差一些
雙向的encoder對(duì)于SQuAD任務(wù)很重要
ELI5任務(wù)上單純的Language Model (Left-to-Right AR Language Model)表現(xiàn)最好,一個(gè)可能的解釋是該任務(wù)的輸出和輸入關(guān)系不大,因此BART沒有優(yōu)勢。
預(yù)訓(xùn)練目標(biāo)不是唯一的重要因素,比如表中的Permuted Language Model的效果不如XLNet,作者提到,可能的原因有XLNet中有一些結(jié)構(gòu)上的改進(jìn)(比如relative-position embedding和segment-level recurrence)
4. 實(shí)驗(yàn)2: 大規(guī)模實(shí)驗(yàn)
實(shí)驗(yàn)發(fā)現(xiàn),在discriminative任務(wù)(NLU)上和RoBERTa/XLNet效果持平,在生成任務(wù)上顯著高于BERT, UniLM, XLNet, RoBERTa等模型
4.1. Discriminative Tasks
BART并沒有因?yàn)閱蜗虻膁ecoder而影響在文本理解類任務(wù)上的效果:
4.2. Generation Tasks
BART得益于單向的decoder,在三大類生成任務(wù)上效果拔群:
摘要生成:
摘要任務(wù)上的對(duì)比
對(duì)話生成:
對(duì)話生成任務(wù)上的對(duì)比
抽象問答
抽象問答任務(wù)上的對(duì)比
4.3. 翻譯
-
語言模型
+關(guān)注
關(guān)注
0文章
524瀏覽量
10277 -
機(jī)器翻譯
+關(guān)注
關(guān)注
0文章
139瀏覽量
14885 -
Transformer
+關(guān)注
關(guān)注
0文章
143瀏覽量
6006
原文標(biāo)題:4. 實(shí)驗(yàn)2: 大規(guī)模實(shí)驗(yàn)
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論