中科院計算所副研究員馮洋:神經(jīng)機器翻譯的訓練改進和解碼提速
訓練
1. 計劃采樣
對上面提到的問題進行一個小總結(jié):訓練預測過程中Ground Truth的未知導致的Exposure Bias 問題交叉熵損失函數(shù)的逐詞匹配所導致對于所有的非Ground Truth 一視同仁的問題。解碼Beam Search 的Beam Size 會引入大量的計算成本自回歸解碼導致的無法并行問題。
首先,針對于Exposure Bias問題,我們采用的是進化采樣的方法,這個就是我們2019ACL Best Paper的工作。針對與訓練和測試時context不一致的情況,我們的解決方法的主要思想是,在訓練的時候模仿測試時候可能會碰到的情況,這樣在測試的時候就會發(fā)現(xiàn),當前碰到的情況在訓練的時候都碰到過,這樣模型就可以應對了。
具體的做法是我們在每一步,模擬上一步的翻譯結(jié)果,就是slides中的oracle,其中帶*的是就是Ground Truth,在每一步,我們都會隨機的選擇是Oracle還是Ground Truth來作為當前步的上一步詞輸入。
使用上述方法,我們需要解決的三個關鍵問題是:1)如何生成Oracle翻譯,2)Oracle和Ground Truth如何進行采樣,3) 如何訓練模型。
對于Oracle的生成,我們有兩種方法,一個是生成詞級別的Oracle,另一個是生成句級別的Oracle。詞級Oracle即每一步都會選擇最優(yōu),句子級別Oracle需要考慮到整個句子的最優(yōu)。
由于RNN Search會在生成oracle的算法中會用到。在講生成oracle的算法之前,先大體介紹一下RNN Search模型。RNN Search在當前步翻譯的時候,會輸入歷史的隱狀態(tài)信息,同時也會將上一步翻譯的結(jié)果輸入進去,經(jīng)過一系列的變換,會得到當前步的一個隱狀態(tài),該隱狀態(tài)再經(jīng)過幾層全連接的計算,最終輸入到softmax層得到詞表中每一個詞的歸一化的分數(shù)。
在生成詞級oracle的時候,我們會在softmax歸一化分布之前加上一個Gumble Noise。Gumble Noise 的公式如slides中所示,其中 表示一個均勻分布。式子中的 表示溫度,當非常大的時候,相當于argmax,當 比較小的時候,相當于均勻分布。
對于句級Oracle,我們首先采用Beam Search生成前K個候選譯文,然后對選定的K個候選譯文進行排序,這里的排序可以根據(jù)K個候選譯文和Ground Truth計算一個BLUE值,還可以用一些其它的方法進行排序,最終選取得分最高的譯文作為句級的Oracle。詞級Oracle和句級Oracle 是一個局部最優(yōu)和全局最優(yōu)的一個區(qū)別。
對于采樣,具體是怎么操作的呢?首先考慮到一點就是在剛開始訓練的時候,模型的效果不怎么好,這樣,無論是詞級oracle的生成還是句級oracle的生成效果肯定都不是很理想,如果這時候使用oracle來引導模型訓練的話, 可能會使得模型收斂的比較慢。一個比較合理的做法是,剛開始我們盡量選用Ground Truth的詞,當模型快收斂的時候,我們再加大Oracle翻譯的采樣比例。這里的采樣概率公式如slides所示,其中,隨著epoch的增長,系統(tǒng)越來越傾向于選擇oracle label。
對于訓練的話,同樣的采用最大化log likelihood的方式。
實驗結(jié)果:除了對比Transformer 和 RNN-Search,也對比了另外兩個系統(tǒng),SS-NMT 和 MIXER。其中,SS-NMT也是通過計劃采樣的方式。MIXER的loss分為兩個部分,一個部分是傳統(tǒng)的Transformer使用的交叉熵損失函數(shù),另外一部分是將BLEU值作為reward,然后通過policy gradient的方法對模型進行訓練。
這個是在中英文新聞數(shù)據(jù)上的結(jié)果,可以看到,在RNN-Search的系統(tǒng)上, 我們相比于Baseline能夠提升2.3個點。在Transformer系統(tǒng)上,相比于Baseline能夠提升1.5個點。
在英德新聞數(shù)據(jù)結(jié)果上,基于RNN-Search的系統(tǒng)比baseline高了1.6個點,基于Transformer的系統(tǒng)比baseline高了1.3個點。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字