簡介部分:
- 對於機器翻譯,之前的做法就是把輸入壓縮成一個向量,然後對這個encode後的向量進行decode,這種方法處理長句子比較難,尤其當句子的長度長於訓練集中的語料庫
- 本問提出的模型,當翻譯生成一個詞語的時候,我們在輸入的序列中找到與目標詞y(t)最相關的信息,模型預測目標基於這些位置信息的上下文的語義向量 以及 已預測出來的詞(y1,y2,...,y(t-1) ) 共同進行。
- 本文提出的模型與encoder-decoder 最大的區別在於,encoder-decoder模型在於把全部輸入的序列壓縮成一個固定的向量,而本文的提出的模型是選取輸入序列中的部分對目標詞進行預測
舉箇中譯英的例子:
我的/名字/叫做/推推
my name is tuitui
如果,我們要將 “名字” 翻譯 成 “name” ,輸入序列中 “名字” 對於翻譯結果 name,更加重要一些,這個就是attention的意思,注意力,集中在sequence的部分
背景:神經機器翻譯
- 目標是argmax p(y|x) , 有些文章提出了基於RNN(LSTM) 的模型取得了顯著的效果(state-of-the-art)
- RNN encoder-decoder模型
- 隱藏層單元部分,例如f 爲LSTM
- encoder部分,例如 q({h1,h2,..,hT})=hT,即取最後一個隱藏單元作爲輸入向量的壓縮結果
- decoder部分,根據c 和 先前預測出的y1,y2,....,yt-1 來預測 yt ,即,g是一個非線性函數,st 是隱藏單元
- 對於生成一個句子來(y1,y2,...,yT)說,即
3. 校準和翻譯 - 重點,本問提出的模型,有一些創新點
- encoder 部分:
採用了雙向RNN進行編碼,一個詞的前後信息都考慮進去
- decoder部分:
上面的圖看着還是有點模糊,我重新畫一個
我畫的圖,是基於 input sequence 的長度爲4,預測目標y1的過程
可以看到y1 由 c1,y0,s1 構成
s1 由 s0,y0,c1構成
c1 由 經過softmax 後的 e11,e12,e13,e14構成
注意 c的下標 和 目標y的下標是一致的 ; eij 表示 輸入部分第j個hidden unit 對 輸出第j個目標的重要性,當然,中間會涉及si-1
si 來傳遞到yj
具體公式文章中是如下說明的
模型的一些細節
- RNN的結構,採用了 gated hidden unit 結果,這個結構跟LSTM有點類似,作者也是受到LSTM啓發得來的,結構如下
reset gate
update gate
主要用於計算hidden unit
其中
一些說明:
當reset gate 趨近0的時候,就會忽略 h(t-1),丟掉一些不相關的信息
當update gate 用於記憶long-term信息
每個hidden unit 是有獨立的reset 和update gate
- align 模型
其中 v,w,u 都是權重矩陣,其中Ua*hj 可以預先算好,因爲和Si 沒有關係呢
- decoder 部分的si ,相比encoder部分的hiddencell, 多了一個Ci
初始的s0 爲
目標函數
refer:
https://arxiv.org/pdf/1409.0473.pdf NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
https://arxiv.org/pdf/1406.1078.pdf Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation