Batch Normalization在2015年被谷歌提出,因為能夠加速訓(xùn)練及減少學(xué)習(xí)率的敏感度而被廣泛使用。
但論文中對Batch Norm工作原理的解釋在2018年被MIT的研究人員推翻,雖然這篇論文在2018年就已經(jīng)提出了,但是我相信還有很多人和我一樣,在網(wǎng)上看相關(guān)博客及paper時,大部分內(nèi)容還是論文提出前寫下的。
現(xiàn)在DL逐漸變成了實驗科學(xué),一般在發(fā)現(xiàn)性能上的提升后去分析其產(chǎn)生的原因,但這片論文的思想很好,從數(shù)據(jù)、公式等一系列角度去推理,分析出來了為什么batch Normalization能work。
batch Normalization的提出
拋開Norm,我們在做特征工程時,經(jīng)常會將輸入進(jìn)行歸一化,否則如果某個特征數(shù)特別大(比如說一個特征是0-1,一個特征是0-1000),那第二個特征很有可能會對整個模型參數(shù)造成很大的影響?;蛘哒f,當(dāng)訓(xùn)練集數(shù)據(jù)的分布不一致時,例如前一個輸入的各特征范圍是0-1,后一個是0-100,網(wǎng)絡(luò)的訓(xùn)練效果也不會很好。
所以,就像很多人說的一樣,我們希望在deep learn中,整個網(wǎng)絡(luò)中流過的數(shù)據(jù)都是獨立同分布的。
為什么需要獨立同分布?
我覺得這事可以從兩方面去解釋,
一方面我們希望對訓(xùn)練集進(jìn)行訓(xùn)練后,在測試集上能夠發(fā)揮很好的性能。那么我們就需要保證訓(xùn)練集和測試集是來自同一個空間,準(zhǔn)確來說,是符合同一分布,這對同分布提出了要求。此外,在雖然數(shù)據(jù)來自同一個空間,但我們并不希望所有數(shù)據(jù)都聚集在空間中的某一小撮,而是希望所有數(shù)據(jù)對于整個空間來說都具有一定代表性,因此在采樣的過程中我們希望是獨立得去采樣所有的數(shù)據(jù)。
另一方面,其實是從另一個角度來闡述上一段話,如果數(shù)據(jù)之間不是同分布的,比如說樣本1所有的特征都處于0-1之間,樣本2處于10-100,那么網(wǎng)絡(luò)的參數(shù)其實很難去同時迎合兩類分布的數(shù)據(jù)。
batch Normalization做了什么?
上面講到了數(shù)據(jù)在最初進(jìn)來的時候,都希望是獨立同分布的。但是batch Normalization的作者覺得不夠,應(yīng)該在deep learning中的每層都進(jìn)行一次處理,保證在每層都是同分布。
他是這么想的:假設(shè)網(wǎng)絡(luò)有n層,網(wǎng)絡(luò)正在訓(xùn)練,還沒有收斂。這時候x1被輸入,經(jīng)過了第一層,但是第一層還沒有學(xué)到正確的weight,所以經(jīng)過weight的矩陣乘法后,第二層的數(shù)會不會很亂?會不會第二層有些節(jié)點值是個位數(shù),有些節(jié)點值蹦到好幾百?細(xì)想一下,確實挺有可能啊,內(nèi)部的參數(shù)都是隨機初始化的,那蹦啥結(jié)果確實不好說啊。然后恐怖的事情來了,第二層這些亂蹦的數(shù),又輸?shù)搅说谌龑樱堑谌龑拥妮斎刖褪莵y蹦的數(shù),輸出當(dāng)然好不了,以此類推。
所以主要產(chǎn)生了兩個問題:
1.所以在前面的網(wǎng)絡(luò)沒有收斂的時候,后面的網(wǎng)絡(luò)其實并學(xué)不到什么。一棟大樓底部都是晃的,那上面也好不了。所以必須要等前面的層收斂后,后面層的訓(xùn)練才有效果。
2.因為一般來說網(wǎng)絡(luò)內(nèi)部每層都需要加一層激活來增加非線性化嘛,那么如果值比較大,它通過激活以后在S曲線上會比較接近0或1,梯度很小,收斂會很慢。
所以batch Normalization就想在每層都加一個norm進(jìn)行標(biāo)準(zhǔn)化,讓每層的數(shù)分布相同,變成均值0,方差1的標(biāo)準(zhǔn)分布。高斯分布的標(biāo)準(zhǔn)化公式就是下面式子中括號內(nèi)的部分。值減去均值再除以方差,能夠得到均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布。至于γ和β,是需要學(xué)習(xí)的兩個參數(shù),γ對數(shù)據(jù)的方差再進(jìn)行一個縮放,β對數(shù)據(jù)的均值產(chǎn)生一個偏移。
為什么歸一化成均值0,方差1后,還要再修改方差和均值?那歸一化還有意義嗎?
這是因為我們并不能保證這層網(wǎng)絡(luò)學(xué)到的特征是什么,如果簡單的歸一化,很有可能會被破壞。比如說S型激活函數(shù),如果這層學(xué)到的特征在S的頂端那塊,那么我們做歸一化以后,強行把特征帶到了S的中間位置,特征就被破壞了。要注意γ和β是被訓(xùn)練的參數(shù),且每層都不一樣,所以針對每一層的實際情況,它會去嘗試恢復(fù)這層網(wǎng)絡(luò)所學(xué)到的特征。
結(jié)果
使用VGG網(wǎng)路,CIFAR10數(shù)據(jù)集(下圖),可以看到與不加相比:
1.訓(xùn)練前期的準(zhǔn)確率要高,也就是收斂更快。
2.減少對learning rate的敏感度,圖二在lr=0.5時,不加norm的網(wǎng)絡(luò)直接震蕩了,但加nrom的仍然表現(xiàn)良好。
所以batch normalization其實原理不是很高深,只是在每層都加了一個標(biāo)準(zhǔn)化,使得數(shù)據(jù)同分布,再對其方差和均值進(jìn)行一個變換以恢復(fù)該層捕捉到的特征。最后產(chǎn)生了兩大改變,首先收斂更快,其次對lr的敏感度降低。
那網(wǎng)絡(luò)內(nèi)每層進(jìn)行一個歸一化,為啥這么簡單的一個思想,一直沒有被運用呢?是researcher想不到嗎?
我相信有很多researcher都嘗試過將各層都重新標(biāo)準(zhǔn)化,但我相信最后的效果一定不太好,因為很多特征重新修改為均值0方差1后,特征的信息會被丟失。所以作者理論的突破性在歸一化以后又使用γ和β重新將數(shù)據(jù)的分布進(jìn)行了一個修改,以此來找回丟失的特征,當(dāng)然了,只要讓這兩個參數(shù)能夠自學(xué)習(xí)就可以了。
其實現(xiàn)在大部分博客沿用的解釋,都是上面這種。包括我之前一直也認(rèn)為是這樣。
但是《How Does Batch Normalizetion Help Optimization》這篇論文認(rèn)為,使用norm后的網(wǎng)絡(luò)收斂更快,lr敏感度更低是對的,但不是因為論文里說的這種原因,而是因為每層的標(biāo)準(zhǔn)化使得最后的loss函數(shù)變成了一個光滑的曲面而造成的最后性能提優(yōu)。下面來闡述一下思想:
batch Normalization 解釋的反駁
實驗測試
MIT的研究人員并沒有在論文的一開始就提出了自己的解釋。而是說,如果原作者說的是對的,那我們就先按照原作者的思路去驗證一下(因為涉及兩篇paper,所以本文將batch normalization的提出者寫為原作者,How Does Batch Normalizetion Help Optimization的作者寫為來自MIT的研究人員):
原作者認(rèn)為是因為網(wǎng)絡(luò)中各層都標(biāo)準(zhǔn)化后使得分布相同,因此造成的性能提優(yōu)。
來自MIT的研究人員做了三個實驗作為對比:不適使用norm的普通網(wǎng)絡(luò)、使用nrom的普通網(wǎng)絡(luò)及添加噪音的Norm網(wǎng)絡(luò)。
Norm網(wǎng)絡(luò)添加噪音是考慮到原作者認(rèn)為是同分布造成的性能提優(yōu)。那么來自MIT的研究人員就在Norm網(wǎng)絡(luò)的基礎(chǔ)上,給各層再手動添加噪音,這樣使得第三個網(wǎng)絡(luò)雖然使用了norm,但每層的分布已經(jīng)被打亂,不再滿足同分布的情況。
下圖中的實驗結(jié)果表明,即使nrom網(wǎng)絡(luò)添加了噪音,但性能仍然和添加norm的網(wǎng)絡(luò)差不多。
那么最后造成性能提升的原因,肯定不是數(shù)據(jù)同分布這一解釋,也就是說原作者給出的解釋是錯的,一定有其他的原因。
batch Normalization新解釋的直觀理解
在基礎(chǔ)的學(xué)習(xí)中,我們都知道在設(shè)計loss的時候希望loss函數(shù)是光滑的,這樣我們可以很順利地使用梯度下降來更新參數(shù)并找到一個較優(yōu)點。但很多時候loss并不是我們想象中的那么美好。比如說下圖,左邊和右邊都是loss函數(shù),但是左邊的loss雖然連續(xù),但并不光滑。在梯度下降過程中很難保證下降的有效性和快速性,此外也很容易陷入局部最優(yōu)解。而右邊的圖雖然在四個頂點出也有局部最優(yōu)解,但總體上來說還是非常理想的一個loss。
MIT的研究人員認(rèn)為batch normalization的有效性在于它將左邊的原始loss轉(zhuǎn)變成了右邊的loss,造成了上文提到的兩種結(jié)果:
1.收斂速度變。
2.對學(xué)習(xí)率的設(shè)置不再那么敏感。
分析
MIT的研究員定義了兩個函數(shù):
第一個是loss的值的計算,就是下面第一個公式,內(nèi)部的loss是當(dāng)前的loss,隨后對loss求導(dǎo),再乘以學(xué)習(xí)率,x是內(nèi)部的參數(shù),對參數(shù)進(jìn)行一個更新,隨后將新參數(shù)放入loss函數(shù)中,計算當(dāng)前l(fā)oss的值。別看這個公式看起來有點繞,實際上就是求當(dāng)前的loss值。
第二個公式是計算loss的梯度差,也可以看成loss的二次求導(dǎo)吧(我感覺)。
論文中之所以提出這兩個公式,是為了得到兩個量。
第一個公式可以得到訓(xùn)練過程中的loss,那么把每一個step的loss都拿出來繪制成一條曲線,該曲線可以認(rèn)為是loss的波動情況。我認(rèn)為如果一個loss函數(shù)本身是比較光滑的,那么第一個公式求出來的loss值并不會有一個比較大的浮動。
第二個量是計算loss的梯度差,它可以認(rèn)為山坡在沿著下降的方向走時,方向改變是否會較大。也就是說,一個比較好的loss函數(shù),在每一個step中,loss所得到的梯度應(yīng)該是不會浮動太大的。就好像從山上往下走,我們向下的方向一般都不會在瞬間改變太大,而不是說往下平滑地走著走著(loss梯度穩(wěn)定),突然前面是個懸崖(loss梯度驟變),而應(yīng)該是有個臺階(loss梯度平滑改變)。
MIT研究人員將使用norm和普通的網(wǎng)絡(luò)對這兩個量進(jìn)行了對比:
可以看到不使用norm的網(wǎng)絡(luò)(紅色),loss的梯度差浮動均較大。而使用了norm的網(wǎng)絡(luò)(藍(lán)色)浮動很小。也就從側(cè)面印證了普通網(wǎng)絡(luò)的loss比較趨向于左圖。而使用了norm的,loss趨向右圖。
上面這兩個公式其實就是整篇論文的核心,MIT的研究人煙也正是基于這兩個量從而對原文進(jìn)行了反駁。
1.在論文中使用了L-Lipschitz常數(shù)來定量loss的光滑程度(也就是公式1干的事),限制了loss的光滑程度,(以下定義來自百度百科)
L-Lipschitz:直覺上,利普希茨連續(xù)函數(shù)限制了函數(shù)改變的速度,符合利普希茨條件的函數(shù)的斜率,必小于一個稱為利普希茨常數(shù)的實數(shù)(該常數(shù)依函數(shù)而定)。對于在實數(shù)集的子集的函數(shù)
,若存在常數(shù)K,使得
,則稱 f 符合利普希茨條件,對于f 最小的常數(shù)K 稱為 f 的利普希茨常數(shù)。
我個人覺得就是換了種說法,就是限制loss的一階導(dǎo)數(shù)要小于常數(shù)k。一階導(dǎo)數(shù)在曲線上表現(xiàn)的是斜率必須小于一個值,也就是說斜率不能過大。在這一條件的限制下,loss的面哪怕下降,也是很緩的。
2.論文使用了另一個更強的光滑條件來限制:β-smoothness(也就是公式2干的事)。
β-smoothness限制了就是loss斜率的斜率(可以簡單看成斜率差)不能超過一定值。
我認(rèn)為這本質(zhì)上其實就是二階求導(dǎo)。對二階求導(dǎo)后的結(jié)果進(jìn)行了一個限制,使得函數(shù)在二階條件下仍然是一個較為平滑、不會大幅度突變的函數(shù)。
也正是因為使用了batch norm的網(wǎng)絡(luò),它的loss從原先的原始凹凸不平狀態(tài)變成了一個能滿足L-Lipschitz及β-smoothness兩個強條件的原因,使得bath norm能夠work。
總結(jié)
原作者提出了batch norm,并造成了兩個結(jié)果:
1.收斂更快。
2.對learning rate的敏感度更低(也就是說lr的設(shè)置是否合理不會很大程度地影響最終結(jié)果)。
并且認(rèn)為網(wǎng)絡(luò)中每層都進(jìn)行了一次同分布,是造成結(jié)果的主要原因。
MIT研究員根據(jù)這一思路,將使用norm的網(wǎng)絡(luò)隨機添加高斯噪聲,使得網(wǎng)絡(luò)在添加了norm的同時又去除了norm所帶來的同分布效果,但結(jié)果顯示優(yōu)勢仍然存在,因此對原作者的解釋進(jìn)行了反駁。
隨后MIT研究人員使用了loss的一階信息和二階信息進(jìn)行了評估,發(fā)現(xiàn)使用了norm以后的loss在一階和二階上都具有很好的性質(zhì),由此推斷nrom之所以能產(chǎn)生效果,不是原作者提出的解釋,而是因為norm直接作用了loss函數(shù),將loss函數(shù)變成了一個一階、二階均平滑的函數(shù)。
-
MIT
+關(guān)注
關(guān)注
3文章
254瀏覽量
24226 -
paper
+關(guān)注
關(guān)注
0文章
7瀏覽量
3798
原文標(biāo)題:論文閱讀|How Does Batch Normalization Help Optimization
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
日研究人員新發(fā)現(xiàn):光纖也能變身太陽能電池
MIT 認(rèn)為現(xiàn)有的電動車就能取代美國 87%的燃油車,里程焦慮被過分夸大
泰克儀器助力研究人員首次通過太赫茲復(fù)用器實現(xiàn)超高速數(shù)據(jù)傳輸
福州大學(xué)研究人員撰文質(zhì)子交換膜燃料電池工作原理

研究人員探究大腦如何控制主動傳感
MIT研究人員開發(fā)出新型“光子”芯片
59%的中國籍AI研究人員隸屬美國研究機構(gòu)
Facebook向研究人員發(fā)布友誼數(shù)據(jù)
研究人員已經(jīng)使用機器學(xué)習(xí)來開發(fā)血液測試
AI研究人員如何應(yīng)對透明AI
蘋果啟動安全研究設(shè)備計劃 為安全研究人員提供越獄iPhone
研究人員開發(fā)了一種基于深度學(xué)習(xí)的智能算法
batch normalization時的一些缺陷

MIT研究人員提出了一種制造軟氣動執(zhí)行器的新方法

MIT/三星研究人員利用活體拉曼光譜直接觀察葡萄糖指紋圖譜

評論