關注極市平臺公衆號(ID:extrememart),獲取計算機視覺前沿資訊/技術乾貨/招聘面經等
原文鏈接:比CNN更強有力,港中文賈佳亞團隊提出兩類新型自注意力網絡
Exploring Self-attention for Image Recognition
paper:https://hszhao.github.io/papers/cvpr20_san.pdf
code:https://github.com/hszhao/SAN
該文是香港中文大學賈佳亞老師團隊投於
CVPR2020
的一篇關於動態濾波器卷積的文章。對動態濾波器卷積實現不明白的小夥伴可能看該文會非常費力。本文首先在不改變原文意思的基礎上進行簡單的翻譯與介紹,在後續的文章中本人將從另一個角度(當雙邊濾波遇到深度學習
)對該文進行解析並進行復現和轉換。
Abstract
近期的研究表明:自注意力可以作爲圖像識別模型的基礎模塊而存在。作者探索了自注意力機制的變種並對其在圖像識別中的有效性進行了評價。作者考慮了兩種形式的自注意力機制:(1) pairwise self-attention
,它是標準點積注意力的擴展,本質上是一組操作;(2) patchwise self-attention
一種比卷積更強有力的的操作,其對應的模型明顯優於標準卷積版本。作者還通過實驗驗證了所提表達方式的魯棒性,並證實自注意力網絡從魯棒性和泛化性能方面均優於標準卷積網絡。
看完上面這一段介紹,大家有沒有感覺看的雲裏霧裏,不知所云。這到底是個什麼鬼?沒關係,下面的原文翻譯會讓你更加的不知所云,拭目以待!
Method
在卷積網絡中,網絡中的OP有兩個作用:(1) 特徵聚合(feature aggregation),對局部近鄰特徵採用核參數進行加權得到輸出特徵;(2) 特徵變換(feature transformation),它有後接線性映射以及非線性函數達成(即BatchNorm+ReLU
)。
作者認爲:前述兩個功能可以解耦。如果可以採用一種特殊的機制進行特徵聚合,那麼採用感知器(它包含線性映射與非線性函數)進行逐點特徵變換。作者主要聚焦於特徵聚合部分進行研究。其實說白了就是嘗試提出一種特殊的機制替代標準卷積。
常規卷積通過固定核進行特徵聚合,即全圖權值共享,不會隨特徵內容而自適應變化,同時參數量會隨着聚合特徵數量增加而增加。鑑於此,作者提出幾種特徵聚合機制並構建了一個高性能圖像識別框架(它交錯執行特徵聚合(自注意力)和特徵變換(逐點感知器))。
作者探索了兩種類型的自注意力機制:(1) pairwise self-attention
;(2) patchwise self-attention
.
Pairwise Self-attention
首先,給出Pair Self-attention
的定義:
其中,表示Hadamard
乘積表示特徵圖在i位置處的特徵向量,表示局部近鄰空間。函數將對輸入局部特徵進行編碼並將被用於特徵聚合,聚合參數爲自適應參數並通過確定。
構成了該自注意力的核心,它用於計算待聚合特徵的權值。爲簡化不同自注意力的描述,對其進行分解得到如下形式:
其中,而則根據待聚合成對特徵輸出一個特徵向量,而函數則據此輸出用於特徵聚合的權值標量。函數使得可以儘可能的去探索之間的相關性,而不需要考慮維度對齊問題。
作者探索了下面幾種形式的相關函數,其中表示可訓練的變換,兩者具有相同的輸出維度。
- Summation:
- Subtraction:
- Concatenation:
- Hadamard product:
- Dot product:
Position Encoding
pair self-attention
的一個突出特徵:特徵向量是獨立的進行處理,僅依賴於近鄰特徵計算權值,而不會依賴範圍之外的其他特徵。爲了對模型提供空間上下文信息,作者對其進行了擴展並編碼的位置信息。編碼方式如下:
將水平和垂直座標分別進行歸一化,歸一化到.歸一化後的兩個座標系進行拼接並融入另一個可訓練的線性子網絡,該子網絡將輸出每個位置的位置編碼信息。作者採用近鄰點座標與中心點的差值進行位置信息編碼,該位置編碼信息將增廣前述併產生協同作用。
Patchwise Self-attention
作者研究的另一種自注意力機制爲patchwise self-attention
,其公式定義如下:
其中表示塊特徵向量,表示同空間維度的塊特徵向量構成的tensor。
在patchwise self-attention
中,作者允許構建的額權值向量直接作用於,該權值集成了更多的近鄰特徵向量信息。需要注意的是:patchwise self-attention
不再是一組操作,它不再具有pairwise self-attention
的置換不變性,它可以自適應的從不同位置編碼不同的特徵信息,從而具有強於卷積的性能。
類似的,作者對進行解耦表示爲:
類似地,作者研究了下面幾種形式的函數:
- Star-product:
- Clique-product:
- Concatenation:
Self-attention Block
上圖給出了本文所提出的自注意力機制在殘差模塊中嵌入示意圖。輸入特徵圖將經由兩個處理流:(1)左邊分支用於評估輸出注意力權值;(2)右邊分支將對輸入進行線性變換,爲更有效的處理進行降維。前述兩個分支的輸出將通過Hadamard
乘積進行特聚合,聚合後特徵將經由規範化操作+非線性激活與最後的非線性層得到與輸入同等通道的輸出。
看到這裏,不知道各位小夥伴是否看懂了作者想要表達的意思?反正我第一次看的時候是沒看懂,也不知道到底是怎麼做的,看的雲裏霧裏一塌糊塗。沒關係,我後面會提供一種更爲通用的解釋來介紹上述兩種自注意力機制。
Network Architectures
前面基本上已經把本文的核心全部介紹完畢了,那麼接下來就是要說明一下如何利用前述提到的兩種模塊搭建一個完成的神經網絡了。
ResNet
不愧是深度學習的里程碑,萬能油網絡啊,太多太多的網絡都是在ResNet
的基礎上進行修改發paper,造就了太多的高質量paper
(比如Res2Net, ResNeXt, MobileNetV2
等)。
沒有任何意外,作者還是在ResNet
的基礎上進行改造。下表爲改造模型參數列表,作者提供了三種深度的網絡SAN10, SAN15, SAN19
,它們分貝對應ResNet26, ResNet38, ResNet50
。
前面給出了作者改造的網絡結構:SAN系列。我們從下面幾個部分針對該系列模型進行簡單的分析。
- Backbone: SAN的骨幹部分包含5個階段,不同階段具有不同的空間分辨率,最終輸出32倍下采樣的特徵。每個階段包含不同數量的自注意力模塊,相鄰的兩個階段參考``DenseNet
通過過渡層(過渡層的作用是降低空間分辨率並提升通道數)橋接。在五個階段之外,後接一個分來Head模塊,該模塊由全局均值池化、全連接層以及
softmax`構成。 - Transition:過渡層的用於降低特徵空間分辨率,因此可以降低計算複雜度提升感受野。過渡層由
BatchNorm、ReLU、MaxPool以及1x1卷積
(用於擴增通道維度)構成。 - Footprint:局部範圍用於控制特徵聚合的上下文數量,爲平衡計算複雜度和效果,作者在後四個階段的只注意模塊中設爲,而第一個則設爲(出於計算複雜度、顯存消耗考慮)。
- Instantiations:通過調節網絡不同階段的自注意力模塊的數量控制網絡的容量,相關配置參數將上表,基本上是參考
ResNet
進行設置的。
Comparison
上表對比了自注意力模塊與常規卷積、標量注意力機制之間的區別所在。
- Convolution:常規卷積具有固定的核權值,不會隨內容而變化,但和權值會跨通道變化(但這種變化是訓練確定的,很難說是真正意義上的通道自適應);
- Scalar Attention:標量注意力的聚合權值會根據內容隨位置發生變換,但存在跨通道共享。
- Vector attention:作者所設計的自注意力模塊則同時具有內容自適應與通道自適應性。
Experiments
作者在ImageNet
數據集上進行了所提方法的實驗與驗證。相關訓練信息如下:
-
Epoch
:100 -
Learning rate
: cosine learning rate with base 0.1 -
Standard data augmentation
: random crop, random flip, normalize -
SyncSGD
: momentum=0.9, weight decay=0.0001 -
Label Smoothing
: regularization coefficient=0.1 -
BatchSize
: 256.關於自注意力模塊的幾個參數設置爲:,權值共享的通道數設爲8.
上圖給出了所提SAN與對標ResNet
的性能差異對比。從中可以看到:(1) pairwise
模型媲美甚至優於對標的ResNet
模型;(2)patchwise
模型以極大的優勢超越了對標的ResNet
。
上表對比了自注意力模塊中不同相關函數下的性能,從中可以看到:(1)對於pairwise
模型而言,summation、subtraction以及Hadamard乘積
具有相似的精度,並優於其他兩種相關函數;(2)對於patchwise
模型而言,concatenation
取得最佳性能。
上表對比了自注意力模塊中不同映射函數的性能對比。從中可以看到:(1)對於pairwise
模型而言,兩個全連接層即可取得最佳性能;(2) 對於patchwise
模型而言,不同的配置具有相似的性能(考慮到內存佔用與計算量問題,作者最終選用了兩個全連接層的配置)。
上表驗證了自注意力模塊中使用三個離散變換函數的必要性。從中可以看到:使用三個獨立的變換函數具有最佳性能,使用獨立變換函數的另外一個優勢是降低計算複雜度。
上表對比了自注意力模塊中不同局部範圍(即卷積核尺寸)下的性能對比。從中可以看到:(1)在常規卷積中,提升卷積核尺寸會提升計算複雜度與內存佔用;(2)在SAN中,性能先隨核尺寸增大而提升,而後達到飽和。對於pairwise
模型而言,提升核尺寸對於參數沒有任何影響。綜合考量後,作者將核尺寸設置爲。
最後,作者評價了位置編碼在pairwise模型中的重要性,結果見上表。從中可以看到:位置編碼具有很重要的影響:位置編碼能帶來5%的性能提升。
此外,作者從兩個方面驗證了模型的魯棒性。(1) 旋轉魯棒性(見上表),pairwise
模型具有更佳的抗旋轉性魯棒性,這也與前面提到的patchwise
不具有置換不變性不謀而合;(2) 對抗魯棒性(見下表),patchwise
具有更佳的對抗攻擊魯棒性;(3)相比常規卷積網絡,自注意力網絡具有更佳的魯棒性和泛化性能。
Conclusion
作者研究了自注意力在圖像識別模型中的有效性,作者提出了兩種形式的自注意力:pairwise
與patchwise
。作者通過實驗得到以下幾點重要發現:
- 基於
pairwise
的網絡取得了匹配甚至超越純卷積網絡的性能,這意味着計算機視覺中深度學習的成功並非與卷積網絡緊密相連,還有其他的方案具有媲美甚至更優的判別能力(比如permutation- and cardinality-invariance); - 基於
patchwise
的網絡取得了超越純卷積網絡的性能,這意味着塊自注意力可能在其他計算機視覺中取得更好的性能增益; - 相比標量(scale/dot-product)自注意力機制(當前主流注意力機制),向量(vector)自注意力更有力且具有明顯優勢。
△關注極市平臺,獲取最新CV乾貨