論文筆記:Attention

論文筆記:Attention

來自專欄 NLP 論文筆記5 人贊了文章

論文鏈接:Neural Machine Translation by Jointly Learning to Align and Translate

一句話解釋 Attention:mlp + softmax


一、模型提出的背景

在之前介紹的 encoder-decoder 和 seq2seq 中,都是將輸入的序列編碼成一個固定長度的 vector,再對它進行解碼。這樣會有一個性能瓶頸,特別是在句子長度大於訓練的語料句長度時。於是,論文在原來的模型基礎上,提出了 attention 機制。

原有的模型是通過中間的固定長度的向量 C,將 source 和 target 連接起來的;

本文的模型,則是通過 attention,將 source 和 target 鏈接起來。

圖 1. 論文模型

二、模型的流程

1,編碼:使用雙向的循環神經網路

如圖 1 下面的框框,具體的流程是使用一個前向 RNN 和一個後面 RNN。

前向 RNN 正序讀取輸入(X 從 1 到 T),如,讀取 X1,得到 h1(->)。

後向 RNN 逆序讀取輸入(X 從 T 到 1),如,讀取 X1,得到 h1(<-)。

然後將 h1(->) 和 h1(<-) 拼接到一起,得到 h1。就是一個完整的編碼過程。

圖 2

2,解碼過程

圖 3

第一篇 encoder-decoder 的模型大概是圖 3 這個樣子。其中 y 是上一時刻的輸出,s 是當前時間的隱藏狀態,c 是中間向量。

論文中唯一的不同點是將中間的固定長度的向量 c 換成了由 attention 得到的向量 c(i),如圖 4 所示。

圖 4

其中的 c(i) 的計算過程如圖 5:

圖 5

其實是一個 「mlp + softmax + 加權求和」 的過程(圖 5 從下往上看)。

其中的 i 表示第 i 個輸出,j 表示第 j 個輸入,s 表示編碼和的隱藏狀態,a 表示激活函數。

可以看到,e(ij)、a(ij)、c(i) 反映了輸入 hj 相對於先前的輸出隱藏狀態 s(i-1) 在決定下一狀態 s(i) 和產生 y(i) 時的重要性。直觀上看,這實現了解碼器中的注意力機制。


這裡我有個疑問:decoder 的初始隱藏狀態 s0 和 初始輸出 y0 是啥?

三、後記

可以看到,在 softmax 的公式中,分母每次都是除以所有的輸入,這將會造成相當大的計算量。所以又有人提出了 attention 優化。相關的論文將在今晚或者明天會去看。

這篇筆記我覺得寫得比較簡單吧,寫的都是我自己的理解。不知道我有沒有把流程講清楚。。

參考鏈接

NLP 筆記 - Neural Machine Translation

神經網路機器翻譯Neural Machine Translation(2): Attention Mechanism


推薦閱讀:

機器學習演算法:邏輯回歸
交叉熵、相對熵及KL散度通俗理解
直觀理解正則化
SVM問題定義、推導
如何用Python和機器學習訓練中文文本情感分類模型?

TAG:深度學習DeepLearning | 機器學習 | 自然語言處理 |