標籤:

【讀論文】Neural Machine Translation by Jointly Learning to Align and Traslate

【 如何教電腦當翻譯 】

一。哈佛大學機器翻譯開源項目 OpenNMT。

2016年12月20日,哈佛大學自然語言處理研究組,宣布開源了他們研發的機器翻譯系統 OpenNMT [1],並聲稱該系統的質量已經達到商用水準。

在 OpenNMT 官網上,有這麼一段話,

The main model is based on the papers "Neural Machine Translation by Jointly Learning to Align and Translate" Bahdanau et al. ICLR 2015 and "Effective Approaches to Attention-based Neural Machine Translation" Luong et al. EMNLP 2015

我們閱讀一下這篇論文,"Neural Machine Translation by Jointly Learning to Align and Translate" [2],了解 OpenNMT 的工作原理。

二。機器翻譯的任務和難度。

翻譯有三個境界,信、達、雅。信者,語義正確。達者,無過無不及。雅者,文學性。

機器翻譯的任務很明確,譬如英翻中,輸入一句英文(Source),輸出一句中文(Target),兩者語義相同,也就是符合 「信」 和 「達」 的要求,暫時不奢望達到 「雅」 的境界。

早先的機器翻譯,通常用統計翻譯的辦法來實現,精度不高。近年來,神經機器翻譯的新方法,逐漸取代了原先的統計翻譯的辦法。

神經機器翻譯(Neural Machine Translation,NMT)的基本原理,是把用一種自然語言寫成的句子 X,先編碼(encode),轉換成一組向量 H,向量組 H 不僅包含 X 語句中每一詞的語義,而且也包含詞與詞之間的語法結構。然後再把向量組 H 解碼(decode),轉換成用另一種自然語言寫成的句子 Y。

舉個英翻中的例子,英文源句是,「Quite cold today in Beijing, keep warm when going outdoors。」 中文譯句是,「今天北京天氣很冷,出門時要保暖。」

先把英文源句中每個單詞和標點,按順序編碼成數字向量組 H。在這個例子中,向量組 H 共包括 12 個向量,每個向量的維度人為確定,譬如 600 維。然後再把這個 600 * 12 向量組,解碼成中文譯句。

換而言之,向量組是超越一切自然語言的數字語言。所謂翻譯,就是把一種自然語言,先編碼成數字語言,然後再從數字語言解碼成另一種自然語言。

不管是哪一種機器翻譯方法,都面臨以下挑戰,

1. 輸入的語句往往不規範,也就是不完全符合語法規則。譬如上面的例子,缺失了主語。

2. 有些語言有陰性陽性、單數複數、過去時完成時現在時未來時之分,其它語言不一定有。所以不能逐字逐句翻譯,要結合上下文。

3. 有些語言的句法,按主謂賓順序排列,有些則把動詞放在句尾。譬如德語和日語,謂語放在句子末尾。

4. 句子長短不一。長句子可能包含多個從句,句法成分複雜。

三。編碼的工作原理。

編碼的任務,是把語句 X 轉換成向量組 H,這個工作由一個雙向循環神經網路(EncoderBiLSTM)來完成。編碼包含以下幾個步驟。

1. 假如語句 X 由 Tx 個片語成,把每個詞都轉換成詞向量。這樣,語句 X 就變成 f * Tx 的矩陣,f 是詞向量的維度,Tx 是語句 X 中詞的數量。x(t) 是指這個矩陣的第 t 列,也就是對應於第 t 個詞的詞向量。

2. 把第 1 個詞向量 x(1),輸入到 EncoderBiLSTM,得到輸出 hf(1)。重複這個過程,逐個輸入語句 X 中所有詞向量 x(2) ... x(Tx),得到一系列向量 hf(1), hf(2) ... hf(Tx),每個向量 hf(i) 的維度都是 k。

3. 從語句 X 的最末端的詞 x(Tx) 開始,反向到第 1 個詞 x(1),逐個輸入到 EncoderBiLSTM,得到一系列輸出 hb(Tx), hb(Tx-1) ... hb(1),每個向量的維度也是 k。

4. 對應於語句 X 中每一個詞向量 x(t),把 hf(t) 和 hb(t) 拼接起來,得到 h(t),它的維度是 2k。

語句中第 t 個詞的詞向量是 x(t),x(t) 隱含著第 t 個詞的語義信息。h(t) 比 x(t) 更超越。h(t) 不僅隱含著第 t 個詞的語義信息,而且除此之外,h(t) 還隱含著上下文的語義信息,以及上下文的語法結構。

把 h(t) t=1...Tx,擺放在一起,組成一個 2k * Tx 的矩陣,h(t) 是其中一列。這個矩陣,就是向量組 H。H 表達著自然語句 X 的全部語義和語法結構。

四。 解碼的工作原理。

解碼的任務,是先把向量組 H 轉換成一連串詞向量 y(t) t = 1... Ty,然後再把這些詞向量 y(t) 逐個替換成譯句中的某個單詞。解碼的工作由一個單向循環神經網路(DecoderUniLSTM)來完成。

