『Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift』論文筆記

一 為什么讀這篇

Inception系列的第二篇闰围,Inception-v2羡榴,這篇論文引入了后來被廣泛使用的Batch Normalization校仑,重點(diǎn)從原作角度看看是到底怎么提出BN的迄沫,另外通過讀這個(gè)羊瘩,后續(xù)也可以看看各種各樣的Normalization變種


二 截止閱讀時(shí)這篇論文的引用次數(shù)

2018.12.27 7936次困后。比Inception-v1還是差點(diǎn)摇予。


三 相關(guān)背景介紹

2015年2月刊發(fā)于arXiv侧戴。也中了2015年的ICML。二作Christian Szegedy是Inception-v1的一作疆拘,一作Sergey Ioffe的介紹就比較少了哎迄,不過后續(xù)幾個(gè)Inception系列都是他和Christian Szegedy合作完成的


四 關(guān)鍵詞

Inception v2

BN-Inception

Batch Normalization

Covariate Shift


五 論文的主要貢獻(xiàn)

1 提出了Batch Normalization


六 詳細(xì)解讀

0 題目

對(duì),沒錯(cuò)渺氧。就是題目侣背。贩耐。业筏。本文題目就解釋了BN是干什么的消别,通過減少Internal Covariate Shift(內(nèi)部協(xié)變量偏移)來加速網(wǎng)絡(luò)的訓(xùn)練台谢。那么什么是Covariate Shift呢蛇券,先從Covariate(協(xié)變量)開始樊拓,協(xié)變量是指與因變量線性相關(guān)并在探討自變量與因變量關(guān)系時(shí)通過統(tǒng)計(jì)技術(shù)加以控制的變量蒂胞。常用的協(xié)變量包括因變量的前測(cè)分?jǐn)?shù)骗随,人口統(tǒng)計(jì)學(xué)指標(biāo)以及與因變量明顯不同的個(gè)人特征等鸿染。covariate shift可以直接根據(jù)字面意思去理解:樣本點(diǎn)x的變化。伴隨新數(shù)據(jù)產(chǎn)生丢烘,老數(shù)據(jù)會(huì)過時(shí)播瞳。Covariate shift methods就是把訓(xùn)練集的實(shí)例賦予不同的權(quán)重忧侧,以使它的分布更接近于測(cè)試集的分布。Covariate Shift – Unearthing hidden problems in Real World Data Science牌芋。covariate shift現(xiàn)象以及解決方法提出訓(xùn)練集和預(yù)測(cè)集樣本分布不一致的問題就叫做『covariate shift』

1 介紹

本文對(duì)『Internal Covariate Shift』的定義:是一種現(xiàn)象蚓炬。每一層的輸入分布都會(huì)隨著訓(xùn)練的進(jìn)行而變化,從而導(dǎo)致模型難以訓(xùn)練躺屁。用BN的話可以用更高的學(xué)習(xí)率肯夏,同時(shí)不用太在意初始化。同時(shí)BN還是一種正則化技術(shù)犀暑,可以在某種程度上替代dropout驯击。

由于飽和問題導(dǎo)致的梯度消失,減緩了訓(xùn)練的速度耐亏。將在訓(xùn)練過程中網(wǎng)絡(luò)內(nèi)部節(jié)點(diǎn)分布的變化稱之為內(nèi)部協(xié)變量偏移(Internal Covariate Shift)徊都。BN可以朝著減少內(nèi)部協(xié)變量偏移的方向邁進(jìn)择吊。它是通過固定層的輸入的均值和方差來完成的。BN還可以減少梯度流失,通過減少梯度對(duì)不同尺度參數(shù)或初始值的依賴來實(shí)現(xiàn)。

2 朝著減少內(nèi)部協(xié)變量偏移邁進(jìn)

將內(nèi)部協(xié)變量偏移(Internal Covariate Shift)定義為由于訓(xùn)練期間網(wǎng)絡(luò)參數(shù)的變化導(dǎo)致的網(wǎng)絡(luò)激活分布的變化。通過LeCun等人過去的工作已知通過白化(whitened)的輸入能更快的閉合(這是整個(gè)BN idea的靈感來源)粒蜈。通過白化每一層的輸入度硝,將朝著實(shí)現(xiàn)固定的輸入分布邁出一步驼唱,這將消除內(nèi)部協(xié)變量偏移的不良影響。

3 通過小批量統(tǒng)計(jì)進(jìn)行規(guī)范化

完全白化每一層的輸入代價(jià)是昂貴的,并且不是處處可微的,所以做了2點(diǎn)必要的簡(jiǎn)化首先單獨(dú)規(guī)范化每個(gè)標(biāo)量特征,通過0均值和1方差實(shí)現(xiàn)。
\widehat { x } ^ { ( k ) } = \frac { x ^ { ( k ) } - \mathrm { E } \left[ x ^ { ( k ) } \right] } { \sqrt { \operatorname { Var } \left[ x ^ { ( k ) } \right] } }
另外如果只是簡(jiǎn)單的規(guī)范化每一個(gè)層的輸入透且,有可能改變層的表示,例如楣号,規(guī)范化sigmoid的輸入將會(huì)把它們約束到非線性的線性狀態(tài)敬肚。為了解決這個(gè)問題,確保將插入到網(wǎng)絡(luò)的變換表示為恒等變換。為了達(dá)到這個(gè)效果,引入新的參數(shù),一個(gè)用來縮放,一個(gè)用來平移規(guī)范化后的值。
y ^ { ( k ) } = \gamma ^ { ( k ) } \widehat { x } ^ { ( k ) } + \beta ^ { ( k ) }
這些參數(shù)與原始模型參數(shù)一起學(xué)習(xí)白嘁,并用來恢復(fù)網(wǎng)絡(luò)的表示能力睡扬。

理論上在訓(xùn)練的每一步都應(yīng)該用整個(gè)數(shù)據(jù)集來規(guī)范化激活马靠,但當(dāng)使用隨機(jī)優(yōu)化時(shí)這是不切實(shí)際的妙啃,所以做出第二點(diǎn)簡(jiǎn)化:在每次mini-batch中生成每個(gè)激活均值和方差的估計(jì)燥滑。通過這種方式羽历,規(guī)范化用到的統(tǒng)計(jì)量能夠完全參與到梯度的后向傳播中澎嚣。

bn-alg1.png

期望規(guī)范化能加速子網(wǎng)絡(luò)的訓(xùn)練晤郑,當(dāng)然也就加速了整個(gè)網(wǎng)絡(luò)的訓(xùn)練析显。BN變換是可微的變換。更重要的是仰税,應(yīng)用于這些規(guī)范化的激活而學(xué)習(xí)到的仿射變換允許BN變換表示為恒等變換并保留了網(wǎng)絡(luò)容量

3.1 BN網(wǎng)絡(luò)的訓(xùn)練和推理

在推理期間苟跪,均值和方差是固定的茉盏。

bn-alg2.png

3.2 BN卷積網(wǎng)絡(luò)

在非線性變換前加BN梅屉。
\mathbf { z } = g ( W \mathbf { u } + \mathbf { b } )
不能只對(duì)u做規(guī)范化搓幌,它減少不了協(xié)變量偏移堂污,需要對(duì)Wu+b整體做規(guī)范化碟案,因?yàn)樗焊咚埂唬ㄊ菍?duì)稱的,非稀疏分布)狸捅,規(guī)范它能得到更穩(wěn)定的分布缔赠,但是注意其中的b是可以省略的。
\mathbf { z } = g ( \mathbf { B N } ( W \mathbf { u } ) )
和普通的網(wǎng)絡(luò)不同的是,卷積是每個(gè)feature map學(xué)一組\gamma^{(k)}\beta^{(k)},而不是每個(gè)激活學(xué)荸实。

3.3 BN能夠啟用更高的學(xué)習(xí)率

太高的學(xué)習(xí)率可能導(dǎo)致梯度消失或爆炸沦辙,BN通過對(duì)整個(gè)網(wǎng)絡(luò)中的激活進(jìn)行規(guī)范化,可以防止參數(shù)的微小改變擴(kuò)大到更大,例如锅减,可以防止訓(xùn)練陷入非線性的飽和狀態(tài)呐矾。

通常大的學(xué)習(xí)率會(huì)增加層的參數(shù)的縮放羽资,之后會(huì)在反向傳播的時(shí)候放大梯度屠升,從而導(dǎo)致模型爆炸。然后糕殉,BN不受參數(shù)的縮放的影響焚廊,即
\mathrm { BN } ( W \mathrm { u } ) = \mathrm { BN } ( ( a W ) \mathrm { u } )
更重要的是,更大的權(quán)重會(huì)導(dǎo)致更小的梯度闪唆,而BN可以穩(wěn)定參數(shù)的增長(zhǎng)票顾。

BN對(duì)梯度傳播的精確影響仍然是未來的一個(gè)研究領(lǐng)域。

3.4 BN能夠正則化模型

當(dāng)用BN訓(xùn)練時(shí)帆调,每個(gè)樣本與在mini-batch中的其他樣本聯(lián)系起來奠骄,因此對(duì)于一個(gè)給定的訓(xùn)練樣本,訓(xùn)練網(wǎng)絡(luò)不再生成一個(gè)固定的值贷帮,通過實(shí)驗(yàn)發(fā)現(xiàn)這種效應(yīng)有利于網(wǎng)絡(luò)的泛化戚揭。

4 實(shí)驗(yàn)

4.1 Activations over time(激活的變化)

bn-fig1.png

更穩(wěn)定的分布更有助于訓(xùn)練诱告。

4.2 ImageNet分類

bn-fig5.png

相比V1撵枢,有如下變化

1 5x5卷積層用兩個(gè)連續(xù)的3x3卷積層代替(我屮,Inception塊的結(jié)構(gòu)都改了)精居。這增加了網(wǎng)絡(luò)的最大深度锄禽,也增加了25%的參數(shù)量,30%的計(jì)算量

2 28x28的Inception模塊從2增加到3(即3a,3b變?yōu)?a,3b,3c)

3 在Inception模塊中靴姿,有時(shí)用平均池化沃但,有時(shí)用最大池化

4 在任意兩個(gè)Inception模塊之間沒有完全的池化層,而是用stride2的卷積做下采樣(3c佛吓,4e)(記得ResNet也是不用pooling宵晚,而是用stride的卷積做下采樣的)

用帶動(dòng)量的SGD,batch_size=32维雇,還是用DistBelief淤刃,但是評(píng)估準(zhǔn)則改用top1準(zhǔn)確率了。

4.2.1 加速BN網(wǎng)絡(luò)

簡(jiǎn)單的給網(wǎng)絡(luò)增加BN并不能完全發(fā)揮其優(yōu)越性吱型。需要做如下修改

1 增加學(xué)習(xí)率

2 不用dropout

3 減小L2正則

4 加速學(xué)習(xí)率衰減

5 不用Local Response Normalization

6 更徹底地對(duì)訓(xùn)練樣本做shuffle(不用讓相同的樣本總是在一個(gè)mini-batch中同時(shí)出現(xiàn)逸贾,就這點(diǎn)更改讓val提了1%。立轧。)

7 減少圖像失真(因?yàn)锽N訓(xùn)練的快斑粱,所以每個(gè)樣本觀察的次數(shù)少溅话,所以使其聚焦于真樣本摹菠,增強(qiáng)的樣本就要少用)

4.2.2 單模
bn-fig2.png
bn-fig3.png

原始Inception結(jié)構(gòu)加個(gè)BN后澈段,只需要不到一半的迭代次數(shù)就能達(dá)到同樣的效果券册。用4.2.1的修改后栈顷,能更快的加速網(wǎng)絡(luò)收斂痛悯,不過有個(gè)好玩的是x30比x5的準(zhǔn)確率還要高嗜诀,(初始學(xué)習(xí)率分別是0.045猾警,0.0075),難道更大的學(xué)習(xí)率還能產(chǎn)生更好的效果隆敢?

另外发皿,通過實(shí)驗(yàn)發(fā)現(xiàn),如果用了BN拂蝎,激活函數(shù)為sigmoid時(shí)也能玩得轉(zhuǎn)穴墅,如果不加BN,則完全玩不轉(zhuǎn)了温自。

4.2.3 ensemble
bn-fig4.png

還是一樣的玄货,做了tta后漲分明顯,ensemble到?jīng)]那么明顯了悼泌。ensemble的基模型都是用的BN-x30松捉。

另外,這里有個(gè)瓜要吃馆里。圖4中本文用來作對(duì)比的『Deep Image』是吳韌帶領(lǐng)的百度異構(gòu)計(jì)算團(tuán)隊(duì)搞的隘世,原本是2015年ILSVRC的第一,后來因涉嫌多次提交作弊而被取消成績(jī)鸠踪,成為當(dāng)時(shí)業(yè)界的一大丑聞丙者,彼時(shí)吳恩達(dá)還在百度,不得已揮淚斬馬謖营密,最后已開除吳韌作為回應(yīng)械媒。

5 結(jié)論

響應(yīng)主題,通過減少協(xié)變量偏移來幫助訓(xùn)練评汰。BN對(duì)每個(gè)激活僅增加了兩個(gè)額外的參數(shù)纷捞。


七 讀后感

本文初看起來特別嚇人,全篇沒幾張圖被去,連論文題目都有相對(duì)罕見的專業(yè)術(shù)語(yǔ)主儡。不過真正讀起來還好,沒有之前預(yù)想的那么難编振,難點(diǎn)主要還是在于起初的一些理論鋪墊缀辩,真正的講BN如何用的部分讀起來就相對(duì)輕松了臭埋。


八 補(bǔ)充

知乎:請(qǐng)問batch_normalization做了normalization后為什么要變回來?

梯度消失的好例子0.9 ^ { 30 } \approx 0.04
知乎:深度學(xué)習(xí)中 Batch Normalization為什么效果好臀玄? 魏秀參博士的這個(gè)回答總結(jié)的非常到位

Batch Normalization原理與實(shí)戰(zhàn)

keras bn源碼

pytorch bn源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓢阴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子健无,更是在濱河造成了極大的恐慌荣恐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件累贤,死亡現(xiàn)場(chǎng)離奇詭異叠穆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)臼膏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門硼被,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渗磅,你說我怎么就攤上這事嚷硫。” “怎么了始鱼?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵仔掸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我医清,道長(zhǎng)起暮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任会烙,我火速辦了婚禮负懦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘持搜。我一直安慰自己密似,他們只是感情好焙矛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布葫盼。 她就那樣靜靜地躺著,像睡著了一般村斟。 火紅的嫁衣襯著肌膚如雪贫导。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天蟆盹,我揣著相機(jī)與錄音孩灯,去河邊找鬼。 笑死逾滥,一個(gè)胖子當(dāng)著我的面吹牛峰档,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讥巡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼掀亩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欢顷,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤槽棍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抬驴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炼七,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年布持,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豌拙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡题暖,死狀恐怖姆蘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芙委,我是刑警寧澤逞敷,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站灌侣,受9級(jí)特大地震影響推捐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侧啼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一牛柒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痊乾,春花似錦皮壁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至湿滓,卻和暖如春滴须,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叽奥。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工扔水, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朝氓。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓魔市,卻偏偏與公主長(zhǎng)得像主届,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子待德,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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