超越卷積、自注意力機(jī)制:強(qiáng)大的神經(jīng)網(wǎng)絡(luò)新算子involution
點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號
重磅干貨,第一時(shí)間送達(dá)

作者|李鐸
來源|機(jī)器之心

概要
我們的貢獻(xiàn)點(diǎn)簡單來講:
1. 提出了一種新的神經(jīng)網(wǎng)絡(luò)算子(operator或op)稱為involution,它比convolution更輕量更高效,形式上比self-attention更加簡潔,可以用在各種視覺任務(wù)的模型上取得精度和效率的雙重提升。
2. 通過involution的結(jié)構(gòu)設(shè)計(jì),我們能夠以統(tǒng)一的視角來理解經(jīng)典的卷積操作和近來流行的自注意力操作。
論文鏈接:
https://arxiv.org/abs/2103.06255
代碼和模型鏈接:
https://github.com/d-li14/involution
這部分內(nèi)容主要來自原文Section 2,Section 3
convolution
,其中
和
分別是輸出和輸入的通道數(shù)目,而
是kernel size,
一般不寫,代表在
個(gè)pixel上共享相同的kernel,即空間不變性,而每個(gè)通道C獨(dú)享對應(yīng)的kernel則稱為通道特異性。convolution的操作可以表達(dá)為:
是input tensor,
是output tensor,
是convolution kernel。空間不變性
,2.平移等變性,也可以理解為在空間上對類似的pattern產(chǎn)生類似的響應(yīng),其不足之處也很明顯:提取出來的特征比較單一,不能根據(jù)輸入的不同靈活地調(diào)整卷積核的參數(shù)。
一項(xiàng),其中通道數(shù)量C往往是數(shù)百甚至數(shù)千,所以為了限制參數(shù)量和計(jì)算量的規(guī)模,K的取值往往較小。我們從VGGNet開始習(xí)慣沿用
大小的kernel,這限制了卷積操作一次性地捕捉長距離關(guān)系的能力,而需要依靠堆疊多個(gè)
大小的kernel,這對于感受野的建模在一定程度上不如直接使用大的卷積核更加有效。通道特異性
大小的矩陣,那么矩陣的秩不會(huì)超過
,代表其中存在很多的kernel是近似線性相關(guān)的。involution
,其中
,表示所有通道共享G個(gè)kernel。involution的操作表達(dá)為:
是involution kernel。
大小的圖像作為輸入訓(xùn)練得到的權(quán)重,就無法遷移到輸入圖像尺寸更大的下游任務(wù)中(比如檢測、分割等)。involution kernel生成的通用形式如下:
是坐標(biāo)(i,j)鄰域的一個(gè)index集合,所以
表示feature map上包含
的某個(gè)patch。
,可以有各種不同的設(shè)計(jì)方式,也值得大家去進(jìn)一步探索。我們從簡單有效的設(shè)計(jì)理念出發(fā),提供了一種類似于SENet的bottleneck結(jié)構(gòu)來進(jìn)行實(shí)驗(yàn):
就取為
這個(gè)單點(diǎn)集,即
取為feature map上坐標(biāo)為(i, j)的單個(gè)pixel,從而得到了involution kernel生成的一種實(shí)例化
和
是線性變換矩陣,r是通道縮減比率,
是中間的BN和ReLU。
(FC-BN-ReLU-FC)和reshape (channel-to-space)變換展開成kernel的形狀,從而得到這個(gè)坐標(biāo)點(diǎn)上對應(yīng)的involution kernel,再和輸入feature map上這個(gè)坐標(biāo)點(diǎn)鄰域的特征向量進(jìn)行Multiply-Add得到最終輸出的feature map。具體操作流程和tensor形狀變化如下:
是坐標(biāo)(i,j)附近
的鄰域。單純基于PyTorch API簡單的偽代碼實(shí)現(xiàn)如下:
,計(jì)算量分為kernel generation和Multiply-Add (MAdd)兩部分
,明顯低于普通convolution的參數(shù)量
和計(jì)算量
。在通道上共享kernel(僅有G個(gè)kernel)允許我們?nèi)ナ褂么蟮目臻gspan(增加K),從而通過spatial維度的設(shè)計(jì)提升性能的同時(shí)保證了通過channel維度的設(shè)計(jì)維持效率(見ablation in Tab. 6a,6b),即使在不同空間位置不共享權(quán)重也不會(huì)引起參數(shù)量和計(jì)算量的顯著增長。
雖然我們沒有在空間上的每個(gè)pixel直接共享kernel參數(shù),但我們在更高的層面上共享了元參數(shù)(meta-weight,即指kernel生成函數(shù)的參數(shù)),所以仍然能夠在不同的空間位置上進(jìn)行knowledge的共享和遷移。作為對比,即使拋開參數(shù)量大漲的問題,如果將convolution在空間上共享kernel的限制完全放開,讓每個(gè)pixel自由地學(xué)習(xí)對應(yīng)的kernel參數(shù),則無法達(dá)到這樣的效果。
[Discussion] 與self-attention的相關(guān)性
這部分內(nèi)容主要來自原文Section 4.2
self-attention
,
分別為輸入
線性變換后得到的query,key和value,H是multi-head self-attention中head的數(shù)目。下標(biāo)表示(i, j)和(p,q)對應(yīng)的pixel之間進(jìn)行query-key匹配,
表示query(i,j)對應(yīng)key的范圍,可能是
的local patch(local self-attention),也可能是
的full image(global self-attention)。
self-attention中不同的head對應(yīng)到involution中不同的group(在channel維度split) self-attention中每個(gè)pixel的attention map
對應(yīng)到involution中每個(gè)pixel的kernel 

