Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结
轉(zhuǎn)自https://blog.csdn.net/qq_41997920/article/details/89945972
目錄
?
1.綜述
1. BN
2. LN
3. IN
4. GN
5. SN
2. 結(jié)論
1.綜述
在入門深度學(xué)習(xí)時(shí)就深度學(xué)習(xí)中的一些概念做了一些介紹,但隨著學(xué)習(xí)的不斷深入,一些網(wǎng)絡(luò)優(yōu)化的技巧越來(lái)越多,才發(fā)現(xiàn)之前的理解的不夠深入。在這里有對(duì)BN的理解,對(duì)出現(xiàn)的幾種歸一化進(jìn)行一些個(gè)人理解的介紹,首先看一個(gè)直觀圖
歸一化層,目前主要有這幾個(gè)方法,Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年)、Switchable Normalization(2018年);
將輸入的圖像shape記為[N, C, H, W],這幾個(gè)方法主要的區(qū)別就是在,
- Batch Norm是在batch上,對(duì)NHW做歸一化,就是對(duì)每個(gè)單一通道輸入進(jìn)行歸一化,這樣做對(duì)小batchsize效果不好;
- Layer Norm在通道方向上,對(duì)CHW歸一化,就是對(duì)每個(gè)深度上的輸入進(jìn)行歸一化,主要對(duì)RNN作用明顯;
- Instance Norm在圖像像素上,對(duì)HW做歸一化,對(duì)一個(gè)圖像的長(zhǎng)寬即對(duì)一個(gè)像素進(jìn)行歸一化,用在風(fēng)格化遷移;
- Group Norm將channel分組,有點(diǎn)類似于LN,只是GN把channel也進(jìn)行了劃分,細(xì)化,然后再做歸一化;
- Switchable
- Norm是將BN、LN、IN結(jié)合,賦予權(quán)重,讓網(wǎng)絡(luò)自己去學(xué)習(xí)歸一化層應(yīng)該使用什么方法。
下面對(duì)各歸一化方法進(jìn)行詳細(xì)的介紹,其中來(lái)源于網(wǎng)絡(luò):
1. BN
我們?cè)趯?duì)數(shù)據(jù)訓(xùn)練之前會(huì)對(duì)數(shù)據(jù)集進(jìn)行歸一化,歸一化的目的歸一化的目的就是使得預(yù)處理的數(shù)據(jù)被限定在一定的范圍內(nèi)(比如[0,1]或者[-1,1]),從而消除奇異樣本數(shù)據(jù)導(dǎo)致的不良影響。雖然輸入層的數(shù)據(jù),已經(jīng)歸一化,后面網(wǎng)絡(luò)每一層的輸入數(shù)據(jù)的分布一直在發(fā)生變化,前面層訓(xùn)練參數(shù)的更新將導(dǎo)致后面層輸入數(shù)據(jù)分布的變化,必然會(huì)引起后面每一層輸入數(shù)據(jù)分布的改變。而且,網(wǎng)絡(luò)前面幾層微小的改變,后面幾層就會(huì)逐步把這種改變累積放大。訓(xùn)練過(guò)程中網(wǎng)絡(luò)中間層數(shù)據(jù)分布的改變稱之為:"Internal Covariate Shift"。BN的提出,就是要解決在訓(xùn)練過(guò)程中,中間層數(shù)據(jù)分布發(fā)生改變的情況。所以就引入了BN的概念,來(lái)消除這種影響。所以在每次傳入網(wǎng)絡(luò)的數(shù)據(jù)每一層的網(wǎng)絡(luò)都進(jìn)行一次BN,將數(shù)據(jù)拉回正態(tài)分布,這樣做使得數(shù)據(jù)分布一致且避免了梯度消失。
此外,internal corvariate shift和covariate shift是兩回事,前者是網(wǎng)絡(luò)內(nèi)部,后者是針對(duì)輸入數(shù)據(jù),比如我們?cè)谟?xùn)練數(shù)據(jù)前做歸一化等預(yù)處理操作。
需要注意的是在使用小batch-size時(shí)BN會(huì)破壞性能,當(dāng)具有分布極不平衡二分類任務(wù)時(shí)也會(huì)出現(xiàn)不好的結(jié)果。因?yàn)槿绻〉腷atch-size歸一化的原因,使得原本的數(shù)據(jù)的均值和方差偏離原始數(shù)據(jù),均值和方差不足以代替整個(gè)數(shù)據(jù)分布。分布不均的分類任務(wù)也會(huì)出現(xiàn)這種情況!
BN實(shí)際使用時(shí)需要計(jì)算并且保存某一層神經(jīng)網(wǎng)絡(luò)batch的均值和方差等統(tǒng)計(jì)信息,對(duì)于對(duì)一個(gè)固定深度的前向神經(jīng)網(wǎng)絡(luò)(DNN,CNN)使用BN,很方便;但對(duì)于RNN來(lái)說(shuō),sequence的長(zhǎng)度是不一致的,換句話說(shuō)RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一個(gè)特殊sequence比其他sequence長(zhǎng)很多,這樣training時(shí),計(jì)算很麻煩。
2. LN
與BN不同的是,LN對(duì)每一層的所有神經(jīng)元進(jìn)行歸一化,與BN不同的是:
一般情況,LN常常用于RNN網(wǎng)絡(luò)!
3. IN
BN注重對(duì)每一個(gè)batch進(jìn)行歸一化,保證數(shù)據(jù)分布的一致,因?yàn)榕袆e模型中的結(jié)果取決與數(shù)據(jù)的整體分布。在圖像風(fēng)格中,生成結(jié)果主要依賴某個(gè)圖像實(shí)例,所以此時(shí)對(duì)整個(gè)batch歸一化不適合了,需要對(duì)但像素進(jìn)行歸一化,可以加速模型的收斂,并且保持每個(gè)圖像實(shí)例之間的獨(dú)立性!
4. GN
主要是針對(duì)Batch Normalization對(duì)小batchsize效果差,GN將channel方向分group,然后每個(gè)group內(nèi)做歸一化,算(C//G)*H*W的均值,這樣與batchsize無(wú)關(guān),不受其約束。
5. SN
第一,歸一化雖然提高模型泛化能力,然而歸一化層的操作是人工設(shè)計(jì)的。在實(shí)際應(yīng)用中,解決不同的問(wèn)題原則上需要設(shè)計(jì)不同的歸一化操作,并沒有一個(gè)通用的歸一化方法能夠解決所有應(yīng)用問(wèn)題;
第二,一個(gè)深度神經(jīng)網(wǎng)絡(luò)往往包含幾十個(gè)歸一化層,通常這些歸一化層都使用同樣的歸一化操作,因?yàn)槭止槊恳粋€(gè)歸一化層設(shè)計(jì)操作需要進(jìn)行大量的實(shí)驗(yàn)。
因此作者提出自適配歸一化方法——Switchable Normalization(SN)來(lái)解決上述問(wèn)題。與強(qiáng)化學(xué)習(xí)不同,SN使用可微分學(xué)習(xí),為一個(gè)深度網(wǎng)絡(luò)中的每一個(gè)歸一化層確定合適的歸一化操作。
幾種歸一化方法的比較:
————————————————
版權(quán)聲明:本文為CSDN博主「Jayden yang」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41997920/article/details/89945972
總結(jié)
以上是生活随笔為你收集整理的Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Xavier初始化和He初始化
- 下一篇: Pycharm debug出现Qt 错误