我錄了一個講解視頻:https://www.bilibili.com/video/BV1si4y1s7g7/
目錄
三、圖解三種卷積層 (核心內容)
一、整體介紹
EEGnet是爲專門一般的腦電圖識別任務而設計的通用且緊湊的卷積神經網絡。(設計思路借鑑了MobileNet)
下圖是EEGnet的整體結構圖,只有三個卷積模塊,重點是depthwise conv 和separable conv這兩個卷積模塊。
表格表明了EEGnet的結構細節,可以看出下劃紅線和下劃藍線是EEGnet相對傳統卷積神經網絡特別的地方。
二、梳理激活函數
由於激活函數比較簡單,所以先介紹一下激活函數。
傳統激活函數發展 sigmoid -> tanh -> ReLU (目前最常用的激活函數)
ReLU函數的一些相關變種
EEGnet有使用ELU激活函數,其具有如ReLU的正值特性,所以一樣可以緩解梯度消失問題,而ELU還有負值,可以讓激活單元輸出的均值更接近0,從而達到正則化的效果。且ELU的負值計算是指數函數,不會發生突變,所以對輸入變化或噪聲更魯棒。(SELU輸出的均值不但更接近0,其方差也更接近單位方差1,進一步達到正則化效果,提升收斂速度等)
線性激活Linear就等於只有神經元在進行計算,即y=Σ(X*W)+b
三、圖解三種卷積層
1. Convolution—普通的卷積層操作
對於(shape爲5×5×3)的輸入, 經過3×3卷積核的卷積層(假設輸出通道數爲4,則卷積核shape爲3×3×3×4,最終輸出4個Feature Map,假設卷積層的步長爲1,那麼如果padding方式是valid那麼輸出尺寸變爲3×3。
卷積層共4個filter,每個filter有1個bias參數,每個filter包含了3個kernel,每個kernel的大小爲3×3。
卷積層的參數數量計算:Parameters = 4 × 3 × 3 × 3 + 4 = 112
2. Depthwise Convolution—逐通道的卷積層操作
對於一張5×5像素、三通道(shape爲5×5×3)的輸入, Depthwise Convolution是完全在二維平面內進行的卷積運算。卷積核的數量與上一層的通道數相同(通道和卷積核一一對應), 所以輸出feature map的通道數目不變。
卷積層共3個filter,每個filter有1個bias參數,每個filter包含了1個kernel,每個kernel的大小爲3×3。
卷積層的參數數量計算:Parameters = 3× 1 × 3 × 3 + 3 = 30。
評價:雖然這樣顯著減少了卷積層的參數數量,但是這種方法無法擴展Feature map,沒有有效利用不同通道在相同空間位置上的feature信息。
3. Pointwise Convolution—逐點的卷積層操作
對於一張5×5像素、三通道的輸入, Pointwise Convolution的卷積核大小固定爲1×1,假設其輸出通道爲4,那麼它的卷積核的shape爲 1×1×M×4,M爲上一層的通道數。所以這裏的卷積運算會將上一步的feature map在深度方向上進行加權組合。
卷積層共4個filter,每個filter有1個bias參數,每個filter包含了3個kernel,每個kernel的大小爲1×1。
卷積層的參數數量計算:Parameters = 4× 3 × 1 × 1 + 4 = 16
評價:pointwise convolution可以擴展feature map的數目,還能將上一步生成的feature map在空間維度進行加權組合,正好彌補了Depthwise Convolution的兩個缺點。
四、總結
Depthwise Convolution的一個卷積核負責一個通道,即一個通道只被一個卷積核卷積。
Pointwise Convolution的卷積核的shape爲 1×1×M×C,M爲上一層的通道數,C爲卷積核的數目。
EEGnet由1個普通卷積conv + 1個Depthwise conv + 1個separable conv組成,
其中, separable Convolution(深度分離卷積層)由一個Depthwise Convolution和一個Pointwise Convolution組成。
參數量對比:
相同放入5×5像素、三通道的輸入,普通卷積層和separable Convolution同樣得到4個Feature map
普通卷積層的參數量: 4 × 3 × 3 × 3 + 4 = 112
Depthwise conv的參數量 = 3× 1 × 3 × 3 + 3 = 30
Pointwise conv的參數量 = 4× 3 × 1 × 1 + 4 = 16
Separable conv的參數量 = Depthwise conv + Pointwise conv = 46
所以Separable Convolution可以顯著減少卷積層的參數數量
個體內實驗結果:
跨個體實驗結果: