【CS224n】Neural Machine Translation with Seq2Seq

1 Neural Machine Translation with Seq2Seq

1.1 Brief Note on Historical Approaches

傳統的翻譯系統是基於概率模型的,包括翻譯模型和語言模型,並由此建立起基於詞或短語的翻譯系統。樸素的基於詞的翻譯系統沒辦法捕捉詞的順序關係;基於短語的翻譯系統可以考慮輸入和輸出的短語序列,並且可以處理比基於單詞的系統更復雜的語法,但仍然沒辦法捕捉序列的長期依賴。Seq2seq模型作爲一種現代的翻譯系統,可以考慮序列的長期依賴(LSTM),來生成更實用的翻譯結果。

Sequence-to-sequence Basics

seq2seq框架是一個end-to-end的模型,包括兩部分的RNN:

  1. encoder:將輸入序列編碼成一個固定長度的向量;
  2. 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”).
首先定義好輸入句子x1,...,xnx_1,...,x_n,以及輸出句子y1,...,ymy_1,...,y_m.

  1. encoder: (h1,...,hn)(h_1,...,h_n)表示輸入句子的隱藏層表示,encoder使用bi-LSTM來捕捉句子中每個詞的上下文表示;
  2. decoder: decoder階段的隱藏層表示sis_i使用以下的遞歸形式:
    si=f(si1,yi1,ci)s_i=f(s_{i-1},y_{i-1},c_i)
    其中,si1s_{i-1}表示上一個時刻的隱藏向量,yi1y_{i-1}表示前一個時刻生成的詞(即前一個時刻的輸出);cic_i表示與時間步相關的上下文向量(下文會給出具體公式描述)(注意區別,標註的seq2seq模型只有一個上下文變量,與時間步無關);
    第i個時間步的上下文向量cic_i與encoder階段的第j個時間步的隱藏變量的注意力得分可以由下式計算:
    ei,j=a(si1,hj)e_{i,j}=a(s_{i-1},h_j)
    其中,a可以是一個任意的函數,比如一個單層的全連接層。然後,我們計算第i個時間步的上下文向量cic_i與encoder階段的所有時間步之間的注意力得分ei,1,...,ei,ne_{i,1},...,e_{i,n},然後使用softmax函數對得分進行歸一化得到αi=(αi,1,...,αi,n)\alpha_i=(\alpha_{i,1},...,\alpha_{i,n}),其中
    αi,j=exp(ei,j)k=1nexp(ei,k)\alpha_{i,j}=\frac{exp(e_{i,j})}{\sum^n_{k=1}exp(e_{i,k})}
    然後,將encoder階段的所有時間步之間的注意力得分乘以對應時間步的隱藏變量,得到第i個時間步的上下文向量cic_i
    ci=j=1nαi,jhjc_i=\sum^n_{j=1}\alpha_{i,j}h_j
    因此,第i個時間步的上下文向量xix_i能夠捕獲到原始句子中與其相關的上下文信息。

2.3 Connection with translation alignment

由上一小節的分析,我們可以得到,基於attention的模型在decoder的每一個時間步,都學習到與輸入句子中不同部分的重要性,因此,attention可以考慮成一種對齊方式。第i個時間步的注意力得分αi,j\alpha_{i,j}表示源句子中與目標中的詞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函數)的不同。具體的,我們使用h1,...,hnh_1,...,h_n表示encoder階段的隱藏變量,h1,...,hn\overline h_1,...,\overline h_n表示decoder階段的隱藏變量,我們可以得到以下的得分函數:
    在這裏插入圖片描述
    現在我們有了一個得分向量,我們使用可以計算上一節提到的方法(Bahdanau et al.)計算上下文向量cic_i。首先,使用softmax函數歸一化得分,得到向量αi=(αi,1,...,αi,n)\alpha_i=(\alpha_{i,1},...,\alpha_{i,n}),其中αi,j=exp(ei,j)k=1nexp(ei,k)\alpha_{i,j}=\frac{exp(e_{i,j})}{\sum^n_{k=1}exp(e_{i,k})},因此,
    ci=j=1nαi,jhjc_i=\sum^n_{j=1}\alpha_{i,j}h_j
    然後,我們拼接上下文向量和decoder的隱藏變量作爲decoder第i個時間步新的隱藏變量:
    h^i=f([hi,ci])\hat h_i=f([\overline h_i,c_i])
    最後一步就是使用h^i\hat h_i得到decoder的預測結果。爲了解決覆蓋率的問題, Luong et al.使用一種input-feeding approach.具體是,將attention向量h^i\hat h_i也作爲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的準確率得分,令wn=1/2nw_n=1/2^n爲第n個gram的幾何權重。根據上面那個式子我們可以知道當預測的候選集非常短時,會得到一個很高的分數,但這是不合理的,因此,必須對翻譯結果太短的候選集做懲罰,具體如下:
在這裏插入圖片描述
其中,lenreflen_{ref}表示參考集的長度,lenMTlen_{MT}表示候選集的長度。
因此,最終的BLEU得分公式如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章