2.3.2 Batch Norm介绍
正則化網(wǎng)絡(luò)的激活函數(shù)
Batch歸一化會(huì)使你的參數(shù)搜索變得很容易,使神經(jīng)網(wǎng)絡(luò)對(duì)超參數(shù)選擇變得更加穩(wěn)定。超參數(shù)范圍會(huì)更龐大,工作效率也會(huì)更好。也會(huì)讓你訓(xùn)練出更為深層次的神經(jīng)網(wǎng)絡(luò)。下面我們具體介紹一下Batch歸一化
如圖右側(cè)的圈圈所示,我們之前已經(jīng)學(xué)過(guò)了通過(guò)歸一化手段如何將扁平的圈圈變成比較一般的圓形,但是這只是對(duì)邏輯回歸而言的,對(duì)于神經(jīng)網(wǎng)絡(luò)應(yīng)該怎么做呢?
我們?cè)跉w一化的例子中看到了,如果對(duì)x1,x2和x3進(jìn)行歸一化,那么可以學(xué)到更好地w和b,同樣的道理,在神經(jīng)網(wǎng)絡(luò)里,我們要想學(xué)到不錯(cuò)的w3和b3,那么需要對(duì)a2進(jìn)行歸一化處理。
那么問(wèn)題是對(duì)于隱藏層,比如說(shuō)這里的a2,能否實(shí)現(xiàn)歸一化呢?
Batch歸一化就可以做到這一點(diǎn)。實(shí)際上我們是對(duì)Z2進(jìn)行的歸一化而不是對(duì)a2進(jìn)行的歸一化。下面我們來(lái)介紹一下如何進(jìn)行歸一化
如圖所示,假設(shè)你又一些隱藏單元,從z1一直到zm,這些都是Z[l]Z[l]層的。
對(duì)z實(shí)行了正則化之后我們有如下公式:
Z(i)?=γZ(i)norm+βZ(i)?=γZnorm(i)+β
這里 γγ和 ββ是模型的學(xué)習(xí)參數(shù)。我們可以使用梯度下降或者一些其他的梯度下降法。比如說(shuō)momentum或者Adam來(lái)更新這兩個(gè)參數(shù),就如同神經(jīng)網(wǎng)絡(luò)的權(quán)重一樣。
事實(shí)上,如果γ=σ2+????√γ=σ2+ 而β=μβ=μ那么,實(shí)際上這個(gè)式子就可以精確地轉(zhuǎn)化為Z_norm的形式。
Batch歸一化的好處就是他適用的歸一化過(guò)程不僅是輸入層,同樣也適用于隱藏層。
需要注意的是我們通過(guò)調(diào)節(jié)γγ和ββ,可以讓正則化后為標(biāo)準(zhǔn)正太分布,也可以不是標(biāo)準(zhǔn)正態(tài)分布,這樣就像右下圖中,我們?nèi)绻胹igmoid函數(shù)來(lái)擬合的話,如果是標(biāo)準(zhǔn)正態(tài)分布就只能停留在線性段,而如果不是標(biāo)準(zhǔn)正態(tài)分布就可以更好的利用非線性區(qū)域。這里,均值和方差有γγ和ββ這兩個(gè)參數(shù)共同來(lái)控制。
將Batch Norm擬合進(jìn)神經(jīng)網(wǎng)絡(luò)
我們之前看了Batch Norm在單一層的神經(jīng)網(wǎng)絡(luò)進(jìn)行正則化,那么現(xiàn)在我們看看在多層是如何實(shí)現(xiàn)的。
如圖所示,這就是Batch歸一化的實(shí)踐方法。
在現(xiàn)實(shí)中,Batch歸一化通常是和mini-batch一起使用的。也就是將batch分成mini-batch然后按照上面的步驟進(jìn)行計(jì)算。
需要注意的是,如上圖的下半部分所示z=wa+b,但是如果我們對(duì)Z進(jìn)行歸一化,比如說(shuō)零均值和標(biāo)準(zhǔn)方差進(jìn)行歸一化,那么得到的結(jié)果是無(wú)論b是多少,都要被減去。因?yàn)槟阍谟?jì)算歸一化的過(guò)程中你要計(jì)算z的均值,然后再減去均值。所以在mini-batch中增加任何常數(shù),值都不會(huì)發(fā)生改變。因?yàn)榧拥娜魏纬?shù)都會(huì)被均值減去所抵消。因此,如果進(jìn)行歸一化的話,可以不寫常數(shù)b。
Z(i)?=γZ(i)norm+βZ(i)?=γZnorm(i)+β
最后我們用這個(gè)公式,轉(zhuǎn)而就用γγ和ββ來(lái)控制了。我們不用b而轉(zhuǎn)而用ββ,說(shuō)明控制參數(shù)會(huì)影響偏置條件。
最后我們來(lái)做一個(gè)總結(jié)
Batch Norm為什么奏效
Batch歸一化起作用的一個(gè)原因是通過(guò)歸一化輸入特征值x可以獲得范圍內(nèi)的值,起到加速學(xué)習(xí)的作用。但是還有更深層次的原因,我們一起來(lái)看一下:
batch歸一化有效的另外一個(gè)原因是他可以使網(wǎng)絡(luò)中比較深層次的網(wǎng)絡(luò)更能經(jīng)受住變化。
如圖所示,我們執(zhí)行貓的圖片分類任務(wù),那么可能左側(cè)用黑貓訓(xùn)練的結(jié)果,并不能用于很好的識(shí)別其他啊顏色的貓。
使你的數(shù)據(jù)改變分布(就是上面說(shuō)的用黑貓也能識(shí)別其他貓)這種事情有一個(gè)奇怪的名字叫covariate shift這個(gè)想法就是如果你學(xué)到了x到y(tǒng)的映射,此時(shí)如果x的分布發(fā)生了改變,那么可能需要重新訓(xùn)練你的算法了。那么這個(gè)問(wèn)題如何應(yīng)用到神經(jīng)網(wǎng)絡(luò)中?
如圖所示的一個(gè)神經(jīng)網(wǎng)絡(luò),我們遮住前面的部分,只從第三層開(kāi)始。如果我們只看第三層的話,我們希望學(xué)出w和b來(lái)很好的擬合將輸入a映射到y(tǒng)。然而事實(shí)上是前面還有兩層w和b,如果前面兩層的w和b發(fā)生了變化,那么輸入的a也會(huì)發(fā)生變化,這就會(huì)影響到第三層的w和b,于是我們可以說(shuō),a是在不斷變化過(guò)程中,是一個(gè)covariate shift問(wèn)題。
batch歸一化做的,就是減少這些隱藏層值分布變化數(shù)量。如上圖的下部分所示,我們繪制了z1和z2的平面圖。batch歸一化說(shuō)的是z1和z2的值可以改變,而這兩個(gè)數(shù)的確會(huì)變化,只要神經(jīng)網(wǎng)絡(luò)一更新參數(shù),這兩個(gè)數(shù)就會(huì)發(fā)生變化。而batch歸一化可以保證,無(wú)論z1和z2怎么變化,他們的均值和方差保持不變。
batch歸一化做的是限制前層的更新,會(huì)影響數(shù)值的分布情況。它的作用是減弱前層參數(shù)的作用與后層參數(shù)作用之間的聯(lián)系,他使得網(wǎng)絡(luò)中每一層都可以自己學(xué)習(xí),稍稍獨(dú)立于其它層,有助于更好的進(jìn)行學(xué)習(xí)。因?yàn)樗麄儽煌粋€(gè)均值和方差限制,導(dǎo)致后面的層學(xué)起來(lái)會(huì)更容易一些。
batch歸一化還有一個(gè)作用,他有一點(diǎn)正則化的效果
在mini-batch上計(jì)算均值和方差而不是在整個(gè)數(shù)據(jù)集上計(jì)算均值和方差的話容易會(huì)引起一點(diǎn)噪音。所以縮放從Z[l]Z[l]到(^z[l])(^z[l])也有一定的噪音。Dropout有噪音的原因是因?yàn)樗S機(jī)加了一些0.batch的話,計(jì)算的均值和偏差也都是有噪音的。
所以batch有輕微的正則化效果(regularization)效果。因?yàn)榻o隱藏層增加了噪音,這迫使后部單元不過(guò)分依賴于任何一個(gè)隱藏單元。當(dāng)然,如果你用較大的mini-batch,比如說(shuō)512的話,減少了噪音,也就減少了正則化效果。
測(cè)試時(shí)的Batch Norm
Batch歸一化將你的數(shù)據(jù)以mini-batch的形式進(jìn)行處理。但在測(cè)試時(shí)你可能需要對(duì)每一個(gè)樣本逐一進(jìn)行處理。我們看一下如何通過(guò)調(diào)整網(wǎng)絡(luò)來(lái)做到這一點(diǎn)。
如圖所示,左側(cè)是我們?cè)谟?xùn)練集中的每一個(gè)mini-batch所用的公式,然而在測(cè)試集的時(shí)候,我們不能這么做。
如圖右側(cè)所示,在測(cè)試集中你需要用一個(gè)指數(shù)加權(quán)平均來(lái)估計(jì)。這個(gè)平均函數(shù)涵蓋了所有的mini-batch。假設(shè)對(duì)于L層,我們有mini-batch X1,X2等等,在L層訓(xùn)練X1的時(shí)候,你就得到了μLμL,其他訓(xùn)練也是這樣的。正如我們之前計(jì)算溫度得到的指數(shù)加權(quán)平均θ1θ1等,你會(huì)得到這些穩(wěn)定向量的最新平均值。用同樣的方法,我們也可以得到μμ和σσ的每一層的值。
總結(jié)一下,μμ和σσ是在整個(gè)mini-batch上計(jì)算出來(lái)的,但是在測(cè)試時(shí),你可能需要逐一處理樣本,方法是根據(jù)你的訓(xùn)練集估計(jì)μμ和σσ。方法有很多種,理論上你可以在網(wǎng)絡(luò)上運(yùn)行整個(gè)訓(xùn)練集來(lái)得到μμ和σσ,但實(shí)際操作中我們通常用到指數(shù)加權(quán)平均來(lái)追蹤訓(xùn)練過(guò)程中看到的μμ和σσ,也會(huì)用指數(shù)加權(quán)平均來(lái)估計(jì)μμ和σσ。然后用測(cè)試集的μμ和σσ來(lái)進(jìn)行你所需單元的z的值得調(diào)整。
吳教主深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)課程總綱
總結(jié)
以上是生活随笔為你收集整理的2.3.2 Batch Norm介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2.3.1 为超参数选择合适的范围
- 下一篇: 2.3.3 Softmax回归介绍