介紹
爲了更好地利用目標語言單語語料, Improving Neural Machine Translation Models with Monolingual Data 提出了兩種方式
- 假如有目標語言句子y, 將源語言對應的句子設置爲空, 得到句對 (dummy, y), 加入到平行語料中進行訓練. 這樣在有平行句對和(dummy, y)句對的情況下, 訓練翻譯系統可以想想成翻譯和語言模型多任務訓練, 因爲輸入dummy, 使得y的概率最大, 實際上等價於訓練一個語言模型.
- 反向翻譯: 有了目標語言句子y, 用訓練好的目標語言到源語言的翻譯模型得到僞句對(x’, y), 加入到平行句對中一起訓練. 因爲y是高質量的單語語料, x‘可能包含一些UNK, 或者錯誤的句法等, 質量較差. 這樣訓練可以想像成去噪聲訓練的形式. 在有噪聲的情況下, 訓練x->y方向的翻譯模型儘量能還能翻譯好, 提升泛化性能.
- 使用時機: 一般先用高質量的句對訓練好初始模型後, 然後將反向翻譯的句對(x’,y)和訓練語料混合, 再次訓練.
實驗文章
Understanding Back-Translation at Scale
實驗性文章, 分析了在不同場景下反向翻譯的表現
一般結論
- 反向翻譯平均來講能提升~2BLEU
- 在低資源情況下, 因爲翻譯模型的性能較差, 因此得到的句對(x’, y) 質量較差, 可能需要過濾一下才行
- 如果有跨領域的單語語料, 用反向翻譯進行訓練一下, 得到的模型跨領域表現會提升.
不同的採樣方法的影響
得到句對(x’, y)可以有不同的採樣方式
- sampling: 直接從翻譯模型中輸入y, 採樣得到一個x’
- beam search: 根據beam search得到x‘, 這樣x’的質量較高
- beam + noise: 在beam search的過程中, 添加給token添加隨機噪聲
- greedy: 根據輸入y, 翻譯時每一步採用最好的一個token, 翻譯得到x’
- top10: 根據輸入y, 翻譯時每一個在前10個最可能的token中採樣得到下一個token
不同採樣方式下, 平行語料較多的情況下, 反向翻譯的效果如下圖:
可以看出
- 反向翻譯句對量增加的時候, 對最終翻譯的效果有提升
- 帶有噪音的採樣方法效果好一些(beam+noise, sampling), 原因大致可以解釋爲去噪的影響, 噪聲多了, 效果會好一些
注: 這是平行語料多的情況, 如果平行語料較少, 由於翻譯模型的效果還不好, 得到的句對(x’, y)質量不高, 這時使用beam的方式反向翻譯效果最好. 實際使用的時候, 可以結合過濾策略過濾掉一些質量不高的句對, 在保證noise較多的情況, 也保證質量不太差, 效果會更顯著.