BatchNorm學習筆記

BatchNorm的作用

BatchNorm的主要作用是加速訓練
BatchNorm還有輕微的正則化效果

BatchNorm原理

對於神經網絡中其中某一層給定的隱藏單元Z(1)…Z(m)有以下操作:
在這裏插入圖片描述
第一步,求Z(1)…Z(m)的平均值。
第二步,求其方差
第三步,是在做歸一化
前三步做完得到的數據是均值是0,方差是1,滿足正態分佈,用此時的數據就可以達到加速訓練的效果了,但是這樣就學不到他們的特徵了,因爲本來這些數據的分佈就是不同的,所以我們不能把他們歸一化到均值是0,方差是1。所以有了第四步。
第四步加了兩個參數γ和β,分別叫做縮放參數和平移參數,通過選擇不同的γ和β可以讓隱藏單元有不同的分佈。
通過第四步 得到y(i),這個是我們最後要的。
這裏面的γ和β可以從你的模型中學習,可以用梯度下降,Adam等算法進行更新。

爲什麼BatchNorm可以奏效

  1. BatchNorm實現了歸一化,自然可以加速訓練
  2. 在神經網絡中,隨着第一層和第二層參數的更新,那麼就一定會影響到第三層的隱藏單元值,影響他們的分佈,但是BatchNorm可以保證不管你怎麼影響第三層的隱藏單元的分佈就是一定的均值和一定的方差(這個均值和方差是由γ和β控制的)。也就是說BatchNorm減少了隱藏單元值分佈的不穩定這個問題,是後面的層有更加穩定的基礎,削弱了前面參數和後面參數之間的耦合,允許每一層獨立學習,所以提升了整個網絡的速度。
  3. 爲什麼會有輕微的正則化效果呢?
    這個原理和dropout有些類似,因爲BatchNorm的平均值和方差都是在mini-batch上計算的,而不是在整個數據集上計算的,這樣呢這個均值和方差相當於包含噪聲,也就是在隱藏單元上加上了噪聲,使後面的隱藏單元不要過渡依賴前面的隱藏單元。
    注意:不要將BatchNorm當作正則化方法用,因爲效果比較小,它的主要作用還是加速訓練。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章