前言
注意力機(jī)制一直是一個(gè)比較熱的話題,其實(shí)在很早之前就提出了,我們?cè)趯W(xué)習(xí)圖像分類時(shí)在SENet就見到過(直通車:經(jīng)典神經(jīng)網(wǎng)絡(luò)論文超詳細(xì)解讀(七)——SENet(注意力機(jī)制)學(xué)習(xí)筆記(翻譯+精讀+代碼復(fù)現(xiàn)))自從谷歌發(fā)表了《Attention Is All You Need》這篇論文后,注意力機(jī)制就真正火起來了,這篇論文本來是NLP領(lǐng)域的,不過在CV領(lǐng)域也有越來越多人開始引入注意力機(jī)制。
本來這部分想放在論文里講的,但最近學(xué)習(xí)過程中發(fā)現(xiàn)還挺多拓展的內(nèi)容,所以這篇我們就來詳細(xì)看一下這些注意力機(jī)制吧!
?? ???本人Transformer相關(guān)文章導(dǎo)航:
?【Transformer系列(1)】encoder(編碼器)和decoder(解碼器)
?【Transformer系列(2)】注意力機(jī)制、自注意力機(jī)制、多頭注意力機(jī)制、通道注意力機(jī)制、空間注意力機(jī)制超詳細(xì)講解
?【Transformer系列(3)】 《Attention Is All You Need》論文超詳細(xì)解讀(翻譯+精讀)
【Transformer系列(4)】Transformer模型結(jié)構(gòu)超詳細(xì)解讀
目錄
前言
??一、注意力機(jī)制:Attention
1.1 什么是注意力機(jī)制?
1.2 如何運(yùn)用注意力機(jī)制??
1.2.1?Query&Key&Value
1.2.2 注意力機(jī)制計(jì)算過程
??二、自注意力機(jī)制:Self-Attention
2.1 什么是自注意力機(jī)制?
2.2 如何運(yùn)用自注意力機(jī)制??
2.3 自注意力機(jī)制的問題
??三、多頭注意力機(jī)制:Multi-Head Self-Attention
3.1 什么是多頭注意力機(jī)制?
3.2 如何運(yùn)用多頭注意力機(jī)制??
??四、通道注意力機(jī)制:Channel Attention
4.1 什么是通道注意力機(jī)制?
4.2 SENet
4.3 其他通道注意力機(jī)制
① ECA
② CBAM
??五、空間注意力機(jī)制:Spatial Attention
5.1 什么是空間注意力機(jī)制?
5.2 STN
總結(jié)
??一、注意力機(jī)制:Attention
1.1 什么是注意力機(jī)制?
我們先來看一張圖片,這個(gè)是前幾天微博之夜的
那大家的目光更多停留在是在五個(gè)美女身上,還是在張大大身上呢 ?(大大老師騷瑞~ORZ)
同樣的,不同的粉絲更加關(guān)注的對(duì)象也是不同的。?
再舉幾個(gè)栗子:
- 看人-->看臉
- 看文章-->看標(biāo)題
- 看段落-->看開頭
這時(shí)候大家應(yīng)該大致知道注意力機(jī)制是個(gè)什么東西了吧~
注意力機(jī)制其實(shí)是源自于人對(duì)于外部信息的處理能力。由于人每一時(shí)刻接受的信息都是無比的龐大且復(fù)雜,遠(yuǎn)遠(yuǎn)超過人腦的處理能力,因此人在處理信息的時(shí)候,會(huì)將注意力放在需要關(guān)注的信息上,對(duì)于其他無關(guān)的外部信息進(jìn)行過濾,這種處理方式被稱為注意力機(jī)制。
我用通俗的大白話解釋一下:注意力呢,對(duì)于我們?nèi)藖碚f可以理解為“關(guān)注度”,對(duì)于沒有感情的機(jī)器來說其實(shí)就是賦予多少權(quán)重(比如0-1之間的小數(shù)),越重要的地方或者越相關(guān)的地方就賦予越高的權(quán)重。
1.2 如何運(yùn)用注意力機(jī)制??
1.2.1?Query&Key&Value
首先我們來認(rèn)識(shí)幾個(gè)概念:
- 查詢(Query):?指的是查詢的范圍,自主提示,即主觀意識(shí)的特征向量
- 鍵(Key): 指的是被比對(duì)的項(xiàng),非自主提示,即物體的突出特征信息向量
- 值(Value) :? 則是代表物體本身的特征向量,通常和Key成對(duì)出現(xiàn)
注意力機(jī)制是通過Query與Key的注意力匯聚(給定一個(gè) Query,計(jì)算Query與 Key的相關(guān)性,然后根據(jù)Query與Key的相關(guān)性去找到最合適的 Value)實(shí)現(xiàn)對(duì)Value的注意力權(quán)重分配,生成最終的輸出結(jié)果。
有點(diǎn)抽象吧,我們舉個(gè)栗子好了:
- 當(dāng)你用上淘寶購物時(shí),你會(huì)敲入一句關(guān)鍵詞(比如:顯瘦),這個(gè)就是Query。
- 搜索系統(tǒng)會(huì)根據(jù)關(guān)鍵詞這個(gè)去查找一系列相關(guān)的Key(商品名稱、圖片)。
- 最后系統(tǒng)會(huì)將相應(yīng)的 Value?(具體的衣服)返回給你。
在這個(gè)栗子中,Query,?Key 和 Value 的每個(gè)屬性雖然在不同的空間,其實(shí)他們是有一定的潛在關(guān)系的,也就是說通過某種變換,可以使得三者的屬性在一個(gè)相近的空間中。
1.2.2 注意力機(jī)制計(jì)算過程
輸入Query、Key、Value:
- 階段一:根據(jù)Query和Key計(jì)算兩者之間的相關(guān)性或相似性(常見方法點(diǎn)積、余弦相似度,MLP網(wǎng)絡(luò)),得到注意力得分;
- 階段二:對(duì)注意力得分進(jìn)行縮放scale(除以維度的根號(hào)),再softmax函數(shù),一方面可以進(jìn)行歸一化,將原始計(jì)算分值整理成所有元素權(quán)重之和為1的概率分布;另一方面也可以通過softmax的內(nèi)在機(jī)制更加突出重要元素的權(quán)重。一般采用如下公式計(jì)算:
-
階段三:根據(jù)權(quán)重系數(shù)對(duì)Value值進(jìn)行加權(quán)求和,得到Attention Value(此時(shí)的V是具有一些注意力信息的,更重要的信息更關(guān)注,不重要的信息被忽視了);
這三個(gè)階段可以用下圖表示:
??二、自注意力機(jī)制:Self-Attention
2.1 什么是自注意力機(jī)制?
自注意力機(jī)制實(shí)際上是注意力機(jī)制中的一種,也是一種網(wǎng)絡(luò)的構(gòu)型,它想要解決的問題是神經(jīng)網(wǎng)絡(luò)接收的輸入是很多大小不一的向量,并且不同向量向量之間有一定的關(guān)系,但是實(shí)際訓(xùn)練的時(shí)候無法充分發(fā)揮這些輸入之間的關(guān)系而導(dǎo)致模型訓(xùn)練結(jié)果效果極差。比如機(jī)器翻譯(序列到序列的問題,機(jī)器自己決定多少個(gè)標(biāo)簽),詞性標(biāo)注(Pos tagging一個(gè)向量對(duì)應(yīng)一個(gè)標(biāo)簽),語義分析(多個(gè)向量對(duì)應(yīng)一個(gè)標(biāo)簽)等文字處理問題。
針對(duì)全連接神經(jīng)網(wǎng)絡(luò)對(duì)于多個(gè)相關(guān)的輸入無法建立起相關(guān)性的這個(gè)問題,通過自注意力機(jī)制來解決,自注意力機(jī)制實(shí)際上是想讓機(jī)器注意到整個(gè)輸入中不同部分之間的相關(guān)性。
自注意力機(jī)制是注意力機(jī)制的變體,其減少了對(duì)外部信息的依賴,更擅長捕捉數(shù)據(jù)或特征的內(nèi)部相關(guān)性。自注意力機(jī)制的關(guān)鍵點(diǎn)在于,Q、K、V是同一個(gè)東西,或者三者來源于同一個(gè)X,三者同源。通過X找到X里面的關(guān)鍵點(diǎn),從而更關(guān)注X的關(guān)鍵信息,忽略X的不重要信息。不是輸入語句和輸出語句之間的注意力機(jī)制,而是輸入語句內(nèi)部元素之間或者輸出語句內(nèi)部元素之間發(fā)生的注意力機(jī)制。
注意力機(jī)制和自注意力機(jī)制的區(qū)別:
?(1)注意力機(jī)制的Q和K是不同來源的,例如,在Encoder-Decoder模型中,K是Encoder中的元素,而Q是Decoder中的元素。在中譯英模型中,Q是中文單詞特征,而K則是英文單詞特征。
(2)自注意力機(jī)制的Q和K則都是來自于同一組的元素,例如,在Encoder-Decoder模型中,Q和K都是Encoder中的元素,即Q和K都是中文特征,相互之間做注意力匯聚。也可以理解為同一句話中的詞元或者同一張圖像中不同的patch,這都是一組元素內(nèi)部相互做注意力機(jī)制,因此,自注意力機(jī)制(self-attention)也被稱為內(nèi)部注意力機(jī)制(intra-attention)。
2.2 如何運(yùn)用自注意力機(jī)制??
其實(shí)步驟和注意力機(jī)制是一樣的。
第1步:得到Q,K,V的值
對(duì)于每一個(gè)向量x,分別乘上三個(gè)系數(shù)?,?,,得到的Q,K和V分別表示query,key和value
【注意】三個(gè)W就是我們需要學(xué)習(xí)的參數(shù)。
?第2步:Matmul
利用得到的Q和K計(jì)算每?jī)蓚€(gè)輸入向量之間的相關(guān)性,一般采用點(diǎn)積計(jì)算,為每個(gè)向量計(jì)算一個(gè)score:score =q · k?
第3步:Scale+Softmax
將剛得到的相似度除以,再進(jìn)行Softmax。經(jīng)過Softmax的歸一化后,每個(gè)值是一個(gè)大于0且小于1的權(quán)重系數(shù),且總和為0,這個(gè)結(jié)果可以被理解成一個(gè)權(quán)重矩陣。
第4步:Matmul
使用剛得到的權(quán)重矩陣,與V相乘,計(jì)算加權(quán)求和。
以上是對(duì)Thinking Machines這句話進(jìn)行自注意力的全過程,最終得到z1和z2兩個(gè)新向量。
其中z1表示的是thinking這個(gè)詞向量的新的向量表示(通過thinking這個(gè)詞向量,去查詢和thinking machine這句話里面每個(gè)單詞和thinking之間的相似度)。
也就是說新的z1依然是 thinking 的詞向量表示,只不過這個(gè)詞向量的表示蘊(yùn)含了 thinking machines 這句話對(duì)于 thinking 而言哪個(gè)更重要的信息。
2.3 自注意力機(jī)制的問題
自注意力機(jī)制的原理是篩選重要信息,過濾不重要信息,這就導(dǎo)致其有效信息的抓取能力會(huì)比CNN小一些。這是因?yàn)樽宰⒁饬C(jī)制相比CNN,無法利用圖像本身具有的尺度,平移不變性,以及圖像的特征局部性(圖片上相鄰的區(qū)域有相似的特征,即同一物體的信息往往都集中在局部)這些先驗(yàn)知識(shí),只能通過大量數(shù)據(jù)進(jìn)行學(xué)習(xí)。這就導(dǎo)致自注意力機(jī)制只有在大數(shù)據(jù)的基礎(chǔ)上才能有效地建立準(zhǔn)確的全局關(guān)系,而在小數(shù)據(jù)的情況下,其效果不如CNN。
另外,自注意力機(jī)制雖然考慮了所有的輸入向量,但沒有考慮到向量的位置信息。在實(shí)際的文字處理問題中,可能在不同位置詞語具有不同的性質(zhì),比如動(dòng)詞往往較低頻率出現(xiàn)在句首。
要嘮這個(gè)這就嘮到位置編碼(Positional Encoding)?了,這個(gè)我們下篇論文里面再講,先大致說一下吧:對(duì)每一個(gè)輸入向量加上一個(gè)位置向量e,位置向量的生成方式有多種,通過e來表示位置信息帶入self-attention層進(jìn)行計(jì)算。
具體原理吧,感興趣的話可以看一下:
[2003.09229] Learning to Encode Position for Transformer with Continuous Dynamical Model (arxiv.org)
??三、多頭注意力機(jī)制:Multi-Head Self-Attention
通過剛才的學(xué)習(xí),我們了解到自注意力機(jī)制的缺陷就是,模型在對(duì)當(dāng)前位置的信息進(jìn)行編碼時(shí),會(huì)過度的將注意力集中于自身的位置,有效信息抓取能力就差一些。 因此就有大佬提出了通過多頭注意力機(jī)制來解決這一問題。這個(gè)也是實(shí)際中用的比較多的。
3.1 什么是多頭注意力機(jī)制?
在實(shí)踐中,當(dāng)給定相同的查詢、鍵和值的集合時(shí), 我們希望模型可以基于相同的注意力機(jī)制學(xué)習(xí)到不同的行為, 然后將不同的行為作為知識(shí)組合起來, 捕獲序列內(nèi)各種范圍的依賴關(guān)系 (例如,短距離依賴和長距離依賴關(guān)系)。 因此,允許注意力機(jī)制組合使用查詢、鍵和值的不同 子空間表示(representation subspaces)可能是有益的。
為此,與其只使用單獨(dú)一個(gè)注意力匯聚, 我們可以用獨(dú)立學(xué)習(xí)得到的h組(一般h=8)不同的線性投影(linear projections)來變換查詢、鍵和值。 然后,這h組變換后的查詢、鍵和值將并行地送到注意力匯聚中。 最后,將這h個(gè)注意力匯聚的輸出拼接在一起, 并且通過另一個(gè)可以學(xué)習(xí)的線性投影進(jìn)行變換, 以產(chǎn)生最終輸出。 這種設(shè)計(jì)被稱為多頭注意力(multihead attention)。
3.2 如何運(yùn)用多頭注意力機(jī)制??
第1步:定義多組W,生成多組Q、K、V
剛才我們已經(jīng)理解了,Q、K、V是輸入向量X分別乘上三個(gè)系數(shù)?,?,分別相乘得到的,??,?,是可訓(xùn)練的參數(shù)矩陣。
現(xiàn)在,對(duì)于同樣的輸入X,我們定義多組不同的?,?,?,比如、、,、、每組分別計(jì)算生成不同的Q、K、V,最后學(xué)習(xí)到不同的參數(shù)。
第2步:定義8組參數(shù)
對(duì)應(yīng)8個(gè)single head,對(duì)應(yīng)8組??,?,?,再分別進(jìn)行self-attention,就得到了-
第3步:將多組輸出拼接后乘以矩陣以降低維度
首先在輸出到下一層前,我們需要將-concat到一起,乘以矩陣做一次線性變換降維,得到Z。
?完整流程圖如下:(感謝翻譯的大佬?。?/p>
【注意】對(duì)于上圖中的第2)步,當(dāng)前為第一層時(shí),直接對(duì)輸入詞進(jìn)行編碼,生成詞向量X;當(dāng)前為后續(xù)層時(shí),直接使用上一層輸出。?
??四、通道注意力機(jī)制:Channel Attention
(恭喜你已經(jīng)翻越了3座大山看到這里?(??????)??)
4.1 什么是通道注意力機(jī)制?
對(duì)于輸入2維圖像的CNN來說,一個(gè)維度是圖像的尺度空間,即長寬,另一個(gè)維度就是通道,因此通道注意力機(jī)制也是很常用的機(jī)制。通道注意力旨在顯示的建模出不同通道之間的相關(guān)性,通過網(wǎng)絡(luò)學(xué)習(xí)的方式來自動(dòng)獲取到每個(gè)特征通道的重要程度,最后再為每個(gè)通道賦予不同的權(quán)重系數(shù),從而來強(qiáng)化重要的特征抑制非重要的特征。
使用通道注意力機(jī)制的目的:為了讓輸入的圖像更有意義,大概理解就是,通過網(wǎng)絡(luò)計(jì)算出輸入圖像各個(gè)通道的重要性(權(quán)重),也就是哪些通道包含關(guān)鍵信息就多加關(guān)注,少關(guān)注沒什么重要信息的通道,從而達(dá)到提高特征表示能力的目的。
?咦,我們好像看到了一個(gè)老朋友——SENet!?╰(*°▽°*)╯
4.2 SENet
SE注意力機(jī)制(Squeeze-and-Excitation Networks)在通道維度增加注意力機(jī)制,關(guān)鍵操作是squeeze和excitation。
通過自動(dòng)學(xué)習(xí)的方式,即使用另外一個(gè)新的神經(jīng)網(wǎng)絡(luò),獲取到特征圖的每個(gè)通道的重要程度,然后用這個(gè)重要程度去給每個(gè)特征賦予一個(gè)權(quán)重值,從而讓神經(jīng)網(wǎng)絡(luò)重點(diǎn)關(guān)注某些特征通道。提升對(duì)當(dāng)前任務(wù)有用的特征圖的通道,并抑制對(duì)當(dāng)前任務(wù)用處不大的特征通道。
如下圖所示,在輸入SE注意力機(jī)制之前(左側(cè)白圖C2),特征圖的每個(gè)通道的重要程度都是一樣的,通過SENet之后(右側(cè)彩圖C2),不同顏色代表不同的權(quán)重,使每個(gè)特征通道的重要性變得不一樣了,使神經(jīng)網(wǎng)絡(luò)重點(diǎn)關(guān)注某些權(quán)重值大的通道。
這里就簡(jiǎn)單回顧一下~
更詳細(xì)的了解請(qǐng)看我的這兩篇:
經(jīng)典神經(jīng)網(wǎng)絡(luò)論文超詳細(xì)解讀(七)——SENet(注意力機(jī)制)學(xué)習(xí)筆記(翻譯+精讀+代碼復(fù)現(xiàn))?SENet代碼復(fù)現(xiàn)+超詳細(xì)注釋(PyTorch)
4.3 其他通道注意力機(jī)制
① ECA
YOLOv5改進(jìn)系列(4)——添加ECA注意力機(jī)制_路人賈'ω'的博客-CSDN博客
ECA 注意力機(jī)制,它是一種通道注意力機(jī)制;常常被應(yīng)用與視覺模型中。支持即插即用,即:它能對(duì)輸入特征圖進(jìn)行通道特征加強(qiáng),而且最終ECA模塊輸出,不改變輸入特征圖的大小。
- 背景:ECA-Net認(rèn)為:SENet中采用的降維操作會(huì)對(duì)通道注意力的預(yù)測(cè)產(chǎn)生負(fù)面影響;同時(shí)獲取所有通道的依賴關(guān)系是低效的,而且不必要的;
- 設(shè)計(jì):ECA在SE模塊的基礎(chǔ)上,把SE中使用全連接層FC學(xué)習(xí)通道注意信息,改為1*1卷積學(xué)習(xí)通道注意信息;
-
作用:使用1*1卷積捕獲不同通道之間的信息,避免在學(xué)習(xí)通道注意力信息時(shí),通道維度減縮;降低參數(shù)量;(FC具有較大參數(shù)量;1*1卷積只有較小的參數(shù)量)
② CBAM
YOLOv5改進(jìn)系列(2)——添加CBAM注意力機(jī)制_路人賈'ω'的博客-CSDN博客
CBAM全稱Convolutional Block Attention Module,這是一種用于前饋卷積神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單而有效的注意模塊。是傳統(tǒng)的通道注意力機(jī)制+空間注意力機(jī)制,是 channel(通道) + spatial(空間) 的統(tǒng)一。即對(duì)兩個(gè)Attention進(jìn)行串聯(lián),channel 在前,spatial在后。
給定一個(gè)中間特征圖,我們的模塊會(huì)沿著兩個(gè)獨(dú)立的維度(通道和空間)依次推斷注意力圖,然后將注意力圖乘以輸入特征圖以進(jìn)行自適應(yīng)特征修飾。 由于CBAM是輕量級(jí)的通用模塊,因此可以以可忽略的開銷將其無縫集成到任何CNN架構(gòu)中,并且可以與基礎(chǔ)CNN一起進(jìn)行端到端訓(xùn)練。
??五、空間注意力機(jī)制:Spatial Attention
5.1 什么是空間注意力機(jī)制?
其實(shí)上面那個(gè)圖就包含空間注意力機(jī)制了:綠色長條的是通道注意力機(jī)制,而紫色平面則就是空間注意力機(jī)制。
不是圖像中所有的區(qū)域?qū)θ蝿?wù)的貢獻(xiàn)都是同樣重要的,只有任務(wù)相關(guān)的區(qū)域才是需要關(guān)心的,比如分類任務(wù)的主體,空間注意力模型就是尋找網(wǎng)絡(luò)中最重要的部位進(jìn)行處理。空間注意力旨在提升關(guān)鍵區(qū)域的特征表達(dá),本質(zhì)上是將原始圖片中的空間信息通過空間轉(zhuǎn)換模塊,變換到另一個(gè)空間中并保留關(guān)鍵信息,為每個(gè)位置生成權(quán)重掩膜(mask)并加權(quán)輸出,從而增強(qiáng)感興趣的特定目標(biāo)區(qū)域同時(shí)弱化不相關(guān)的背景區(qū)域。
5.2 STN
STN《Spatial Transformer Networks》是15年NIPS上的文章STN引入了一個(gè)新的可學(xué)習(xí)的空間轉(zhuǎn)換模塊,提出了空間變換器(Spatial Transformer)的概念,它可以使模型具有空間不變性。這個(gè)可微分模塊可以插入到現(xiàn)有的卷積結(jié)構(gòu)中,使神經(jīng)網(wǎng)絡(luò)能夠在Feature Map本身的條件下自動(dòng)地對(duì)特征進(jìn)行空間變換,而無需任何額外的訓(xùn)練監(jiān)督或優(yōu)化過程的修改。主要作用是找到圖片中需要被關(guān)注的區(qū)域,并對(duì)其旋轉(zhuǎn)、縮放,提取出固定大小的區(qū)域。
空間采樣器的實(shí)現(xiàn)主要分成三個(gè)部分:
- 1)局部網(wǎng)絡(luò)(Localisation Network)
- 2)參數(shù)化網(wǎng)格采樣( Parameterised Sampling Grid)
- 3)差分圖像采樣(Differentiable Image Sampling)
總結(jié)
以上就是我們這篇要介紹的注意力機(jī)制,目前所有的注意力機(jī)制方法大都是基于各個(gè)不同的維度利用有限的資源進(jìn)行信息的充分利用,它本質(zhì)作用是增強(qiáng)重要特征,抑制非重要特征。注意力機(jī)制非常重要,在CV領(lǐng)域可以說是遍地開花,被廣泛應(yīng)用在網(wǎng)絡(luò)中提升模型精度,本文也只是簡(jiǎn)單的介紹了一下,為下一篇論文閱讀掃清障礙。以后應(yīng)用于代碼之中再詳細(xì)介紹吧!
本文參考:
一文看盡深度學(xué)習(xí)中的各種注意力機(jī)制 - 知乎 (zhihu.com)
?注意力機(jī)制到底在做什么,Q/K/V怎么來的?一文讀懂Attention注意力機(jī)制 - 知乎 (zhihu.com)文章來源:http://www.zghlxwxcb.cn/news/detail-461039.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-461039.html
到了這里,關(guān)于【Transformer系列(2)】注意力機(jī)制、自注意力機(jī)制、多頭注意力機(jī)制、通道注意力機(jī)制、空間注意力機(jī)制超詳細(xì)講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!