《Attention Is All You Need》
本文是對Google2017年發表於NIPS上的論文"Attention is all you need"的閱讀筆記.
對於深度學習中NLP問題,通常是將句子分詞後,轉化詞向量序列,轉為seq2seq問題.
-
RNN方案
採用RNN模型,通常是遞迴地進行 ,優點在於結構簡單,十分適合序列建模;缺點在於需要前一個輸出作為後一個的輸入參與運算,因此無法平行計算,速度很慢,且單向RNN只能獲取前向序列關係,需要採用雙向RNN才可以獲取完整的全域性資訊.
-
CNN方案
採用CNN模型,則是通過一個視窗(卷積核)來對整個序列進行遍歷, 只能獲取到區域性資訊,需要層疊來增大感受野.
本文提出了一種Transformer注意力機制,完全替代了RNN、CNN.
將A、B都取為X時,則稱為Self-Attention,即通過 和整個 進行關係運算最後得到 .
Attention層
Google給出瞭如下的Attention結構
其中, 時 的維數, 是 的維數,
當 較小時,採用點積和加法注意力機制的效果時相同的,當 較大時,點積的效果會下降很多,這是由於 較大時,點積產生的值會很大導致 陷入了飽和區,因此這裡除以了 .
通過self-attention,可以無視詞之間距離直接計算遠距離的兩個詞的依賴關係,從而能學習到整個句子的內部結構,並且相當於進行了句法分析.
Multi-Head Attention
多頭注意力機制就是重複進行
次(引數不共享),即採用不同的引數進行
次,捕獲不同子空間上的相關資訊,將最後的結果拼接起來,會產生更好的效果.
其中,