天天看點

神經網絡BN(Batch Normalization)層總結(上)

BN層,全稱Batch Normalization,譯為批歸一化層,于2015年提出。其目的在文章題目中就給出:BN層能夠減少内部變量偏移來加速深度神經網絡的訓練。

源文連結:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

在這裡從Batch size講起,說一下自己的了解,BN層内容其實比較簡單,但是為了友善了解我在這裡加入一些思考過程,可能稍顯冗雜,因而分為上下兩個部分,參考連結會在下給出。

一、Batch size

Batch size是指一次訓練所選取的樣本數。在沒有使用Batch Size之前,這意味着網絡在訓練時,是一次把所有的資料(整個資料庫)輸入網絡中,然後計算它們的梯度進行反向傳播,由于在計算梯度時使用了整個資料庫,是以計算得到的梯度方向更為準确。但在這情況下,計算得到不同梯度值差别巨大,難以使用一個全局的學習率,是以這時一般使用Rprop這種基于梯度符号的訓練算法,單獨進行梯度更新。

在小樣本數的資料庫中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的資料庫,一次性把所有資料輸進網絡,肯定會引起記憶體的爆炸。是以就提出Batch Size的概念。

當然,Batch size的大小并非是固定的,也不是越大越好或者越小越好,而是随着具體的問題不斷改變,這就需要不斷的嘗試。

二、Internal Covariate Shift

深度神經網絡涉及到很多層的疊加,而每一層的參數更新會導緻上層的輸入資料分布發生變化,通過層層疊加,高層的輸入分布變化會非常劇烈,這就使得高層需要不斷去重新适應底層的參數更新。為了訓練模型,我們需要非常謹慎地去設定學習率、初始化權重、以及盡可能細緻的參數更新政策。Google 将這一現象總結為 Internal Covariate Shift,簡稱 ICS.

在統計機器學習中有一個經典假設是“源空間(source domain)和目标空間(target domain)的資料分布(distribution)是一緻的”。如果不一緻,那麼就出現了新的機器學習問題,如 transfer learning / domain adaptation 等。而 covariate shift就是分布不一緻假設之下的一個分支問題,它是指源空間和目标空間的條件機率是一緻的,但是其邊緣機率不同。

即:對所有x ∈ X,有:Ps ( Y ∣ x = X ) = Pt ( Y ∣ x = X )

但是,Ps ( X ) ≠ Pt ( X )

可以看到,随着網絡層數的加深,輸入分布經過多次線性非線性變換,已經被改變了,但是它對應的标簽,如分類,還是一緻的,即使條件機率一緻,邊緣機率不同。

那如何去解決這一問題呢?思路就是對資料進行預處理,使其滿足獨立同分布,使特征分布均值為0,方差為1。

白化(Whitening)通常是機器學習中常用的一種規範化資料分布的方法,通過白化操作可以起到一定作用,但是白化的計算成本太高每一輪訓練中的每一層都需要做白化操作;同時白化改變了網絡每一層的分布,導緻網絡層中資料的表達能力受限。

因而,Normalization的方法被提出。

三、Normalization

1.正向傳播過程,引用論文中的解釋

神經網絡BN(Batch Normalization)層總結(上)

輸入:x1…xm,兩個待學習的參數

輸出:兩個參數

(1)計算均值

(2)計算方差

(3)進行标準化,引入ϵ為了防止分母為0

(4)訓練參數γ,β 并輸出

在正向傳播的時候,通過可學習的γ與β參數求出新的分布值

2.在反向傳播的時候,通過鍊式求導方式,求出γ與β以及相關權值 

神經網絡BN(Batch Normalization)層總結(上)

下半部分連結: https://blog.csdn.net/lipengfei0427/article/details/108996594

繼續閱讀