DL之Attention:Attention注意力機制的簡介、應用領域之詳細攻略
相關文章
Paper:翻譯并解讀《Attention Is All You Need》源自2017年的Google機器翻譯團隊
?
? ? ? ? 注意力機制(Attention Mechanism)源于對人類視覺的研究。在認知科學中,由于信息處理的瓶頸,人類會選擇性地關注所有信息的一部分,同時忽略其他可見的信息。上述機制通常被稱為注意力機制。人類視網(wǎng)膜不同的部位具有不同程度的信息處理能力,即敏銳度(Acuity),只有視網(wǎng)膜中央凹部位具有最強的敏銳度。為了合理利用有限的視覺信息處理資源,人類需要選擇視覺區(qū)域中的特定部分,然后集中關注它。例如,人們在閱讀時,通常只有少量要被讀取的詞會被關注和處理。綜上,注意力機制主要有兩個方面:決定需要關注輸入的哪部分;分配有限的信息處理資源給重要的部分。
? ? ? ? Attention機制最早是在視覺圖像領域提出來的,但是真正火起來應該算是2014年google mind團隊的論文《Recurrent Models of Visual Attention》,他們在RNN模型上使用了attention機制來進行圖像分類。隨后,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》中,使用類似attention的機制在機器翻譯任務上將翻譯和對齊同時進行,他們的工作算是第一個將attention機制應用到NLP領域中。接著attention機制被廣泛應用在基于RNN/CNN等神經(jīng)網(wǎng)絡模型的各種NLP任務中。2017年,google機器翻譯團隊發(fā)表的《Attention is all you need》中大量使用了自注意力(self-attention)機制來學習文本表示。
關于注意力機制的更多細節(jié),可以參考原始論文《Neural Machine Translation by Jointly Learning to Align and Translate》。
此外還有改進 版的注意力機制《Effective Approaches to Attention-based Neural Machine Translation》。
論文地址:http://cn.arxiv.org/pdf/1409.0473v7
以下主要轉自知乎:目前主流的attention方法都有哪些?
? ? ? ?根據(jù)通用近似定理,前饋網(wǎng)絡和循環(huán)網(wǎng)絡都有很強的能力。但為什么還要引入注意力機制呢?
可以借助人腦處理信息過載的方式,例如Attention機制可以提高神經(jīng)網(wǎng)絡處理信息的能力。
? ? ? ?當用神經(jīng)網(wǎng)絡來處理大量的輸入信息時,也可以借鑒人腦的注意力機制,只 選擇一些關鍵的信息輸入進行處理,來提高神經(jīng)網(wǎng)絡的效率。按照認知神經(jīng)學中的注意力,可以總體上分為兩類:
? ? ? ?在人工神經(jīng)網(wǎng)絡中,注意力機制一般就特指聚焦式注意力。
? ? ? ?Attention機制的實質(zhì)其實就是一個尋址(addressing)的過程,如上圖所示:給定一個和任務相關的查詢Query向量 q,通過計算與Key的注意力分布并附加在Value上,從而計算Attention Value。
? ? ? ?這個過程實際上是Attention機制緩解神經(jīng)網(wǎng)絡模型復雜度的體現(xiàn):不需要將所有的N個輸入信息都輸入到神經(jīng)網(wǎng)絡進行計算,只需要從X中選擇一些和任務相關的信息輸入給神經(jīng)網(wǎng)絡。
注意力機制可以分為三步:一是信息輸入;二是計算注意力分布α;三是根據(jù)注意力分布α 來計算輸入信息的加權平均。
step1-信息輸入 | N個信息輸入,X=[x1,x2……xN] |
step2-注意力分布計算 | 令Key=Value=X,則可給出注意力分布 αi=softamx(s(keyi,q))=softamx(s(Xi,q)) 將αi稱為注意力分布(概率分布),s(Xi,q)為注意力打分機制,打分機制常見的有: |
step3-信息加權平均 | 注意力分布αi可以解釋為在上下文查詢q時,第i個信息受關注的程度,采用一種“軟性”的信息選擇機制,對輸入信息X進行編碼為 這種編碼方式為軟性注意力機制(soft Attention),軟性注意力機制有兩種:普通模式(Key=Value=X)和鍵值對模式(Key!=Value)。 |
與普通的Attention機制(上圖左)相比,Attention機制常見的變種有:
變種1-硬性注意力 | ? ? ? ? 之前提到的注意力是軟性注意力,其選擇的信息是所有輸入信息在注意力 分布下的期望。還有一種注意力是只關注到某一個位置上的信息,叫做硬性注意力(hard attention)。
硬性注意力的缺點:硬性注意力的一個缺點是基于最大采樣或隨機采樣的方式來選擇信息。因此最終的損失函數(shù)與注意力分布之間的函數(shù)關系不可導,因此無法使用在反向傳播算法進行訓練。 |
變種2-鍵值對注意力 | 即上圖右邊的鍵值對模式,此時Key!=Value,注意力函數(shù)變?yōu)?/p> |
變種3-多頭注意力 | 多頭注意力(multi-head attention)是利用多個查詢Q = [q1, · · · , qM],來平行地計算從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分,然后再進行拼接: |
1、卷積或循環(huán)神經(jīng)網(wǎng)絡難道不能處理長距離序列嗎?
? ? ? 當使用神經(jīng)網(wǎng)絡來處理一個變長的向量序列時,我們通常可以使用卷積網(wǎng)絡或循環(huán)網(wǎng)絡進行編碼來得到一個相同長度的輸出向量序列,如圖所示
? ? ? 從上圖可以看出,無論卷積還是循環(huán)神經(jīng)網(wǎng)絡其實都是對變長序列的一種“局部編碼”:卷積神經(jīng)網(wǎng)絡顯然是基于N-gram的局部編碼;而對于循環(huán)神經(jīng)網(wǎng)絡,由于梯度消失等問題也只能建立短距離依賴。
2、要解決這種短距離依賴的“局部編碼”問題,從而對輸入序列建立長距離依賴關系,有哪些辦法呢?
? ? ? ?如果要建立輸入序列之間的長距離依賴關系,可以使用以下兩種方法:一 種方法是增加網(wǎng)絡的層數(shù),通過一個深層網(wǎng)絡來獲取遠距離的信息交互,另一種方法是使用全連接網(wǎng)絡。 ——《神經(jīng)網(wǎng)絡與深度學習》
? ? ? ?由上圖可以看出,全連接網(wǎng)絡雖然是一種非常直接的建模遠距離依賴的模型, 但是無法處理變長的輸入序列。不同的輸入長度,其連接權重的大小也是不同的。
? ? ? ?這時我們就可以利用注意力機制來“動態(tài)”地生成不同連接的權重,這就是自注意力模型(self-attention model)。由于自注意力模型的權重是動態(tài)生成的,因此可以處理變長的信息序列。
? ? ? ?總體來說,為什么自注意力模型(self-Attention model)如此強大:利用注意力機制來“動態(tài)”地生成不同連接的權重,從而處理變長的信息序列。
3、自注意力模型(self-Attention model)具體的計算流程是怎樣的呢?
? ? ? ?同樣,給出信息輸入:用X = [x1, · · · , xN ]表示N 個輸入信息;通過線性變換得到為查詢向量序列,鍵向量序列和值向量序列,
? ? ? 公式可以看出,self-Attention中的Q是對自身(self)輸入的變換,而在傳統(tǒng)的Attention中,Q來自于外部。
注意力計算公式為:
自注意力模型(self-Attention model)中,通常使用縮放點積來作為注意力打分函數(shù),輸出向量序列可以寫為
? ? ? ? 注意力機制最成功的應用是機器翻譯?;谏窠?jīng)網(wǎng)絡的機器翻譯模型也叫做神經(jīng)機器翻譯(Neural Machine Translation,NMT)。一般的神經(jīng)機器翻譯模型采用“編碼-解碼”的方式進行序列到序列的轉換。這種方式有兩個問題:
? ? ? ? 通過引入注意力機制,我們將源語言中每個位置的信息都保存下來。在解碼過程中生成每一個目標語言的單詞時,我們都通過注意力機制,直接從源語言的信息中選擇相關的信息作為輔助。這樣的方式就可以有效地解決上面的兩個問題。
? ? ? ? 圖像描述生成是輸入一幅圖像,輸出這幅圖像對應的描述。圖像描述生成也是采用“編碼-解碼”的方式進行。編碼器為一個卷積網(wǎng)絡,提取圖像的高層特征,表示為一個編碼向量;解碼器為一個循環(huán)神經(jīng)網(wǎng)絡語言模型,初始輸入為編碼向量,生成圖像的描述文本。
? ? ? ? 在圖像描述生成的任務中,同樣存在編碼容量瓶頸以及長距離依賴這兩個問題,因此也可以利用注意力機制來有效地選擇信息。在生成描述的每一個單詞時,循環(huán)神經(jīng)網(wǎng)絡的輸入除了前一個詞的信息,還有利用注意力機制來選擇一些來自于圖像的相關信息。
參考文章
目前主流的attention方法都有哪些?
NLP 中的attention和self-attention
聯(lián)系客服