MASS: 一統GPT和BERT的Seq to Seq框架

MASS的功能

MASS的全名叫Masked Sequence to Sequence Pre-training for Language Generation,這個其實已經隱含了和GPT及BERT(前文有介紹)的關係: "Masked"對應了BERT原創的"Masked LM"算法,"Language Generation"指的是GPT用到的Language Modeling。
而"Sequence to Sequence"算是點明瞭主題:這是一個Seq2Seq的框架。

做Seq2Seq這麼一個框架可以說是針對了GPT和BERT的痛點:在序列到序列(Seq2Seq)的語言生成任務中,二者都需要分別訓練編碼器和解碼器,這導致在Seq2Seq任務中效果最好的的編碼器-注意力-解碼器結構沒有被聯合訓練。因此GPT和BERT在這類任務中只能達到次優效果。

MASS非常巧妙的解決了這個問題,它利用Seq2Seq的結構同時把GPT和BERT兩種不同的pretrain方法容納在一個計算框架之下。這樣做的好處有兩方面:

  1. GPT和BERT可以提供強大的pretrain的模型,這有利於下游的transfer learning的任務。
  2. Seq2Seq保證了高質量的完成語言生成任務。

粗略的用一句話表示:MASS是利用GPT+BERT預訓練出的Seq2Seq模型。

GPT和BERT

最好還是先介紹一下2018的雙子星GPT和BERT。放在一起比較一下吧。

比較

BERT原論文反覆引用了GPT,應該說BERT從GPT中吸取了很多營養。它們最大的共同點有兩點:其一是都用transformer。因爲二者的成功,相信transformer在NLP領域會取代(bi)LSTM成爲最受歡迎的模型結構。LSTM因其在序列結構上的優點(包含long distance dependency的提取能力,以及對有序性的自動包含等等),transformer通過(multi-head)self-attention+positional embedding全部繼承了下來。而且因爲其摒棄了LSTM的序列結構,並沒有並行能力上的限制。

去年的其他一些同一方向上的好工作比如ELMo(前文介紹)和ULMFiT(介紹)利用了(bi)LSTM,由於GPT和BERT的背書,今後的工作中恐怕transformer會成爲當仁不讓的主流模型。

第二個共同點是大數據加超大模型。具體的數據不再贅述了,原論文裏都有。我覺得能夠使大數據加大模型訓練成爲可能,得益於兩點,一是計算能力的不斷提升,另一個在於足夠複雜的模型(特別是transformer)能夠消化巨大的數據。

再看一下不同的地方。最大的不同點應該是pretrain的方法。GPT用的是LM, 而BERT用的是Masked LM + Next Sentence。這個不同直接導致在做下游的任務時,GPT需要針對句子對類型的任務(句子相似性,QA等等)做多次編碼,因爲它的預訓練方式導致它不能理解多個句子並存作爲輸入的情況。對照看一下GPT論文中的配圖:
在這裏插入圖片描述
BERT因爲它的Next Sentence的預訓練方法,它能夠理解作爲輸入的句子對。原論文關於輸入的圖示:
在這裏插入圖片描述

它的jointly-trainining得到的Segment Embeddings以及token [SEP]都能夠幫助模型理解和區別不同的句子。所以在針對下游任務時,BERT可以自然的處理句子對類型。如下圖:
在這裏插入圖片描述
簡單說,對BERT來講,一次編碼就可以解決句子對問題。

痛點

有很多文本生成類的任務比如machine translation,text summarization,conversational response generation都依賴一個Sequence to Sequence的框架。對於GPT和BERT這樣的結構來講,充其量只能做一個編碼器或者解碼器,不能支撐一個Seq2Seq的結構。除非做兩次預訓練,一次做編碼器,另一次做解碼器。但這樣做編碼-注意力-解碼的聯合訓練機制就不存在了。MASS就是針對這個問題而提出的方案。

MASS模型

模型解釋

MASS希望能夠兼顧兩點:

  1. 仍然採取文本生成類任務表現最優秀的編碼-注意力-解碼模型。
  2. 爲了在少樣本甚至零樣本的任務中取得好成績,也爲了表現出很好的遷移學習的能力,同時容納GPT和 BERT的預訓練方式。

一圖頂萬言:
在這裏插入圖片描述

這是MASS的模型框架。Encoder和Decoder都利用transformer作爲基礎模型。Encoder端有連續的幾個"_"代表被masked輸入token [M]。直覺上看,這有點像BERT裏的Masked LM, 因爲整體來講,在Decoder那一段我們希望利用兩邊的信息預測被Masked的部分(即圖中的利用x1,x2和x7,x8來預測x3,x4,x5,x6)。唯一的區別在於BERT僅僅是利用兩端的信息預測一個Masked token,這裏是在預測一連串的tokens。

