久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

深度學習各種 Normalization 方法小結

 漢無為 2022-01-16

目前深度學習已經(jīng)徹底改變了很多研究領域,,如自然語言處理,、計算機視覺等,。深度學習當然涉及訓練精心設計的深度神經(jīng)網(wǎng)絡,而各種設計會影響這些深度網(wǎng)絡的訓練機制,。其中一些設計包括,,

  • 網(wǎng)絡中使用的網(wǎng)絡層類型,例如卷積層,、循環(huán)層等,,以及網(wǎng)絡應該有多少層?

  • 應該使用什么樣的歸一化層,?

  • 待優(yōu)化的損失函數(shù)應該是什么,?

這些設計主要取決于我們試圖解決的基本任務,并且需要對我們手頭不同選項有更深入的了解,。這里我們主要關注第 2 點,,即深度學習中的不同 Normalization 層

本文將介紹以下 Normalization 方法,,

  • Batch Normalization

  • Weight Normalization

  • Layer Normalization

  • Group Normalization

  • Instance Normalization

  • Weight Standarization

1為什么要 Normalization

在深度神經(jīng)網(wǎng)絡中,,存在一種內(nèi)部協(xié)變偏移internal covariate shift現(xiàn)象,它是由于訓練過程中不斷變化的網(wǎng)絡參數(shù)導致網(wǎng)絡各層的輸入分布發(fā)生變化,。

例如,,輸入層中某些具有較高數(shù)值的特征可能會起到主導作用,從而在網(wǎng)絡中產(chǎn)生偏差,,即只有這些特征對訓練結果有貢獻,。

例如,假設特征 1 的值介于 1 和 5 之間,,特征 2 的值介于 100 和 10000 之間,。在訓練期間,由于兩個特征的規(guī)模不同,,特征 2 將主導網(wǎng)絡,,只有該特征對模型作出貢獻。

圖片

這僅僅是一層的情況,,如果從整個深度神經(jīng)網(wǎng)絡來看,,那就更加復雜了。Google 在其論文中將這一現(xiàn)象總結為,,

Internal Covariate Shift 簡稱 ICS,,是由于訓練過程中網(wǎng)絡參數(shù)的變化引起的網(wǎng)絡激活分布的變化。

網(wǎng)絡中的每一層的參數(shù)更新會導致本層的激活輸出的分布發(fā)生變化,,也就是后面層的輸入的分布發(fā)生變化,。而深度神經(jīng)網(wǎng)絡往往涉及到很多層的疊加,通過層層疊加,會引發(fā)后面層非常劇烈的變化,,這就給深度模型的訓練帶來了巨大挑戰(zhàn),。

由于上述原因,,引入了稱為 normalization 的概念來解決這些問題,。

Normalization 有很多優(yōu)點,包括

  • 減少內(nèi)部協(xié)變偏移以改善訓練,;

  • 將每個特征縮放到相似的范圍以防止或減少網(wǎng)絡中的偏差,;

  • 通過防止權重在整個地方爆炸并將它們限制在特定范圍內(nèi)來加速優(yōu)化過程;

  • 通過輔助正則化減少網(wǎng)絡中的過擬合,。

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 Normalization

圖片

Batch Normalization 側重于標準化任何特定層的輸入(即來自前一層的激活)

下圖左邊網(wǎng)絡中沒有 BN 層,右邊網(wǎng)絡中在隱藏層后加入了 BN 層,,即對影藏層的激活在小批次上作 Normalization,。

圖片

標準化輸入意味著網(wǎng)絡中任何層的輸入都應該近似零均值以及單位方差。簡單來說,,BN 層通過減去當前小批量中的輸入均值并除以標準差來變換當前小批量中的每個輸入,。

但是每一層不需要期望具有零均值和單位方差的輸入,相反,,模型可能在其他均值和方差的情況下表現(xiàn)更好,。因此,BN 層還引入了兩個可學習的參數(shù) ,。

整個層操作如下,。它接受輸入 并將其轉換為 ,如下表所述,。

輸入:一個 mini-batch 上 的值:,;

待學習參數(shù):

輸出:,。

  • mini-batch 均值
  • mini-batch 方差
  • 標準化
  • 縮放和偏移

那么 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)元的示例,,批次大小為 ,校正之前,,每個神經(jīng)元的輸出分布可能各不相同,,但 BN 層試圖讓它們都遵循標準正態(tài)分布,當然之后可以再作一定縮放和偏移變換,。

圖片

總結一下:簡而言之,,BN 使得梯度更具預測性,從而有效改善網(wǎng)絡訓練,。

下面,,讓我們看看 BN 的一些優(yōu)點:

  • BN 加速深度神經(jīng)網(wǎng)絡的訓練,。

  • 對于每個輸入小批量,我們計算不同的統(tǒng)計量,,這引入了某種正則化,。正則化技術起到在訓練期間限制深度神經(jīng)網(wǎng)絡復雜度的作用。

  • 每個小批量都有不同的小分布,,這些小分布之間的變化稱為內(nèi)部協(xié)變偏移,,BN 被認為消除了這種現(xiàn)象。

  • BN 對通過網(wǎng)絡的梯度流也提供了有利影響:它減少了梯度對參數(shù)尺度或其初始值的依賴性,,從而使我們能夠使用更高的學習率,。

