近些年來,神經機器翻譯技術發展迅速並已被投入了實際應用。而谷歌大腦的研究者透過大規模實驗表明,即使只是經典的編碼器-解碼器模型,只要經過精心的引數設定,一樣能取得非常好的表現。機器之心技術分析師對該論文進行了解讀,本文為解讀的中文版。
論文地址:https://arxiv.org/abs/1703.03906
程式碼:https://github.com/google/seq2seq/
神經機器翻譯架構的大規模探索(Massive Exploration of Neural Machine Translation Architectures)
引言
在這篇論文中,研究者在 WMT 英語到德語翻譯任務上進行了大量實驗,從而對 NMT 的超引數進行了分析。他們宣稱,儘管沒有帶來 NMT 架構上的創新,但對經典的 NMT 基準系統進行精心調節,依然能實現可媲美當前最佳的結果。
NMT 基準數學概述
下圖展示了經典的編碼器-解碼器模型:
如上圖所示,編碼器是一個雙向 RNN。其輸入是一個序列(源令牌 x=(x1, x2, ... x_end)),然後輸出一個編碼器隱藏狀態序列。這個編碼器隱藏狀態是兩個方向的狀態組合。這個編碼器隱藏狀態是兩個方向的狀態組合,即 h_i = [h_i_forward; h_i_backward]。解碼器也是一個 RNN。解碼器的輸入 y 是之前預測的詞或基本真值目標詞,然後其會被饋送給隱藏層,得到 s_i,這又會進一步進行變換並被用於根據一個 softmax 函式預測目標。注意,當前目標的機率取決於編碼器狀態 h(可使用一個語境向量 c 建模它)、當前解碼器狀態 s_i 和之前的詞 y_{<i}。整體目標可寫成 max P(y_i | y_{<i}, ci, si)。這個語境向量 c 也被稱為注意向量,其計算方式為:
這是源隱藏狀態 h_i 的加權和,權重變數 a_{ij} 的計算方式為:
其中,att(. , .) 被稱為注意函式,這是一個定製的函式;s_i 是第 i 個解碼器狀態;h_j 是第 j 個編碼器狀態。在這篇論文中,作者使用了兩個注意函式進行比較,第一個是加性注意函式,第二個是點積注意函式,如下所示:
其中 v 是一個可學習的向量,用於計算該分數;W1 和 W2 用於將源隱藏狀態和目標隱藏狀態轉換到同一維度。整體而言,在詞彙庫 V 上解碼器輸出的機率可這樣計算:
這是解碼器目標。此外,你還可以根據更多情況對其進行調節,比如 softmax(W[s_i;c_i;f_i]),其中 f_i 是當前解碼器輸入的嵌入;或 softmax(W[s_i;c_i;f_i;t_i]),其中 t_i 是一個與預測詞的偏差在特定範圍內的主題向量。
資料預處理
研究者基於 WMT 英語-德語資料集(其中包含 450 萬句子對)進行了大量實驗。開發集是 newstest2013,測試集是 newstest2014 和 newstest2015。在使用 Moses 工具 token 化之後,他們使用 BPE(Byte Pair Encoding/雙位元組編碼)對源和目標語料庫進行了預處理並建立了 32000 個新符號(每個符號都表示一個字元 n-gram)。所得到的詞彙庫大小約為 3.7 萬。
訓練配置
基準訓練的配置是:批大小=128,波束大小=10,長度懲罰項=0.6。基準模型基於標準的 2 層堆疊式雙向架構和一個 2 層解碼器。他們為編碼器和解碼器都使用了 cell 大小為 512 的 GRU,每一層之間的 dropout 設定為 0.2,輸入/輸出嵌入大小設定為 512。
大規模實驗
嵌入維度
如上表所示,嵌入的大小造成影響不大。即使 128 維的特徵也表現良好,同時收斂時間幾乎可降低兩倍。整體而言,2048 維的特徵的效果最好,但是優勢比較小。
RNN 單元探索
如上表所示,LSTM 單元的表現優於 GRU 單元。研究者宣稱這是因為他們使用的訓練資料不是非常大,而時間消耗最多的地方是 softmax 運算,所以他們沒觀察到 LSTM 和 GRU 之間在訓練時間方面有顯著差別。注意 LSTM 和 GRU 都優於單純的解碼器,這意味著解碼器確實透過其自身的隱藏狀態傳遞了重要的資訊,而不僅靠上下文向量和當前的解碼器輸入。
編碼器和解碼器深度
如上表所示,基準的雙向編碼器-解碼器的表現已經相當好了。研究者探索了不同深度、有無逆向的單向編碼器。結果表明,輸入和逆向輸入的簡單組合總是優於沒有逆向輸入的情況;這表明透過這種方式,編碼器可以為早期的輸入詞建立更豐富的表徵。注意,增加編碼器的深度所帶來的優勢不明顯,2 層編碼器就足夠好了。
注意函式
正如前面 NMT 數學概述一節所提到的,研究者使用了 2 個注意函式(點積和加性)來計算注意分數。研究者將 W1h_j 和 W2s_i 的維度稱為“注意維度”,而且取了從 128 到 1024 的不同值。如上表所示,基於加性的注意函式在注意維度變化時表現相當穩定,而且最好的結果(22.47)是使用 512 維的向量得到的。與加性注意函式相比,基於點積的注意函式並不非常穩定,並且其表現在 256 維之後持續下降。注意,加性運算和點積運算的最佳結果很接近(22.33 與 22.47),且都遠優於“沒有注意”(9.98)和“沒有輸入”(11.57)的情況。總體而言,注意機制很重要,能幫助得到優良的翻譯結果。
波束大小
研究者還調查了波束大小的影響,他們選取了 1 到 100 之間的不同大小:
如上表所示,B1 對應波束大小=1,這是一種貪婪搜尋。其表現遜於波束搜尋(B3、B5、B10、B25、B100、B10-LP-0.5、B10-LP-1.0)。不同波束大小所得到的結果非常接近,因此我們不能肯定更大的波束大小會有助於翻譯。此外,長度懲罰能幫助結果變得更好。比如 B10 (21.57) 對比 B10-LP-0.5 (21.71) 與 B10-LP-1.0 (21.80)。
最優超引數
研究者給出了基於注意的編碼器-解碼器模型的最優實驗引數。相比於很多 NMT 模型,其得到了相當好的結果(在 newstest14 上為 22.19,在 newstest15 上為 25.23)。僅有 GNMT [1](在 newstest14 上為 24.61)優於他們精心調節後的模型。
如上表所示,對基準模型進行很好的調整和初始化,也能讓它在很多基準評測中取得優勢。
分析師簡評
在這篇論文中,研究者大規模地分析了神經機器翻譯,並得到了一些明確的結果,比如注意機制總是有用的、雙向編碼器(或結合逆向輸入)優於單向編碼器等等。我認為未來還應研究不同的解碼技術和結合 SMT 特徵(基於單語言資料、雙語詞典的翻譯詞彙、分層重新排序、短語表等的語言模型)來幫助編碼器學習的混合系統的情況。
參考文獻
[1] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V. Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, Jeff Klingner, Apurva Shah, Melvin Johnson, Xiaobing Liu, Lukasz Kaiser, Stephan Gouws, Yoshikiyo Kato, Taku Kudo, Hideto Kazawa, Keith Stevens, George Kurian, Nishant Patil, Wei Wang, Cliff Young, Jason Smith, Jason Riesa, Alex Rudnick, Oriol Vinyals, Greg Corrado, Macduff Hughes, and Jeffrey Dean. 2016. Google’s neural machine translation system: Bridging the gap between human and machine translation. CoRR abs/1609.08144.