一 為什么讀這篇
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)。
另外如果只是簡(jiǎn)單的規(guī)范化每一個(gè)層的輸入透且,有可能改變層的表示,例如楣号,規(guī)范化sigmoid的輸入將會(huì)把它們約束到非線性的線性狀態(tài)敬肚。為了解決這個(gè)問題,確保將插入到網(wǎng)絡(luò)的變換表示為恒等變換。為了達(dá)到這個(gè)效果,引入新的參數(shù),一個(gè)用來縮放,一個(gè)用來平移規(guī)范化后的值。
這些參數(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ì)量能夠完全參與到梯度的后向傳播中澎嚣。
期望規(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)練和推理
在推理期間苟跪,均值和方差是固定的茉盏。
3.2 BN卷積網(wǎng)絡(luò)
在非線性變換前加BN梅屉。
不能只對(duì)u做規(guī)范化搓幌,它減少不了協(xié)變量偏移堂污,需要對(duì)Wu+b整體做規(guī)范化碟案,因?yàn)樗焊咚埂唬ㄊ菍?duì)稱的,非稀疏分布)狸捅,規(guī)范它能得到更穩(wěn)定的分布缔赠,但是注意其中的b是可以省略的。
和普通的網(wǎng)絡(luò)不同的是,卷積是每個(gè)feature map學(xué)一組和
,而不是每個(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ù)的縮放的影響焚廊,即
更重要的是,更大的權(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(激活的變化)
更穩(wěn)定的分布更有助于訓(xùn)練诱告。
4.2 ImageNet分類
相比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 單模
原始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
還是一樣的玄货,做了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后為什么要變回來?
梯度消失的好例子
知乎:深度學(xué)習(xí)中 Batch Normalization為什么效果好臀玄? 魏秀參博士的這個(gè)回答總結(jié)的非常到位