目前深度學習已經(jīng)徹底改變了很多研究領域,,如自然語言處理,、計算機視覺等,。深度學習當然涉及訓練精心設計的深度神經(jīng)網(wǎng)絡,而各種設計會影響這些深度網(wǎng)絡的訓練機制,。其中一些設計包括,,
這些設計主要取決于我們試圖解決的基本任務,并且需要對我們手頭不同選項有更深入的了解,。這里我們主要關注第 2 點,,即 本文將介紹以下 Normalization 方法,,
1為什么要 Normalization在深度神經(jīng)網(wǎng)絡中,,存在一種內(nèi)部協(xié)變偏移( 例如,,輸入層中某些具有較高數(shù)值的特征可能會起到主導作用,從而在網(wǎng)絡中產(chǎn)生偏差,,即只有這些特征對訓練結果有貢獻,。
網(wǎng)絡中的每一層的參數(shù)更新會導致本層的激活輸出的分布發(fā)生變化,,也就是后面層的輸入的分布發(fā)生變化,。而深度神經(jīng)網(wǎng)絡往往涉及到很多層的疊加,通過層層疊加,會引發(fā)后面層非常劇烈的變化,,這就給深度模型的訓練帶來了巨大挑戰(zhàn),。 由于上述原因,,引入了稱為 normalization 的概念來解決這些問題,。 Normalization 有很多優(yōu)點,包括
Normalization 也可以結合概率論來解釋,。一般來說,機器學習中的方法比較偏愛獨立同分布的數(shù)據(jù),。當然并不是所有算法都有這個要求,,但獨立同分布的數(shù)據(jù)往往可以簡化一般模型的訓練,提升模型的預測能力,。 在把數(shù)據(jù)輸入模型之前,,對其經(jīng)過白化(whitening)處理是一個不錯的預處理步驟。 比如上圖(左)的數(shù)據(jù),,先經(jīng)過零均值化以及去相關性操作,,得到中間的形式,各個特征相互獨立,;再讓所有特征具有單位標準差,,最終得到獨立同分布的數(shù)據(jù)。 但深度學習中往往不直接使用白化操作,,白化中間需要用到 PCA,。如果對輸入數(shù)據(jù)作一次 PCA,那也僅僅是針對線性模型,,但如果針對神經(jīng)網(wǎng)絡中的中間每一層在激活后再使用白化,,那計算代價太過高昂。 那怎么辦呢,?不妨模仿白化,,但可以作一些簡化,比如不考慮去相關性,,而是對各層的激活輸出在一定范圍內(nèi)作標準化處理,,再加一定的縮放和偏移。這里的操作范圍可以不同,,于是就有了一堆 Normalization 方法,。 2Batch NormalizationBatch Normalization 側重于標準化任何特定層的輸入(即來自前一層的激活)。 下圖左邊網(wǎng)絡中沒有 BN 層,右邊網(wǎng)絡中在隱藏層后加入了 BN 層,,即對影藏層的激活在小批次上作 Normalization,。 標準化輸入意味著網(wǎng)絡中任何層的輸入都應該近似零均值以及單位方差。簡單來說,,BN 層通過減去當前小批量中的輸入均值并除以標準差來變換當前小批量中的每個輸入,。 但是每一層不需要期望具有零均值和單位方差的輸入,相反,,模型可能在其他均值和方差的情況下表現(xiàn)更好,。因此,BN 層還引入了兩個可學習的參數(shù) 整個層操作如下,。它接受輸入 輸入:一個 mini-batch 上 待學習參數(shù): 輸出:
那么 BN 到底是如何幫助神經(jīng)網(wǎng)絡訓練呢,?直觀地說,在梯度下降中,,網(wǎng)絡根據(jù)任何層的當前輸入計算梯度,,并在梯度方向上更新權重。但是由于這些層一個接一個地堆疊起來,,任何特定層的輸入數(shù)據(jù)分布會因為前一層權重的輕微更新而發(fā)生很大變化,,因此當前的梯度并不能為網(wǎng)絡提供最優(yōu)更新。 而 BN 將特定層的輸入數(shù)據(jù)(即來自前一層的激活)的分布作統(tǒng)一校正,,這有助于網(wǎng)絡為權重更新產(chǎn)生更好的梯度,。因此,BN 通常提供非常穩(wěn)定且高效的訓練制度,。 下面看一個隱藏層有 3 個神經(jīng)元的示例,,批次大小為 總結一下:簡而言之,,BN 使得梯度更具預測性,從而有效改善網(wǎng)絡訓練,。 下面,,讓我們看看 BN 的一些優(yōu)點:
然而,,下面是批量標準化的幾個缺點:
3Weight Normalization針對 BN 的缺點,,Saliman 等人提出了 WN,。他們的想法是將權重向量的大小與方向解耦,從而重新參數(shù)化網(wǎng)絡以加快訓練速度,。 重新參數(shù)化是什么意思呢,? 不是直接對激活值 WN 加速了類似于 BN 的訓練,,與 BN 不同的是,它也適用于 RNN。但是與 BN 相比,,使用 WN 訓練深度網(wǎng)絡的穩(wěn)定性較差,,因此在實踐中并未得到廣泛應用。 4Layer Normalization受 BN 的啟發(fā),,Hinton 等人提出的 Layer Normalization 沿特征方向而不是小批量方向?qū)せ钸M行 normalization,。這通過消除對批次的依賴來克服 BN 的缺點,也使得 RNN 更容易應用 BN,。 與 BN 不同,,LN 直接從整個隱藏層的神經(jīng)元的總輸入估計統(tǒng)計量,因此 normalization 不會在訓練數(shù)據(jù)之間引入任何新的依賴關系,。它適用于 RNN,,并提高了幾個現(xiàn)有 RNN 模型的訓練時間和泛化性能。最近,,它還與 Transformer 模型一起配合使用,。 注意上圖中的顏色走向,與 BN 有所不同,,LN 對某一個層中所有特征進行歸一化,,而不是在小批量中對輸入特征進行歸一化。 因此,,當處理批次大小(batch size)為 如果是 CV,,那特征圖就是個 4D 張量,我們可以在空間維度和所有通道上取平均值,,如下所示: 5Group Normalization與 LN 類似,,GN 也沿特征方向進行操作,但與 LN 不同的是,,它將特征劃分為若干組并分別對每個組進行 normalization,。在實踐中,GN 比 LN 常常表現(xiàn)得更好,,它的參數(shù) num_groups 可以設為超參數(shù),。 如果覺得 BN、LN,、GN 有點令人困惑,,下圖給出了一個總結。給定形狀 (N, C, H, W) 的激活,,BN 歸一化 N 方向,,LN 和 GN 歸一化 C 方向,,但 GN 額外地將 C 通道分組并單獨 normalize 各個組。
6Instance Normalization上圖中,,最后一個是 有趣的是,,IN 中的仿射參數(shù)可以完全改變輸出圖像的風格。與 BN 不同,,IN 可以將每個單獨樣本的風格歸一化為目標風格(由 .Adaptive Instance Normalization .Normalization 和風格遷移密切相關,。如果 自適應 IN(AdaIN)接收輸入圖像 下圖中可以看到一個簡單的編碼器-解碼器網(wǎng)絡架構,帶有額外的 AdaIN 層用于樣式對齊,。 7Weight Standardization權重標準化是上述 WN 的變體,。與關注激活的標準方法不同,WS 針對權重進行平滑處理,。 我們來簡述一下 WS 的操作流程,。考慮一個標準卷積層,,將其偏置項設置為 其中 以上圖為例, 其中, 分別計算每個輸出通道的均值和標準差,,可以結合下圖來理解,。 本質(zhì)上,WS 旨在單獨調(diào)控每個輸出通道的權重的一階統(tǒng)計量,。通過這種方式,,WS 在反向傳播期間對梯度進行 normalization。 從理論上和實驗上都驗證了它通過標準化卷積層中的權重來平滑損失情況,。
論文作者將 WS 與 GN 結合使用,取得了不錯效果,。 在 ImageNet 和 COCO 上比較 8小結最后,,為了便于比較和分析它們的工作原理,,我們將上述幾種主要 當在論文或具體網(wǎng)絡架構中遇到這些名詞時,,腦子中可以浮現(xiàn)出對應的圖來輔助理解,。 至于這些方法分別適合什么任務,需要大家在實踐中不斷積累經(jīng)驗,,也歡迎大家留言交流,。 參考資料 https:///normalization/ [2]https:///a/s/normalization-in-deep-learning [3]https:///different-normalization-layers-in-deep-learning-1a7214ff71d6 [4]https:///batch-normalization-in-3-levels-of-understanding-14c2da90a338 |
|
來自: 漢無為 > 《神經(jīng)網(wǎng)絡》