<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深度學(xué)習(xí)各種 Normalization 方法小結(jié)

          共 5398字,需瀏覽 11分鐘

           ·

          2022-01-10 09:37

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

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

          • 應(yīng)該使用什么樣的歸一化層?

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

          這些設(shè)計(jì)主要取決于我們試圖解決的基本任務(wù),并且需要對我們手頭不同選項(xiàng)有更深入的了解。這里我們主要關(guān)注第 2 點(diǎn),即深度學(xué)習(xí)中的不同 Normalization 層

          本文將介紹以下 Normalization 方法,

          • Batch Normalization

          • Weight Normalization

          • Layer Normalization

          • Group Normalization

          • Instance Normalization

          • Weight Standarization

          1為什么要 Normalization

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

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

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



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

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

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

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

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

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

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

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

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

          Normalization 也可以結(jié)合概率論來解釋。一般來說,機(jī)器學(xué)習(xí)中的方法比較偏愛獨(dú)立同分布的數(shù)據(jù)。當(dāng)然并不是所有算法都有這個要求,但獨(dú)立同分布的數(shù)據(jù)往往可以簡化一般模型的訓(xùn)練,提升模型的預(yù)測能力。

          在把數(shù)據(jù)輸入模型之前,對其經(jīng)過白化(whitening)處理是一個不錯的預(yù)處理步驟。

          比如上圖(左)的數(shù)據(jù),先經(jīng)過零均值化以及去相關(guān)性操作,得到中間的形式,各個特征相互獨(dú)立;再讓所有特征具有單位標(biāo)準(zhǔn)差,最終得到獨(dú)立同分布的數(shù)據(jù)。

          但深度學(xué)習(xí)中往往不直接使用白化操作,白化中間需要用到 PCA。如果對輸入數(shù)據(jù)作一次 PCA,那也僅僅是針對線性模型,但如果針對神經(jīng)網(wǎng)絡(luò)中的中間每一層在激活后再使用白化,那計(jì)算代價太過高昂。

          那怎么辦呢?不妨模仿白化,但可以作一些簡化,比如不考慮去相關(guān)性,而是對各層的激活輸出在一定范圍內(nèi)作標(biāo)準(zhǔn)化處理,再加一定的縮放和偏移。這里的操作范圍可以不同,于是就有了一堆 Normalization 方法。

          2Batch Normalization

          Batch Normalization 側(cè)重于標(biāo)準(zhǔn)化任何特定層的輸入(即來自前一層的激活)

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

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

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

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

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

          待學(xué)習(xí)參數(shù):

          輸出:

          • mini-batch 均值
          • mini-batch 方差
          • 標(biāo)準(zhǔn)化
          • 縮放和偏移

          那么 BN 到底是如何幫助神經(jīng)網(wǎng)絡(luò)訓(xùn)練呢?直觀地說,在梯度下降中,網(wǎng)絡(luò)根據(jù)任何層的當(dāng)前輸入計(jì)算梯度,并在梯度方向上更新權(quán)重。但是由于這些層一個接一個地堆疊起來,任何特定層的輸入數(shù)據(jù)分布會因?yàn)榍耙粚訖?quán)重的輕微更新而發(fā)生很大變化,因此當(dāng)前的梯度并不能為網(wǎng)絡(luò)提供最優(yōu)更新。

          而 BN 將特定層的輸入數(shù)據(jù)(即來自前一層的激活)的分布作統(tǒng)一校正,這有助于網(wǎng)絡(luò)為權(quán)重更新產(chǎn)生更好的梯度。因此,BN 通常提供非常穩(wěn)定且高效的訓(xùn)練制度。

          下面看一個隱藏層有 3 個神經(jīng)元的示例,批次大小為 ,校正之前,每個神經(jīng)元的輸出分布可能各不相同,但 BN 層試圖讓它們都遵循標(biāo)準(zhǔn)正態(tài)分布,當(dāng)然之后可以再作一定縮放和偏移變換。

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

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

          • BN 加速深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。

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

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

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

          然而,下面是批量標(biāo)準(zhǔn)化的幾個缺點(diǎn):

          • BN 在每次訓(xùn)練迭代中計(jì)算批次數(shù)據(jù)的統(tǒng)計(jì)量(Mini-batch 均值和方差),因此在訓(xùn)練時需要更大的批次大小,以便它可以有效地逼近來自 mini-batch 的總體均值和方差。這使得 BN 更難訓(xùn)練用于對象檢測、語義分割等應(yīng)用的網(wǎng)絡(luò),因?yàn)樗鼈兺ǔI婕案叻直媛?span style="color:#aaaaaa;">(通常高達(dá) 1024,2048 等)的輸入數(shù)據(jù),使用大批量進(jìn)行訓(xùn)練在計(jì)算上往往是不可行的。

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

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

          3Weight Normalization

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

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

          不是直接對激活值 進(jìn)行 normalization,而是對網(wǎng)絡(luò)參數(shù)(權(quán)重)進(jìn)行。論文作者建議使用兩個參數(shù) (權(quán)重向量的長度)(權(quán)重向量的方向)來代替某個層的權(quán)重向量

          WN 加速了類似于 BN 的訓(xùn)練,與 BN 不同的是,它也適用于 RNN。但是與 BN 相比,使用 WN 訓(xùn)練深度網(wǎng)絡(luò)的穩(wěn)定性較差,因此在實(shí)踐中并未得到廣泛應(yīng)用。

          4Layer Normalization

          受 BN 的啟發(fā),Hinton 等人提出的 Layer Normalization 沿特征方向而不是小批量方向?qū)せ钸M(jìn)行 normalization。這通過消除對批次的依賴來克服 BN 的缺點(diǎn),也使得 RNN 更容易應(yīng)用 BN。

          與 BN 不同,LN 直接從整個隱藏層的神經(jīng)元的總輸入估計(jì)統(tǒng)計(jì)量,因此 normalization 不會在訓(xùn)練數(shù)據(jù)之間引入任何新的依賴關(guān)系。它適用于 RNN,并提高了幾個現(xiàn)有 RNN 模型的訓(xùn)練時間和泛化性能。最近,它還與 Transformer 模型一起配合使用。

          注意上圖中的顏色走向,與 BN 有所不同,LN 對某一個層中所有特征進(jìn)行歸一化,而不是在小批量中對輸入特征進(jìn)行歸一化。

          因此,當(dāng)處理批次大小(batch size) 時,實(shí)際上擁有形狀為 的二維張量。此時,LN 可以表示為:

          如果是 CV,那特征圖就是個 4D 張量,我們可以在空間維度和所有通道上取平均值,如下所示:

          5Group Normalization

          與 LN 類似,GN 也沿特征方向進(jìn)行操作,但與 LN 不同的是,它將特征劃分為若干組并分別對每個組進(jìn)行 normalization。在實(shí)踐中,GN 比 LN 常常表現(xiàn)得更好,它的參數(shù) num_groups 可以設(shè)為超參數(shù)。

          如果覺得 BN、LN、GN 有點(diǎn)令人困惑,下圖給出了一個總結(jié)。給定形狀 (N, C, H, W) 的激活,BN 歸一化 N 方向,LN 和 GN 歸一化 C 方向,但 GN 額外地將 C 通道分組并單獨(dú) normalize 各個組。

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

          6Instance Normalization

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

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

          .Adaptive Instance Normalization .

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

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

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

          7Weight Standardization

          權(quán)重標(biāo)準(zhǔn)化是上述 WN 的變體。與關(guān)注激活的標(biāo)準(zhǔn)方法不同,WS 針對權(quán)重進(jìn)行平滑處理。

          我們來簡述一下 WS 的操作流程。考慮一個標(biāo)準(zhǔn)卷積層,將其偏置項(xiàng)設(shè)置為

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

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

          其中,

          分別計(jì)算每個輸出通道的均值和標(biāo)準(zhǔn)差,可以結(jié)合下圖來理解。

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

          從理論上和實(shí)驗(yàn)上都驗(yàn)證了它通過標(biāo)準(zhǔn)化卷積層中的權(quán)重來平滑損失情況。

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

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

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

          8小結(jié)

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

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

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


          參考資料

          [1]

          https://theaisummer.com/normalization/

          [2]

          https://ai-pool.com/a/s/normalization-in-deep-learning

          [3]

          https://towardsdatascience.com/different-normalization-layers-in-deep-learning-1a7214ff71d6

          [4]

          https://towardsdatascience.com/batch-normalization-in-3-levels-of-understanding-14c2da90a338



          瀏覽 142
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  英国高跟熟妇XXX‘ | 久久亚洲精品中文字幕不卡一区 | 欧美性爱免费在线视频海量版 | 国产欧美日韩视频在线观看 | 成人精品三级麻豆 |