理解Batch Normalization系列1——原理(清晰解釋)

Batch Normalization技巧自從2015年被谷歌提出以來逸尖,因其有效提升網(wǎng)絡(luò)訓(xùn)練效率古沥,獲得廣泛應(yīng)用與持續(xù)研究。然而娇跟,要透徹理解BN卻不容易岩齿,下圖是Kainming He在《Learning Deep Representations for Visual Recognition》報告中的一頁,只需要注意右下角的紅色描述苞俘。

img1.png

圖 1. 右下角的紅色提示足見BN的費解. (來源: Learning Deep Representations for Visual Recognition)

?

大咖都會在BN上踩坑盹沈,可想而知,如果萌新接觸這個概念吃谣,更是不易乞封。因此《理解Batch Normalization系列》將對Batch Normalization做一個全面總結(jié)。

系列目錄

理解Batch Normalization系列1——原理

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

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

理解Batch Normalization系列4——實踐

本文目錄
1 初始idea
2 原始神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
3 BN的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
4 BN的前向傳播
4.1 標準化
4.2 縮放平移
5 BN實現(xiàn)的效果
6 總結(jié)
參考文獻

1 初始idea

如果做神經(jīng)網(wǎng)絡(luò)訓(xùn)練前岗憋,對輸入的像素進行標準化處理肃晚,將有效降低模型的訓(xùn)練難度。受此啟發(fā)仔戈,作者想到关串,既然輸入層可以加標準化有好處,那么網(wǎng)絡(luò)里的隱層為什么不可以標準化监徘?

于是晋修,作者通過對每層加權(quán)和進行標準化,然后再通過縮放平移來“適度還原”凰盔。這樣墓卦,做到了既不過分破壞輸入信息,又抑制了各batch之間各位置點像素分布的劇烈變化帶來的學(xué)習(xí)難度户敬。

在原作中落剪,最主要的思想就是下面這個公式。(別擔(dān)心尿庐!只需要掃一眼即可著榴!)

img2.png

? 圖 2. BN的核心思想. (來源: Batch Normalization Paper)

我們可以先繞開圖2,分以下三步理解屁倔。

  • 先了解BN給神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)帶來了什么脑又。
  • 然后理解BN是如何進行前向傳播
  • 理解BN是如何進行前向傳播

2 原始神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)

一個經(jīng)典的神經(jīng)網(wǎng)絡(luò)锐借,它的某一個隱層如圖3所示问麸。

img3.png

? 圖 3. 經(jīng)典網(wǎng)絡(luò)的示意圖

為了和原始論文統(tǒng)一,將之前常見的加權(quán)和符號\vec{z}改用\vec{x}表示钞翔。即上一層輸出的激活值為\vec{a} 严卖,那么經(jīng)過本層加權(quán)和W\vec{a}+\vec處理后布轿,獲得加權(quán)和\vec{x}哮笆,然后經(jīng)過本層激活后即輸出\sigma(\vec{x})来颤。

(符號短缺,\sigma()代表求激活稠肘,\sigma^2代表方差)

3 BN的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

加入BN之后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示福铅。

img4.png

? 圖 4. 加入BN網(wǎng)絡(luò)的示意圖

很抱歉,為了容納更多的有效信息项阴,導(dǎo)致這個圖有點復(fù)雜滑黔。總體上來說环揽,對于本層的加權(quán)和\vec{x}略荡,BN先進行標準化求出\hat{\vec{x}},再進行縮放和平移求出\vec{y} ,這個\vec{y}取代了原始的\vec{x}進行激活。

關(guān)鍵就是標準化歉胶、縮放平移這兩個環(huán)節(jié)汛兜。

4 BN的前向傳播

認識BN的困難在于維度太多了!大腦里至少能聯(lián)想到三個維度:batch_size維度(時間順序維度)通今、網(wǎng)絡(luò)層維度(結(jié)構(gòu)橫向維度)序无、向量維度(結(jié)構(gòu)縱向維度)。

所以衡创,當你了解圖4的結(jié)構(gòu)圖帝嗡,那么圖5里用一個究極簡明的例子,說明了BN到底在干啥璃氢,如果完全理解了圖5哟玷,后面關(guān)于標準化、縮放平移只需要掃一眼黑體字即可一也。

(如果圖中字符太小巢寡,請務(wù)必點擊原圖,放大后真的狠清晰)

img5.png

? 圖 5. BN前向傳播示意圖

4.1 標準化

標準化即對一組數(shù)據(jù)中的每個數(shù)字椰苟,減均值再除以標準差(給方差開個根號)抑月,就可把一個該組數(shù)據(jù)轉(zhuǎn)換為一個均值為0方差為1的標準正態(tài)分布。

Batch Normalization的數(shù)據(jù)組的構(gòu)造方法:一個batch上所有m個樣本分別進行前向傳播時舆蝴,傳到這個隱層時所有m個\vec{x}的每個維度谦絮,分別構(gòu)成一個數(shù)據(jù)組

在原始論文里洁仗,用下標B指的正是一個batch(也就是我們常說的mini-batch)层皱,包含m個樣本。這也就是為啥叫Batch Normalization的原因赠潦。

  • 對這m個\vec{x},在每一個維度上標量們叫胖,分別求均值和方差。
  • 得到的均值\mu和方差\sigma^2分別對應(yīng)該層的每個神經(jīng)元維度她奥。

