理解Batch Normalization系列3——為什么有效及11個(gè)問(wèn)題(清晰解釋?zhuān)?/h1>

前面兩期庭再,我們了解了原理、訓(xùn)練及評(píng)估,然而為什么有效及若干細(xì)節(jié)仍值得討論产镐。

系列目錄

理解Batch Normalization系列1——原理

理解Batch Normalization系列2——訓(xùn)練及評(píng)估

理解Batch Normalization系列3——為什么有效及若干討論

理解Batch Normalization系列4——實(shí)踐

文章目錄
BN改善了ICS嗎?
什么是ICS踢步?
BN與ICS無(wú)關(guān)
BN改善了損失的平滑性
什么是平滑性癣亚?
其他11個(gè)值得討論的問(wèn)題
參考文獻(xiàn)

BN改善了ICS嗎?

原作者認(rèn)為BN是旨在解決了 ICS(Internal Covariate Shift)問(wèn)題获印。原文是這樣解釋?zhuān)?/p>

We define Internal Covariate Shift as the change in the distribution of network activations due to the change in network parameters during training. To improve the training, we seek to reduce the internal covariate shift. By fixing the distribution of the layer inputs x as the training progresses, we expect to improve the training speed.

什么是ICS述雾?

所謂Covariate Shift,是指相比于訓(xùn)練集數(shù)據(jù)的特征兼丰,測(cè)試集數(shù)據(jù)的特征分布發(fā)生了變化玻孟。

而原作者定義的Internal Covariate Shift,設(shè)想把每層神經(jīng)網(wǎng)絡(luò)看做一個(gè)單獨(dú)的模型鳍征,它有著自己對(duì)應(yīng)的輸入與輸出黍翎。如果這個(gè)“模型”越靠輸出層,由于訓(xùn)練過(guò)程中前面多層的權(quán)重的更新頻繁艳丛,導(dǎo)致它每個(gè)神經(jīng)元的輸入(即上一層的激活值)的數(shù)值分布匣掸,總在不停地變化,這導(dǎo)致訓(xùn)練困難氮双。

然而碰酝,一個(gè)啟發(fā)性的解釋很容易被推翻,又有人做了更進(jìn)一步的解釋戴差。

BN與ICS無(wú)關(guān)

2018年的文章《How Does Batch Normalization Help Optimization?》做了實(shí)驗(yàn)送爸,如圖1所示。

img1.png

圖 1. BN與ICS (來(lái)源: 原始論文)

左圖表明,三個(gè)網(wǎng)絡(luò)訓(xùn)練曲線袭厂,最終都達(dá)成了較高的精度墨吓;右圖是三個(gè)網(wǎng)絡(luò)中抽出3個(gè)層的激活值,繪制9個(gè)HISTOGRAMS圖纹磺,每層激活值的分布都在訓(xùn)練過(guò)程中不斷變化(HISTOGRAMS圖)肛真,尤其是網(wǎng)絡(luò)中更深的層,這導(dǎo)致了ICS問(wèn)題(根據(jù)上文的ICS定義)爽航。

  • 應(yīng)用了BN蚓让,觀察到的右圖(Standard+BatchNorm)的激活值分布變化很明顯,理論上將引起明顯的ICS問(wèn)題讥珍。

  • 在BN層后疊加噪音(輸入到后面的非線性激活历极,相當(dāng)于BN白干了),觀察到的右圖(Standard+"Noisy" BatchNorm)的激活值分布變化更為突出衷佃,理論上將引起更為明顯的ICS問(wèn)題趟卸。

    (然而,我的理解是:如果每個(gè)BN層后疊加噪音氏义,下一層的BN也會(huì)進(jìn)行標(biāo)準(zhǔn)化锄列,層層抵消,相當(dāng)于僅最后一個(gè)BN層后疊加的噪音增大了ICS)

    然而兩種情況下惯悠,左圖BN的表現(xiàn)依然非常穩(wěn)定邻邮。即BN并沒(méi)有減少I(mǎi)CS。

    那么克婶,BN是為什么有效筒严?

BN改善了損失的平滑性

2018年的論文《How Does Batch Normalization Help Optimization?》,作者定義了一個(gè)描述損失函數(shù)平滑度的函數(shù)情萤,觀察加入BN的前后鸭蛙,損失函數(shù)平滑性的變化。如圖2所示筋岛∪⑹樱縱軸的數(shù)值越小,表明損失函數(shù)曲面越平滑睁宰;縱軸數(shù)值越大肪获,表明損失函數(shù)曲面越顛簸。藍(lán)色線為加入BN后的損失函數(shù)的平滑度勋陪,可以看到贪磺,加入BN后,損失函數(shù)曲面的平滑程度得到了顯著改善诅愚。

