DL之Attention:Attention注意力機(jī)制的簡介、應(yīng)用領(lǐng)域之詳細(xì)攻略 相關(guān)文章 Attention的簡介? ? ? ? 注意力機(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》。 以下主要轉(zhuǎn)自知乎:目前主流的attention方法都有哪些? 1、Why?Attention?? ? ? ?根據(jù)通用近似定理,前饋網(wǎng)絡(luò)和循環(huán)網(wǎng)絡(luò)都有很強(qiáng)的能力。但為什么還要引入注意力機(jī)制呢?
可以借助人腦處理信息過載的方式,例如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é)中的注意力,可以總體上分為兩類:
? ? ? ?在人工神經(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。 注意力機(jī)制可以分為三步:一是信息輸入;二是計(jì)算注意力分布α;三是根據(jù)注意力分布α 來計(jì)算輸入信息的加權(quán)平均。
4、Attention機(jī)制的變種與普通的Attention機(jī)制(上圖左)相比,Attention機(jī)制常見的變種有:
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í),我們通??梢允褂镁矸e網(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í)》 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ī)制,我們將源語言中每個(gè)位置的信息都保存下來。在解碼過程中生成每一個(gè)目標(biāo)語言的單詞時(shí),我們都通過注意力機(jī)制,直接從源語言的信息中選擇相關(guān)的信息作為輔助。這樣的方式就可以有效地解決上面的兩個(gè)問題。
2、圖像描述生成? ? ? ? 圖像描述生成是輸入一幅圖像,輸出這幅圖像對(duì)應(yīng)的描述。圖像描述生成也是采用“編碼-解碼”的方式進(jìn)行。編碼器為一個(gè)卷積網(wǎng)絡(luò),提取圖像的高層特征,表示為一個(gè)編碼向量;解碼器為一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型,初始輸入為編碼向量,生成圖像的描述文本。 參考文章 |
|