cs224n學習筆記L8:機器翻譯(MT)、Seq2Seq、Attention

一、機器翻譯

1.1 基於規則

1950年代由於冷戰,研發了最早的基於規則的機器翻譯系統:俄語2英語

1.2 基於概率(statistical)統計(SMT)

1990s-2010s: 基於概率統計的機器翻譯系統。
例如我們需要將法語的句子x翻譯爲英語句子y, 任務描述如下
argmaxyP(yx)argmax_yP(y|x)
由於源語言x序列確定,使用貝葉斯公式將該規則拆分爲兩個獨立的部分,拆分工作便於模型訓練效果提升:
argmaxyP(xy)P(y)P(x)=argmaxyP(xy)P(y)argmax_y\frac{P(x|y)P(y)}{P(x)} = argmax_y P(x|y)P(y)
其中P(xy)P(x|y)爲從雙語對照數據學習到的翻譯模型,P(y)P(y)爲從目標語言學習到的語言模型,決定目標語言流暢度。

1.2.1 P(x|y)的學習

  • 需要大量源語言-目標語言數據對
  • 任務進一步拆分,考慮學習P(x, a|y), a爲alignment,即語言對齊作爲一個指標單獨考慮
  • alignment:兩種語言句子詞素之間的對應關係,有一對多、多對一、多對多、順序混亂等多種複雜的可能
    在這裏插入圖片描述
    在這裏插入圖片描述
  • P(x,ay)P(x,a|y)代表了多個目標任務:(a)某個位置的特定詞的對齊 (b)某個詞的譯文…
  • 使用啓發式搜索最佳譯文,優良的SMT還有非常多的細節,十分複雜,例如複雜的特徵工程、藉助同義詞短語表等。(課程介紹也比較模糊)
    在這裏插入圖片描述

1.3 神經網絡機器翻譯(NMT)

1.3.1 seq2seq結構

用來輸入一段序列生成另一段序列的網絡架構稱爲seq2seq, 一般有兩個RNN。先來看這張圖,信息量很豐富。在這裏插入圖片描述
總結一下上面圖中的信息:

  • 兩個RNN分別處理源語言與目標語言,當然也需要兩個Embedding
  • 源語言和目標語言分別對應的是encoder、decoder
  • encoder負責對源語言編碼,並將編碼結果提供給decoder作爲其初始狀態。
  • decoder是一個語言模型,負責帶條件的語言生成。

seq2seq除了能用來翻譯,還能幹很多事:

  • 摘要
  • 對話
  • 文檔解析
  • 代碼生成

1.3.2 seq2seq模型訓練

seq2seq的decoder是一個條件語言模型,預測P(yx)P(y|x),其中x爲源語言句子。
P(yx)=P(y1x)P(y2y1,x)P(y3y1,y2,x)P(yTy1,,yT1,x)(1.3.2) P ( y | x ) = P \left( y _ { 1 } | x \right) P \left( y _ { 2 } | y _ { 1 } , x \right) P \left( y _ { 3 } | y _ { 1 } , y _ { 2 } , x \right) \ldots P \left( y _ { T } | y _ { 1 } , \ldots , y _ { T - 1 } , x \right)\\ \tag{1.3.2}
訓練原理如下:
在這裏插入圖片描述

  • 訓練階段,time-steps的數目不固定,一般來說是每個batch中最長序列的長度(也可以固定序列爲一個較大值,使用padding填充)
  • decoder不會因爲提前預測到<end>導致loss計算出問題,因爲在預測階段,預測到表示這句話結束,而訓練階段,如果使用那就是在固定長度下計算loss,這當然ok, 而使用變長序列的話,在decoder的hidden中傳遞的是向量,即使該向量對應的是符號,也仍然可以往後傳遞,loss計算以訓練集樣本y的長度來確定。

1.3.3 貪心解碼

貪心是指每一步都尋找當前最接近的答案。這裏decoder計算是這樣的,利用上一步的argmax的詞向量作爲下一個的輸入,而不是直接用ht1h_{t-1}。這麼做的缺點是,在每個詞上先進行了argmax, 這並不一定是整個句子的argmax。
在這裏插入圖片描述
由於decoder貪心解碼的缺點是由於沒有回退撤銷,我們對它進行改進

1.3.4 窮舉(exhaustive)搜索解碼

根據公式1.3.2, 如果每一步都考慮所有可能序列的概率,那就是O(TV)O(T^{V})複雜度,複雜度太高了。

1.3.5 啓發式搜索方法:Beam Search

