這篇論文主要是提出了Global attention 和 Local attention
這個論文有一個譯文,不過我沒細看
Effective Approaches to Attention-based Neural Machine Translation 中英文對照翻譯 - 一譯的文章 - 知乎
https://zhuanlan.zhihu.com/p/38205832
看這個論文的時候我主要是從第三小節開始看起的,也就是 attention-based models
我們基於attention機制的模型大致上可以分為廣泛的兩類:一類就是全局attention,一類就是局部attention。這兩類的區分點在於attention是基於原始句子的全部位置,還是原始句子中一部分位置。
在這篇論文中的attention,獲得解碼器在t時刻真正的隱層輸出的過程是這樣的:
\(\vec{h_{t}}=tanh(W_{c}[c_{t};h_{t}])\)
對於這個公式,需要注意的一點就是說\(\vec{h_{t}}\)對應的是解碼器在t時刻真正的隱層的輸出,也是下一個時刻t+1時刻的隱層輸入之一;
而\(h_{t}\)對應的則是t時刻的初始隱層輸出。
這里有一個初始隱層輸出\(h_{t}\),我們使用這個變量和編碼器的所有時刻的隱層輸出進行權重和的操作得到環境向量\(c_{t}\).
之前那個論文的操作是對解碼器t-1時刻的隱層輸出和編碼器所有的隱層輸出進行操作得到權重和,這個作為環境向量。(寫到這里我產生了一個疑問,就是說對於解碼器,它的輸入對應的究竟有什么)
在這個論文中,解碼器的輸入包含上一層真正的隱層輸出\(\vec{h_{t}}\)和上個單詞
在之前那篇論文中,我現在的理解就是應該是有這上一個單詞,上一層隱層,和上一層產生的環境向量,可以看一下相關的圖片理解一下這個問題。
得到t時刻真正的隱層輸出之后,我們想要得到預測出來的單詞怎么做呢?
這篇論文中是這么操作的,對真正的隱層輸出(這個隱層輸出已經使用到了環境向量)加上一個softmax層,公式大概是這樣的:
\(p(y_{t}|y_{<t},x)=softmax(W_{s}\vec{h_{t})}\)
接下來,會詳細介紹一個全局attention和局部attention是如何產生環境向量\(c_{t}\)
對於全局attention,它是考慮所有的輸入單詞的,公式大概是這樣的:
\(a_{t}(s) = align(h_{t},\vec{h_{s})}=\frac{exp(score(h_{t},\vec{h_{s}}))}{\sum_{s^{'}}exp(score(h_{t},\vec{h_{s}}))}\)
講到這里,我們就知道現在最重要的就是,我們如何獲得\(score(h_{t},\vec{h_{s}})\).
一般來說,我們有三種方式可以計算這個分式。
第一種 dot:
\(score(h_{t},\vec{h_{s}})=h_{t}^{T}\vec{h_{s}}\)
這個公式怎么理解呢?
\(\vec{h_{s}}\)表示為其中編碼器的一個隱層狀態,size應該是\([n_h,1],n_h\)代表的是隱層神經元的個數。然后\(h_{t}^{T}\)。\(h_{t}\)在t時刻的解碼器隱層的輸出,注意這里是直接的隱層輸出,而是我們上面說的真正的隱層輸出。size是\([n_h,1]\)。兩者dot,得到一個值。
第二種方式 general:
\(score(h_{t},\vec{h_{s}})=h_{t}^{T}W_{a}\vec{h_{s}}\)
對於這種,增加了一個參數\(W_{a}\)
第三種方式 concat:
\(score(h_{t},\vec{h_{s}})=v_{a}^{T}tanh(W_{a}[h_{t};\vec{h_{s}}])\)
這種方法就簡單來講就是單層的多層感知機
還有一種方式我們稱之為 location-based:
\(a_{t} = softmax(W_{a}h_{t})\)。這個直接得到所有的權重了。注意這里是\(a_{t}\)不是\(a_{t}(s)\)
局部attention
作者在論文中說,自己提出來全局attention和局部attention是來源於soft和hard attention,soft和hard attention是從圖片領域擴展過來的概念。
局部attention原理是把注意力放在一個小窗口內的句子內容,而不是全部內容。這個局部內容是這樣獲取的。首先模型為每一個目標時刻單詞產生一個對齊位置\(p_{t}\),然后我們找到一個窗口區間[p_{t}-D,p_{t}+D];D靠經驗獲得,在這個區間內容的內容產生我們的環境向量。
在局部attention下,我們有兩種模式。
第一種就是Monotonic(中文叫做無變化的)的對齊模型,local-m,我們簡簡單單的就令\(p_{t}=t\),這個公式的意思就是我們認為目標單詞和我們的元單詞是一一對應的。
另一種就是Predictive對齊模型(local-p),我們使用下面的公式預測\(p_{t}\):
\(p_{t}=S*sigmoid(v_{p}^{T}tanh(W_{p}h_{t}))\)
\(W_{p}\)和\(v_{p}\)屬於模型參數,是會在訓練過程中被學習更新的。\(S\)代表的是原始句子長度。sigmoid之后,\(p_{t}\)的范圍是\([0,S]\)
為了讓我們的對齊點更加的接近\(p_{t}\),我們以\(p_{t}\)為中心點,加上了一個高斯分布,標准差\(\sigma=\frac{D}{2}\):
\(a_t(s)=align(h_{t},\vec{h_{s}})exp(-\frac{(s-p_{t}^2)}{2\sigma^2})\)
要注意\(p_{t}\)是一個真實的值,\(s\)是處於窗口空間的整數
參考1 寫的不錯