機器翻譯 | 反向翻譯 (back-translation) 筆記

介紹

爲了更好地利用目標語言單語語料, 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較多的情況, 也保證質量不太差, 效果會更顯著.

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