論文原文鎮四方,大神護我科研順利,頂會約稿~~
這是注意力機制落地到自然語言處理的一篇論文,好像是第一篇,沒有考究。
論文中心思想:在傳統的機器翻譯模型(encoder-decoder)中的decoder中加入注意力機制,使得在解碼時不再使用同一段中間向量,而是有針對地對譯文中每一個詞使用與原文相對的內容來生成的中間向量。
以下先解讀論文內容(注重點爲注意力機制),再從中抽象出注意力機制的中心思想,不再拘泥於機器翻譯。
背景:神經機器翻譯
從概率的角度看,翻譯其實是基於條件x(原句子)找到最大概率的目標句子y。
後來,神經網絡的興起,編碼器解碼器模型的誕生,成爲了一種新興的方法,先通過將原句編碼成一段定長的中間向量,再根據中間向量以及已有譯文來進行進行譯文生成。
RNN Encoder-Decoder
簡單介紹一下傳統模型,因爲之後的注意力模型是基於這種模型進行改良的。
在Encoder-Decoder模型中,編碼器把輸入句子x(x1,x2,..,xTx),嵌入成c,最常見的方法就是使用RNN,例如:
其中是時序 t 的隱藏狀態,c是一個由隱藏狀態生成的向量。f,q是一些非線性的函數,例如LSTM。
解碼器通常訓練基於上下文向量c和所有已經預測的詞語{y1,...,yt'-1}來預測下一個詞yt',如下式:
其中,通過RNN,每一個條件概率建模爲:
其中g是一個潛在多層的非線性函數,輸出是的概率,st是RNN的隱藏狀態。
值得一提的是,用其他結構也是可以的,不一定RNN。
學習對齊與翻譯(注意力機制)
在這篇論文中,這羣大佬提出了這麼一個新模型,這個模型由雙向的RNN作爲編碼器,以及一個在解碼過程中模擬通過原句進行搜索的解碼器(注意力的思想就是在這裏得到體現)。
Decoder
在新模型中,他們把每個條件概率定義爲:
其中,si是一個RNN在時序 i 的隱藏狀態,由下式計算得:
文中,大佬在寫到這裏時,敲了敲黑板,畫了個重點(原文:It should be noted that.......,不是我胡說的,手動滑稽)。注意到在模型中,c不再是一樣的,而是會變的。因爲 hi 會更多地留意到輸入裏 i 時序附近的信息,由下式計算得:
(注意力其實就是在這裏得到體現,輸入中的不同時序的信息得到了不同權重的關注)
其中,hj的每一個權重阿爾法ij等於:
其中,
這個eij其實就是一個位置 i 的譯文與位置 j 的原文的一個對齊分數;阿爾法ij則反映了hj與譯文si-1的一個重要程度。
Encoder
使用雙向RNN編碼,每個時序的隱藏狀態爲串聯此時序的前向與後向的隱藏狀態。如:前向的隱藏狀態爲fi,後向的隱藏狀態爲bi,那麼,hj=[fi,bi]。
至此,文章的解讀結束,因爲後面都是一些實驗結果和分析,看原文即可。以下介紹注意力機制的思想。
注意力機制
由文中的decoder中可以看見,他們計算了每一個輸出與輸入中對齊程度,然後按權重對信息求和,得到所關注的信息,這個就是注意力的體現之處。
總結起來,注意力機制其實就是四個字:加權求和。
通過一個函數計算出每個位序的分數,然後計算權重,再加權求和。
在很多注意力機制的使用中,就是通過一個非線性的多層感知機模型來得到分數,再按上面的式子求出阿爾法,加權求和得到c即可。
總結
注意力的提出,使得文本中不再是均勻地處理每一位的信息,而是有關注地使用信息,主要思想就是對提取到的特徵進行加權,權值的計算一般通過神經網絡,因爲這樣就可以通過反向傳播來實現訓練。
這條公式很關鍵,注意力就是從這裏來的。