標籤:

《Unsupervised Machine Translation Using Monolingual Corpora Only》閱讀筆記

  • 作者:Guillaume Lample, Ludovic Denoyer and Marc Aurelio Ranzato
  • 來源: ICLR 2018 Under Review
  • 鏈接: link
  • 研究機構:Facebook AI Research, Sorbonne Universit′es, UPMC Univ Paris 06, LIP6 UMR 7606, CNRS
  • 源碼鏈接: 待補充

Introduction

近年來,隨著深度學習技術的發展,機器翻譯已經取得了長足進步。然而,使用了深度學習的機器翻譯技術往往需要數量非常龐大的平行語料,這一前提使得當前最先進的技術無法被有效地用於那些平行語料比較匱乏的語言之間。為了解決這一問題,本文提出了一種不需要任何平行語料的機器翻譯模型。該模型的基本思想是, 通過將來自不同語言的句子映射到同一個隱空間下來進行句子翻譯。實驗證明,在不依靠任何平行語料的情況下,本文所提出模型的BLEU指標達到了32.8。

相比於(半)監督機器翻譯模型,本文所提出的模型具有以下意義:

  • 無需任何監督語料,僅需要在待翻譯的兩種語言中存在相應的單語言語料集。這也就意味著該模型可以用於處理那些無標註的新語言之間的翻譯問題。
  • 該模型為半監督翻譯模型提供了一個性能下界,即任何一個(半)監督翻譯模型的性能都理應優於本文所提出的模型。

Symbols

  • mathcal{W}_{S} :源語言的詞表。
  • mathcal{Z}^{S}=(z_{1}^{s},z_{2}^{s},...,z_{|mathcal{W}_{S}|}^{s}) :源語言對應的word embedding。
  • mathcal{W}_{T} :目標語言的詞表。
  • mathcal{Z}^{T}=(z_{1}^{t},z_{2}^{t},...,z_{|mathcal{W}_{S}|}^{t}) :目標語言對應的word embedding。
  • mathcal{Z} :所有embedding的集合。
  • boldsymbol{x}=(x_{1},x_{2},...,x_{m}) :輸入的句子,該句子可以來自源語言,也可以來自目標語言。
  • e_{theta_{enc},mathcal{Z}}(boldsymbol{x},l)e(boldsymbol{x},l) :編碼器,用於根據相應語言的embedding將輸入的句子轉化為相應的隱層狀態 boldsymbol{z}=(z_{1},...,z_{m}) 。其中, lin{src,tgt} 表示語言,當 l=src 時,使用源語言的word embedding mathcal{Z}^{S} ;當 l=tgt 時,使用目標語言的word embedding mathcal{Z}^{T} 。 參數theta_{enc} 在編碼源語言與目標語言時是共享的。在本文中,編碼器使用雙向LSTM實現。
  • d_{theta_{dec},mathcal{Z}}(boldsymbol{z},l)d(boldsymbol{z},l) :解碼器,用於將隱層狀態 boldsymbol{z}=(z_{1},...,z_{m}) 轉化為語言 l 下的詞序列 boldsymbol{y}=(y_{1},...,y_{k}) ,其中,每個單詞 y_{i} 都來自於相應的詞表 mathcal{W}^{l} 。同樣,參數theta_{dec}l 無關。在解碼時,解碼器會將上一時刻生成的詞 y_{i-1} 作為輸入( y_{0} 表示句子起始符),並根據相應的中間狀態來得到 y_{i} 。當解碼器生成句子結束符時,停止翻譯。在本文中,解碼器使用LSTM實現(+ attenion機制)。
  • D_{src}D_{tgt} :分別表示源語言與目標語言的語料集,這兩個語料集之間沒有對應關係。

Model

Overview

本文所提出模型的基本結構如下圖所示:

從圖中可以看到,該模型共分為以下幾個部分:

  • 雜訊模型 C(·)
  • 編碼器 e
  • 解碼器 d
  • 判別器:圖中未畫出。其位置與 L_{adv} 的位置相同。
  • 翻譯模型 M :使用[2]中的翻譯詞表+逐詞翻譯進行初始化,而後使用編碼器與解碼器的組合構成。
  • 各種損失函數 mathcal{L} (圖中綠色邊框橢圓):將在以下作具體介紹。

