Group Normalization(BN、LN、IN、GN) Switchable Normalization Weight Standardization
生活随笔
收集整理的這篇文章主要介紹了
Group Normalization(BN、LN、IN、GN) Switchable Normalization Weight Standardization
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- BN
- BN的作用
- 為了對隱含層進(jìn)行歸一化操作。對于每個(gè)隱層神經(jīng)元,把逐漸向非線性函數(shù)映射后向取值區(qū)間極限飽和區(qū)靠攏的輸入分布強(qiáng)制拉回到均值為0方差為1的比較標(biāo)準(zhǔn)的正態(tài)分布,使得非線性變換函數(shù)的輸入值落入對輸入比較敏感的區(qū)域,以此避免梯度消失問題。(如下圖,加入激活函數(shù)后,可能會(huì)使很多的數(shù)據(jù)進(jìn)入飽和區(qū)(即當(dāng)x大于20之后,其梯度幾乎為0))
- 添加BN的原因
- 因?yàn)樘砑拥募せ詈瘮?shù)(非線性函數(shù)),會(huì)逐漸將隱含層的輸出映射到激活函數(shù)的飽和區(qū),從而慢慢使得數(shù)據(jù)傳不到后面的層,即出現(xiàn)梯度消失的問題
- BN添加的位置
- 激活函數(shù)之前
- BN算法
- BN在batch的維度上norm,歸一化維度為[N,H,W],對batch中對應(yīng)的channel歸一化,反標(biāo)準(zhǔn)化是為了,抵消不是最優(yōu)的情況,即有的時(shí)候歸一化可能會(huì)破壞原來的數(shù)據(jù)分布,兩個(gè)參數(shù)是可以學(xué)習(xí)的參數(shù)
- BN的代碼實(shí)現(xiàn),其中x為(N,C*H*W)
- mu = np.mean(x,axis=0)
- sigma2 = np.var(x,axis=0)
- x_hat = (x-mu)/np.sqrt(sigma2+eps)
- out = gamma*x_hat + beta
- BN的作用
- BN、LN、IN、GN的異同
- 從左到右依次是BN,LN,IN,GN
- BN是在batch的維度上歸一化,即對整個(gè)batch內(nèi)的對應(yīng)的通道歸一化,即依賴于batch size,當(dāng)batchsize很小時(shí),歸一化效果不好
- LN是在channel上歸一化(即針對單個(gè)訓(xùn)練樣本進(jìn)行,不依賴于其他數(shù)據(jù)),即對同一個(gè)feature map的所有的通道歸一化,不依賴與batchsize,但?LN 的處理可能會(huì)降低模型的表達(dá)能力
- IN是只對一個(gè)feature map的同一個(gè)channel內(nèi)的數(shù)據(jù)歸一化,多用于GAN和style transfer,因?yàn)锽N的計(jì)算是要受其他樣本影響的,由于每個(gè)batch的均值和標(biāo)準(zhǔn)差不穩(wěn)定,對于單個(gè)數(shù)據(jù)而言,相對于是引入了噪聲,而BN獲得的整體信息對這兩種任務(wù)沒有什么效果。
- GN是對一個(gè)feature map的所有通道進(jìn)行分組,對屬于一組的 通道內(nèi)的所有數(shù)據(jù)進(jìn)行歸一化。GN介于LN和IN之間,其首先將channel分為許多組(group),對每一組做歸一化,及先將feature的維度由[N, C, H, W]reshape為[N*G,C//G , H, W],歸一化的維度為[C//G , H, W]
- GN
- Group Normalization(GN)是針對Batch Normalization(BN)在batch size較小時(shí)錯(cuò)誤率較高而提出的改進(jìn)算法,因?yàn)锽N層的計(jì)算結(jié)果依賴當(dāng)前batch的數(shù)據(jù),當(dāng)batch size較小時(shí)(比如2、4這樣),該batch數(shù)據(jù)的均值和方差的代表性較差,因此對最后的結(jié)果影響也較大。(研究意義:在訓(xùn)練大型網(wǎng)絡(luò)和將特征轉(zhuǎn)移到計(jì)算機(jī)視覺任務(wù)中(包括檢測、分割和視頻),內(nèi)存消耗限制了只能使用小批量的BN。真的用的到嘛??)
- 如果batchsize可以設(shè)的大的話,BN應(yīng)該是要比GN好一些(如下圖),GN比BN的速度要慢一寫,因?yàn)槎嗔藃eshape的過程
- 注意:
- ?第一,使用ImageNet的預(yù)訓(xùn)練網(wǎng)絡(luò)的時(shí)候,要frozenBN層,不然結(jié)果反而會(huì)劣化,而GN不會(huì)有這個(gè)問題。保持特征網(wǎng)絡(luò)的BNfrozen,只在Head部分使用GN會(huì)提升效果,但是如果把backbone也換成GN預(yù)訓(xùn)練的,效果會(huì)更好。
- 第二,使用BN的準(zhǔn)確率模型性能已經(jīng)無法隨著迭代次數(shù)增加的時(shí)候,GN反而可能會(huì)隨著迭代次數(shù)的增加性能有一定的上升。
- 第三,不使用預(yù)訓(xùn)練模型,GN仍然可以達(dá)到compared的性能,但是BN會(huì)出現(xiàn)結(jié)果的劣化
- ...
- SN(Switchable Normalization)
- SN是一種能夠有效適應(yīng)不同任務(wù)地歸一化方式
- 效果
- SN的計(jì)算公式:(SN增加了6個(gè)控制參數(shù),相比于BN而言,還增加了LN、IN的計(jì)算)
- 注意:
- minibatch越小,SN中BN的權(quán)重系數(shù)越小,IN和LN的權(quán)重系數(shù)則越大;
- minibatch越大,SN中BN的權(quán)重系數(shù)越大,IN和LN的權(quán)重系數(shù)越小。
- 分析
- 如果想換的話,需要從頭訓(xùn)練(GNpaper中說是從頭訓(xùn)能達(dá)到不錯(cuò)的效果,但是針對自己的數(shù)據(jù)集要進(jìn)行至少一次訓(xùn)練和遷移),或者找大數(shù)據(jù)集上的預(yù)訓(xùn)練模型(受限)
- 為啥不把所有的數(shù)據(jù)求均值,方差試一下,有些極端,但感覺可以一試
- Weight Standardization (太偏理論了)
- WS+GN在batch size很小的情況下,性能也能超過BN(即使BN的batch size較大時(shí))
?
部分資源來源網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系刪除
總結(jié)
以上是生活随笔為你收集整理的Group Normalization(BN、LN、IN、GN) Switchable Normalization Weight Standardization的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: - 微服务架构
- 下一篇: Dubbo的异步调用