理解Batch Normalization系列2——訓(xùn)練及評估(清晰解釋)

上一期介紹了Batch Normalization的前向傳播忠聚,然而想法美好,然而能否計算、如何計算這些新參數(shù)才是重點。

系列目錄

理解Batch Normalization系列1——原理

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

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

理解Batch Normalization系列4——實踐

本文目錄
1 訓(xùn)練階段
1.1 反向傳播
1.2 參數(shù)的初始化及更新
2 評估階段
2.1 來自訓(xùn)練集的均值和方差
2.2 評估階段的計算
3 總結(jié)
參考文獻(xiàn)

先放出這張圖坠陈,幫助記住。

img1.png

? 圖 1. BN的結(jié)構(gòu)

1 訓(xùn)練階段

引入BN喘帚,增加了\mu畅姊、\sigma咒钟、\gamma吹由、\beta四個參數(shù)。

這四個參數(shù)的引入朱嘴,能否計算梯度倾鲫?它們分別是如何初始化與更新?

1.1 反向傳播

神經(jīng)網(wǎng)絡(luò)的訓(xùn)練萍嬉,離不開反向傳播乌昔,必須保證BN的標(biāo)準(zhǔn)化、縮放平移兩個操作必須可導(dǎo)壤追。

縮放平移就是一個線性公式磕道,求導(dǎo)很簡單。而對于標(biāo)準(zhǔn)化時的統(tǒng)計量行冰,看起來有點無從下手溺蕉。其實是憑借圖1的變量關(guān)系伶丐,可以繪制計算圖,如圖2所示疯特。Frederik Kratzert 在這篇博文中有詳細(xì)的計算哗魂,對每一個環(huán)節(jié)都進(jìn)行了詳細(xì)的描述。

im2.png

? 圖 2. 求解BN反向傳播的計算圖 (來源: 這篇博文)

由圖2可見:

  • 每個環(huán)節(jié)都可導(dǎo)
  • 只要求出各個環(huán)節(jié)的導(dǎo)數(shù)
  • 用鏈?zhǔn)椒▌t(串聯(lián)關(guān)系就相乘漓雅,并聯(lián)關(guān)系就相加)求出總梯度录别。

狗尾續(xù)貂,對這個反傳大致做了一個流程圖邻吞,如圖3所示组题,幫助理解。

im3.png

? 圖 3. BN層反傳的流程圖 (來源: 這篇博文)

注意吃衅,均值的梯度往踢、方差的梯度的計算,只是為了保證梯度的反向傳播鏈路的通暢徘层,而不是為了更新自己(沒明白下文還會解釋)峻呕;縮放因子\gamma和j和平移因子\beta的梯度傳播則和權(quán)重W一樣,不影響反向傳播鏈路的通暢趣效,只是為了更新自己瘦癌。

最后的結(jié)果就是原論文中表述:

im4.png

? 圖4. BN的反向傳播. (來源: Batch Normalization Paper)

? 如果是從事學(xué)術(shù),不妨練練手跷敬。

1.2 參數(shù)的初始化及更新

討論一下圖1中的6個參數(shù)的初始化及更新問題讯私。

  • W

    初始化用標(biāo)準(zhǔn)正態(tài)分布,更新用梯度下降西傀。

    與經(jīng)典網(wǎng)絡(luò)的初始化相同斤寇,初始化一個標(biāo)準(zhǔn)正態(tài)分布(即Xavier方法)。

  • b

    省略掉該參數(shù)拥褂。

    在經(jīng)典的神經(jīng)網(wǎng)絡(luò)里娘锁,b作為偏置,用于解決那些W無法通過與x相乘搞定的"損失減少要求"饺鹃,即對于本層所有神經(jīng)元的加權(quán)和進(jìn)行各自的平移莫秆。而加入BN后,\beta的作用正是進(jìn)行平移悔详。b的作用被\beta所完全替代了镊屎,因此省略掉b。

    了解過ResNet結(jié)構(gòu)的朋友會發(fā)現(xiàn)該網(wǎng)絡(luò)中的卷積茄螃,都沒有偏置缝驳,為什么?下面截圖是Kaiming He在github上回答原話。(踩坑無數(shù)必須體會深刻)

im5.png

? 圖5. BN的加入導(dǎo)致本層的偏置b失效

  • \mu\sigma

    初始化取決于統(tǒng)計量用狱,僅更新梯度萎庭,但不更新值本身

    在訓(xùn)練階段齿拂,每個mini-batch上進(jìn)行前向傳播時驳规,通過對本batch上的m個樣本進(jìn)行統(tǒng)計得到;

    在反向傳播時署海,計算出它們的梯度l\mu的梯度吗购、l\sigma的梯度,用于進(jìn)行梯度傳播砸狞。
    但是\mu\sigma這兩個值本身不必進(jìn)行更新捻勉,因為在下一個mini-batch會計算自己的統(tǒng)計量,所以前一個mini-batch獲得的\mu\sigma沒意義刀森。

  • \gamma\beta

    初始化為1踱启、0,更新用梯度下降研底。

    根據(jù)我們在《理解Batch Normalization系列1——原理》的解讀埠偿,\gamma作為“準(zhǔn)方差”,初始化為一個全1向量榜晦;而\beta作為"準(zhǔn)均值”冠蒋,初始化為一個全0向量,他倆的初始值對于剛剛完成標(biāo)準(zhǔn)正態(tài)化的\hat{\vec{x}}來說乾胶,沒起任何作用抖剿。

    至于將要變成什么值,起多大作用识窿,那就交給后續(xù)的訓(xùn)練斩郎。即采用梯度下降進(jìn)行更新,方式同W喻频。

2 評估階段

\gamma缩宜、\beta是在整個訓(xùn)練集上訓(xùn)練出來的,與W一樣半抱,訓(xùn)練結(jié)束就可獲得脓恕。

然而膜宋,\mu\sigma是靠每一個mini-batch的統(tǒng)計得到窿侈,因為評估時只有一條樣本,batch_size相當(dāng)于是1秋茫,在只有1個向量的數(shù)據(jù)組上進(jìn)行標(biāo)準(zhǔn)化后史简,成了一個全0向量,這可咋辦?

2.1 來自訓(xùn)練集的均值和方差

做法是用訓(xùn)練集來估計總體均值\mu和總體標(biāo)準(zhǔn)差\sigma圆兵。

  • 簡單平均法

    把每個mini-batch的均值和方差都保存下來跺讯,然后訓(xùn)練完了求均值的均值,方差的均值即可殉农。

  • 移動指數(shù)平均(Exponential Moving Average)

    這是對均值的近似刀脏。

    僅以\mu舉例

\mu_{total}=decay*\mu_{total}+(1-decay)*\mu

? 其中decay是衰減系數(shù)。即總均值\mu_{total}是前一個mini-batch統(tǒng)計的總均值和本次mini-batch的\mu加權(quán)求和超凳。至于衰減率 decay在區(qū)間[0,1]之間愈污,decay越接近1,結(jié)果\mu_{total}越穩(wěn)定轮傍,越受較遠(yuǎn)的大范圍的樣本影響暂雹;decay越接近0,結(jié)果 \mu_{total}越波動创夜,越受較近的小范圍的樣本影響杭跪。

事實上,簡單平均可能更好驰吓,簡單平均本質(zhì)上是平均權(quán)重,但是簡單平均需要保存所有BN層在所有mini-batch上的均值向量和方差向量檬贰,如果訓(xùn)練數(shù)據(jù)量很大现斋,會有較可觀的存儲代價。移動指數(shù)平均在實際的框架中更常見(例如tensorflow)偎蘸,可能的好處是EMA不需要存儲每一個mini-batch的值庄蹋,永遠(yuǎn)只保存著三個值:總統(tǒng)計值、本batch的統(tǒng)計值迷雪,decay系數(shù)限书。

在訓(xùn)練階段同步獲得了\mu_{total}\sigma_{total},在評估時即可對樣本進(jìn)行BN操作章咧。

2.2 評估階段的計算

y=\gamma\frac{x-\mu_{total}}{\sqrt{\sigma_{total}^2}}+\beta

為避免分母不為0倦西,增加一個非常小的常數(shù)\epsilon,并為了計算優(yōu)化赁严,被轉(zhuǎn)換為:
y=\frac{\gamma}{\sqrt{\sigma_{total}^2}+\epsilon}x+(\beta-\frac{\gamma}{\sqrt{\sigma_{total}^2}+\epsilon}\mu_{total})
這樣扰柠,只要訓(xùn)練結(jié)束,\frac{\gamma}{\sqrt{\sigma_{total}^2}+\epsilon}疼约、\mu_{total}卤档、\beta就已知了,1個BN層對一條測試樣本的前向傳播只是增加了一層線性計算而已程剥。

3 總結(jié)

用圖6做個總結(jié)劝枣。

im6.png

? 圖6. BN層相關(guān)參數(shù)的學(xué)習(xí)方法

鬼斧神工的構(gòu)造,鬼斧神工的參數(shù)獲取方法,這么多鬼斧神工舔腾,需要好好消化消化溪胶。

請見下一期《理解Batch Normalization系列3——為什么有效及若干討論》

參考文獻(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稳诚,隨后出現(xiàn)的幾起案子哗脖,更是在濱河造成了極大的恐慌,老刑警劉巖扳还,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懒熙,死亡現(xiàn)場離奇詭異,居然都是意外死亡普办,警方通過查閱死者的電腦和手機(jī)工扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衔蹲,“玉大人肢娘,你說我怎么就攤上這事∮呤唬” “怎么了橱健?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沙廉。 經(jīng)常有香客問我拘荡,道長,這世上最難降的妖魔是什么撬陵? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任珊皿,我火速辦了婚禮,結(jié)果婚禮上巨税,老公的妹妹穿的比我還像新娘蟋定。我一直安慰自己,他們只是感情好草添,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布驶兜。 她就那樣靜靜地躺著,像睡著了一般远寸。 火紅的嫁衣襯著肌膚如雪抄淑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天驰后,我揣著相機(jī)與錄音肆资,去河邊找鬼。 笑死倡怎,一個胖子當(dāng)著我的面吹牛迅耘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播监署,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颤专,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钠乏?” 一聲冷哼從身側(cè)響起栖秕,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晓避,沒想到半個月后簇捍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡俏拱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年暑塑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锅必。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡事格,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搞隐,到底是詐尸還是另有隱情驹愚,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布劣纲,位于F島的核電站逢捺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏癞季。R本人自食惡果不足惜劫瞳,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绷柒。 院中可真熱鬧柠新,春花似錦、人聲如沸辉巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郊楣。三九已至憔恳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間净蚤,已是汗流浹背钥组。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留今瀑,地道東北人程梦。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓点把,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屿附。 傳聞我的和親對象是個殘疾皇子郎逃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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