DL之Attention:Attention注意力机制的简介、应用领域之详细攻略
DL之Attention:Attention注意力機制的簡介、應用領域之詳細攻略
?
?
目錄
Attention的簡介
1、Why?Attention?
2、Attention機制的分類
3、Attention機制的計算流程
4、Attention機制的變種
5、吊炸天的Attention機制:為什么自注意力模型(self-Attention model)在長距離序列中如此強大?
Attention的應用領域
1、神經機器翻譯
2、圖像描述生成
?
相關文章
Paper:翻譯并解讀《Attention Is All You Need》源自2017年的Google機器翻譯團隊
?
Attention的簡介
? ? ? ? 注意力機制(Attention Mechanism)源于對人類視覺的研究。在認知科學中,由于信息處理的瓶頸,人類會選擇性地關注所有信息的一部分,同時忽略其他可見的信息。上述機制通常被稱為注意力機制。人類視網膜不同的部位具有不同程度的信息處理能力,即敏銳度(Acuity),只有視網膜中央凹部位具有最強的敏銳度。為了合理利用有限的視覺信息處理資源,人類需要選擇視覺區域中的特定部分,然后集中關注它。例如,人們在閱讀時,通常只有少量要被讀取的詞會被關注和處理。綜上,注意力機制主要有兩個方面:決定需要關注輸入的哪部分;分配有限的信息處理資源給重要的部分。
? ? ? ? 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等神經網絡模型的各種NLP任務中。2017年,google機器翻譯團隊發表的《Attention is all you need》中大量使用了自注意力(self-attention)機制來學習文本表示。
關于注意力機制的更多細節,可以參考原始論文《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方法都有哪些?
1、Why?Attention?
? ? ? ?根據通用近似定理,前饋網絡和循環網絡都有很強的能力。但為什么還要引入注意力機制呢?
- 計算能力的限制:當要記住很多“信息“,模型就要變得更復雜,然而目前計算能力依然是限制神經網絡發展的瓶頸。
- 優化算法的限制:雖然局部連接、權重共享以及pooling等優化操作可以讓神經網絡變得簡單一些,有效緩解模型復雜度和表達能力之間的矛盾;但是,如循環神經網絡中的長距離以來問題,信息“記憶”能力并不高。
可以借助人腦處理信息過載的方式,例如Attention機制可以提高神經網絡處理信息的能力。
?
2、Attention機制的分類
? ? ? ?當用神經網絡來處理大量的輸入信息時,也可以借鑒人腦的注意力機制,只 選擇一些關鍵的信息輸入進行處理,來提高神經網絡的效率。按照認知神經學中的注意力,可以總體上分為兩類:
- 聚焦式(focus)注意力:自上而下的有意識的注意力,主動注意——是指有預定目的、依賴任務的、主動有意識地聚焦于某一對象的注意力;
- 顯著性(saliency-based)注意力:自下而上的有意識的注意力,被動注意——基于顯著性的注意力是由外界刺激驅動的注意,不需要主動干預,也和任務無關;可以將max-pooling和門控(gating)機制來近似地看作是自下而上的基于顯著性的注意力機制。
? ? ? ?在人工神經網絡中,注意力機制一般就特指聚焦式注意力。
?
3、Attention機制的計算流程
? ? ? ?Attention機制的實質其實就是一個尋址(addressing)的過程,如上圖所示:給定一個和任務相關的查詢Query向量 q,通過計算與Key的注意力分布并附加在Value上,從而計算Attention Value。
? ? ? ?這個過程實際上是Attention機制緩解神經網絡模型復雜度的體現:不需要將所有的N個輸入信息都輸入到神經網絡進行計算,只需要從X中選擇一些和任務相關的信息輸入給神經網絡。
注意力機制可以分為三步:一是信息輸入;二是計算注意力分布α;三是根據注意力分布α 來計算輸入信息的加權平均。
| 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)。 |
4、Attention機制的變種
與普通的Attention機制(上圖左)相比,Attention機制常見的變種有:
| 變種1-硬性注意力 | ? ? ? ? 之前提到的注意力是軟性注意力,其選擇的信息是所有輸入信息在注意力 分布下的期望。還有一種注意力是只關注到某一個位置上的信息,叫做硬性注意力(hard attention)。
硬性注意力的缺點:硬性注意力的一個缺點是基于最大采樣或隨機采樣的方式來選擇信息。因此最終的損失函數與注意力分布之間的函數關系不可導,因此無法使用在反向傳播算法進行訓練。 |
| 變種2-鍵值對注意力 | 即上圖右邊的鍵值對模式,此時Key!=Value,注意力函數變為 |
| 變種3-多頭注意力 | 多頭注意力(multi-head attention)是利用多個查詢Q = [q1, · · · , qM],來平行地計算從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分,然后再進行拼接: |
5、吊炸天的Attention機制:為什么自注意力模型(self-Attention model)在長距離序列中如此強大?
1、卷積或循環神經網絡難道不能處理長距離序列嗎?
? ? ? 當使用神經網絡來處理一個變長的向量序列時,我們通常可以使用卷積網絡或循環網絡進行編碼來得到一個相同長度的輸出向量序列,如圖所示
? ? ? 從上圖可以看出,無論卷積還是循環神經網絡其實都是對變長序列的一種“局部編碼”:卷積神經網絡顯然是基于N-gram的局部編碼;而對于循環神經網絡,由于梯度消失等問題也只能建立短距離依賴。
2、要解決這種短距離依賴的“局部編碼”問題,從而對輸入序列建立長距離依賴關系,有哪些辦法呢?
? ? ? ?如果要建立輸入序列之間的長距離依賴關系,可以使用以下兩種方法:一 種方法是增加網絡的層數,通過一個深層網絡來獲取遠距離的信息交互,另一種方法是使用全連接網絡。 ——《神經網絡與深度學習》
? ? ? ?由上圖可以看出,全連接網絡雖然是一種非常直接的建模遠距離依賴的模型, 但是無法處理變長的輸入序列。不同的輸入長度,其連接權重的大小也是不同的。
? ? ? ?這時我們就可以利用注意力機制來“動態”地生成不同連接的權重,這就是自注意力模型(self-attention model)。由于自注意力模型的權重是動態生成的,因此可以處理變長的信息序列。
? ? ? ?總體來說,為什么自注意力模型(self-Attention model)如此強大:利用注意力機制來“動態”地生成不同連接的權重,從而處理變長的信息序列。
3、自注意力模型(self-Attention model)具體的計算流程是怎樣的呢?
? ? ? ?同樣,給出信息輸入:用X = [x1, · · · , xN ]表示N 個輸入信息;通過線性變換得到為查詢向量序列,鍵向量序列和值向量序列,
? ? ? 公式可以看出,self-Attention中的Q是對自身(self)輸入的變換,而在傳統的Attention中,Q來自于外部。
注意力計算公式為:
自注意力模型(self-Attention model)中,通常使用縮放點積來作為注意力打分函數,輸出向量序列可以寫為
?
?
Attention的應用領域
1、神經機器翻譯
? ? ? ? 注意力機制最成功的應用是機器翻譯。基于神經網絡的機器翻譯模型也叫做神經機器翻譯(Neural Machine Translation,NMT)。一般的神經機器翻譯模型采用“編碼-解碼”的方式進行序列到序列的轉換。這種方式有兩個問題:
- 一是編碼向量的容量瓶頸問題,即源語言所有的信息都需要保存在編碼向量中,才能進行有效地解碼;
- 二是長距離依賴問題,即編碼和解碼過程中在長距離信息傳遞中的信息丟失問題。
? ? ? ? 通過引入注意力機制,我們將源語言中每個位置的信息都保存下來。在解碼過程中生成每一個目標語言的單詞時,我們都通過注意力機制,直接從源語言的信息中選擇相關的信息作為輔助。這樣的方式就可以有效地解決上面的兩個問題。
- 一是無需讓所有的源語言信息都通過編碼向量進行傳遞,在解碼的每一步都可以直接訪問源語言的所有位置上的信息;
- 二是源語言的信息可以直接傳遞到解碼過程中的每一步,縮短了信息傳遞的距離。
?
?
2、圖像描述生成
? ? ? ? 圖像描述生成是輸入一幅圖像,輸出這幅圖像對應的描述。圖像描述生成也是采用“編碼-解碼”的方式進行。編碼器為一個卷積網絡,提取圖像的高層特征,表示為一個編碼向量;解碼器為一個循環神經網絡語言模型,初始輸入為編碼向量,生成圖像的描述文本。
? ? ? ? 在圖像描述生成的任務中,同樣存在編碼容量瓶頸以及長距離依賴這兩個問題,因此也可以利用注意力機制來有效地選擇信息。在生成描述的每一個單詞時,循環神經網絡的輸入除了前一個詞的信息,還有利用注意力機制來選擇一些來自于圖像的相關信息。
?
?
?
參考文章
目前主流的attention方法都有哪些?
NLP 中的attention和self-attention
?
?
總結
以上是生活随笔為你收集整理的DL之Attention:Attention注意力机制的简介、应用领域之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成功解决AttributeError:
- 下一篇: DL之Encoder-Decoder:E