【深度學習】卷積神經網絡中的代表性操作

前言

AlexNet的提出標誌着卷積神經網絡的再一次興起,隨後出現了很多各式各樣的卷積神經網絡,每種都有自己的創新之處。這裏根據一篇比較好的文章對一些代表操作進行總結,並提出一些自己的想法,總結其中一些創新的思路,以供參考與學習。

代表操作

1、Group convolution

分組卷積首先出現在AlexNet,由於硬件資源有限,卷及操作不能放在同一個GPU,因此將feature maps分給了多個GPU進行處理,最後再把結果融合起來。
這樣做的好處是可以大大減少參數量,比如原來input channel和output channel都爲256,如果group爲8,那麼每個group的input和output就都是32,總參數量從256×3×3×256變爲8×(32×3×3×32),縮小爲原來的1/group。當然,這樣的做的結果與原來也不完全一樣,原來是所有的input channel經過卷積構成output channel裏的一個channel,而現在是1/group個input channel構成一個output channel,最後再結合起來,參數的減少其實連接也是變少了。
或者說,每一組輸出的feature maps是以concatenate的方式組合,而不是element-wise add,從而減少了參數量。

2、3×3 convolution

這個之前很多網絡都有介紹過,3×3卷積一方面可以避免一些噪聲,同時通過等價也可以減少一些計算量,最終你的效果會更好,所以現在很多網絡都普遍採用這種方式。

3、Inception

Inception結構不同於傳統的CNN進行卷積層的堆疊,而是在同一層使用多種卷積核,以“並聯”的方式結合,最終得到更好的特徵,不過這也會導致參數量增加,可以通過Bottleneck改進。

4、Bottleneck

Bottleneck即通過1×1卷積首先改變通道數,然後再進行對應的卷積還原到output channel。由於通道數已經被縮小了,所以後面的卷積操作運算量將大大減少,經過實驗對性能也沒有太大影響。

5、ResNet

ResNet是跨層連接的一個典型代表,解決了當層數加深訓練效果變差的問題。其引入的skip connection能夠有效解決梯度消失現象,因此殘差單元也成爲了很多經典的卷積神經網絡的基本模塊。(具體可以看前面介紹ResNet的博客)

6、DepthWise


一般的卷積操作仔細想想其實是同時考慮了圖像區域與通道,其實也可以將通道和空間分開考慮。比如說先對每一個通道進行各自的卷及操作,有多少通道就有多少個filter,得到的feature maps進行標準的1×1跨通道卷積操作。這種操作被稱爲 “DepthWise convolution” 。這樣做不僅可以有很好的準確率表現還能夠降低參數量。
舉例來說,假設input channel爲3,輸出通道爲256,那麼分別的參數量如下:

  • 傳統的卷積方式:參數量爲3×3×3×256 = 6,912
  • DW操作:參數量爲3×3×3 + 3×1×1×256 = 795

可以看到depthwise操作大大降低了參數量。這裏我們自然可以想到Bottleneck,其是先進行1×1卷積降低通道數然後再進行一般的卷積操作,depthwise是先卷積然後而1×1控制參數量。前者是大通道數到小通道數,後這是小通道數到大通道數。

7、ShuffleNet

在AlexNet的Group Convolution當中,特徵的通道被平均分到不同組裏面,最後再通過兩個全連接層來融合特徵,這樣一來,就只能在最後時刻才融合不同組之間的特徵,對模型的泛化性是相當不利的。爲了解決這個問題,ShuffleNet在每一次層疊這種Group conv層前,都進行一次channel shuffle,shuffle過的通道被分配到不同組當中。進行完一次group conv之後,再一次channel shuffle,然後分到下一層組卷積當中,以此循環。
經過channel shuffle之後,Group conv輸出的特徵能考慮到更多通道,輸出的特徵自然代表性就更高。另外,AlexNet的分組卷積,實際上是標準卷積操作,而在ShuffleNet裏面的分組卷積操作是depthwise卷積,因此結合了通道洗牌和分組depthwise卷積的ShuffleNet,能得到超少量的參數以及超越MobileNet、媲美AlexNet的準確率!
這個思想我覺得是很好的,Group Convolution儘管降低了參數量,但如果是人爲的進行分組很容易影響泛化能力,而隨機分組就如同Dropout的感覺,模型就有更多自主學習的空間,從而達到更好的學習效果。

8、SENet

SENet提出了通道Attention,將權重賦予更重要的feature map,先通過Global Average Pooling進行Squeeze,然後FC進行Excitation,最終得到的向量乘到原來的特徵上,從而實現特徵通道權重的分配。

9、Dilated convolution



一般的卷積的卷積核操作的區域都是相鄰的,而空洞卷積操作的區域是有“空洞”的,有種等間隔採樣的感覺。這樣卷積核的總大小可能比如還是3×3,但是感受野擴大了很多。

10、Deformable convolution


上面的空洞卷積對卷積已經有了比較大的擴展,但卷積核至少還是矩形的。MSRA提出的Deformable convolution更進一步,認爲卷積核的形狀是可變化的,變形的卷積核能夠讓它只看感興趣的圖像區域,從而識別出更好的特徵。
要做到這個操作,可以直接在原來的過濾器前面再加一層過濾器,這層過濾器學習的是下一層卷積核的位置偏移量(offset),這樣只是增加了一層過濾器,或者直接把原網絡中的某一層過濾器當成學習offset的過濾器,這樣實際增加的計算量是相當少的,但能實現可變形卷積核,識別特徵的效果更好。

總結

看到這麼做巧妙的操作可以總結的地方還是很多的。我們從操作的目標來看,無非是減少參數量和增大特徵提取效果。其創新之處有也有兩個方向,一個是從司空見慣的操作進行改造,打破常規,例如卷積操作爲什麼非要是完整的矩形?爲什麼一定要一步完成?或者group convolution的通道爲什麼要是事先設置好的?網絡一層的卷及操作爲什麼只能有一個?爲什麼層直接非要相鄰的才能連接?另一個則是思考一些新的方法來提取特徵,比如Attention,shortcut。
總結一下,這些操作說白了就是爲了更快更好地學習特徵,而採取的方式要麼是打破常規要麼則是設計一些新的結構來彌補損失的信息,提高特徵提取能力。這既需要有挑戰常規的思維也需要有實踐的與經驗的驗證。

參考資料

https://mp.weixin.qq.com/s/ky52jO92jsRZ9qpkcUmxEA

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