前面闡述注意力理論知識,后面簡單描述PyTorch利用注意力實現機器翻譯
Effective Approaches to Attention-based Neural Machine Translation
簡介
Attention介紹
在翻譯的時候,選擇性的選擇一些重要信息。詳情看這篇文章 。
本着簡單和有效的原則,本論文提出了兩種注意力機制
。
Global
每次翻譯時,都選擇關注所有的單詞。和Bahdanau的方式 有點相似,但是更簡單些。簡單原理介紹。
Local
每次翻譯時,只選擇關注一部分的單詞。介於soft和hard注意力之間。(soft和hard見別的論文)。
優點有下面幾個
- 比Global和Soft更好計算
- 局部注意力 隨處可見、可微,更好實現和訓練。
應用范圍
在訓練神經網絡的時候,注意力機制應用十分廣泛。讓模型在不同的形式之間,學習對齊等等。有下面一些領域:
- 機器翻譯
- 語音識別
- 圖片描述
- between image objects and agent actions in the dynamic control problem (不懂,以后再說吧)
神經機器翻譯
思想
輸入句子x=(x1,x2,⋯,xn)x=(x1,x2,⋯,xn) ,輸出目標句子y=(y1,y2,⋯,ym)y=(y1,y2,⋯,ym) 。
神經機器翻譯(Neural machine translation, NMT),利用神經網絡,直接對p(y∣x)p(y∣x) 進行建模。一般由Encoder和Decoder構成。Encoder-Decoder介紹文章鏈接 。
Encoder把輸入句子xx 編碼成一個語義向量ss (c表示也可以),然后由Decoder 一個一個產生目標單詞 yiyilogp(y∣x)=m∑j=1logp(yj∣y<j,s)=m∑j=1logp(yj∣y1,⋯,yj−1,s)logp(y∣x)=∑j=1mlogp(yj∣y<j,s)=∑j=1mlogp(yj∣y1,⋯,yj−1,s)但是怎么選擇Encoder和Decoder(RNN, CNN, GRU, LSTM),怎么去生成語義ss卻有很多選擇。
概率計算
結合Decoder上一時刻的隱狀態hj−1hj−1和encoder給的語義向量ss,通過函數ff ,就可以計算出當前的隱狀態hjhj :hj=f(hj−1,s)hj=f(hj−1,s)通過函數gg對當前隱狀態hjhj進行轉換,再softmax
,就可以得到翻譯的目標單詞yiyi了(選概率最大的那個)。
gg一般是線性變換,維數變化是[1,h]→[1,vocab_size][1,h]→[1,vocab_size]。p(yj∣y<j,s)=softmaxg(hj)p(yj∣y<j,s)=softmaxg(hj)語義向量ss 會貫穿整個翻譯的過程,每一步翻譯都會使用到語義向量的內容,這就是注意力機制
。
本論文的模型
本論文采用stack LSTM的構建NMT系統。如下所示:
訓練目標是Jt=∑(x,y)−logp(y∣x)Jt=∑(x,y)−logp(y∣x)
注意力模型
注意力模型廣義上分為global
和local
。Global的attention來自於整個序列,而local的只來自於序列的一部分。
解碼總體流程
Decoder時,在時刻tt,要翻譯出單詞ytyt ,如下步驟:
- 最頂層LSTM的隱狀態 htht
- 計算帶有原句子信息語義向量ctct。Global和Local的區別在於ctct的計算方式不同
- 串聯ht,ctht,ct,計算得到帶有注意力的隱狀態 ^ht=tanh(Wc[ct;ht])h^t=tanh(Wc[ct;ht])
- 通過注意力隱狀態得到預測概率 p(yt∣y<t,x)=softmax(Ws^ht)p(yt∣y<t,x)=softmax(Wsh^t)
Global Attention
總體思路
在計算ctct 的時候,會考慮整個encoder的隱狀態。Decoder當前隱狀態htht, Encoder時刻s的隱狀態¯hsh¯s。
對齊向量αtαt代表時刻tt 輸入序列中的單詞對當前單詞ytyt 的對齊概率,長度是TxTx, 隨着輸入句子的長度而改變 。xsxs與ytyt 的對齊概率如下:αt(s)=align(ht,¯hs)=score(ht,¯hs)∑Txi=1score(ht,¯hi),實