BatchNorm


原理——
BatchNorm就是在深度神經網絡訓練過程中使得每一層神經網絡的輸入保持相同分布;
若對神經網絡每一層做歸一化,會使每一層輸出為標准正太分布,會使神經網絡完全學習不到特征;

[

說明——(適用於從整體分布看)
圖片28*28,通道3,批次10,BatchNorm就是在歸一化10個批次中的所有圖像的第1(或者另外的)個通道;

]

算法過程_
沿着通道計算每個batch的均值u
沿着通道計算每個batch的方差σ^2
對x做歸一化,x’=(x-u)/開根號(σ^2+ε)
加入縮放和平移變量γ和β ,歸一化后的值,y=γx’+β

注意——
1.縮放和平移變量R和β是神經網絡學習到的;
2.為什么要加這兩個參數?
保證每一次數據經過歸一化后還保留原有學習來的特征,同時又能完成歸一化操作,加速訓練,增加非線性擬合能力(通過兩個參數位置變換);

優點——
1.調參過程變簡單,對於初始化要求沒那么高,數據被壓縮,可以使用大的學習率;
2.緩解過擬合,Batchnorm可以代替其他正則方式如dropout、L2、L1等;
3.降低了數據之間的絕對差異,因此在分類任務上具有更好的效果;
4.有效避免梯度消失或者爆炸(將數據拉到均值為0方差為1的正太分布),使梯度處於較大的位置,損失收斂快;
5.可以把訓練數據集打亂;(文獻說這個可以提高1%的精度)

缺點——由於每次計算均值和方差是在一個batch上,如果batchsize太小,,則計算的均值、方差不足以代表整個數據分布;

參數及其作用——
num_features: 輸出通道維度
eps: 防止公式分母為0,默認為1e-5。
momentum: 動態均值和動態方差所使用的動量,控制梯度的下降幅度,默認為0.1。
affine: 默認true,給該層添加可學習的仿射變換參數。
track_running_stats:默認true,記錄訓練過程中的均值和方差;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM