1. 摘要
訓(xùn)練深層的神經(jīng)網(wǎng)絡(luò)非常困難,因為在訓(xùn)練的過程中奶躯,隨著前面層數(shù)參數(shù)的改變,每層輸入的分布也會隨之改變亿驾。這需要我們設(shè)置較小的學(xué)習(xí)率并且謹(jǐn)慎地對參數(shù)進(jìn)行初始化嘹黔,因此訓(xùn)練過程比較緩慢。
作者將這種現(xiàn)象稱之為 internal covariate shift莫瞬,通過對每層的輸入進(jìn)行歸一化來解決這個問題儡蔓。
引入 BN 后,我們可以不用太在意參數(shù)的初始化疼邀,同時使用更大的學(xué)習(xí)率浙值,而且也會有正則化的效果,在一些情況下可以不用再使用 Dropout檩小。
2. 介紹
因為網(wǎng)絡(luò)中每一層的輸入都受到前面所有層參數(shù)的影響开呐,因此參數(shù)的一個小的改變將會隨著網(wǎng)絡(luò)加深而被逐漸放大。在這樣的情況下规求,每一層網(wǎng)絡(luò)都需要一直去適應(yīng)新的輸入分布筐付,訓(xùn)練過程也就變得很慢。
考慮如下的網(wǎng)絡(luò)計算
和
是任意的變換阻肿,
和
是需要學(xué)習(xí)的參數(shù)瓦戚。學(xué)習(xí)
可以看作是輸入
被傳入子網(wǎng)絡(luò)
因此,如果 的分布保持不變的話丛塌,
就不用去重新適應(yīng)來補(bǔ)償
分布的變化较解。
另一方面畜疾,如果我們采用 Sigmoid 激活函數(shù)的話,隨著網(wǎng)絡(luò)加深印衔,我們很容易落入到飽和區(qū)域啡捶,容易產(chǎn)生梯度消失現(xiàn)象,減緩訓(xùn)練過程奸焙。但是瞎暑,如果我們能夠確保非線性輸入的分布維持穩(wěn)定的話,優(yōu)化就不容易陷入到飽和區(qū)域与帆,從而能夠加速訓(xùn)練了赌。
3. 小批量歸一化
針對每一層的所有輸入進(jìn)行白化代價非常高并且不是處處可微,因此作者進(jìn)行了兩個必要的簡化玄糟。
第一勿她,我們獨立地歸一化一層中的每一個特征,讓它們具有零均值標(biāo)準(zhǔn)方差阵翎。針對一個 維的輸入
逢并,我們將分別對每一維進(jìn)行歸一化。
但是贮喧,這樣簡單地歸一化每個輸入會改變當(dāng)前層網(wǎng)絡(luò)的表達(dá)能力。比如猪狈,歸一化 Sigmoid 函數(shù)的輸入將會使它們落入激活函數(shù)的線性區(qū)域箱沦。為了解決這個問題,我們要保證嵌入到網(wǎng)絡(luò)中的變換能夠表示恒等變換雇庙。對此谓形,我們引入一對參數(shù) 來對歸一化后的值再進(jìn)行縮放和平移。
這樣疆前,通過設(shè)定 寒跳,如果原始激活值是最優(yōu)的話,我們也能夠恢復(fù)到原有狀態(tài)竹椒。
第二童太,用小批量樣本來產(chǎn)生對每個激活值均值和方差的估計。針對 個樣本的小批量胸完,歸一化變換如下所示:
在訓(xùn)練過程中书释,我們需要計算 BN 變換參數(shù)的梯度來進(jìn)行反向傳播,根據(jù)鏈?zhǔn)椒▌t赊窥,有
因此爆惧,BN 在網(wǎng)絡(luò)中引入了對激活值的歸一化,并且是一個可微的變換锨能。這樣扯再,每一層都可以在同樣的分布上持續(xù)學(xué)習(xí)而不用擔(dān)心內(nèi)部偏移問題芍耘,所以可以加速訓(xùn)練過程。最后熄阻,在歸一化后學(xué)習(xí)到的仿射變換允許網(wǎng)絡(luò)表示恒等變換斋竞,因此也保留了網(wǎng)絡(luò)的容量也即表示能力。
4. 測試
雖然對小批量的激活值進(jìn)行歸一化在訓(xùn)練時是非常有效的饺律,但在測試時卻是不必要也不可取的窃页,我們想讓輸出只確定地依賴于輸入。因此复濒,一旦訓(xùn)練好了一個網(wǎng)絡(luò)脖卖,我們用訓(xùn)練時總體的均值和方差來進(jìn)行歸一化。
忽略 巧颈,這些歸一化后的激活值就具有了和訓(xùn)練時一樣的零均值和標(biāo)準(zhǔn)方差畦木。我們采用無偏的方差估計
期望是根據(jù)訓(xùn)練過程中所有大小為 的小批量樣本計算的,
代表它們的方差砸泛。同時十籍,我們使用滑動平均來跟蹤訓(xùn)練過程中每個小批量的均值和方差。
5. 在全連接和卷積網(wǎng)絡(luò)中引入 BN
針對全連接網(wǎng)絡(luò)唇礁,我們在非線性之前加入 BN 變換勾栗,對 進(jìn)行歸一化。注意到盏筐,偏置
可以被忽略围俘,因為在后序的減去均值的過程中它的作用被抵消了。因此琢融,就變成了
對于 的每一個維度我們學(xué)習(xí)一對參數(shù)
界牡。
針對卷積網(wǎng)絡(luò),我們想要歸一化保持卷積的特性漾抬,因此宿亡,不同樣本的所有位置的同一個特征圖用同樣的方式進(jìn)行歸一化。對于一個大小為 的小批量樣本和大小為
的特征圖纳令,有效的小批次為
對于每一個特征圖我們學(xué)習(xí)一對參數(shù) 挽荠。
6. BN 允許更高的學(xué)習(xí)率
在傳統(tǒng)的網(wǎng)絡(luò)中,太高的學(xué)習(xí)率可能會導(dǎo)致梯度消失或者爆炸平绩,也會使網(wǎng)絡(luò)陷入在糟糕的局部最優(yōu)解坤按。但引入 BN 后,它會阻止參數(shù)的小的變化被放大成激活值和梯度的更大變化或者次優(yōu)變化馒过,比如說不會讓訓(xùn)練陷入到非線性的飽和區(qū)域臭脓。
BN 也使得訓(xùn)練對參數(shù)的規(guī)模更適應(yīng)。正常情況下腹忽,大的學(xué)習(xí)率會增大參數(shù)来累,然后放大反向傳播的梯度導(dǎo)致模型爆炸砚作。但是,引入 BN 后嘹锁,反向傳播不受參數(shù)的規(guī)模影響葫录。實際上,對于標(biāo)量 领猾,有
所以米同,,
求取時分子分母都放大
倍摔竿。反向傳播時面粮,有
由式 (1) 可以看到,參數(shù)的規(guī)模不影響梯度的反向傳播继低。而且熬苍,由式 (2) 知,較大的參數(shù)將會獲得較小的梯度袁翁,BN 能夠穩(wěn)定參數(shù)的增長柴底。
7. BN 的正則化效果
當(dāng)使用 BN 進(jìn)行訓(xùn)練時,小批次中的一個樣本會與其他樣本結(jié)合在一起被傳入網(wǎng)絡(luò)中粱胜,網(wǎng)絡(luò)不再會為某個給定的訓(xùn)練樣例生成確定值柄驻。在實驗中,作者發(fā)現(xiàn)這種效應(yīng)有利于網(wǎng)絡(luò)的泛化焙压。引入 BN 后鸿脓,Dropout 可以被移除或減少作用。
8. 加速 BN 網(wǎng)絡(luò)的訓(xùn)練
僅僅在網(wǎng)絡(luò)中添加 BN 不能充分利用這種方法的優(yōu)越性冗恨,除此之外答憔,作者采用了以下策略:
- 增大學(xué)習(xí)率
- 移除 Dropout
- 減小 L2 正則化權(quán)重
- 加快學(xué)習(xí)率衰減
- 移除局部響應(yīng)歸一化
- 更徹底地打亂訓(xùn)練數(shù)據(jù)味赃,防止同樣的數(shù)據(jù)總出現(xiàn)在同一個批次中
- 減少光度畸變
9. 實驗結(jié)果
可以看到掀抹,在 MNIST 數(shù)據(jù)集上,引入 BN 后網(wǎng)絡(luò)網(wǎng)絡(luò)收斂很快心俗,并且輸入的分布更加穩(wěn)定傲武。
在 ImageNet 數(shù)據(jù)集上,引入 BN 后很快就達(dá)到了原來 Inception 網(wǎng)絡(luò)取得的準(zhǔn)確率城榛。