img2.png

圖 2. BN的加入,增加了損失函數(shù)的光滑度(來(lái)源: 原始論文)

因此得到的結(jié)論是:BN的加入使得損失函數(shù)曲面變得平滑,而平滑的損失函數(shù)進(jìn)行梯度下降法變得非常容易(可參見(jiàn)圖3)违孝。

什么是平滑性刹前?

對(duì)平滑性的理解,我想沒(méi)有比圖3更合適的了雌桑。

img3.png

圖 3. 損失函數(shù)的光滑度對(duì)比(來(lái)源:Visualizing the Loss Landscape of Neural Nets)

圖3中所展示的是喇喉,ResNet中引入的shortcut connection,實(shí)際上是對(duì)損失函數(shù)的平滑作用校坑。顯然拣技,對(duì)于左側(cè)的損失函數(shù),梯度下降將是異常困難耍目;而對(duì)于右側(cè)膏斤,即經(jīng)過(guò)平滑的損失函數(shù),將大大提升訓(xùn)練效率邪驮。

由于權(quán)重參數(shù)動(dòng)輒千萬(wàn)莫辨,必然將權(quán)重?cái)?shù)映射成2個(gè),因此繪制損失函數(shù)曲面相當(dāng)需要技巧與計(jì)算代價(jià)毅访,尚未找到BN的平滑性3D圖對(duì)比沮榜,但不影響圖2中BN對(duì)平滑性改善效果的證明。

其他11個(gè)值得討論的問(wèn)題

  • BN層的位置能不能調(diào)整喻粹?如果能調(diào)整哪個(gè)位置更好蟆融?

    能。原因:由第二章BN的反向傳播可知守呜,BN不管放在網(wǎng)絡(luò)的哪個(gè)位置振愿,都可以實(shí)現(xiàn)這兩個(gè)功能:訓(xùn)練?和?、傳遞梯度到前一層弛饭,所以位置并不限于ReLU之前冕末。

    原始論文中,BN被放在本層ReLU之前侣颂,即

    也有測(cè)試表明档桃,BN放在上一層ReLU之后,效果更好憔晒,即

    表1 BN的位置對(duì)訓(xùn)練結(jié)果的影響來(lái)源

Name Accuracy LogLoss Comments
Before 0.474 2.35 As in paper
Before + scale&bias layer 0.478 2.33 As in paper
After 0.499 2.21
After + scale&bias layer 0.493 2.24

但是由于這些都是試驗(yàn)證明藻肄,而非理論證明,因此無(wú)法肯定BN放在ReLU后就一定更好拒担。

在實(shí)踐中可以都試試嘹屯。

  • 在訓(xùn)練時(shí)為什么不直接使用整個(gè)訓(xùn)練集的均值/方差?

    使用 BN 的目的就是為了保證每批數(shù)據(jù)的分布穩(wěn)定从撼,使用全局統(tǒng)計(jì)量反而違背了這個(gè)初衷州弟。

  • 在預(yù)測(cè)時(shí)為什么不直接使用整個(gè)訓(xùn)練集的均值/方差?

    完全可以。由于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)量一般很大婆翔,所以內(nèi)存裝不下拯杠,因此用指數(shù)滑動(dòng)平均方法去近似值,好處是不占內(nèi)存啃奴,計(jì)算方便潭陪,但其結(jié)果不如整個(gè)訓(xùn)練集的均值/方差那么準(zhǔn)確。

  • batch_size的配置

    不適合batch_size較小的學(xué)習(xí)任務(wù)最蕾。因?yàn)閎atch_size太小依溯,每一個(gè)step里前向計(jì)算中所統(tǒng)計(jì)的本batch上的方差和均值,噪音聲量大瘟则,與總體方差和總體均值相差太大黎炉。前向計(jì)算已經(jīng)不準(zhǔn)了,反向傳播的誤差就更大了壹粟。

    尤其是最極端的在線學(xué)習(xí)(batch_size=1)拜隧,原因?yàn)闊o(wú)法獲得總體統(tǒng)計(jì)量。

  • 對(duì)學(xué)習(xí)率有何影響趁仙?

    由于BN對(duì)損失函數(shù)的平滑作用洪添,因此可以采用較大的學(xué)習(xí)率。

  • BN是正則化嗎雀费?

    在深度學(xué)習(xí)中干奢,正則化一般是指為避免過(guò)擬合而限制模型參數(shù)規(guī)模的做法。即正則化=簡(jiǎn)化盏袄。BN能夠平滑損失函數(shù)的曲面忿峻,顯然屬于正則化。不過(guò)辕羽,除了在過(guò)擬合時(shí)起正則作用逛尚,在欠擬合狀況下,BN也能提升收斂速度刁愿。

  • 與Dropout的有何異同绰寞?

    BN由于平滑了損失函數(shù)的梯度函數(shù),不僅使得模型訓(xùn)練精度提升了铣口,而且收斂速度也提升了滤钱;Dropout是一種集成策略,只能提升模型訓(xùn)練精度脑题。因此BN更受歡迎件缸。

  • 能否和Dropout混合使用?

    雖然混合使用較麻煩叔遂,但是可以他炊。不過(guò)現(xiàn)在主流模型已經(jīng)全面倒戈BN争剿。Dropout之前最常用的場(chǎng)合是全連接層,也被全局池化日漸取代佑稠。既生瑜何生亮秒梅。

  • BN可以用在哪些層旗芬?

    所有的層舌胶。從第一個(gè)隱藏層到輸出層,均可使用疮丛,而且全部加BN效果往往最好幔嫂。

  • BN可以用在哪些類(lèi)型的網(wǎng)絡(luò)?

    MLP誊薄、CNN均ok履恩,幾乎成了這類(lèi)網(wǎng)絡(luò)的必選項(xiàng)。

    RNN網(wǎng)絡(luò)不ok呢蔫,因?yàn)闊o(wú)論訓(xùn)練和測(cè)試階段切心,每個(gè)batch上的輸入序列的長(zhǎng)度都不確定,均值和方差的統(tǒng)計(jì)非常困難片吊。

  • BN的缺點(diǎn)

    在訓(xùn)練時(shí)前向傳播的時(shí)間將增大绽昏。(但是迭代次數(shù)變少了,總的時(shí)間反而少了)

下一期俏脊,我們將動(dòng)手實(shí)現(xiàn)一個(gè)BN層全谤。

(如果本文對(duì)您有所幫助,別忘了點(diǎn)贊支持一下哈爷贫,感謝各位看官)

參考文獻(xiàn)

[1] https://arxiv.org/pdf/1502.03167v3.pdf

[2] https://r2rt.com/implementing-batch-normalization-in-tensorflow.html

[3] Adjusting for Dropout Variance in Batch Normalization and Weight Initialization

[4] http://www.reibang.com/p/05f3e7ddf1e1

[5] https://www.youtube.com/watch?v=gYpoJMlgyXA&feature=youtu.be&list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC&t=3078

[6] https://kratzert.github.io/2016/02/12/understanding-the-gradient-flow-through-the-batch-normalization-layer.html

[7] https://www.quora.com/In-deep-learning-networks-could-the-trick-of-dropout-be-replaced-entirely-by-batch-normalization

[8]https://panxiaoxie.cn/2018/07/28/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0-Batch-Normalization/

[9] https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization

[10] https://www.quora.com/In-deep-learning-networks-could-the-trick-of-dropout-be-replaced-entirely-by-batch-normalization

[11] https://github.com/ducha-aiki/caffenet-benchmark/blob/master/batchnorm.md

[12]https://www.quora.com/What-is-Covariate-shift

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末认然,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漫萄,更是在濱河造成了極大的恐慌卷员,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腾务,死亡現(xiàn)場(chǎng)離奇詭異毕骡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)窑睁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)挺峡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人担钮,你說(shuō)我怎么就攤上這事橱赠。” “怎么了箫津?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵狭姨,是天一觀的道長(zhǎng)宰啦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饼拍,這世上最難降的妖魔是什么赡模? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮师抄,結(jié)果婚禮上漓柑,老公的妹妹穿的比我還像新娘。我一直安慰自己叨吮,他們只是感情好辆布,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著茶鉴,像睡著了一般锋玲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涵叮,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天惭蹂,我揣著相機(jī)與錄音,去河邊找鬼割粮。 笑死盾碗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的穆刻。 我是一名探鬼主播置尔,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼氢伟!你這毒婦竟也來(lái)了榜轿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朵锣,失蹤者是張志新(化名)和其女友劉穎谬盐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诚些,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飞傀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诬烹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砸烦。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绞吁,靈堂內(nèi)的尸體忽然破棺而出幢痘,到底是詐尸還是另有隱情,我是刑警寧澤家破,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布颜说,位于F島的核電站购岗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏门粪。R本人自食惡果不足惜喊积,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玄妈。 院中可真熱鬧乾吻,春花似錦、人聲如沸措近。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瞭郑。三九已至,卻和暖如春鸭你,著一層夾襖步出監(jiān)牢的瞬間屈张,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工袱巨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阁谆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓愉老,卻偏偏與公主長(zhǎng)得像场绿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫉入,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容