注意力的種類有如下四種:
- 加法注意力, Bahdanau Attention
- 點乘注意力, Luong Attention
- 自注意力, Self-Attention
- 多頭點乘注意力, Multi-Head Dot Product Attention(請轉至Transformer模型)
1. Bahdanau Attention
Neural Machine Translation by Jointly Learning to Align and Translate, Bahdanau et al, ICLR 2015
總覽
2015年發布的論文,首次提出注意力機制,也就是加法注意力,並將其應用在機器翻譯領域。
當前工作的不足
目前NMT主流的方法是seq2seq方法,具體采用的是encoder-decoder模型。但是在編解碼模型中編碼得到的是固定長度的context vector,這是當前seq2seq的瓶頸。
本文提出聯合學習對齊和翻譯的方法:
- 對齊:在預測每一個target word的時候都去search源句子中一個部分
- 翻譯:根據對齊的部分動態生成c,然后基於c和上一個target word生成當前的target word
模型
下圖展示了在預測target word \(o_t\)時從源句子隱藏狀態動態生成上下文向量的過程。
首先根據對齊模型\(a\),給每個源隱藏狀態\(h_j\)生成一個權重系數\(e_{tj}\):
然后將所有權重系數進行softmax歸一化得到各個源隱藏狀態的注意力權重:
計算注意力權重和各個源隱藏狀態的加權和,得到預測\(o_t\)的注意力向量:
然后根據注意力向量進行預測:
文章在這里對g進行了解釋:g是非線性的,可能是多層的函數。
結論
通過注意力機制,避免了encoder將整個句子的語義信息編碼成一個固定長度的上下文向量,並在翻譯時將注意力集中到和下一個目標詞相關的信息上。在長句子上,此方法的提升尤為突出。
下圖展示了注意力機制的可視化:
簡單解釋下:x和y軸分別表示源句子(英語)和生成的句子(法語),權重系數通過像素的灰度值來刻畫,1表示全白,0表示全黑。
文章最后提出,未來的工作是處理一些罕見詞。
2. Luong Attention
Effective Approaches to Attention-based Neural Machine Translation, Luong, EMNLP 2015
總覽
Luong提出了全局和局部注意力(這里只討論全局注意力),本文提出了新的權重系數計算方法,大大提高了成績。
當前工作存在的不足
本文繼Bahdanau之后繼續研究注意力,在此根據對齊時,覆蓋所有范圍和部分范圍,提出了全局注意力(global attention)和局部注意力(local attention)。
模型
全局注意力和局部注意力的區別是生成注意力向量的方式不同,后續工作都是一樣的。
下圖展示了全局注意力的完整生成過程:
在這里,權重系數直接根據目標隱藏狀態\(h_t\)和源隱藏狀態\(\overline h_s\)計算得到,計算方法有以下幾種:
然后將分數進行歸一化:
文中沒有給出注意力向量的計算過程,可以參考Bahdanau注意力的計算過程,通過加權和得到注意力向量\(c_t\)
將注意力向量和隱藏狀態\(h_t\)簡單拼接,輸入到全連接層,得到隱藏狀態\(\tilde h_t\):
根據這個隱藏狀態即可得到最后的輸出:
總結&相比Bahdanau的優勢
無論是全局注意力還是局部注意力,Luong都提出了多種權重系數計算方式,最后的實驗結果表示:對於全局注意力,dot的方式是最好的;對於局部注意力,general的方式最好。
但是可以看出無論是哪一種計算方式,都不再需要預先計算出\(s_{t-1}\)了,這樣就可以實現並行化計算,大大提高了計算速度。
3. Self-Attention
A Structured Self-Attentive Sentence Embedding, Zhouhan Lin et al, ICLR 2017
總覽
本文提出使用自注意力機制計算不同注意力系數作用下的句子嵌入(sentence embedding)。
然后將得到的句子嵌入應用到多個NLP任務(author profiling, sentiment classification, textual entailment)中去。
自注意力是注意力機制的一種特例:因為自注意力的源隱藏狀態和目標隱藏狀態的來源相同。
模型
模型的結構如下圖所示:
從圖中可以看出,如果只考慮一種句子嵌入,雙向LSTM的輸出為H,那么模型的注意力權重計算如下所示:
上式中,\(W_{s_2} \in \Bbb R^{1 \times d_a}\),\(W_{s_1}\in \Bbb R^{d_a \times 2u}\),\(H \in \Bbb R^{n \times 2u}\),\(d_a\)是超參數
此時如果考慮多種句子嵌入,那么
此時,\(W_{s_2} \in \Bbb R^{r \times d_a}\),那么就得到r套注意力權重,計算其和源隱藏狀態加權和就得到多種句子嵌入:
這就是最后的句子嵌入矩陣。