# 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)$ ![](https://i.imgur.com/RCtwSTX.jpg) ### 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 ![](https://i.imgur.com/Yfq9jpN.jpg) * RNNenc就是傳統的Seq2Seq * 50和30是拿來Train的句子字數 (一句50個字或者是30個字) * Mini-batch SGD, batch=80 sentence ![](https://i.imgur.com/HgIU7HK.jpg) * UNK是指Unknown token, 指的是不在他們拿來Train的3萬個word的shortlist當中的字 * Moses是conventional phrase-based translation system ## Conclusion * 他們的模型, RNNsearch超越了傳統的模型 * Seq2Seq能處理長度很長的句子了 * qualitative analysis是在研究RNNSearch產生出的soft-alignment, 並得出注意力有效的結論 * 表現也與SMT相當