batch normalization

在DNN里,我們定義的每一層的線性變化Z^{[l]}=W^{[l]}\times input+b^{(l)},其中l代表層數(shù),非線性變換A^{[l]}=g^{[l]}(Z^{[l]})為第l層的激活函數(shù)。隨著梯度下降的進(jìn)行,每一層的參數(shù)W^{[l]}b^{[l]}都會被更新,那么Z^{[l]}的分布也就發(fā)生了改變,進(jìn)而A^{[l]}也同樣出現(xiàn)分布的改變。而A^{[l]}作為第l+1層的輸入,意味著l+1層就需要去不停適應(yīng)這種數(shù)據(jù)分布的變化,這一過程就被叫做Internal Covariate Shift。帶來問題是(1)上層網(wǎng)絡(luò)需要不停調(diào)整來適應(yīng)輸入數(shù)據(jù)分布的變化,導(dǎo)致網(wǎng)絡(luò)學(xué)習(xí)速度的降低;(2)網(wǎng)絡(luò)的訓(xùn)練過程容易陷入梯度飽和區(qū),減緩網(wǎng)絡(luò)收斂速度。

ICS產(chǎn)生的原因是由于參數(shù)更新帶來的網(wǎng)絡(luò)中每一層輸入值分布的改變,并且隨著網(wǎng)絡(luò)層數(shù)的加深而變得更加嚴(yán)重,因此我們可以通過固定每一層網(wǎng)絡(luò)輸入值的分布來對減緩ICS問題。
(1)白化(Whitening)
白化(Whitening)是機(jī)器學(xué)習(xí)里面常用的一種規(guī)范化數(shù)據(jù)分布的方法,主要是PCA白化與ZCA白化。白化是對輸入數(shù)據(jù)分布進(jìn)行變換,進(jìn)而達(dá)到以下兩個目的:使得輸入特征分布具有相同的均值與方差。其中PCA白化保證了所有特征分布均值為0,方差為1;而ZCA白化則保證了所有特征分布均值為0,方差相同;去除特征之間的相關(guān)性。通過白化操作,我們可以減緩ICS的問題,進(jìn)而固定了每一層網(wǎng)絡(luò)輸入分布,加速網(wǎng)絡(luò)訓(xùn)練過程的收斂。
(2)Batch Normalization提出
既然白化可以解決這個問題,為什么我們還要提出別的解決辦法?當(dāng)然是現(xiàn)有的方法具有一定的缺陷,白化主要有以下兩個問題:白化過程計算成本太高,并且在每一輪訓(xùn)練中的每一層我們都需要做如此高成本計算的白化操作;白化過程由于改變了網(wǎng)絡(luò)每一層的分布,因而改變了網(wǎng)絡(luò)層中本身數(shù)據(jù)的表達(dá)能力。底層網(wǎng)絡(luò)學(xué)習(xí)到的參數(shù)信息會被白化操作丟失掉。既然有了上面兩個問題,那我們的解決思路就很簡單,一方面,我們提出的normalization方法要能夠簡化計算過程;另一方面又需要經(jīng)過規(guī)范化處理后讓數(shù)據(jù)盡可能保留原始的表達(dá)能力。于是就有了簡化+改進(jìn)版的白化——Batch Normalization。

第一點,對每個特征進(jìn)行獨立的normalization。我們考慮一個batch的訓(xùn)練,傳入m個訓(xùn)練樣本,并關(guān)注網(wǎng)絡(luò)中的某一層,忽略上標(biāo)l。關(guān)注當(dāng)前層的第j個維度,也就是第j個神經(jīng)元結(jié)點,對當(dāng)前維度進(jìn)行規(guī)范化:

BN_歸一化.jpg

通過上面的變換,我們解決了第一個問題,即用更加簡化的方式來對數(shù)據(jù)進(jìn)行規(guī)范化,使得第l層的輸入每個特征的分布均值為0,方差為1。Normalization操作我們雖然緩解了ICS問題,讓每一層網(wǎng)絡(luò)的輸入數(shù)據(jù)分布都變得穩(wěn)定,但卻導(dǎo)致了數(shù)據(jù)表達(dá)能力的缺失。也就是我們通過變換操作改變了原有數(shù)據(jù)的信息表達(dá)(representation ability of the network),使得底層網(wǎng)絡(luò)學(xué)習(xí)到的參數(shù)信息丟失。另一方面,通過讓每一層的輸入分布均值為0,方差為1,會使得輸入在經(jīng)過sigmoid或tanh激活函數(shù)時,容易陷入非線性激活函數(shù)的線性區(qū)域。因此,BN又引入了兩個可學(xué)習(xí)(learnable)的參數(shù)\gamma\beta。這兩個參數(shù)的引入是為了恢復(fù)數(shù)據(jù)本身的表達(dá)能力,對規(guī)范化后的數(shù)據(jù)進(jìn)行線性變換,即、tilde{Z}_j=\gamma_{j}\haxt{Z}_{j}+\beta_j。特別地,當(dāng)\gamma^2=\sigma^2,\beta=\mu時,可以實現(xiàn)等價變換(identity transform)并且保留了原始輸入特征的分布信息。通過上面的步驟,我們就在一定程度上保證了輸入數(shù)據(jù)的表達(dá)能力。

batch normalization.jpg

利用BN訓(xùn)練好模型后,我們保留了每組mini-batch訓(xùn)練數(shù)據(jù)在網(wǎng)絡(luò)中每一層的\mu_{batch}\sigma^2_{batch}。此時我們使用”整個樣本的統(tǒng)計量“來對Test數(shù)據(jù)進(jìn)行歸一化,具體來說使用均值與方差的無偏估計;得到每個特征的均值與方差的無偏估計后,我們對test數(shù)據(jù)采用同樣的normalization方法:

BN_test.jpg

參考文獻(xiàn):
https://zhuanlan.zhihu.com/p/34879333

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容