前言
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
技術
- 藍色部分: 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$
關於 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 計算 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 的部分
上面為 initialization 的部分,下面為 forward 部分
最後是計算 context vector 的部分。將 alignment vector 和與之對應的 source hidden state 做 weighted-sum ,公式如下:
圖 5 為擷取台灣大學電機系李宏毅教授教學影片關於 attention 的圖片
$h^1$ 與 $a_{0}^{1}$ 相乘….以此類推,之後加起來得到 context vector
與 Bahdanau et al. 比較
source hidden state 來源
- 這篇 paper : top LSTM layer
- Bahdanau et al : concatenate bi-GRU 雙向的 hidden state
計算途徑
- 這篇 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
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 來預測。公式如下
$S$ 是 source sentence 長度,$v_p$、$W_p$ 是訓練參數
由於 sigmoid
的值域在 $[0,1]$,因此 $p_{t} \in[0, S]$,且是 real number
alignment vector 計算方法有不一樣的地方。如下:
$\sigma=\frac{D}{2}$,$\overline{\boldsymbol{h}}_{s}$ 是 $h_{[pt−D, pt+D]}$
因為要讓 $a_t$ 圍繞在 $p_t$ 附近,加上了高斯分佈
Feeding input
將 attentional hidden state $\tilde{\boldsymbol{h}}_{t}$ 與 decoder input concatenate 一起丟入 decoder。
好處
- 了解先前的資訊,像是哪些字被翻譯了
- model 太大,不會資訊遺漏
Result
結果就不多說了
Analysis
dataset 為 English-German newstest2014
Long Sentence
對於 long sentence 的比較圖
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.