beam search是以上兩種辦法的折中,即在第t步保留前k(一般爲4-5)個高概率的可能序列。以k=2爲例的一個搜索過程如圖:
在這裏插入圖片描述
終止條件:由於在測試階段,表示結束,而使用beam search會導致一些不通長度的預測序列。終止規則如下:1. 設置非固定最大長度T。 2. 設置當有n個搜索結果達到時。
爲了平衡不通長度結果的評分,使用如下評分函數:
score=1ti=1tlogPLM(yiy1,,yi1,x) score = \frac { 1 } { t } \sum _ { i = 1 } ^ { t } \log P _ { \mathrm { LM } } \left( y _ { i } | y _ { 1 } , \ldots , y _ { i - 1 } , x \right)

1.3.6 NMT優勢與缺點

優勢:

  • 翻譯更流暢、更好的利用上下文、更少的人力投入,端到端,一個框架多種語言

缺點:

  • 不可解釋、不好debug,不可預測
  • 難以控制,比如一些很明顯的語言短語映射規則,不能直接規定

1.3.7 模型驗證

BLEU(bilingual evalution understudy): 比較機器翻譯結果和人類翻譯結果如下相似度指標:

  • n-gram準確率
  • 對太短的機器翻譯結果增加懲罰

BLEU缺點:

  • 一種語言可以有多種翻譯,一個好的翻譯模型可能獲得較低分數

1.3.8 NMT發展史及現存問題

  • 2014年提出seq2seq, 2016年google將SMT換爲NMT
  • 幾百人歷時數十年研發的SMT, 比不過幾個人幾個月訓練的NMT

待解決問題:

  1. 詞彙表中沒有的詞的處理
  2. 訓練集與測試集領域不匹配時,表現較差
  3. 在長文本中維持context
  4. 某些語言缺少訓練數據
  5. 不可解釋性的系統奇怪舉止:
    在這裏插入圖片描述

二、Attention

2.1 Attention結構

2.1.1 預備知識

  • RNN結構、前向反向傳播
  • seq2seq

2.1.2 樸素seq2seq的缺點

  • 原始的seq2seq, encoder從一開始的每一個time-step的信息都可能會丟失,無法有效傳播到decoder的對應位置。
  • encoder只有最後一個狀態傳到decoder,大量信息損失

2.1.3 dot-product Attention計算方式

如下圖,在seq2seq的基礎上:

  1. 有encoder的hidden向量h1,,hNRh\boldsymbol h_{1}, \ldots, \boldsymbol h_{N} \in \mathbb{R}^{h}
  2. 對於decoder每個step有hidden向量sts_t
  3. 通過點擊計算注意力分數:et=[stTh1,,stThN]RN\boldsymbol{e}^{t}=\left[\boldsymbol{s}_{t}^{T} \boldsymbol{h}_{1}, \ldots, \boldsymbol{s}_{t}^{T} \boldsymbol{h}_{N}\right] \in \mathbb{R}^{N}
  4. 使用softmax將分數轉換爲注意力權重:αt=softmax(et)RN\boldsymbol \alpha^t = softmax(\boldsymbol e^t)\in \mathbb{R}^N(在attention論文中提出還要乘以縮放因子1h\frac{1}{\sqrt{h}},避免因維度過大導致分數太大,使得softmax函數梯度太小)
  5. 對encoder的hidden向量加權求和:at=i=1NαithiR2h\boldsymbol a^t=\sum_{i=1}^N \alpha_i^t \boldsymbol h_i \in \mathbb{R}^{2h}
  6. st\boldsymbol s_tat\boldsymbol a_t拼接作爲decoder輸出。
  7. 在decoder的設計中,有時候會將前一個time-step的attention作爲當前這一步的輸入之一。
    decoder在這裏插入圖片描述
    在這裏插入圖片描述
    擴展: Attention論文中對該結構的解釋用到了Q(query), K(key), V(value),其中Q對應這裏的decoder的hidden向量, K和V對應encoder的hidden向量。直觀理解就是將每一個decoder的時間不作爲一個查詢,通過encoder計算得到輸出向量,這個向量包含了整個encoder的加權信息。

其他Attention

點積attention是計算代價最小的一種,它要求s\boldsymbol{s}h\boldsymbol{h}維度相同,如果維度不同怎麼辦呢?有了前面的基礎,應該能想到:

  1. multiplicative Attention
    ei=sTWhiR\boldsymbol{e_i} = \boldsymbol{s}^T\boldsymbol{W}\boldsymbol{h_i} \in \mathbb R

  2. addictive attention, 這裏v\boldsymbol{v}是模型參數,它的維度是一個超參數。
    ei=vTtanh(W1hi+W2s)R \boldsymbol{e}_{i}=\boldsymbol{v}^{T} \tanh \left(\boldsymbol{W}_{1} \boldsymbol{h}_{i}+\boldsymbol{W}_{2} \boldsymbol{s}\right) \in \mathbb{R}

這兩種Attention都引入了新的模型參數,學習能力比dot-product更強(但個人覺得attention的瓶頸是加權求和會損失信息,因此引入更多參數的意義似乎不大)

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