總的來說,該模型具有以下特點:

  1. 首先使用[2]中的無監督方法獲得跨語言的詞翻譯,然後使用逐詞翻譯的方法初始化翻譯模型;
  2. 模型的損失函數可以度量從有噪輸入序列中重構句子或翻譯句子的能力。對於自編碼任務,有噪輸入通過丟棄或交換句子中的詞獲得;對於翻譯任務,有噪輸入則使用上次迭代獲得的翻譯結果來表示。為了提高源語言與目標語言句子分布的對齊程度,本文還使用了對抗訓練的方法。

Denoising Auto-encoding

自編碼器可以使用seq2seq+attention來實現。然而,如果不加任何限制,自編碼器會完全變成一個copy的網路,在這種情況下,模型實際上並沒有從數據中學到任何有用的模式。為了解決這一問題,本文使用了類似於Denoising Auto-encoder(去噪自編碼器,DAE)的思想:先為輸入的句子添加雜訊,然後再進行編碼(如下圖所示)。

對於 l=src (或 l=tgt )以及隨機雜訊模型(用 C 表示),本文定義了以下目標函數:

其中, hat{x}sim d(e(C(x),l),l) 表示從破壞的 x 中重建的結果,其中, x 是從單語言數據集 D_{l} 中抽樣得到的。 Delta 表示兩個序列間的差異性度量,在本文中使用詞級的交叉熵之和來定義。

