一、介紹
2015年穀歌團隊提出了Inception V2,首次提出了批量(Batch Normalization)歸一化方法,可以提高網絡的收斂速度。應用範圍廣泛。主要的創新點包括:
- Batch Normalization:在神經網絡的每層計算中,參數變化導致數據分佈不一致,會產生數據的協方差偏移問題,通過對第i層的數據進行BN操作,也就是對數據進行歸一化。可以將數據控制在一定的範圍內,在輸入到第i+1層。可以提高網絡的收斂能力,較少dropout的使用。
- 將卷積核拆分:使用小的感受野代替大的感受野,v1版本中使用了的卷積核,v2版本使用兩個的卷積核可以替代它。這樣保證了感受野的範圍還減少了參數量。並且增加了網絡的深度,使表達能力更強。
二、模型結構
Batch Normalization實現
第一步:對網絡某一層的輸入樣本做均值爲0,方差爲1的零均值化處理。使每一層的輸入都服從相同的分佈,克服內部協方差偏移的影響。
其中,是樣本均值,是樣本方差。
第二步:因爲數據量可能過多,因此選擇每個batch來進行Normalization。得到BN的處理方式。
第三步:梯度反向傳播,需要計算BN各個參數的梯度,公式如下
第四步:在推理階段可以不適用BN,只需在訓練階段使用BN。完整流程如下:
三、總結
Inception v2主要包含兩個創新:一是引入批量歸一化。二是使用小的卷積核替換大的卷積核。批量歸一化解決了協方差偏移的問題。讓數據可控。即使使用大的學習率,網絡也不會發生梯度消失或梯度爆炸的問題。減少了梯度對參數大小或初始值的依賴。還可以使用非線性飽和激活函數,因爲可以避免陷入飽和狀態。卷積核的替換則可以保證感受野的同時,增加網絡的表達能力。
友情鏈接:
代碼實現:https://github.com/guoyuantao/CNN_Model/tree/master/CNN_on_cifar_ByPytorch
聯繫方式:2391855138(加好友請備註)