0%

Effective Approaches to Attention-based Neural Machine Translation 筆記

Paper 連結

前言

Luong 等人提出兩種新的 attention 機制 : global、local。

  • global : 每次注意全部 source sentence 的詞
  • local : 每個時間點,只注意局部的 source sentence

Introduction

  • global attention :
    • 類似 Bahdanau 等人[1] 所提出的方法
    • 優點 : 比起 Bahdanau 等人 更精簡,之後會做一些比較
  • local attention :
    • 有點像 Xu 等人 [2] 所提出的 soft attention 與 hard attention 的混和
    • 優點 :
      • 比起 hard attention, Luong 等人的方法是可以微分的,容易訓練
      • 計算成本比 global attention 低

Model

Neural Machine Translation

機器翻譯整體來說就是在算給定 source word 並求出 target word 的條件機率 $p(y|x)$

而機器翻譯通常使用 sequence to sequence model 來解決這個 issue

  • encoder : source sentence 編碼成一個 fixed-size vector (稱為 context vector)
  • decoder : context vector 解碼,求出 target word

因此條件機率 $p(y|x)$ 可以改寫成

這個機率要怎麼以 model 的形式展現?

我們可以使用一個 fully connected layer 來轉換 Seq2Seq 的 output 成辭典字量大小的 vector,並使用 Softmax 來表達 target word 機率,公式如下:

$g$ 為 fully connected layer, $\boldsymbol{h}_{j}$ 為 decoder 的 hidden state,代表之前 target sentence 的資訊

Seq2Seq 在這篇 paper 使用的是 LSTM 架構,因此 $\boldsymbol{h}_{j}$ 的計算公式為

$f$ 為 RNN 架構 (GRU、LSTM 等等),$s$ 為 source sentence , $\boldsymbol{h}_{j-1}$ 為 decoder 上一個 time step 的 hidden state

關於 LSTM 架構本篇 paper 使用 stacking LSTM 如(圖 1),且使用 dropout on RNN 技術

"stacking LSTM"

圖 1、 Stacking LSTM
  • 藍色部分: encoder
  • 紅色部分: decoder

訓練的目標函數為:

Attention Model

Attention 機制是為了產生 context vector 時,在 source sentence 裡找尋與 prdicting target word 相關的部分,這樣可以減去不必要的資訊,且可以處理較長的句子。

global attention 和 local attention 的共同點是把 stacking LSTM 最上層的 hidden state 當作 input (如圖 2)

目的是 source-side 相關的 context vector 去預測 $y_t$

top layer

圖 2. Top Layer

關於 context vector 的計算是這篇 paper 的賣點之後會介紹

求出 context vector 後,與 target hidden state 利用 concatenate layer 是 fully connected layer 架構連接起來,得到 attentional hidden state ,公式如下:

$\tilde{\boldsymbol{h}}_{t}$ 為 attentional hidden state

之後套用算出 target word 機率的公式

公式變為

Global Attention

global attention

圖 3. Global Attention 架構圖

Global attention 計算 context vector 時,參考全部的 source sentence,利用 decoder 的 target hidden state $h_t$ 與 encoder 的 source hidden state $\overline{\boldsymbol{h}}_{s}$ 做比較,得到 variable-length alignment vector $a_t$,它的長度等於 source side 的時間長度。

alignment vector 可以視為 source hidden state 與 target hidden 的 attention score,也就是該 source hidden state 和 target hidden state 的關係度有多少。

計算公式如下

注意有使用 softmax ,因此 alignment vector 是一個機率

再來 score 有三種算法:

$\boldsymbol{v}_{a}$ 和 $W_a$ 都是可訓練的

圖 4 是擷取 Pytorch chatbot tutorial 的 code 來看計算 score 的部分

pytorch global attention score

圖 4. attention score in Pytorch

上面為 initialization 的部分,下面為 forward 部分

最後是計算 context vector 的部分。將 alignment vector 和與之對應的 source hidden state 做 weighted-sum ,公式如下:

圖 5 為擷取台灣大學電機系李宏毅教授教學影片關於 attention 的圖片

李宏毅教授 attention

圖 5. 李宏毅教授 attention

$h^1$ 與 $a_{0}^{1}$ 相乘….以此類推,之後加起來得到 context vector

與 Bahdanau et al. 比較

  1. source hidden state 來源

    • 這篇 paper : top LSTM layer
    • Bahdanau et al : concatenate bi-GRU 雙向的 hidden state
  2. 計算途徑

    • 這篇 paper : $h_{t} \rightarrow a_{t} \rightarrow$$c_{t} \rightarrow \tilde{h}_{t}$
    • Bahdanau et al : $h_{t-1} \rightarrow a_{t} \rightarrow c_{t} \rightarrow h_{t}$,並又增加 maxout

Local attention

local attention

圖 6. Local Attention 架構圖

global attention 的問題

  • 缺點 : 預測每一個 target word 需要全部 source sentence 的詞
  • 造成的問題 : 成本太高且無法很好的翻譯較長的句子
  • 解決 : local attention
  • 作法 : 預測每一個 target word 只 focus 在 source sentence 的 subset

local attention 每一個 time step 使用 alignment position $p_t$ 來當作 window 中心點。

context vector 只 focus 在 window $\left[p_{1}-D, p_{1}+D\right]$,$D$ 是自己設定。

不像 global attention , alignment vector 這邊是 fixed-size,因為 size 都是 window size $2D+1$

context vector 大概是這樣

那 alignment position 怎麼求?

這篇 paper 提供兩種方法

  • Monotonic alignment (local-m)
  • Predictive alignment (local-p)

Monotonic alignment 的 alignment position 是以 target word 的 time step

alignment vector 計算與 global attention 是一樣的

Predictive alignment 的 alignment position 是用 neural network 來預測。公式如下

alignment position 公式

$S$ 是 source sentence 長度,$v_p$、$W_p$ 是訓練參數

由於 sigmoid 的值域在 $[0,1]$,因此 $p_{t} \in[0, S]$,且是 real number

alignment vector 計算方法有不一樣的地方。如下:

alignment vector 公式

$\sigma=\frac{D}{2}$,$\overline{\boldsymbol{h}}_{s}$ 是 $h_{[pt−D, pt+D]}$

因為要讓 $a_t$ 圍繞在 $p_t$ 附近,加上了高斯分佈

高斯分布

圖 7. 高斯分布

Feeding input

feeding input

圖 8. Feeding Input

將 attentional hidden state $\tilde{\boldsymbol{h}}_{t}$ 與 decoder input concatenate 一起丟入 decoder。

好處

  • 了解先前的資訊,像是哪些字被翻譯了
  • model 太大,不會資訊遺漏

Result

結果就不多說了

result

圖 9. Result

Analysis

dataset 為 English-German newstest2014

Long Sentence

對於 long sentence 的比較圖

long sentence

圖 10. Long sentence 比較圖

Attentional model 的選擇

attentional model 比較圖

圖 11. attentional model 比較圖

以下幾點是論文的分析

  • concat 方法無法得到好的 alignment vector,原因不明
  • dot 是 global 裡最好的
  • general 是 local 裡最好的
  • local-p 是最好的

Reference

[1] Bahdanau, K. Cho, and Y. Bengio. 2015. Neural machine translation by
jointly learning to align and translate. In ICLR.

[2] Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron C. Courville, Ruslan Salakhutdinov, Richard S. Zemel, and Yoshua Bengio. 2015. Show, attend and tell: Neural image caption generation with visual attention. In ICML.