在去噪自編碼器中,C(x) 表示一個雜訊模型,該模型將被用於獲取一個有噪版的句子 x 。具體來說,本文中使用了兩種不同的雜訊。第一種是通過以p_{wd} (本文中設為0.1)丟棄掉每個每個詞來得到的;第二種則是通過輕微(判斷條件為 forall i in{1,n},|sigma(i)-i|leq k ,本文中 k=3 打亂輸入句子中詞的順序實現的。對於第二種方式,本文使用了一個隨機排列 sigma (長度等於句子的長度,每個元素表示句子中每個詞的新的位置)來打亂句子。一個簡單的例子如下圖所示。在實驗中,這兩種雜訊策略都對結果產生了很大的影響,而同時使用兩種策略的效果則是最優的。

Cross Domain Training

以上的方法可以有效地用於同一種語言內的編碼問題,對於機器翻譯這種跨語言的問題,我們需要為其引入一個新的目標函數,從而使模型具有將輸入序列從 源/目標 語言 l_{1} 映射到 目標/源 語言 l_{2} 的能力。具體的步驟為:

  1. 首先抽出一個句子 xin D_{l_{1}} ,並使用當前的翻譯模型生成其在語言 l_{2} 下的有噪版本(模型結構圖中下半部分的藍色方框)。這一過程表示 y=M(x)
  2. 使用雜訊模型 C 得到相應的有噪版本 C(y)
  3. 根據 C(y) 來重建 x 。具體的流程如下圖所示。

相應的跨域損失函數(cross-domain loss)定義為:

其中, y=M(x)Delta 表示兩個序列間的差異性度量,仍使用詞級的交叉熵之和來定義。

Adversarial Training

那麼,該模型是如何實現保證翻譯質量的呢?從模型結構上看,本文使用的翻譯模型仍然是encoder-decoder模型,而這一模型的基本原理是:來自不同語言的句子僅僅是同一編碼的不同表示方式,從而我們可以首先將源語言中的句子轉換為相應的編碼,然後將該編碼轉換為另一種語言,這樣就實現了整個翻譯過程。本文也不例外。為了有效地進行句子翻譯,本文中的編碼器必須具有將來自不同語言的句子編碼到同一特徵空間下的能力,這樣,解碼器才能利用該編碼將源句子翻譯為目標語言。

為了使編碼器具有這一能力,本文訓練了一個判別器網路,用於判別該編碼是對源句的編碼還是對目標句子的編碼。判別器的輸入為編碼器的輸出,即 boldsymbol{z}=(z_{1},...,z_{m}), z_{i}inmathbb{R}^{n} ,判別器的輸出為相應的二值預測:

其中,0表示來自源語言,1表示來自目標語言。

判別器的目標函數為:

其中, (x_{i},l_{i}) 表示(句子,語言id)對, theta_{enc} 表示編碼器的參數, mathcal{Z} 表示編碼器的word embedding。編碼器的訓練目標則是要「欺騙」判別器:

其中,當 l_{i}=l_{2} 時,l_{j}=l_{1} ;反之亦然。

最終,每次迭代時模型的目標函數定義為:

其中, lambda_{auto},lambda_{cd},lambda_{adv} 為每種損失函數的權重。判別器的目標函數使用 mathcal{L}_{D} 定義。

Training

Iterative Training

整個模型的訓練過程如下:

其基本過程如下:

  1. 首先使用[2]中的無監督模型得到對應的雙語詞典;
  2. 基於步驟1得到的詞典,以逐詞翻譯的方式得到初始化翻譯模型 M^{(1)}
  3. 開始迭代;
  4. 在每次的迭代過程中,分別通過最小化 mathcal{L}_{D}mathcal{L} 來更新判別器與模型的參數(包括encoder與decoder兩個部分);
  5. 使用encoder與decoder組成新的翻譯模型 M^{(t+1)}
  6. 當模型收斂時,停止迭代,使用此時的encoder與decoder作為最終的翻譯模型。

在這裡需要注意的是,在訓練時使用Denosing Auto-encoding有助於提高模型的去噪能力。具體來說,最初的翻譯模型是使用逐詞替換實現的,使用這種方式得到的翻譯結果存在的誤差可能有兩種:一種是缺失詞,另一種便是詞序被打亂。因此,本文在訓練模型時同樣使用了這兩種雜訊,以提高編碼器和解碼器對這兩種雜訊的降噪能力。

Unsupervised Model Selection Criterion

在本模型的訓練過程中,如何進行超參數的選擇是另一個非常重要的問題。由於沒有標註語料,我們無法使用傳統的方式進行模型的驗證。針對這一問題,本文提出了一種代理準則(surrogate criterion),用以在驗證階段選擇模型的超參數。所謂代理準則,就是使用源句子經翻譯後的重建結果作為代理,來評價翻譯的效果。

對於源語言 l_{1} 中的所有句子,首先將其翻譯為另一種語言 l_{2} ,然後再將其翻譯回(重建) l_{1} ,然後使用這一重建結果與源句子之間的BLEU指標來評價翻譯的效果。最終的BLEU分數為雙向分數(即 l_{1}to l_{2}to l_{1}l_{2}to l_{1}to l_{2} )的均值:

本文將最大MS分數所對應的模型參數作為最終的模型參數。

Experiments

本文的實驗使用了三種baseline:

  • word-by-word translation(WBW):使用[2]中無監督方法得到的翻譯詞典進行逐詞翻譯得到的結果。
  • word reordering(WR):在使用WBW之後,又使用LSTM語言模型進行了詞重排。
  • oracle word reording(OWR):理論上使用WBW能夠達到的最好結果。

可以看到,相比於各種無監督的word-by-word模型(及其變體),本文所提出模型的性能在句子翻譯任務上的性能有了很大的提升。

下圖展示了本文模型與有監督模型的對比。可以看到,本文所提出的無監督模型的效果與使用了100,000條平行語料的監督模型的效果大致相當。雖然增加平行語料可以大幅提升有監督模型的性能,但是本文所提出的模型可以更有效地用於那些缺乏平行語料的語言之間。

Conclusion

  1. 本文不僅打開了無監督機器翻譯的大門,也為半監督機器翻譯提供了一個重要的參考。相比於有監督模型,無監督模型的適用範圍要更廣;而且,通過將不同的語言編碼到同一個空間,本文的模型可以同時用於雙向的翻譯任務。
  2. 本文的模型巧妙地使用了auto-encoding的思想解決了翻譯問題。通過對句子的編碼與重構,使用源句替代了監督模型中的目標句子進行了模型的訓練與驗證。
  3. 為了將不同語言映射到相同的特徵空間,本文引入了對抗訓練的方法,這種做法非常值得借鑒。
  4. 在ICLR 2018 under review的論文中,已經有了多篇關於無監督翻譯的論文(如[1-3])。這是否意味著無監督翻譯開始成為機器翻譯領域的研究熱點?本文是否又能成為無監督機器翻譯里程碑式的作品,不妨拭目以待。

References

[1] Lample, G., Denoyer, L., & Ranzato, M. (2017). Unsupervised machine translation using monolingual corpora only. arXiv:1711.00043, 2017.

[2] A. Conneau, G. Lample, M. Ranzato, L. Denoyer, and H. Jégou. Word translation without parallel data. arXiv:1710.04087, 2017.

[3] Artetxe, M., Labaka, G., Agirre, E., & Cho, K. (2017). Unsupervised neural machine translation. arXiv 1710.11041, 2017


推薦閱讀:

「嘿,機器,你是怎麼做好翻譯的呀?」 「來,我畫給你看!」 | 論文訪談間 #01
GNMT(Google's Neural Machine Translation System) 閱讀筆記
AI 時代的媒體會是什麼樣

TAG:机器翻译 |