1. 程式人生 > >巡禮卷積神經網路中的那些經典結構(一)—— Group convolution

巡禮卷積神經網路中的那些經典結構(一)—— Group convolution

筆者在閱讀論文的過程中,發現論文中經常會涉及到一些經典的神經網路結構,儘管這些結構可能出現的時間,但是生生不息,經歷住了時間的考驗。在這個系列文章中,我將對那些經典的網路分別做一個簡單介紹。
作為這個系列文章的第一篇文章,本文首先要介紹的是 Group convolution這個結構。

Group Convolution簡介

Group Convolution,即分組卷積(也被譯為群卷積),是由Alexnet首先提出來的。當時的裝置硬體資源有限,研究人員為了解決現存不夠的問題,把網路在兩個GPU上進行訓練,然後將訓練得到的結果進行融合即得到最終的結果。
在這裡插入圖片描述
除了可以解決視訊記憶體不足的問題之外,文章的作者Alex還認為用這種方法還可以增加捲積核之間的對角相關性,而且能夠減少訓練過程的冗餘引數,不容易過擬合,這類似於正則的效果。

Group Convolution與傳統卷積的對比

從下圖中我們可以發現,對於輸入的資料,傳統卷積對所有的資料統一進行計算。在下圖中的輸入資料大小為 H 1 × W 1 × C

1 H1×W1×C1 ,卷積核大小為 h 1 × w 1 h1×w1
,共有 C 2 C2 ,則在經過卷積之後,我們得到的特徵圖大小為 H 2 × W 2 × C 2 H2×W2×C2 。這個過程可以很好的完成影象特徵的提取任務,但是所有的資料同時完成,對視訊記憶體的要求比較高。

在這裡插入圖片描述

在Group Convolution中,我們並不是一次性對輸入資料進行處理,而是將其分成了g類。如果上一層的輸出feature map有C1個,即通道數channel=C1時,經過Group Convolution後每g個通道被合成為一個group,一共分成C1/g個channel,這些channel之間獨立連線,等個股group都卷積完成之後再把輸出concatenate在一起,生成這個層的最終輸出結果(channel)

如下圖是一個群卷積的CNN結構。filters被分成了兩個group。每一個group都只有原來一半的feature map。
在這裡插入圖片描述

Group convolution的作用

總結來看,Group convolution一方面可以減小視訊記憶體的工作壓力,另一方面可以減少冗餘引數,防止模型過擬合。

單純增加捲積核輸入可以在一定程度上提高效果,但是卷積核數目過多時,冗餘引數過多會導致過擬合,運用Group convolution之後,每組的卷積核提取的特徵相似度比較低,大大減輕冗餘現象。當然,

當然,Group convolution本身就極大地減少了引數。比如當輸入通道為256,輸出通道也為256,kernel size為3×3,不做Group convolution引數為256×3×3×256。實施分組卷積時,若group為8,每個group的input channel和output channel均為32,引數為8×32×3×3×32,是原來的八分之一。而Group convolution最後每一組輸出的feature maps應該是以concatenate的方式組合。