原文連接: http://www.javashuo.com/article/p-rkrvpfrg-nk.html
html
參考:注意力機制(Attention Mechanism)在天然語言處理中的應用
Attention函數的本質能夠被描述爲一個查詢(query)到一系列(鍵key-值value)對的映射
,以下圖。
在計算attention時主要分爲三步:web
query和每一個key進行類似度計算獲得權重
,經常使用的類似度函數有點積,拼接,感知機等;使用一個softmax函數對這些權重進行歸一化
;權重和相應的鍵值value進行加權求和獲得最後的attention
。Attention在NLP中其實我以爲能夠當作是一種自動加權,它能夠把兩個你想要聯繫起來的不一樣模塊,經過加權的形式進行聯繫。目前主流的計算公式
有如下幾種:
markdown
目前Attention在NLP中已經有普遍的應用。它有一個很大的優勢就是能夠可視化attention矩陣來告訴你們神經網絡在進行任務時關注了哪些部分。不過在NLP中的attention機制和人類的attention機制仍是有所區別,它基本仍是須要計算全部要處理的對象
,並額外用一個矩陣去存儲其權重,其實增長了開銷。而不是像人類同樣能夠忽略不想關注的部分,只去處理關注的部分。
網絡
也就是編碼-解碼模型。所謂編碼,就是將輸入序列轉化成一個固定長度的向量;解碼,就是將以前生成的固定向量再轉化成輸出序列。
具體實現的時候,編碼器和解碼器都不是固定的,可選的有CNN/RNN/BiRNN/GRU/LSTM等等,你能夠自由組合。好比說,你在編碼時使用BiRNN,解碼時使用RNN,或者在編碼時使用RNN,解碼時使用LSTM等等。app
通常其做用爲在給定context vector c和全部已預測的詞
去預測
,故t時刻翻譯的結果y爲如下的聯合機率分佈
框架
在RNN中(如上圖所示),t時刻隱藏狀態
爲:
svg
而聯合條件分佈爲:
函數
使用傳統編碼器-解碼器的RNN模型先用一些LSTM單元來對輸入序列進行學習,編碼爲固定長度的向量表示;而後再用一些LSTM單元來讀取這種向量表示並解碼爲輸出序列。性能
採用這種結構的模型在許多比較難的序列預測問題(如文本翻譯)上都取得了最好的結果,所以迅速成爲了目前的主流方法。學習
這種結構在不少其餘的領域上也取得了不錯的結果。然而,它存在的一個問題在於:輸入序列不論長短都會被編碼成一個固定長度的向量表示,而解碼則受限於該固定長度的向量表示。
這個問題限制了模型的性能,尤爲是當輸入序列比較長時,模型的性能會變得不好(在文本翻譯任務上表現爲待翻譯的原始文本長度過長時翻譯質量較差)。
「一個潛在的問題是,採用編碼器-解碼器結構的神經網絡模型須要將輸入序列中的必要信息表示爲一個固定長度的向量,而當輸入序列很長時則難以保留所有的必要信息(由於太多),尤爲是當輸入序列的長度比訓練數據集中的更長時。」
參考博文:深度學習筆記(六):Encoder-Decoder模型和Attention模型
這篇論文中首次將attention用到了nlp領域,論文中提出了一個想法,目前機器翻譯的瓶頸在於不管是多長的輸入,你們的廣泛作法都是將全部輸入經過一些方法合併成一個固定長度的向量去表示這個句子,這會形成的問題是,若是句子很長,那麼這樣的方法去做爲decoder的輸入,效果並不會很好。
該論文提出的加入attention的模型:
相比於以前的encoder-decoder模型,attention模型最大的區別就在於它不在要求編碼器將全部輸入信息都編碼進一個固定長度的向量之中。相反,此時編碼器須要將輸入編碼成一個向量的序列,而在解碼的時候,每一步都會選擇性的從向量序列中挑選一個子集進行進一步處理。這樣,在產生每個輸出的時候,都可以作到充分利用輸入序列攜帶的信息。並且這種方法在翻譯任務中取得了很是不錯的成果。
此處並無不少特殊,使用雙向LSTM,第j個隱藏狀態
只能攜帶第j個單詞自己以及以前的一些信息;而若是逆序輸入,則
包含第j個單詞及以後的一些信息。若是把這兩個結合起來,
就包含了第 j 個輸入和先後的信息。
1.2.1 context vector c
解碼過程與傳統encoder-decoder模型相同,只不過context vector c
變爲了
其中的
是對每個輸入的
encoder後的隱狀態進行weighted sum(如上圖所示)
的值越高,表示第i個輸出在第j個輸入上分配的注意力越多,在生成第i個輸出的時候受第j個輸入的影響也就越大。
:encoder i處隱狀態和decoder j-1 處的隱狀態的匹配 match,此處的 alignment model a 是和其餘神經網絡一塊兒去訓練(即 joint learning),其反映了 的重要性
1.2.2 其他部分
其他部分均與傳統相同,y的聯合機率分佈
以前已經提過,每一個輸出都有一個長爲Tx的注意力向量,那麼將這些向量合起來看,就是一個矩陣。對其進行可視化,獲得以下結果
其中x軸表示待翻譯的句子中的單詞(英語),y軸表示翻譯之後的句子中的單詞(法語)。能夠看到儘管從英語到法語的過程當中,有些單詞的順序發生了變化,可是attention模型仍然很好的找到了合適的位置。換句話說,就是兩種語言下的單詞「對齊」了。所以,也有人把注意力模型叫作對齊(alignment)模型。並且像比於用語言學實現的硬對齊,這種基於機率的軟對齊更加優雅,由於可以更全面的考慮到上下文的語境。
這篇論文的看點:擴展attention的計算方式
,還有就是局部的attention
方法
文中提出了兩種注意力機制,global attention和local attention
這和上一篇論文提出的attention的思路是同樣的,它都是對源語言對全部詞進行處理,不一樣的是在計算attention
矩陣值的時候,他提出了幾種簡單的擴展版本
。在他們最後的實驗中general的計算方法效果是最好的。
靈感來自於圖像中的soft attention和hard attention,soft attention對於源圖片中每一小塊都進行權重的求和,計算較爲費時,而hard attention則計算圖像區域 a 在時刻 t 被選中做爲輸入decoder的信息的機率,有且僅有1個區域被選中,它不可微分,需更加複雜的處理。
local attention是一種介於soft和hard之間的方式,使用了一我的工經驗設定的參數D去選擇一個以
爲中心,
爲窗口的區域,進行對應向量的weighted sum,故不像global attention,local alignment vector
的維數是固定的,不隨輸入序列長度變化而變化,它的維度固定爲2D+1
此處使用了兩種方法去選擇 :
單調對應(Monotonic alignment)
: 設定
Predictive alignment
: 求和更加的偏好靠近位置
附近的向量
,又在求和時加入了一個高斯函數,該函數u =
,使得
周圍的向量獲得的權重更大,(s即爲通常公式中的x,
爲u,
爲高斯分佈峯值) 3.模型具體實現
將隱狀態
與
進行拼接,產生輸出
最後t時刻的輸出
論文結果中,dot對於global更好,general對於local更好,-m表示Monotonic alignment,-p表示Predictive alignment
所謂Soft,意思是在求注意力分配機率分佈的時候,對於輸入句子X中任意一個單詞都給出個機率,是個機率分佈。
既然Soft是給每一個單詞都賦予一個單詞對齊機率,那麼若是不這樣作,直接從輸入句子裏面找到某個特定的單詞,而後把目標句子單詞和這個單詞對齊,而其它輸入句子中的單詞硬性地認爲對齊機率爲0,這就是Hard Attention Model的思想。
Hard AM在圖像裏證實有用,可是估計在文本里面用處不大,由於這種單詞一一對齊明顯要求過高,若是對不齊對後續處理負面影響很大,因此你在NLP的文獻裏看不到用Hard AM的,估計你們都試過了,效果很差。
Soft AM要求輸入句子每一個單詞都要賦予單詞對齊機率,Hard AM要求從輸入句子中精確地找到一個單詞來和輸出單詞對齊,那麼能夠放鬆Hard的條件,先找到Hard AM在輸入句子中單詞對齊的那個單詞大體位置,而後以這個單詞做爲軸心,向左向右拓展出一個大小爲D的窗口,在這個2D+1窗口內的單詞內進行相似Soft AM的對齊機率計算便可。
這篇論文就提出了3中在CNN中使用attention的方法,是attention在CNN中較早的探索性工做。
attention機制將不一樣cnn通道的句對聯繫起來
。該論文提出了三種注意力機制
兩個句子的向量表示
進行match生成attention矩陣,在卷積以前
,加入attention矩陣,與表示矩陣s一塊兒進行訓練。
在卷積後
,對於卷積完成的兩個矩陣,進行match,match後按照行和列的求和生成兩個矩陣各自的權重,再使用權重對其進行
對於1和2的共同使用
本文提出了三種用於卷積神經網絡的注意力機制來進行句子對建模,並在三個常見任務上達到了較好的效果,體現了方法的泛化能力。同時也做者也指出,在三個任務上,兩層注意力網絡並不會明顯優於一層注意力網絡,多是因爲相關數據集較小的緣由。總的來講,在天然語言處理的相關任務上,卷積神經網絡上的注意力機制研究相比長短時記憶網絡(LSTM)來講還相對較少,本文是一個較爲不錯的實現方式。
參考:一文讀懂「Attention is All You Need」| 附代碼實現
天然語言處理中的自注意力機制(Self-attention Mechanism)
這篇論文主要亮點在於: