日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结

發布時間:2025/4/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自https://blog.csdn.net/qq_41997920/article/details/89945972

目錄

?

1.綜述

1. BN

2. LN

3. IN

4. GN

5. SN

2. 結論

1.綜述

在入門深度學習時就深度學習中的一些概念做了一些介紹,但隨著學習的不斷深入,一些網絡優化的技巧越來越多,才發現之前的理解的不夠深入。在這里有對BN的理解,對出現的幾種歸一化進行一些個人理解的介紹,首先看一個直觀圖

歸一化層,目前主要有這幾個方法,Batch Normalization(2015年)、Layer Normalization(2016年)、Instance Normalization(2017年)、Group Normalization(2018年)、Switchable Normalization(2018年);

將輸入的圖像shape記為[N, C, H, W],這幾個方法主要的區別就是在,

  • Batch Norm是在batch上,對NHW做歸一化,就是對每個單一通道輸入進行歸一化,這樣做對小batchsize效果不好;
  • Layer Norm在通道方向上,對CHW歸一化,就是對每個深度上的輸入進行歸一化,主要對RNN作用明顯;
  • Instance Norm在圖像像素上,對HW做歸一化,對一個圖像的長寬即對一個像素進行歸一化,用在風格化遷移;
  • Group Norm將channel分組,有點類似于LN,只是GN把channel也進行了劃分,細化,然后再做歸一化;
  • Switchable
  • Norm是將BN、LN、IN結合,賦予權重,讓網絡自己去學習歸一化層應該使用什么方法。

下面對各歸一化方法進行詳細的介紹,其中來源于網絡:

1. BN

我們在對數據訓練之前會對數據集進行歸一化,歸一化的目的歸一化的目的就是使得預處理的數據被限定在一定的范圍內(比如[0,1]或者[-1,1]),從而消除奇異樣本數據導致的不良影響。雖然輸入層的數據,已經歸一化,后面網絡每一層的輸入數據的分布一直在發生變化,前面層訓練參數的更新將導致后面層輸入數據分布的變化,必然會引起后面每一層輸入數據分布的改變。而且,網絡前面幾層微小的改變,后面幾層就會逐步把這種改變累積放大。訓練過程中網絡中間層數據分布的改變稱之為:"Internal Covariate Shift"。BN的提出,就是要解決在訓練過程中,中間層數據分布發生改變的情況。所以就引入了BN的概念,來消除這種影響。所以在每次傳入網絡的數據每一層的網絡都進行一次BN,將數據拉回正態分布,這樣做使得數據分布一致且避免了梯度消失。

此外,internal corvariate shift和covariate shift是兩回事,前者是網絡內部,后者是針對輸入數據,比如我們在訓練數據前做歸一化等預處理操作。

需要注意的是在使用小batch-size時BN會破壞性能,當具有分布極不平衡二分類任務時也會出現不好的結果。因為如果小的batch-size歸一化的原因,使得原本的數據的均值和方差偏離原始數據,均值和方差不足以代替整個數據分布。分布不均的分類任務也會出現這種情況!

BN實際使用時需要計算并且保存某一層神經網絡batch的均值和方差等統計信息,對于對一個固定深度的前向神經網絡(DNN,CNN)使用BN,很方便;但對于RNN來說,sequence的長度是不一致的,換句話說RNN的深度不是固定的,不同的time-step需要保存不同的statics特征,可能存在一個特殊sequence比其他sequence長很多,這樣training時,計算很麻煩。
2. LN

與BN不同的是,LN對每一層的所有神經元進行歸一化,與BN不同的是:

  • ??? LN中同層神經元輸入擁有相同的均值和方差,不同的輸入樣本有不同的均值和方差;
  • ??? BN中則針對不同神經元輸入計算均值和方差,同一個batch中的輸入擁有相同的均值和方差。
  • ??? LN不依賴于batch的大小和輸入sequence的深度,因此可以用于batchsize為1和RNN中對邊長的輸入sequence的normalize操作。
  • 一般情況,LN常常用于RNN網絡!
    3. IN

    BN注重對每一個batch進行歸一化,保證數據分布的一致,因為判別模型中的結果取決與數據的整體分布。在圖像風格中,生成結果主要依賴某個圖像實例,所以此時對整個batch歸一化不適合了,需要對但像素進行歸一化,可以加速模型的收斂,并且保持每個圖像實例之間的獨立性!
    4. GN

    主要是針對Batch Normalization對小batchsize效果差,GN將channel方向分group,然后每個group內做歸一化,算(C//G)*H*W的均值,這樣與batchsize無關,不受其約束。
    5. SN

    第一,歸一化雖然提高模型泛化能力,然而歸一化層的操作是人工設計的。在實際應用中,解決不同的問題原則上需要設計不同的歸一化操作,并沒有一個通用的歸一化方法能夠解決所有應用問題;

    第二,一個深度神經網絡往往包含幾十個歸一化層,通常這些歸一化層都使用同樣的歸一化操作,因為手工為每一個歸一化層設計操作需要進行大量的實驗。
    因此作者提出自適配歸一化方法——Switchable Normalization(SN)來解決上述問題。與強化學習不同,SN使用可微分學習,為一個深度網絡中的每一個歸一化層確定合適的歸一化操作。

    幾種歸一化方法的比較:
    ————————————————
    版權聲明:本文為CSDN博主「Jayden yang」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
    原文鏈接:https://blog.csdn.net/qq_41997920/article/details/89945972

    總結

    以上是生活随笔為你收集整理的Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。