站在BERT肩膀上的NLP新秀们:XLMs、MASS和UNILM
作者丨高開遠
學校丨上海交通大學碩士生
研究方向丨自然語言處理
寫在前面
在前一篇站在 BERT 肩膀上的 NLP 新秀們(PART I)[1]?介紹了兩個都叫 ERNIE 的模型,思路也挺相似的,都是給 BERT 模型增加外部知識信息,使其能更好地“感知“真實世界。
今天我們來看看另外幾個有意思的 BERT 新秀:?
XLMs from Facebook?
MASS from Microsoft?
UNILM from Microsoft
XLMs
對于 BERT 的改進可以大體分為兩個方向:第一個是縱向,即去研究 BERT 模型結構或者算法優化等方面的問題,致力于提出一種比 BERT 效果更好更輕量級的模型;第二個方向是橫向,即在 BERT?的基礎上稍作修改去探索那些 Vanilla BERT 還沒有觸及的領域。直觀上來看第二個方向明顯會比第一個方向簡單,關鍵是出效果更快。本文就屬于第二類。
我們知道,BERT?預訓練的語料全是單語言的,所以可想而知最終的模型所適用的范圍基本也是屬于單語范圍的 NLP 任務,涉及到跨語言的任務可能表現就不那么好。
基于此,作者們提出了一種有效的跨語言預訓練模型,Cross-lingual Language Model Pretraining (XLMs)。XLMs 可以認為是跨語言版的 BERT,使用了兩種預訓練方式:
基于單語種語料的無監督學習?
基于跨語言的平行語料的有監督學習?
其在幾個多語任務上比如 XNLI 和機器翻譯都拉高了 SOTA。那么我們就來看看具體的模型。
Shared sub-word vocabulary?
目前的詞向量基本都是在單語言語料集中訓練得到的,所以其 embedding 不能涵蓋跨語言的語義信息。為了更好地將多語言的信息融合在一個共享的詞表中,作者在文本預處理上使用了字節對編碼算法(Byte Pair Encoding, BPE),大致思想就是利用單個未使用的符號迭代地替換給定數據集中最頻繁的符號對(原始字節)。這樣處理后的詞表就對語言的種類不敏感了,更多關注的是語言的組織結構。?
關于 BEP 的具體栗子可以參考:Byte Pair Encoding example [2].?
Causal Language Modeling (CLM)?
這里的 CLM 就是一個傳統的語言模型訓練過程,使用的是目前效果最好的 Transformer 模型。對于使用 LSTM 的語言模型,通過向 LSTM 提供上一個迭代的最后隱狀態來執行時間反向傳播(backpropagation through time, BPTT)。
而對于 Transformer,可以將之前的隱狀態傳遞給當前的 batch,為 batch 中的第一個單詞提供上下文。但是,這種技術不能擴展到跨語言設置,因此在這里作者們只保留每個 batch 中的第一個單詞,而不考慮上下文。?
Masked Language Modeling (MLM)?
這一個預訓練目標同 BERT 的 MLM 思想相同,唯一不同的就是在于模型輸入。BERT 的輸入是句子對,而 XLM 使用的是隨機句子組成的連續文本流。?
Translation Language Modeling (TLM)?
這一部分應該是對跨語言任務取得提升的最大原因。不同于以上兩個預訓練模型(單語言語料訓練 + 無監督訓練),翻譯語言模型使用的是有監督的跨語言并行數據。如下圖所示輸入為兩種并行語言的拼接,同時還將 BERT 的原始 embedding 種類改進為代表語言 ID 的 Laguage embedding 和使用絕對位置的 Position embedding。
TLM 訓練時將隨機掩蓋源語言和目標語言的 token,除了可以使用一種語言的上下文來預測該 Token 之外(同 BERT),XLM 還可以使用另一種語言的上下文以及 Token 對應的翻譯來預測。這樣不僅可以提升語言模型的效果還可以學習到 source 和 target 的對齊表示。
MASS
我們知道,BERT 只使用了 Transformer 的 encoder 部分,其下游任務也主要是適用于自然語言理解(NLU),對于類似文本摘要、機器翻譯、對話應答生成等自然語言生成(NLG)任務顯然是不太合適的。?
BERT 的大火,也帶動了 NLP 屆的 pre-training 大火,受到 BERT?的啟發,作者們提出聯合訓練 encoder 和 decoder 的模型:Masked Sequence to Sequence Pre-training for Language Generation (MASS),框架如下:
訓練步驟主要分為兩步:?
1. Encoder:輸入為被隨機 mask 掉連續部分 token 的句子,使用 Transformer 對其進行編碼;這樣處理的目的是可以使得 encoder 可以更好地捕獲沒有被 mask 掉詞語信息用于后續 decoder 的預測;?
2. Decoder:輸入為與 encoder 同樣的句子,但是 mask 掉的正好和 encoder 相反,和翻譯一樣,使用 attention 機制去訓練,但只預測 encoder 端被 mask 掉的詞。該操作可以迫使 decoder 預測的時候更依賴于 source 端的輸入而不是前面預測出的 token,防止誤差傳遞。
MASS 預訓練輸入為 m 個 token 的句子,將位置 u 到 v 之間的 mask 掉之后的輸入為,其中表示被 mask 掉的片段。MASS 預訓練目的預測輸入中被 mask 掉的。
此外,作者們還提出了一個對于 mask 長度的超參數 k,并指出當 k=1 時,即 encoder 屏蔽一個 token,decoder 沒有輸入,該形式與 BERT 的 MLM 訓練模型一致(但是 BERT 不是隨機離散 mask 的嘛,好像還不太一樣)。
當 k=m 時,即 encoder 完全 mask 掉,decoder 輸入為完整句子,該形式與 OpenAI 的 GPT 模型一致。
由于 K 值為超參數,屬于人為設定,作者們又在文章末尾對其進行了分析,通過多個試驗表明,當 k 為句子長度的 50%~70% 時模型效果最好。
UNILM
這個就更炸了,也是微軟的最近才放出的工作,直接預訓練了一個微調后可以同時用于自然語言理解和自然語言生成下游任務的模型:UNIfied pre-trained Language Model (UNILM)。?
看完論文之后會發現非常自然,使用的核心框架還是 Transformer,不同的是預訓練的目標函數結合了以下三個:?
單向語言模型(同 ELMO/GPT)?
雙向語言模型(同 BERT)?
seq2seq 語言模型(同上一篇)
注意哦,這里的 Transformer 是同一個,即三個 LM 目標參數共享,有點 multi-task learning 的感覺,可以學習到更 genneral 的文本表示。
接下來看本文模型:
Input Representation?
模型的輸入是一個序列,對于單向 LM 是一個文本片段,對于雙向 LM 和 seq2seq LM 是兩段文本。embedding 模式使用的是跟 BERT 一樣的三類:?
token embedding:使用 subword unit?
position embedding:使用絕對位置?
segment embedding:區分第一段和第二段?
另外,[SOS] 為輸入序列起始標志;[EOS] 為在 NLU 任務中為兩個 segment 的分界標志,在 NLG 任務中為解碼結束標志。
Backbone Network: Transformer?
文中使用的是多層堆疊的 Transformer(24 層,與相同),輸入表示為,第 K 層的輸出可以表示為:
其中,表示輸入在經過 K 層 transformer 之后的上下文表示。?
重點來了。上面說將三個語言模型統一到了一起,那么是如何實現的呢?作者們這里使用的是 Self-attention Masks,即對不同的語言模型,設置不同的 mask 策略進行學習。
下面具體介紹各個模型的 Mask 策略。?
Unidirectional LM?
對于單向 LM(left-to-right or right-to-left),我們在做 attention 的時候對每一個詞只能 attend 其一個方向的上下文。如對 left-to-right LM, 我們就只能 attend 該詞左邊的信息,需要將右側的詞給 mask 掉;對于 right-to-left LM 也是同理。這樣我們得到的 Mask 矩陣就是一個上三角或者下三角。?
Bidirectional LM?
和 BERT 一樣,雙向 LM 在訓練時可以看到左邊和右邊的信息,所以這里的 Mask 矩陣全是 0,表示全局信息可以 attend 到該 token 上。
Sequence-to-Sequence LM?
對于 seq2seq LM,情況稍微復雜一點點,有點像上述兩個 Mask 矩陣的結合版本。該模型輸入為兩個 segment S1 和 S2,表示為“[SOS] t1 t2 [EOS] t3 t4 t5 [EOS]”,encoder 是雙向的即有四個 token 可以 attend 到 t1 和 t2 上;decoder 是單向的,僅僅能 attend 到一個方向的 token 以及 encoder 的 token,以 t4 為例,它只能有 6 個 token 可以 attend。?
在訓練時會隨機 mask 掉兩個 segment 中的 token,然后讓模型去預測被 mask 掉的詞。?
Next Sentence Prediction?
對于雙向 LM,作者也設置了 NSP 預訓練任務,除了特殊 TOKEN 不一樣,其他跟 BERT 是一樣的。
實驗部分我也不多做分析了。
小結
對于以上三篇論文做個小的個人評價:大而美。
模型和數據都很大,但是最終出來的效果是美的,爭取往小而美的方向發展。
對于 XLM 和 MASS 都是涉及跨語言模型,補充了 BERT 在 NLG 任務上的不足。模型層面而言 XLM 沒有使用傳統的 encoder-decoder 框架,屬于比較討巧的方式。
UNILM 可以同時處理 NLU 和 NLG 任務,在 GLUE 上首次不加外部數據打贏了 BERT。后續的改進可以考慮加入跨語言任務的預訓練,比如 XLM 和 MASS 做的工作。
最后,如若文章理解或措辭有誤,還請大家務必海涵指正。
參考文獻
[1]?https://blog.csdn.net/Kaiyuan_sjtu/article/details/90757442
[2]?https://gist.github.com/ranihorev/6ba9a88c9e7401b603cd483dd767e783
[3]?https://www.lyrn.ai/2019/02/11/xlm-cross-lingual-language-model/
[4]?https://zhuanlan.zhihu.com/p/56152762
[5]?https://zhuanlan.zhihu.com/p/56314795
[6]?https://github.com/facebookresearch/XLM
[7]?https://zhuanlan.zhihu.com/p/65346812
[8] https://www.zhihu.com/question/324019899
[9] https://mp.weixin.qq.com/s/U_pYc5roODcs_VENDoTbiQ
點擊以下標題查看往期內容推薦:?
ACL 2019 | 基于知識增強的語言表示模型
圖神經網絡綜述:模型與應用
ICLR 2019最佳論文 | 用有序神經元表達層次結構
深度長文:NLP的巨人肩膀(上)
NLP 的巨人肩膀(下):從 CoVe 到 BERT
復旦大學邱錫鵬:詞法、句法分析研究進展綜述
基于小樣本學習的意圖識別冷啟動
從CNN視角看在自然語言處理上的應用
自然語言處理中的語言模型預訓練方法
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢??答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
?
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 訪問作者博客
總結
以上是生活随笔為你收集整理的站在BERT肩膀上的NLP新秀们:XLMs、MASS和UNILM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文读懂文本处理中的对抗训练
- 下一篇: 全网最具有挑战的NLP训练营是什么样的?