注意,在這個框架中“兩邊的信息”來自於Encoder,而不是Decoder。因爲我們看到在Decoder那一端x1,x2,x7,x8都是Masked。這樣做的好處體現在編碼和解碼兩個方面:

  1. MASS迫使Encoder學會對Unmasked部分進行很好的理解和編碼,以幫助Decoder進行正確的預測。
  2. 爲進行正確的預測,Decoder會更加依賴於來自於Encoder的輸入,而這導致了更好的Encoder-Attention-Decoder聯合訓練。

在k=1和k=m(句子輸入長度)時,我們可以觀察到BERT的Unmaksed LM和GPT的LM在MASS上分別“復活”:

在這裏插入圖片描述

k=1的時候,如前所述,本質上正是BERT的Maksed LM。
k=m的時候,Encoder那一段沒有任何實質性的信息,而Decoder那一端迴歸到標準的LM模型!因爲transformer+LM恰恰是GPT的預訓練方式。

可以想象,k在1和m之間的時候稱爲GPT和BERT的過渡形式。如下表:
在這裏插入圖片描述

思想根源

這個框架非常漂亮的整合了GPT和BERT最核心的預訓練方法,其實驗(後面會略述)結果也達到頂尖水準。我個人覺得我今年看到最好的文章。如此優美的做法,如果結果不好反而會讓人覺得說不過去。:)

不過,如果我們切換一下角度,單從文本生成問題比如machine translation的研究看,可以觀察到一些相似的思想的閃光。某種程度上,如果我們把這裏Encoder的輸入看成是一個corrupted版本的對輸入的抽樣的話,MASS其實可以看成是一個Denosing Auto-Encoder。

追述一下Lample在其PBSMT(曾經的Unsupervised NMT的SOTA,現在被MASS超過)實踐過的一個做法。

爲了在無監督的情況下做machine translation, 文章希望用encoder-decoder的框架做LM(注意這個需要是和MASS一樣的)。具體方法就是利用denoising auto-encoding:

Llm=ExS[logPss(xC(x))]+EyT[logPtt(yC(y))]L^{lm} = E_{x\sim S}[-\log P_{s\rightarrow s}(x|C(x))] + E_{y\sim T}[-\log P_{t\rightarrow t}(y|C(y))]

CC是一個噪音模型,一般可以通過drop某些token或者shuffle句子來達到目的。 PssP_{s\rightarrow s}PttP_{t\rightarrow t}分別指在源語言和目標語言領域的"翻譯模型"。解釋一下:這個翻譯模型也包含兩部分即encoder和decoder,特殊之處在於其輸入和輸出都是同樣一種語言(即漢語譯漢語,英語譯英語),爲了避免在attention module的強力加持下,產生逐字照搬的記憶式翻譯的情況,這裏故意使用了噪音模型CC

如果在這裏我們只考慮一種語言,而且規定噪音模型CC只能隨機的drop掉句子中連續的tokens,那麼這個方法會變得很接近MASS的做法。不同地方在於在DAE的decoder那一端不存在任何masked tokens。有趣的是,論文也有意在實驗中實現了DAE(denoising auto-encoder)的做法,並進行了比較。Anyways,Seq2Seq的框架下MASS採取了這樣相似的做法,不算很奇怪。

實驗

限於篇幅這裏介紹一下MASS在Unsupervised NMT裏的表現。

在預訓練的數據方面,MASS用了WMT News Crawl datasets的monolingual data, 具體有英法德三國語言各50M的句子,也包含了2.9M的低資源語言羅馬尼亞語。經過試驗表明,k的長度大概爲50%的句子長度時效果最好。

在Unsupervised NMT任務中, 模型利用了同樣的monolingual data來做fine tuning。具體的做法還是推薦閱讀經典論文PBSMT,以後有機會也可以介紹一下這篇論文。

下表是一些實驗結果:
在這裏插入圖片描述另外一個有趣的實驗是使用不同的encoder和decoder,比如利用BERT裏的Unmaske LM來預訓練encoder,用LM來預訓練decoder。再比如直接用前文提到的DAE即denoising auto-encoder來預訓練encoder+decoder。下面是實驗結果:
在這裏插入圖片描述不出意外MASS的效果要好。作者的解釋令人信服:DAE的decoder可以把整個句子都作爲輸入來預測下一個token,不存在從encder那裏提取有用的表徵的壓力。這導致模型的信息提取能力相對MASS較弱。

結語

MASS很好的把GPT和BERT的訓練方法內嵌在了Seq2Seq模型裏。實驗效果上也超過了過去的SOTA。這也是一次"跨領域"(其實這個領域跨度不算大,但是方法的融合度很高。) 不同方法的成功結合。

關注公衆號《沒啥深度》有關自然語言處理的深度學習應用,偶爾也有關強化學習。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章