# NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
###### tags: `paper notes` `deep learning`
[paper link](https://arxiv.org/pdf/1409.0473.pdf)
---
## Intro
* NMT最近的蓬勃發展
* Recurrent Continous Translation Models
* Seq2Seq
* 傳統方法是把句子都分開分析,各自訓練
* NMT則是嘗試以一個單獨的NN來完成Seq2Seq
* 由於目前為止提出的Seq2Seq都得將所有的資訊壓縮到一個fixed-length的vector中
* 而這會讓模型難以處理很長的那種句子 (因為記憶還是有限)
* 他們提出的方法能在模型產生出一個字的翻譯的時候同時搜尋source sentence中有哪些字是跟它相關的,這樣模型在做翻譯的時候就可以同時考慮source sentence還有之前產生的target word
* 不使用整條的fixed-lenght vector而改為從中選擇它的subset去做decoding (要怎麼選是學出來的)
* 使用attention機制使他們比以前的basic encoder-decoder表現更好
* task還是英法文翻譯
## Learn to Align and translate
### Decoder
* 新模型是將雙向的RNN(GRU)作為Encoder, Decoder也是RNN但是它同時利用Attention做align與translate
* 其實可以看成是原本的Encoder-Decoder再加上一個alignment model
* 新model的條件機率: $p(y_i|y_1...,y_{i-1},x) = g(y_{i-1},s_i,c_i)$
* $s_i$是hidden state
* $s_i=f(s_{i-1},y_{i-1},c_i)$
* 以前的模型是共用一個上下文,現在這個是每個詞都有自己的上下文$c_i$
* $c_i=\sum_{j=1}^{T_x}a_{ij}h_j$
* 每一個$h_j$都包含對整個input sequence做attention之後的資訊(會特別關注第$h_j$個詞他周圍的詞), $j從1到T_x$
* 論文把$h$稱為 annotation , 感覺沒什麼太大意思
* 可以看成是在算$h_j$的加權 (把$a_{ij}$當成weight)
* 若是把$a_{ij}當成是$target word $y_i$和source word $x_j$ align的機率
* 那麼$a_{ij}$就表現出了$h_j$相對於前一個hidden state$s_{t-1}$在決定下一個hidden state$s_i$和生成$y_I$的重要性
* 也就是說$a_{ij}越大, output第$j$個詞和input第$i$個詞關係就越大, 在翻譯第$i$個詞的時候就應該更注重在source sentence第$j$的詞的周圍$
* 這就是Attention的概念, decoder在翻譯的同時可以同時學習該注重source sentence的哪個部分
* Attention解決了fixed-length vector的問題
* $a_{ij}=exp(e_{ij}) / \sum_{k=1}^{T_x}exp(e_{ik})$
* alignment model, 用來看input的第$j$個詞周圍和output的第$i$個詞有多相關
* alignment model是一個和其他所有模型一起train的Feedforwark NN
* soft alignment指的是attention的分布是機率性的而不是一個對一個, 也就是說attention算的是每一個詞跟別的詞有相關的機率, 而不是很硬的就說這個詞就是跟哪個詞相關
* 也由於是用soft alignment, 因此可以用gradient descent
* $e_{ij} = a(s_{i-1},h_j)$

### ENCODER: BIDIRECTIONAL RNN FOR ANNOTATING SEQUENCES
* 雙向的RNN (GRU)
* forwark RNN吃input $X_1,...,X{_T{_x}}$, 輸出forward hidden state $\vec{h1},...,\vec{h{_x}}$
* Backward RNN吃input $X_{_T{_x}},...,X_1$ (反向輸入), 輸出Backward hidden state $\overleftarrow{h_1},...,\overleftarrow{h_x}$
* 然後把 $\overleftarrow{h_j}$和$\vec{h_j}$拼起來就得到$h_j$
* 用雙向他們覺得比較能學到"周圍"的訊息, 也是因為RNN的特性, $h_j$比較能收集到$x_j$周圍上下文的訊息
## EXPERIMENT
* 都是用BLEU score來評斷
* 資料集是WMT ’14

* RNNenc就是傳統的Seq2Seq
* 50和30是拿來Train的句子字數 (一句50個字或者是30個字)
* Mini-batch SGD, batch=80 sentence

* UNK是指Unknown token, 指的是不在他們拿來Train的3萬個word的shortlist當中的字
* Moses是conventional phrase-based translation system
## Conclusion
* 他們的模型, RNNsearch超越了傳統的模型
* Seq2Seq能處理長度很長的句子了
* qualitative analysis是在研究RNNSearch產生出的soft-alignment, 並得出注意力有效的結論
* 表現也與SMT相當