只要我們求得均值\mu和方差\sigma^2瓮增,就可以進行標準化了:
\hat{x_{i}}=\frac{x_{i}-\mu}{\sqrt{\sigma^2}}
為避免分母為0的極端情況怎棱,工程上可以給分母增加一個非常小的小數(shù)\epsilon(例如10^{-8})。
\hat{x_{i}}=\frac{x_{i}-\mu}{\sqrt{\sigma^2+\epsilon}}

4.2 縮放平移

由標準化公式可以反推出:
x_{i}=\sigma \hat{x_{i}}+\mu
因此仿照這個公式绷跑,作者構(gòu)造了下面這個公式拳恋,即 scale and shift 公式
y_{i}=\gamma \hat{x_{i}}+\beta
很直覺就能看出來,\gamma 是對 \hat{x_{i}}的縮放你踩,\beta 是對\gamma\hat{x_{i}}的平移诅岩』淇啵可以增加可學(xué)習(xí)的參數(shù)\gamma带膜、\beta,如果\gamma=\sigma, \beta = \mu鸳谜,那么必然有 y_{i}=x_{i},即我們就能夠完全地還原成功膝藕!我們可以通過反向傳播來訓(xùn)練這兩個參數(shù)(推導(dǎo)表明這是可以訓(xùn)練的),而至于 \gamma 多大程度上接近 \sigma ,\beta 多大程度上接近 \mu ,讓損失函數(shù)對它們計算出的梯度決定咐扭!注意芭挽,\gamma\beta都是向量。

因此蝗肪,

  • 只要損失函數(shù)有需要袜爪,公式(3)賦予了它左右BN層還原程度的能力,而且上限是完全還原薛闪;
  • 具體對每一層還原多少辛馆,則是由損失函數(shù)對每一層這兩個系數(shù)的梯度來決定;
  • 損失通過梯度來控制還原的程度豁延,較好利于減少損失昙篙,就多還原;較少利于減少損失诱咏,就少還原苔可。

5 BN實現(xiàn)的效果

img6.png

? 圖 6. BN的效果

BN實現(xiàn)的效果是:對于某一層\vec{x}來說,它的每個元素x_i的數(shù)值袋狞,在一個batch上的分布是一個任意的未知分布焚辅,BN首先把它標準化為了一個標準正態(tài)分布。

這樣是否太暴力了苟鸯?如果所有輸入樣本被層層改分布法焰,相當于輸入信息都損失掉了,網(wǎng)絡(luò)是沒法訓(xùn)練的倔毙。

所以需要第二步對標準正態(tài)分布再進行一定程度的還原操作埃仪,即縮放平移。

最終使得這個數(shù)值分布陕赃,兼顧保留有效信息卵蛉、加速梯度訓(xùn)練颁股。

6 總結(jié)

介紹了Batch Normalization的結(jié)構(gòu)和前向傳播,總之傻丝,就是在加權(quán)和后甘有,加了一個標準化層、一個還原層葡缰。

標準化層亏掀,用來把一個batch_size上的該層該神經(jīng)元的數(shù)值進行標準正態(tài)分布(均值為0,方差為1)

還原層泛释,就是引入縮放系數(shù)滤愕、平移系數(shù),讓梯度決定還原程度怜校。

設(shè)想雖好间影,如何訓(xùn)練?請關(guān)注下一期《理解Batch Normalization系列2——訓(xù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

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

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

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

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

[9] 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閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愈犹,居然都是意外死亡键科,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門甘萧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萝嘁,“玉大人,你說我怎么就攤上這事扬卷⊙姥裕” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵怪得,是天一觀的道長咱枉。 經(jīng)常有香客問我,道長徒恋,這世上最難降的妖魔是什么蚕断? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮入挣,結(jié)果婚禮上亿乳,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好葛假,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布障陶。 她就那樣靜靜地躺著,像睡著了一般聊训。 火紅的嫁衣襯著肌膚如雪抱究。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天带斑,我揣著相機與錄音鼓寺,去河邊找鬼。 笑死勋磕,一個胖子當著我的面吹牛妈候,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朋凉,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼州丹,長吁一口氣:“原來是場噩夢啊……” “哼醋安!你這毒婦竟也來了杂彭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤吓揪,失蹤者是張志新(化名)和其女友劉穎亲怠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柠辞,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡团秽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叭首。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片习勤。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焙格,靈堂內(nèi)的尸體忽然破棺而出图毕,到底是詐尸還是另有隱情,我是刑警寧澤眷唉,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布予颤,位于F島的核電站,受9級特大地震影響冬阳,放射性物質(zhì)發(fā)生泄漏蛤虐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一肝陪、第九天 我趴在偏房一處隱蔽的房頂上張望驳庭。 院中可真熱鬧,春花似錦氯窍、人聲如沸饲常。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不皆。三九已至贯城,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間霹娄,已是汗流浹背能犯。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留犬耻,地道東北人踩晶。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像枕磁,于是被迫代替她去往敵國和親渡蜻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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