然而,,下面是批量標準化的幾個缺點:

  • BN 在每次訓練迭代中計算批次數(shù)據(jù)的統(tǒng)計量(Mini-batch 均值和方差),,因此在訓練時需要更大的批次大小,以便它可以有效地逼近來自 mini-batch 的總體均值和方差,。這使得 BN 更難訓練用于對象檢測,、語義分割等應用的網(wǎng)絡,因為它們通常涉及高分辨率(通常高達 1024,,2048 等)的輸入數(shù)據(jù),,使用大批量進行訓練在計算上往往是不可行的。

  • BN 不適用于 RNN,。問題是 RNN 與之前的時間戳具有循環(huán)連接,,并且在 BN 層中的每個時間步長都需要單獨的 ,這反而增加了額外的復雜性并使 BN 與 RNN 一起使用變得更加困難,。

  • 不同的訓練和測試計算:在測試(或推理)期間,,BN 層不會從測試數(shù)據(jù) mini-batch(上面算法表中的步驟 1 和 2)計算均值和方差,而是使用固定均值和從訓練數(shù)據(jù)計算的方差,。這在使用 BN 時需要謹慎,,并引入了額外的復雜性。在 pytorch 中,,model.eval() 確保在評估模型中設置模型,,因此 BN 層利用它來使用從訓練數(shù)據(jù)預先計算的固定均值和方差。

3Weight Normalization

針對 BN 的缺點,,Saliman 等人提出了 WN,。他們的想法是將權重向量的大小與方向解耦,從而重新參數(shù)化網(wǎng)絡以加快訓練速度,。

重新參數(shù)化是什么意思呢,?

不是直接對激活值 進行 normalization,而是對網(wǎng)絡參數(shù)(權重)進行,。論文作者建議使用兩個參數(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) 時,,實際上擁有形狀為 的二維張量。此時,,LN 可以表示為:

如果是 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 各個組。

圖片

分別指的是 batches,、channels,、heightwidth,BN 在 方向歸一化,,LN 和 GN 在 方向歸一化,,而 GN 顧名思義就是將通道分組并分開歸一化。

6Instance Normalization

圖片

上圖中,,最后一個是 Instance Normalization 的示意圖,。IN 僅僅在特征的空間維度上計算,因此它對于每個通道和樣本都是獨立的,。

有趣的是,,IN 中的仿射參數(shù)可以完全改變輸出圖像的風格。與 BN 不同,,IN 可以將每個單獨樣本的風格歸一化為目標風格(由 建模),。因此,,訓練模型更容易轉換到特定風格,。因為網(wǎng)絡的其余部分可以將其學習能力集中在內(nèi)容操作和局部細節(jié)上,同時丟棄原始的全局細節(jié)(即 style 信息),。它的數(shù)學表達式為:

.Adaptive Instance Normalization .

Normalization 和風格遷移密切相關,。如果 是從另一個圖像 的特征統(tǒng)計中引入的呢,?通過這種方式,,我們將能夠通過將我們想要的特征圖像均值作為 并將方差作為來自 style 圖像 來建模任何任意 style。

自適應 IN(AdaIN)接收輸入圖像 (內(nèi)容)和 style 輸入 ,,并簡單地對齊 的通道均值和方差以匹配 的均值和方差,。IN 的數(shù)學公式為:

下圖中可以看到一個簡單的編碼器-解碼器網(wǎng)絡架構,帶有額外的 AdaIN 層用于樣式對齊,。

圖片

7Weight Standardization

權重標準化是上述 WN 的變體,。與關注激活的標準方法不同,WS 針對權重進行平滑處理,。

我們來簡述一下 WS 的操作流程,。考慮一個標準卷積層,,將其偏置項設置為

其中 表示層中的權重,, 表示卷積操作。因為 ,, 是輸出通道數(shù),, 對應于每個輸入通道中 kernel 區(qū)域內(nèi)的輸入通道數(shù),。

圖片

以上圖為例,,。在 WS 中,,我們不是直接在原始權重 上優(yōu)化損失 ,而是將權重 重新參數(shù)化為 的函數(shù),,即 ,,并通過 SGD 優(yōu)化 上的損失

其中,

分別計算每個輸出通道的均值和標準差,,可以結合下圖來理解,。

圖片

本質(zhì)上,WS 旨在單獨調(diào)控每個輸出通道的權重的一階統(tǒng)計量,。通過這種方式,,WS 在反向傳播期間對梯度進行 normalization。

從理論上和實驗上都驗證了它通過標準化卷積層中的權重來平滑損失情況,。

理論上,,WS 減少了損失和梯度的 Lipschitz 常數(shù)。核心思想是將卷積權重保持在一個緊湊的空間中,,從而平滑了損失并改進了訓練,。

論文作者將 WS 與 GN 結合使用,取得了不錯效果,。

圖片

在 ImageNet 和 COCO 上比較 normalization 方法,,GN+WS 大大優(yōu)于單獨使用 BN 和 GN。

8小結

最后,,為了便于比較和分析它們的工作原理,,我們將上述幾種主要 normalization 方法匯聚在一個圖中。

圖片

當在論文或具體網(wǎng)絡架構中遇到這些名詞時,,腦子中可以浮現(xiàn)出對應的圖來輔助理解,。

至于這些方法分別適合什么任務,需要大家在實踐中不斷積累經(jīng)驗,,也歡迎大家留言交流,。

參考資料

[1]

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

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多