對應(yīng)于attention matrix multiplication前對
做的線性變換,self-attention操作后一般也會(huì)接另一個(gè)線性變換和殘差連接,這個(gè)結(jié)構(gòu)正好就對應(yīng)于我們用involution替換resnet bottleneck結(jié)構(gòu)中的
convolution,前后也有兩個(gè)
convolution做線性變換。
而不是
(
是position encoding matrix)。而從我們involution的角度來看,這只不過是又換了一種kernel generation的形式來實(shí)例化involution。
,
),這同時(shí)也說明了CNN設(shè)計(jì)中的locallity依然是寶藏,因?yàn)榧词褂胓lobal self-attention,網(wǎng)絡(luò)的淺層也很難真的利用到復(fù)雜的全局信息。Vision Transformer
實(shí)驗(yàn)結(jié)果
ImageNet圖像分類

convolution得到了一族新的骨干網(wǎng)絡(luò)RedNet,性能和效率優(yōu)于ResNet和其他self-attention做op的SOTA模型。COCO目標(biāo)檢測和實(shí)例分割

40%。Cityscapes語義分割

提升最多(3%-4%),Cityscapes分割任務(wù)中也是大物體(比如墻,卡車,公交車等)的單類別IoU提升最明顯(高達(dá)10%甚至20%以上),這也驗(yàn)證了我們在之前分析中所提到的involution相比于convolution在空間上具有動(dòng)態(tài)建模長距離關(guān)系的顯著優(yōu)勢。關(guān)于廣義的involution中kernel生成函數(shù)空間進(jìn)一步的探索; 類似于deformable convolution加入offest生成函數(shù),使得這個(gè)op空間建模能力的靈活性進(jìn)一步提升; 結(jié)合NAS的技術(shù)搜索convolution-involution混合結(jié)構(gòu)(原文Section 4.3); 我們在上文論述了self-attention只是一種表達(dá)形式,但希望(self-)attention機(jī)制能夠啟發(fā)我們設(shè)計(jì)更好的視覺模型,類似地detection領(lǐng)域最近不少好的工作,也從DETR的架構(gòu)中獲益匪淺。
推薦閱讀
國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))
年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運(yùn)營維護(hù)的號,大家樂于分享高質(zhì)量文章,喜歡總結(jié)知識,歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!