沿用前面的英翻中的例子,英文源句是,「Quite cold today in Beijing, keep warm when going outdoors。」 中文譯句是,「今天北京天氣很冷,出門時要保暖。」

編碼工作完成後,英文源句轉換成 600 * 12 的向量組 H,h(1) ... h(5) h(6) 分別對應著 「Quite」 ... 「Beijing」 「,」 。中文譯句的詞序,與英文源句的詞序並不完全一致,譬如中文翻譯的第一個詞,並不是 「很」 而是 「今天」。

在選擇中文譯句的第一個詞的時候,先對 h(1) ... h(12) 逐個打分,看誰最適合。打分的規則,先看誰是第一個從句的主語。因為英文源句中主語缺失,所以接著嘗試第二個規則。第二個規則是當主語缺失時,中文會把時間或地點用來充當主語。根據這個規則,中文譯句的第一個詞,既有可能對應著 「today」,也有可能對應著 「Beijing」。再根據第三個規則,在所有候選詞中,誰的排序靠前,誰充當譯句的第一個詞。所以,最後確定中文譯句的第一個詞,對應著 「today」。

推而廣之,翻譯的難點,在於選擇源句中對應的詞向量。對應(alignment)的強弱,由四個因子決定。

1. 源句中每一個詞,在語句中擔當的語法角色,譬如是主語,還是謂語,或者賓語,或者從句中的主語謂語或者賓語。

2. 源句中每一個詞的語義類別,譬如是時間,還是地點。

3. 譯句中已經翻譯了源句中哪些詞。

4. 譯句中期待的下一個詞的語法角色和語義類別。

不妨用公式來表達,score( h(i) ) = align( s(t-1), h(i) ) = Va * tanh( Wa * s(t-1), Ua * h(i) ),其中 Va、Wa、Ua 是需要訓練的參數,而 s(t-1) 是譯句的狀態,它隱含著若干內容,

1. 譯句中已經翻譯了的詞,y(1)...y(t-1) 。

2. y(1)...y(t-1) 對應著源句中的哪些詞向量 h(j) 。

沿用前面的例子,如果中文譯句已經翻譯了若干詞,「今天北京天氣很」,接下去要決定 「很」 後面緊跟的中文詞,對應著源句中的哪一個英文詞,正確答案是 「cold」。

為了正確地選擇下一個詞,我們給源句中每一個英文詞的詞向量 h(i),都打一個分,分值取決於中文譯句到目前為止的狀態 s(t-1),與英文詞向量 h(i) 的距離。譯句狀態 s(t-1),記錄著 「今天北京天氣很」 的語義內容和語法結構,也記錄著這幾個詞對應著英文源句中的 「Quite ... today in Beijing」。

對應著 「Quite」 的 h(1),與 s(t-1) 的距離,由 score( h(i) ) 公式計算得出。如果 Va、Wa、Ua 這幾個參數取值得當,「Quite」 的 h(1),與 s(t-1) 距離會很遠。同理,對應著 「keep」 的 h(7),與 s(t-1) 距離也很遠。而對應著 「cold」 的 h(2),與 s(t-1) 的距離最近。這樣,就能正確地選擇 「cold」,作為要翻譯的下一個詞。

總結一下,假如已經翻譯了若干詞,y(1)...y(t-1),下一步的解碼工作,包含以下幾個步驟。

1. 根據 DecoderUniLSTM 當前的狀態 s(t-1),給向量組 H 中每一個向量 h(i),都打一個分,表示下一步要翻譯這個詞的概率。

2. 根據向量組 H 的加權和,更新 s(t-1),得到 s(t)。

3. 根據三項輸入,DecoderUniLSTM 下一步預期的 s(t),向量組 H 的加權和,以及目前已經翻譯了的 y(1)...y(t-1),決定下一步要翻譯的詞 y(t)。

4. 完成了整個譯句的所有詞向量 y(t), t = 1...Ty 後,把 y(t) 轉換成譯句的單詞。

五。訓練數據。

無論是編碼器 EncoderBiLSTM,還是解碼器 DecoderUniLSTM,都有很多參數需要確定。確定這些參數的最優值,需要大量的語料。[2] 使用的語料是同時兼有英文版和法文版的大量新聞稿,這些雙語新聞稿共包含 3.48 億個單詞。

六。參考文獻

[1] OpenNMT, An open-source neural machine translation system by Harvard NLP.

opennmt.net/

[2] Neural Machine Translation by Jointly Learning to Align and Translate

arxiv.org/abs/1409.0473


推薦閱讀:

香港大學顧佳濤:非自回歸神經機器翻譯 | 直播預告
直播實錄 | 非自回歸神經機器翻譯 + ICLR 2018 論文解讀
從冷戰到深度學習:一篇圖文並茂的機器翻譯史
阿里巴巴陳博興:單天翻譯詞量超過千億的秘密
趣味測評:AI翻譯水平大作戰

TAG:機器翻譯 |