BN,LN,IN,GN都是什麼?不同歸一化方法的比較

2020-12-25 deephub

批處理歸一化(BN)已經成為許多先進深度學習模型的重要組成部分,特別是在計算機視覺領域。它通過批處理中計算的平均值和方差來規範化層輸入,因此得名。要使BN工作,批大小必須足夠大,通常至少為32。但是,在一些情況下,我們不得不滿足於小批量:

當每個數據樣本高度消耗內存時,例如視頻或高解析度圖像

當我們訓練一個很大的神經網絡時,它只留下很少的GPU內存來處理數據

因此,我們需要BN的替代品,它能在小批量下很好地工作。組歸一化(GN)是一種最新的規範化方法,可以避免利用批處理維,因此與批處理大小無關。

不同的歸一化方法

為了促進GN的表述,我們將首先看一下以前的一些標準化方法。

x ← (x - ) / √( + )

對於每個係數x輸入特性。和的均值和方差計算的集合S係數,和是一個小的常數數值穩定,避免除零。唯一的區別是集S是如何選擇的。

為說明歸一化方法的計算,我們考慮一批N = 3,輸入特徵a, b, c,它們有通道c = 4,高度H = 1,寬度W = 2:

a = [ [[2, 3]], [[5, 7]], [[11, 13]], [[17, 19]] ]b = [ [[0, 1]], [[1, 2]], [[3, 5]], [[8, 13]] ]c = [ [[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]] ]

因此批將形狀(N、C, H, W) =(3、4、1、2)。我們把= 0.00001。

Batch Normalization

BN規範化的渠道和計算和沿軸(N、H、W)。批次係數被定義為一組的批處理x相同的頻道。

第一係數的= 2,i=(0,0,0),相應的和係數的計算,b和c的第一個頻道:

= mean(2, 3, 0, 1, 1, 2) = 1.5 = var(2, 3, 0, 1, 1, 2) = 0.917

代入歸一化公式,

a ← (2 - 1.5) / √(0.917 + 0.00001) = 0.522

計算a的所有係數

a ← [ [[0.522, 1.567]], [[0.676, 1.690]], [[1.071, 1.630]], [[1.066, 1.492]] ]

Layer Normalization

層歸一化(LN)的設計是為了克服BN的缺點,包括它對批大小的限制。計算和沿著(C、H、W)軸,和S定義為所有係數x屬於相同的輸入特性。因此,一個輸入特徵的計算完全獨立於批處理中的其他輸入特徵。

所有的係數是由相同的歸一化和

= mean(2, 3, 5, 7, 11, 13, 17, 19) = 9.625 = var(2, 3, 5, 7, 11, 13, 17, 19) = 35.734

計算a的所有係數

a ← [ [[-1.276, -1.108]], [[-0.773, -0.439]], [[0.230, 0.565]], [[1.234, 1.568]] ]

Instance Normalization

實例規範化(IN)可以看作是將BN公式單獨應用到每個輸入特性(又稱實例),就好像它是批處理中的唯一成員一樣。更準確地說,在計算和沿軸(H, W)和S的係數被定義為一組相同的輸入特性和x也在同一個頻道。

由於IN的計算與批大小為1時BN的計算相同,在大多數情況下,IN實際上會使情況變得更糟。而對於樣式轉換任務,IN在丟棄圖像對比度信息方面優於BN。

第一係數a= 2,i=i(0,0,0),相應的和只是

= mean(2, 3) = 2.5 = var(2, 3) = 0.25

a ← (2 - 2.5) / √(0.25 + 0.00001) = -1.000

得到

a ← [ [[-1.000, 1.000]], [[-1.000, 1.000]], [[-1.000, 1.000]], [[-1.000, 1.000]] ]

Group Normalization

前面我們說過IN的計算與批大小為1時BN的計算相同,但是是針對對每個輸入特性分別應用BN。注意,IN還可以看作是將LN單獨應用於每個通道,就像通道的數量為1的LN一樣。

組歸一化(GN)是IN和LN的中間點。組織渠道分成不同的組,計算和沿著(H, W)軸和一組通道。批次然後組係數,在相同的輸入特性和同一組x渠道。

組的數量G是一個預定義的超參數,通常需要它來劃分c。為了簡單起見,我們將通道按順序分組。所以頻道1,…,C / G屬於第一組,頻道C / G + 1,…,2C / G屬於第二組,以此類推。當G = C時,即每組只有1個信道,則GN變為IN。另一方面,當G = 1時,GN變成LN。因此G控制了IN和LN之間的插值。

在我們的例子中,考慮G = 2。規範化的第一個係數a = 2,i=(0,0,0),我們使用的係數在4 / 2 = 2通道

= mean(2, 3, 5, 7) = 4.25 = var(2, 3, 5, 7) = 3.687

代入歸一化公式,

a ← (2 - 4.25) / √(3.687 + 0.00001) = -1.172

對於a的其他係數,計算方法相似:

a ← [ [[-1.172, -0.651]], [[0.391, 1.432]], [[-1.265, -0.633]], [[0.633, 1.265]] ]

歸一化方法比較

藍色的區域對應的集S計算和,然後用來正常化任何係數在藍色區域。

從這個圖中我們可以看到,GN如何在IN和LN之間插入。GN優於IN,因為GN可以利用跨渠道的依賴關係。它也比LN好,因為它允許對每一組通道學習不同的分布。

當批大小較小時,GN始終優於BN。但是,當批處理大小非常大時,GN的伸縮性不如BN,可能無法匹配BN的性能。

引用

A. Kolesnikov, L. Beyer, X. Zhai, J. Puigcerver, J. Yung, S. Gelly, and N. Houlsby. Big Transfer (BiT): General Visual Representation Learning (2019), arXiv preprint.S. Qiao, H. Wang, C. Liu, W. Shen, and A. Yuille. Weight Standardization (2019), arXiv preprint.S. Santurkar, D. Tsipras, A. Ilyas, and A. Madry. How Does Batch Normalization Help Optimization? (2018), NIPS 2018.Y. Wu, and K. He. Group Normalization (2018), ECCV 2018.作者:Wanshun Wong

Deephub翻譯組

相關焦點

  • 常用的 Normalization 方法:BN、LN、IN、GN
    它們都是從激活函數的輸入來考慮、做文章的,以不同的方式對激活函數的輸入進行 Norm 的。我們將輸入的 feature map shape 記為[N, C, H, W],其中N表示batch size,即N個樣本;C表示通道數;H、W分別表示特徵圖的高度、寬度。
  • 常用 Normalization 方法的總結與思考:BN、LN、IN、GN
    它們都是從激活函數的輸入來考慮、做文章的,以不同的方式對激活函數的輸入進行 Norm 的。我們將輸入的 feature map shape 記為[N, C, H, W],其中N表示batch size,即N個樣本;C表示通道數;H、W分別表示特徵圖的高度、寬度。
  • PyTorch 源碼解讀之 BN & SyncBN
    BatchNorm 最早在全連接網絡中被提出,對每個神經元的輸入做歸一化。擴展到 CNN 中,就是對每個卷積核的輸入做歸一化,或者說在 channel 之外的所有維度做歸一化。BatchNorm 的 PyTorch 實現PyTorch 中與 BN 相關的幾個類放在 torch.nn.modules.batchnorm 中,包含以下幾個類:_NormBase:nn.Module 的子類,定義了 BN 中的一系列屬性與初始化、讀數據的方法;_BatchNorm:_NormBase 的子類,定義了 forward 方法;BatchNorm1d
  • 數列bn和an的關係2^bn=a1a2a3……an求bn?重在指數和對數的轉化
    為了保證等式2^(bn)=a1·a2·a3…an不變,我們可以將式子2^(bn)=a1·a2·a3…an等號左右兩邊都放入對數之中。又因為式子2^(bn)=a1·a2·a3…an中的指數涉及了底數是2的情況,所以可以將該式子放入以底數為2的對數之中。
  • 數據處理中的標準化、歸一化究竟是什麼?
    今天說一個比較重要的內容,無論是在算法建模還是在數據分析都比較常見:數據歸一化和標準化。開始之前,請你先把網上看到的所有相關的博客、帖子都忘掉。當然,如果你在閱讀文章的時候,發現存在問題歡迎留言批評指正但是我覺得你可能沒有批評指正的機會先來說下概念數據歸一化和標準化都屬於數據特徵無量綱的一種方式。無量綱指的是將不同規格的數據轉換到同一規格,或不同分布的數據轉換到某個特定分布的需求,稱之為數據「無量綱化」。
  • 數據變換-歸一化與標準化
    數據變換的目的是將不同渠道,不同量級的數據轉化到統一的範圍之內,方便後續的分析處理。數據變換的方法有很多,比如數據平滑,數據聚集,數據概化,數據規範化和屬性構造等。本篇文章主要介紹數據規範化,這是一種比較常用,也比較簡單的方法。
  • 數據轉換 :標準化vs 歸一化(附代碼&連結)
    :「標準化」和「歸一化」的不同之處,並舉例說明何時使用,以及如何使用它們。本文將解釋數據轉換中常見的特徵縮放方法:「標準化」和「歸一化」的不同之處,並舉例說明何時使用,以及如何使用它們。數據轉換是數據處理中十分基本的步驟之一。當我初學特徵縮放的時候,經常用到「縮放」 「標準化」「歸一化」等術語。但是卻很難找到應該在什麼時候,使用哪一種方法的信息。
  • FAIR何愷明等人提出組歸一化:替代批歸一化,不受批量大小限制
    近日,FAIR 研究工程師吳育昕、研究科學家何愷明提出了批歸一化(Group Normalization)方法,試圖以小批尺寸實現快速神經網絡訓練,這種方法對於硬體的需求大大降低,並在實驗中超過了傳統的批歸一化方法。
  • 表達矩陣的歸一化和標準化,去除極端值,異常值
    取log值就是一種歸一化的方法,z-score是常用的標準正態分布化的方法。歸一化和標準化的區別實際上口語裡面通常是沒辦法很便捷的區分這兩個概念。歸一化:將每個樣本的特徵值(在轉錄組中,特徵值就是表達量)轉換到同一量綱下,把表達量映射到特定的區間內,區間的上下限由表達量的極值決定,這種區間縮放法是歸一化的常用方法。
  • 詳解深度學習中的Normalization,BN/LN/WN
    什麼是 ICS 呢?@魏秀參 在一個回答中做出了一個很好的解釋:大家都知道在統計機器學習中的一個經典假設是「源空間(source domain)和目標空間(target domain)的數據分布(distribution)是一致的」。如果不一致,那麼就出現了新的機器學習問題,如 transfer learning / domain adaptation 等。
  • 超越何愷明等組歸一化 Group Normalization,港中文團隊提出自適配...
    *BN(批歸一化)是由 Google 在 2015 年提出的一種歸一化方法。至今已經被引用了 5000 餘次,在學術界與工業界廣泛使用。幾乎所有主流神經網絡結構都使用了BN,例如微軟亞洲研究院提出的殘差神經網絡(ResNet,CVPR 2016 best paper)和由康奈爾大學提出的 DenseNet(CVPR 2017 best paper)。
  • 高中數學48種快速做題的方法,個個都是經典!
    常用數列bn=n×(2²n)求和Sn=(n-1)×(2²(n+1))+2記憶方法前面減去一個1,後面加一個,再整體加一個29 .在空間立體幾何中:以下命題均錯(1)空間中不同三點確定一個平面(2)垂直同一直線的兩直線平行(3)兩組對邊分別相等的四邊形是平行四邊形(4)如果一條直線與平面內無數條直線垂直,則直線垂直平面(5)有兩個面互相平行,其餘各面都是平行四邊形的幾何體是稜柱(6)有一個面是多邊形,其餘各面都是三角形的幾何體都是稜錐
  • Python數據預處理:徹底理解標準化和歸一化
    數據預處理數據中不同特徵的量綱可能不一致,數值間的差別可能很大,不進行處理可能會影響到數據分析的結果,因此,需要對數據按照一定比例進行縮放,使之落在一個特定的區域,便於進行綜合分析。常用的方法有兩種:最大 - 最小規範化:對原始數據進行線性變換,將數據映射到[0,1]區間Z-Score標準化:將原始數據映射到均值為0、標準差為1的分布上
  • 批歸一化和Dropout不能共存?這篇研究說可以
    因此,開發新的技術來提高 DNN 的訓練效率一直是該領域比較活躍的研究主題。近期,來自騰訊、港中文和南開大學的研究者提出了一種新的訓練技術,將兩種常用的技術——批歸一化(BatchNorm)和 Dropout 結合在一起。新技術可以使神經網絡的輸入相互獨立,而這兩種技術單獨都無法實現這一點。
  • 高中數學52種快速做題方法,個個都是經典!個個都必須背會!
    常用數列bn=n×(2²n)求和Sn=(n-1)×(2²(n+1))+2記憶方法前面減去一個1,後面加一個,再整體加一個29 .空間立體幾何中:以下命題均錯(1)空間中不同三點確定一個平面(2)垂直同一直線的兩直線平行(3)兩組對邊分別相等的四邊形是平行四邊形(4)如果一條直線與平面內無數條直線垂直,則直線垂直平面(5)有兩個面互相平行,其餘各面都是平行四邊形的幾何體是稜柱(6)有一個面是多邊形,其餘各面都是三角形的幾何體都是稜錐
  • 高中數學52種快速做題方法, 個個都是「衝分神器」!
    8.常用數列bn=n×(2²n)求和Sn=(n-1)×(2²(n+1))+2記憶方法前面減去一個1,後面加一個,再整體加一個29.適用於標準方程(焦點在x軸)爆強公式k橢=-{(b²)xo}空間立體幾何中:以下命題均錯(1)空間中不同三點確定一個平面(2)垂直同一直線的兩直線平行(3)兩組對邊分別相等的四邊形是平行四邊形(4)如果一條直線與平面內無數條直線垂直,則直線垂直平面(5)有兩個面互相平行,其餘各面都是平行四邊形的幾何體是稜柱(6)有一個面是多邊形,其餘各面都是三角形的幾何體都是稜錐
  • 何愷明團隊最新力作:群組歸一化(Group Normalization)
    該方法稱為群組歸一化(Group Normalization),試圖以群組方式實現快速訓練神經網絡,這種方法對於硬體的需求大大降低,並在實驗中超過了傳統的批量歸一化方法。批量歸一化和群組歸一化批量歸一化(Batch Normalization,以下簡稱 BN)是深度學習發展中的一項裡程碑式技術,可讓各種網絡並行訓練。
  • 「新高一」高考數學40條秒殺型公式與方法,強烈推薦
    8、常用數列bn=n×(2²n)求和Sn=(n-1)×(2²(n+1))+2記憶方法:前面減去一個1,後面加一個,再整體加一個29、適用於標準方程(焦點在x軸)爆強公式:k橢=-{(b²)xo}/{(a²)yo}k雙={(b²)xo}/{(a²)yo}k拋=p/