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