1 Neural Machine Translation with Seq2Seq
1.1 Brief Note on Historical Approaches
傳統的翻譯系統是基於概率模型的,包括翻譯模型和語言模型,並由此建立起基於詞或短語的翻譯系統。樸素的基於詞的翻譯系統沒辦法捕捉詞的順序關係;基於短語的翻譯系統可以考慮輸入和輸出的短語序列,並且可以處理比基於單詞的系統更復雜的語法,但仍然沒辦法捕捉序列的長期依賴。Seq2seq模型作爲一種現代的翻譯系統,可以考慮序列的長期依賴(LSTM),來生成更實用的翻譯結果。
Sequence-to-sequence Basics
seq2seq框架是一個end-to-end的模型,包括兩部分的RNN:
- encoder:將輸入序列編碼成一個固定長度的向量;
- decoder:使用encoder得到的固定長度的向量作爲種子(引子)添加到decoder模型中,以此來生成一個輸出序列;
本文中,Seq2Seq模型通常稱爲“encoder-decoder model”.
1.3 Seq2Seq architecture - encoder
上文提到,encoder是將輸入序列編碼成一個固定長度的向量,通常使用RNN(LSTM)。然而,要將一個任意長的序列轉換成一個向量是比較難的事,因此我們通常使用多層的LSTM(stacked LSTMs),最後一層的隱藏層狀態爲變量C。
Seq2Seq encoders可以使用一種策略:將輸入序列倒序輸入。這麼做的目的是:encoder階段看到的最後一個詞剛好是decoder階段最先看到,這使得decoder在解碼的開始階段更容易輸出正確結果,從而引導模型一步步得到更適當的輸出。具體結構如下圖所示:
1.4 Seq2Seq architecture - decoder
decoder階段同樣是一個LSTM模型,但網絡結構會相對複雜一些,使用encoder階段輸出的變量來初始化隱藏層。下圖是decoder階段的一個例子:
1.5 Recap & Basic NMT Example
encoder跟decoder關於序列長度這一塊是相互獨立的,理論上,模型可以接受任意長的輸入,同時可以有任意長的輸出。當然,輸入太長的話模型的效果會下降;模型的輸出以作爲標記。
1.6 Bidirectional RNNs
我們前面所講的模型都只考慮到了一個方向,沒辦法學習一個詞的上下文信息。而雙向RNN可以解決這個問題,它通過將一個序列輸入到一個從左到右的RNN模型和一個從右到左的RNN模型,然後將兩個模型的輸出結果拼接起來(concat)作爲總的輸出。模型框架如下圖所示:
2 Attention Mechanism
2.1 Motivation
動機:針對一個句子,我們可能關注的重點不一樣,比如句子"the ball is on the field,",我們可能更關注"ball," “on,” “field,” 等詞,也就是說,這些詞相對於其他詞重要性更高一些,因爲我們有了注意力機制,來捕獲這種對詞的重要性的描述。
2.2 Bahdanau et al. NMT model
下面介紹早期將注意力機制用於RNN模型的一種方法(可參考:Bahdanau et al. 2014, “Neural Machine Translation by Jointly Learning to Align and Translate”).
首先定義好輸入句子,以及輸出句子.
- encoder: 表示輸入句子的隱藏層表示,encoder使用bi-LSTM來捕捉句子中每個詞的上下文表示;
- decoder: decoder階段的隱藏層表示使用以下的遞歸形式:
其中,表示上一個時刻的隱藏向量,表示前一個時刻生成的詞(即前一個時刻的輸出);表示與時間步相關的上下文向量(下文會給出具體公式描述)(注意區別,標註的seq2seq模型只有一個上下文變量,與時間步無關);
第i個時間步的上下文向量與encoder階段的第j個時間步的隱藏變量的注意力得分可以由下式計算:
其中,a可以是一個任意的函數,比如一個單層的全連接層。然後,我們計算第i個時間步的上下文向量與encoder階段的所有時間步之間的注意力得分,然後使用softmax函數對得分進行歸一化得到,其中
然後,將encoder階段的所有時間步之間的注意力得分乘以對應時間步的隱藏變量,得到第i個時間步的上下文向量
因此,第i個時間步的上下文向量能夠捕獲到原始句子中與其相關的上下文信息。
2.3 Connection with translation alignment
由上一小節的分析,我們可以得到,基於attention的模型在decoder的每一個時間步,都學習到與輸入句子中不同部分的重要性,因此,attention可以考慮成一種對齊方式。第i個時間步的注意力得分表示源句子中與目標中的詞i對齊的單詞,我們可以使用注意力得分建立一個對齊表,如下圖所示:
表格中的數字越大,說明對應的詞之間的關聯性越大。
2.4 Performance on long sentences
注意力機制的一個最大的好處是它可以有效地翻譯長句子。隨着句子長度的增加,不帶注意力機制的模型將會嚴重丟失有效信息,導致準確率下降很快。注意力機制可以有效地解決這個問題,下圖的實驗可以有效地證明這個結論:
3 Other Models
3.1 Luong et al. NMT model
注意力機制有很多的變種,這一節描述的是Huong et al. NMT model(可參考:ffective Approaches to Attention based Neural Machine Translation by Minh-Thang Luong, Hieu Pham and Christopher D. Manning)
-
Global attention. global attention與前述注意力機制的一個區別是得分函數(即上文中的a函數)的不同。具體的,我們使用表示encoder階段的隱藏變量,表示decoder階段的隱藏變量,我們可以得到以下的得分函數:
現在我們有了一個得分向量,我們使用可以計算上一節提到的方法(Bahdanau et al.)計算上下文向量。首先,使用softmax函數歸一化得分,得到向量,其中,因此,
然後,我們拼接上下文向量和decoder的隱藏變量作爲decoder第i個時間步新的隱藏變量:
最後一步就是使用得到decoder的預測結果。爲了解決覆蓋率的問題, Luong et al.使用一種input-feeding approach.具體是,將attention向量也作爲decoder階段的輸入,這與Bahdanau et al.中提到的使用上下文向量計算decoder階段的隱藏變量的方法是相似的。 -
Local attention. 首先,模型預測輸入序列的對齊位置,然後以該位置爲中心,得到一個詞窗口(具體多少個詞由窗口大小決定)下的上下文向量。這個方法可以減少attention步的計算消耗,同時不會隨着句子長度的增加而增加計算量。
3.2 Google’s new NMT
Google通過他們自己的翻譯系統在NMT領域取得了重大突破(Johnson et el. 2016, “Google’s Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation”)。
Google建立了一個可以翻譯任意兩種語言的系統(跨領域語言模型)。這是一個seq2seq模型,輸入包括詞序列以及一個表明要翻譯到哪種語言的token(即提供一個標誌位告訴模型你要翻譯成哪個國家的語言),如下圖所示。模型使用共享參數來翻譯成任意目標語言。
該多語言模型不僅能提升翻譯效果,同時能夠提供"zero-shot translation,"(跨域翻譯,某兩種語言對沒在訓練數據中出現guo),舉個例子,我們的訓練集中只有Japanese-English translations和Korean-English translations,Google提供的該模型能夠生成可信賴的Japanese-Korean translations。這表明,decoder階段的部分內容不是針對特定語言的,模型實際上保留了輸入輸出句子之間的內在表示,這獨立於具體的語言。
3.3 More advanced papers using attention
- Show, Attend and Tell: Neural Image Caption Generation with Visual Attention by Kelvin Xu, Jimmy Lei Ba,Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhutdinov, Richard S. Zemel and Yoshua Bengio. 這篇論文學習詞與圖像的對齊。
- Modeling Coverage for Neural Machine Translation by Zhaopeng Tu, Zhengdong Lu, Yang Liu, Xiaohua Liu and Hang Li. 這篇論文使用一個coverage vector來幫助未來時刻的attention.
- Incorporating Structural Alignment Biases into an Attentional Neural Translation Model by Cohn, Hoang, Vymolova, Yao, Dyer, Haffari. 這篇論文聯合傳統的語言學idea來改善attention性能。
4 Sequence model decoders
- Exhaustive search 這屬於暴力搜索,計算所有可能的序列,選擇概率最大的一個序列作爲結果。很明顯,這個方法計算量太大,實際上基本不會用到。
- Greedy Search 貪婪搜索,即針對每個時間步,我們選擇概率最大的一個token作爲當前時刻的輸出,具體公式如下:
- Beam search 很常用的一種方法,針對每個時間步,選擇top k個候選token,候選集如下:
通俗點講,就是當前的top k個候選集,與前面時刻的top k個候選集兩兩結合計算概率值(k^2個),取概率最大的top k個token作爲當前時刻的結果。
5 Evaluation of Machine Translation Systems
5.1 Human Evaluation
即通過人類(eg專家等)來檢查預測結果的正確性,流暢度等。這種方法得出的結論是最直接最有說服力的,但是這種方法很昂貴和低效。
5.2 Evaluation against another task
通過下游任務的效果來評估當前模型預測的結果的有效性。這也是一種可行的辦法,但也會存在問題:下游任務的效果可能由很多因素決定,不一定是由翻譯系統的結果決定。
5.3 Bilingual Evaluation Understudy (BLEU)
BLEU算法評估候選集與參考集的準確率得分,可以包括不同size的n-grams短語。其中,
表示size爲n的grams的準確率得分,令爲第n個gram的幾何權重。根據上面那個式子我們可以知道當預測的候選集非常短時,會得到一個很高的分數,但這是不合理的,因此,必須對翻譯結果太短的候選集做懲罰,具體如下:
其中,表示參考集的長度,表示候選集的長度。
因此,最終的BLEU得分公式如下: