CNN模型之GoogLeNet(Inception) v2

一、介紹

         2015年穀歌團隊提出了Inception V2,首次提出了批量(Batch Normalization)歸一化方法,可以提高網絡的收斂速度。應用範圍廣泛。主要的創新點包括:

  1. Batch Normalization:在神經網絡的每層計算中,參數變化導致數據分佈不一致,會產生數據的協方差偏移問題,通過對第i層的數據進行BN操作,也就是對數據進行歸一化。可以將數據控制在一定的範圍內,在輸入到第i+1層。可以提高網絡的收斂能力,較少dropout的使用。
  2. 將卷積核拆分:使用小的感受野代替大的感受野,v1版本中使用了5×55\times 5的卷積核,v2版本使用兩個3×33\times 3的卷積核可以替代它。這樣保證了感受野的範圍還減少了參數量。並且增加了網絡的深度,使表達能力更強。

二、模型結構

v1中Inception 結構
v2中Inception結構

Batch Normalization實現

第一步:對網絡某一層的輸入樣本做均值爲0,方差爲1的零均值化處理。使每一層的輸入都服從相同的分佈,克服內部協方差偏移的影響。
x^(k)=x(k)E[x(k)]Var[x(k)] \hat{x}^{(k)}=\frac{x^{(k)}-E[x^{(k)}]}{\sqrt{Var[x^{(k)}]}}
其中,E[x(k)]E[x^{(k)}]是樣本均值,Var[x(k)]\sqrt{Var[x^{(k)}]}是樣本方差。
第二步:因爲數據量可能過多,因此選擇每個batch來進行Normalization。得到BN的處理方式。
BN處理流程
第三步:梯度反向傳播,需要計算BN各個參數的梯度,公式如下
求導過程
第四步:在推理階段可以不適用BN,只需在訓練階段使用BN。完整流程如下:
BN完成流程

三、總結

        Inception v2主要包含兩個創新:一是引入批量歸一化。二是使用小的卷積核替換大的卷積核。批量歸一化解決了協方差偏移的問題。讓數據可控。即使使用大的學習率,網絡也不會發生梯度消失或梯度爆炸的問題。減少了梯度對參數大小或初始值的依賴。還可以使用非線性飽和激活函數,因爲可以避免陷入飽和狀態。卷積核的替換則可以保證感受野的同時,增加網絡的表達能力。

友情鏈接:
代碼實現:https://github.com/guoyuantao/CNN_Model/tree/master/CNN_on_cifar_ByPytorch
聯繫方式:2391855138(加好友請備註)

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