
現(xiàn)在各種神經(jīng)網(wǎng)絡(luò)都會用到1x1 conv,它到底起到什么作用呢?要回答這個問題,先從最經(jīng)典的Inception模型說起,F(xiàn)igure 1是Inception-ResNet-v2的block架構(gòu)圖。

作用一:改變矩陣維度
block中每個sublayer的第一層都1x1 conv,它在這里的作用之一是降維,減少運(yùn)算量--feature map channel數(shù)越少,卷積操作需要的計算量越小。但就像圖像壓縮一樣,壓縮率越大丟幀越多,1x1 conv是如果做到在質(zhì)量與速度的平衡的呢?

Figure 2中間圖形就是1x1卷積核,左邊的矩陣是input,而右邊的正方形代表feature map中的一個grid,或一個pixel,它是1x1卷積核其中一個channel:(1x1x1),與input矩陣對應(yīng)pixel位置的pixel-wise向量:(1x1x32)的點(diǎn)積的結(jié)果。當(dāng)input矩陣與1x1卷積核完成所有pixel位置(4x4)的點(diǎn)積計算后,會得到一個4x4x1 shape的feature map,grid size不變,整個過程相當(dāng)于把一個3D矩陣壓縮為一個2D矩陣。feature map經(jīng)過非線性(激活函數(shù))計算后,每個pixel位置就相當(dāng)于input矩陣對應(yīng)pixel位置的pixel-wise向量的均值。這就是為什么神經(jīng)網(wǎng)絡(luò)會用1x1 conv來改變矩陣維度的原因,無論是降維還是升維,矩陣的性質(zhì)不變,所以可以構(gòu)造出各種結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)
要特別注意的是,這里的一個Conv層并不是只有一個conv(),而是conv()、droupout()、BN()和ReLu()等組合。Conv層是CNN的底層模塊,每個神經(jīng)網(wǎng)絡(luò)都有自己的定義,例如:
def Conv(nin, nf, stride=1):
return nn.Sequential(
nn.Conv2d(nin, nf, 3, stride, 1, bias=False),
nn.BatchNorm2d(nf),
nn.ReLU(inplace=True)
)
作用二:增加非線性

Figure 3是Resnet-18/34/50/101/152的block架構(gòu)圖,圖中黃色框位置是Resnet-50的一個block,它由三個Conv層組成,開頭和結(jié)尾都是1x1 conv,三個block組成一個conv2_x層。把這三個block展開你會發(fā)現(xiàn)一個很有趣的結(jié)構(gòu),即block中的第二層、第三層,以及下一個block的第一層組成了一個如Figure 4,稱為“bottleneck”的從低緯到高維又到低維的網(wǎng)絡(luò),bottleneck是瓶頸的意思,它是從一個空間到另一個大(或?。┛臻g的過度地帶,“小->大->小”或“大->小->大”都是bottleneck network。

前文已經(jīng)分析了1x1 conv不會對矩陣的性質(zhì)產(chǎn)生大影響,Resnet-50為什么要引入bottleneck,而不是像隔壁Resnet-34那樣每個block的卷積核維數(shù)都是相同的呢?原因有兩個:
- 如上前文所述,矩陣降維可以減小所需運(yùn)算量。深層神經(jīng)網(wǎng)絡(luò)的計算量可能會隨層數(shù)增加呈指數(shù)增長,所以,Resnet-50/101/152都引入了1x1conv,1x1卷積核相比3x3卷積核所需計算量更少。
- 增加神經(jīng)網(wǎng)絡(luò)非線性程度。增加非線性可以增加神經(jīng)網(wǎng)絡(luò)的復(fù)雜度,復(fù)雜的神經(jīng)網(wǎng)絡(luò)才可以更精確地逼近任意函數(shù)(或數(shù)學(xué)模型),而1x1 conv可以用較低運(yùn)算成本通過改變channel維度為網(wǎng)絡(luò)增加復(fù)雜度。如果對非線性與神經(jīng)網(wǎng)絡(luò)的關(guān)系有疑問,可以閱讀我另一篇博文你真的明白神經(jīng)網(wǎng)絡(luò)是什么?。
總結(jié)
1x1卷積層可以在不改變矩陣性質(zhì)的情況下,可以靈活地變化矩陣channel的維度,不僅可以給矩陣降維減輕運(yùn)算量,還可以構(gòu)建bottleneck,低成本地增加網(wǎng)絡(luò)復(fù)雜度使其可以逼近更精確的目標(biāo)數(shù)學(xué)模型。
Refences
更多精彩文章,歡迎掃碼關(guān)注下方的公眾號, 并訪問我的簡書博客:http://www.itdecent.cn/u/c0fe8671254e
歡迎轉(zhuǎn)發(fā)至朋友圈,工作號轉(zhuǎn)載請后臺留言申請授權(quán)~
