mBART:預訓練的機器翻譯模型

WenWei Kang
Taiwan AI Academy
Published in
7 min readMar 19, 2020

論文連接:https://arxiv.org/abs/2001.08210

1. Introduction

在這篇論文提出之前,大部分的機器翻譯模型都是以”一組語言搭配一個模型”的方式來訓練模型,例如:

中文翻譯成英文,訓練第一個模型 model1

英文翻譯成中文,訓練第二個模型 model2

以此類推…

當換了一組語言時,就需要重新訓練一個新的模型;當語言位置互換時,也需要重新訓練一個新的模型,所以當要翻譯全世界前10大常用的語言時,就必須訓練90個模型(10×9)才能夠讓這10種語言互相翻譯,當然這不是一個良好的辦法,所以本篇論文提出一個預訓練的機器翻譯模型,簡單來說就是希望pretrained模型可以同時適用多種語言,當遇到新的語言需要翻譯時,只需要在新的語言上進行finetune即可,就是本篇論文提出的mBART。

2. Related work

首先,我們回憶一下提出Transformer的論文 — Attention is all you need這篇論文是首篇使用非RNN的架構來進行翻譯任務,而且當時表現遠超於過去的SOTA,但這篇進行翻譯的方式也是一組語言訓練一個模型,現在我們複習一下Transformer。

Transformer

Transformer的結構如上圖,左半邊為Encoder,右半邊為Decoder,這邊我將Encoder輸入Inputs的句子稱為source,Decoder輸入Outputs的句子稱為target:

  • Encoder:如下圖,負責將source進行self-attention並獲得句子上每個token之間相關性,接著輸出每個token位置上的representation,最經典的Encoder架構就是BERT,透過Masked Language Model(MLM)來學習詞之間的關係,另外還有XLNet, RoBERTa, ALBERT, DistilBERT等等。
  • Decoder:如下圖,輸入與輸出之間差一個位置,主要是模擬在Inference時,不能夠讓模型看到未來的字,這種方式稱為AutoRegressive,常見的基於Decoder的模型通常是用來做文字生成的,例如說GPT, CTRL等等。

將這兩者合在一起就是稱為Transformer架構,其實Transformer最重要的核心是self-attention,self-attention不管在Encoder或是Decoder都有出現,目前大多數的Paper不管是基於Encoder還是Decoder都可以叫做Transformer,只要記住其核心以及想法即可。

而兩者合在一起後,就能當成一種Seq2seq模型,進行翻譯任務。

2. Pre-train and finetune strategy

Strategy

上圖是這篇論文進行Pre-training和Fine-tuning的方式,有趣的是Pre-training的地方:

  • Pre-training:這個階段只需要一種語言即可,Encoder的輸入為Masked token,Decoder的輸入為Sentences permutation,每個句子結尾都加上end token</s>,並希望這個Transformer能夠順利還原所有的Masked token以及原始句子順序 ,其中在句子前後還添加了Language ID作為模型翻譯時的Start token,Masked的做法類似BERT,Sentences permutation的做法類似ALBERT中的Sentence Order Prediction(SOP),原始BERT使用的Next Sentence Prediction(NSP)經RoBERTa的作者們實驗表現不好,所以之後基於BERT進行改進的模型都不使用NSP,另外,Language ID的做法類似CTRL,告知模型接下來預測的目標是什麼,總之就是融合了各Paper的優點過來。
  • Fine-tuning:這個階段就是用來finetune下游各種語言之間效果,作者分為Sentence以及Document的翻譯,這兩個任務差別只在於文本長短而已,當然在Document的翻譯會相對困難。

3. Data Overview

左表表示在Pre-train使用的資料集,共有25種語言,vocabluary約有250,000個tokens,其中為了處理imbalance的問題,作者使用的upsampling以及downsampling,其他的前處理方式基本上跟原始Transformer差不多。

另外,訓練時使用256張V100,訓練500k次,只能說真不愧是Facebook AI….。

4. Evaluation

接下來,作者比較不同語言對於英文的finetune效果,下表表示英文與18種語言的效果,Low/Medium Resource分別表示句子數量小於1M以及介於1~10M,mBART25表示作者在25種語言上進行pretrain的模型;Random表示不使用pretrain模型,直接在該語言任務上進行訓練,可以發現不管是哪種翻譯方向,mBART25表現都是最好的。

接下來,作者在High Resource(>10M)上進行finetune,共有6種語言,有趣的是,當資料量大於一定程度時(表上顯示25M以上),單獨使用自己的資料集反而表現比較好一點,相較於mBART25提升的幅度不多。

接下來我們介紹作者所使用的data augmentation技巧 — Back-translation,如下圖(a),這個方式被實驗證明有助於提升模型的表現,主要的想法是說在訓練時將一種語言輸入模型得到另一種語言的預測句子,接著把預測的句子原封不動丟回給模型,並產生原始語言的翻譯並計算Loss,這種做法只需要一種語言就能夠進行訓練,而且還能讓模型學習到自己的錯誤在哪裏,想到這個做法的人真的厲害。

另外下圖(b)的部分是本篇論文進行trasnfer的示意圖。

接下來,作者測試一個有趣的方向,首先作者finetune 12種語言翻譯到英文(X軸, X-En),接著直接無差別地在各個語言上互相翻譯(Y軸, Zh-Zh, Zh-Ja,…),有趣的是,除了自己翻譯自己表現最好之外(對角線),表現次好的語言都是同一個語系的(灰色大區塊),這表示同一個語系內的語言確實有共通的特徵能夠輔助翻譯,另外還有一個有趣的地方,Romanian(Ro)翻譯到Czech(Cs)得表現反而比Czech(Cs)翻譯回自己的表現還要好…(23.0>21.6)。

5. Conclusion

這篇論文針對翻譯任務提供了一個有趣的架構,融合了各個知名模型pre-train策略,還能透過翻譯效果夠間接觀察到語系之間的共通性。

--

--