卷積神經網絡中用 1*1 卷積有什麼作用或者好處呢?

來自 | 知乎
作者 | 陳運錦
地址 | https://www.zhihu.com/question/56024942
編輯 | 機器學習算法與自然語言處理公衆號
本文僅作學術分享,若侵權,請聯繫後臺刪文處理

目錄:
part I   :來源
part II  :應用
part III :作用(降維、升維、跨通道交互、增加非線性)
part IV :從fully-connected layers的角度理解

一、來源:[1312.4400] Network In Network (如果1×1卷積核接在普通的卷積層後面,配合激活函數,即可實現network in network的結構)

二、應用:GoogleNet中的Inception、ResNet中的殘差模塊

三、作用:
1、降維(減少參數)
例子1 : GoogleNet中的3a模塊
輸入的feature map是28×28×192
1×1卷積通道爲64
3×3卷積通道爲128
5×5卷積通道爲32
左圖卷積核參數:192 × (1×1×64) +192 × (3×3×128) + 192 × (5×5×32) = 387072
右圖對3×3和5×5卷積層前分別加入了通道數爲96和16的1×1卷積層,這樣卷積核參數就變成了:
192 × (1×1×64) +(192×1×1×96+ 96 × 3×3×128)+(192×1×1×16+16×5×5×32)= 157184

同時在並行pooling層後面加入1×1卷積層後也可以降低輸出的feature map數量(feature map尺寸指W、H是共享權值的sliding window,feature map 的數量就是channels)
左圖feature map數量:64 + 128 + 32 + 192(pooling後feature map不變) = 416 (如果每個模塊都這樣,網絡的輸出會越來越大)
右圖feature map數量:64 + 128 + 32 + 32(pooling後面加了通道爲32的1×1卷積) = 256
GoogLeNet利用1×1的卷積降維後,得到了更爲緊湊的網絡結構,雖然總共有22層,但是參數數量卻只是8層的AlexNet的十二分之一(當然也有很大一部分原因是去掉了全連接層)



例子2:ResNet中的殘差模塊
假設上一層的feature map是w*h*256,並且最後要輸出的是256個feature map
左側操作數:w*h*256*3*3*256 =589824*w*h
右側操作數:w*h*256*1*1*64 + w*h*64*3*3*64 +w*h*64*1*1*256 = 69632*w*h,,左側參數大概是右側的8.5倍。(實現降維,減少參數)

2、升維(用最少的參數拓寬網絡channal)
例子:上一個例子中,不僅在輸入處有一個1*1卷積核,在輸出處也有一個卷積核,3*3,64的卷積核的channel是64,只需添加一個1*1,256的卷積核,只用64*256個參數就能把網絡channel從64拓寬四倍到256。
3、跨通道信息交互(channal 的變換)
例子:使用1*1卷積核,實現降維和升維的操作其實就是channel間信息的線性組合變化,3*3,64channels的卷積核後面添加一個1*1,28channels的卷積核,就變成了3*3,28channels的卷積核,原來的64個channels就可以理解爲跨通道線性組合變成了28channels,這就是通道間的信息交互。
注意:只是在channel維度上做線性組合,W和H上是共享權值的sliding window
4、增加非線性特性
1*1卷積核,可以在保持feature map尺度不變的(即不損失分辨率)的前提下大幅增加非線性特性(利用後接的非線性激活函數),把網絡做的很deep。

備註:一個filter對應卷積後得到一個feature map,不同的filter(不同的weight和bias),卷積以後得到不同的feature map,提取不同的特徵,得到對應的specialized neuro。

四、從fully-connected layers的角度來理解1*1卷積核
將其看成全連接層
左邊6個神經元,分別是a1—a6,通過全連接之後變成5個,分別是b1—b5
左邊6個神經元相當於輸入特徵裏面的channels:6
右邊5個神經元相當於1*1卷積之後的新的特徵channels:5
左邊 W*H*6 經過 1*1*5的卷積核就能實現全連接

In Convolutional Nets, there is no such thing as “fully-connected layers”. There are only convolution layers with 1x1 convolution kernels and a full connection table– Yann LeCun

參考:https://iamaaditya.github.io/2016/03/one-by-one-convolution/



重磅!

AI有道的視頻號開通啦!會持續以有趣的視頻形式給大家帶來 AI 領域的資源、乾貨、教程和前沿知識,簡單有趣、寓教於樂!目前已經發布了機器學習路線、深度學習路線、前沿 Paper 學習路線的思維導圖。趕緊掃描下方二維碼關注這個有趣的視頻好吧!


感謝你的分享,點贊,在看三  

本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章