0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí)中的不同Normalization方法小結(jié)

可靠性雜壇 ? 來(lái)源:機(jī)器學(xué)習(xí)與數(shù)學(xué) ? 2024-02-20 13:54 ? 次閱讀

1為什么要 Normalization

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

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

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

wKgZomXUP3iADmYRAAAcHJA0n4k324.jpg

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

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

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

由于上述原因,引入了稱為 normalization 的概念來(lái)解決這些問(wèn)題。

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

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

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

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

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

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

wKgZomXUP3iAWdSeAADGT3hcKrk366.jpg

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

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

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

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

2Batch Normalization

wKgaomXUP3iAIjhYAAAbCKe69f8346.jpg

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

下圖左邊網(wǎng)絡(luò)中沒(méi)有 BN 層,右邊網(wǎng)絡(luò)中在隱藏層前加入了 BN 層,即對(duì)輸入層在小批次上作了 Normalization。

wKgaomXUP3iANlS1AAE2s3pwyoo234.jpg

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

wKgaomXUP6yAGaAEAAEaQFoS_c0750.jpgwKgZomXUP7OAbQk8AAFYexS-TJ8928.jpg

wKgaomXUP8GACaZ7AAFVwmR79PE344.jpg

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

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

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

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

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

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

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

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

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

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

3Weight Normalization

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

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

wKgZomXUP-SAMOhfAABoSvSIFOI666.jpg

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

4Layer Normalization

wKgZomXUP9yAEua-AAAZFdwH4ck060.jpg

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

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

wKgaomXUP9yAY8HWAACmSM5nH_0134.jpg

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


wKgZomXUQBmAFsPdAAFSU5UGaxU873.jpg

5Group Normalization

wKgZomXUQA2AL8-UAAAf7v8AKDE780.jpg

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

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

wKgaomXUQA2AFzpXAAIUl7qR-ak082.jpg
wKgZomXUQFSADZnSAAGTyyXIfI0573.jpg

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

wKgaomXUQEaAWkmWAAJGq3UVJVE787.jpg

wKgZomXUQHqAf5I_AAFl3DmBhxY568.jpg

其中,

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

wKgZomXUQJKAQDU4AAAYbL_3qQ4561.jpg

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

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

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

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

wKgaomXUQJKAD88iAAA8lLjhbLM656.jpg

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

8小結(jié)

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

wKgZomXUQJKABQEMAAD9aWyalZI965.jpg

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




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:深度學(xué)習(xí)各種 Normalization 方法小結(jié)

文章出處:【微信號(hào):可靠性雜壇,微信公眾號(hào):可靠性雜壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深度學(xué)習(xí)在汽車(chē)的應(yīng)用

    未來(lái)的某個(gè)時(shí)候,人們必定能夠相對(duì)自如地運(yùn)用人工智能,安全地駕車(chē)出行。這個(gè)時(shí)刻何時(shí)到來(lái)我無(wú)法預(yù)見(jiàn);但我相信,彼時(shí)“智能”會(huì)顯現(xiàn)出更“切實(shí)”的意義。與此同時(shí),通過(guò)深度學(xué)習(xí)方法,人工智能的實(shí)際應(yīng)用能夠在汽車(chē)
    發(fā)表于 03-13 06:45

    基于深度學(xué)習(xí)的異常檢測(cè)的研究方法

    的研究方法進(jìn)行了系統(tǒng)而全面的綜述。此外,我們回顧了這些方法在不同應(yīng)用領(lǐng)域中的應(yīng)用,并評(píng)估了它們的有效性。我們根據(jù)所采用的基本假設(shè)和方法,將最先進(jìn)的深度異常檢測(cè)研究技術(shù)分為不同的類(lèi)別。在
    發(fā)表于 07-12 07:10

    深度學(xué)習(xí)在預(yù)測(cè)和健康管理的應(yīng)用

    方法方面的最新進(jìn)展,目的是發(fā)現(xiàn)研究差距并提出進(jìn)一步的改進(jìn)建議。在簡(jiǎn)要介紹了幾種深度學(xué)習(xí)模型之后,我們回顧并分析了使用深度學(xué)習(xí)進(jìn)行故障檢測(cè),診
    發(fā)表于 07-12 06:46

    基于深度學(xué)習(xí)的異常檢測(cè)的研究方法

    ABSTRACT1.基于深度學(xué)習(xí)的異常檢測(cè)的研究方法進(jìn)行結(jié)構(gòu)化和全面的概述2.回顧這些方法在各個(gè)領(lǐng)域這個(gè)中的應(yīng)用情況,并評(píng)估他們的有效性。3.根據(jù)基本假設(shè)和采用的
    發(fā)表于 07-12 06:36

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

    )和網(wǎng)絡(luò)修剪,正在積極研究,這些方法與 FPGA 非常兼容。也有FPGA供應(yīng)商發(fā)布高速深度學(xué)習(xí)IP,以及配備適合深度
    發(fā)表于 02-17 16:56

    batch normalization時(shí)的一些缺陷

    導(dǎo)讀 batch normalization時(shí)的一些缺陷。 Batch Normalization確實(shí)是深度學(xué)習(xí)領(lǐng)域的重大突破之一,也是近年來(lái)研究人員討論的熱點(diǎn)之一。Batch
    的頭像 發(fā)表于 11-03 17:27 ?3144次閱讀
    batch <b class='flag-5'>normalization</b>時(shí)的一些缺陷

    深度學(xué)習(xí):搜索和推薦深度匹配問(wèn)題

    深度匹配問(wèn)題,非常solid的綜述,針對(duì)里面的一些方法,尤其是feature-based的深度學(xué)習(xí)方法增加了近期一些相關(guān)paper。推薦系統(tǒng)和搜索應(yīng)該是機(jī)器
    的頭像 發(fā)表于 11-05 09:47 ?4122次閱讀

    深度學(xué)習(xí)圖像分割的方法和應(yīng)用

    介紹使圖像分割的方法,包括傳統(tǒng)方法深度學(xué)習(xí)方法,以及應(yīng)用場(chǎng)景。 基于人工智能和深度學(xué)習(xí)方法的現(xiàn)
    的頭像 發(fā)表于 11-27 10:29 ?3196次閱讀

    STM32串口學(xué)習(xí)小結(jié)

    STM32串口學(xué)習(xí)小結(jié)串口是一個(gè)單片機(jī)常用的外設(shè)模塊,對(duì)于單片機(jī)的外部通訊,程序調(diào)試都有著十分重要的作用。所以作為嵌入式學(xué)習(xí)中一個(gè)必須掌握的外設(shè)模塊,這里向大家分享的我學(xué)習(xí)
    發(fā)表于 12-24 18:42 ?4次下載
    STM32串口<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>小結(jié)</b>

    基于深度學(xué)習(xí)的點(diǎn)云分割的方法介紹

      摘 要:點(diǎn)云分割是點(diǎn)云數(shù)據(jù)理解的一個(gè)關(guān)鍵技術(shù),但傳統(tǒng)算法無(wú)法進(jìn)行實(shí)時(shí)語(yǔ)義分割。近年來(lái)深度學(xué)習(xí)被應(yīng)用在點(diǎn)云分割上并取得了重要進(jìn)展。綜述了近四年來(lái)基于深度
    發(fā)表于 07-20 15:23 ?3次下載

    深度學(xué)習(xí)框架和深度學(xué)習(xí)算法教程

    基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)方法。 深度學(xué)習(xí)算法可以分為兩大類(lèi):監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)。監(jiān)督學(xué)習(xí)的基本任
    的頭像 發(fā)表于 08-17 16:11 ?1094次閱讀

    深度學(xué)習(xí)的模型優(yōu)化與調(diào)試方法

    深度學(xué)習(xí)模型在訓(xùn)練過(guò)程,往往會(huì)遇到各種問(wèn)題和挑戰(zhàn),如過(guò)擬合、欠擬合、梯度消失或爆炸等。因此,對(duì)深度學(xué)習(xí)模型進(jìn)行優(yōu)化與調(diào)試是確保其性能優(yōu)越的
    的頭像 發(fā)表于 07-01 11:41 ?862次閱讀

    深度學(xué)習(xí)的無(wú)監(jiān)督學(xué)習(xí)方法綜述

    應(yīng)用往往難以實(shí)現(xiàn)。因此,無(wú)監(jiān)督學(xué)習(xí)深度學(xué)習(xí)扮演著越來(lái)越重要的角色。本文旨在綜述深度
    的頭像 發(fā)表于 07-09 10:50 ?812次閱讀

    深度學(xué)習(xí)的時(shí)間序列分類(lèi)方法

    的發(fā)展,基于深度學(xué)習(xí)的TSC方法逐漸展現(xiàn)出其強(qiáng)大的自動(dòng)特征提取和分類(lèi)能力。本文將從多個(gè)角度對(duì)深度學(xué)習(xí)在時(shí)間序列分類(lèi)
    的頭像 發(fā)表于 07-09 15:54 ?1019次閱讀

    Pytorch深度學(xué)習(xí)訓(xùn)練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學(xué)習(xí)訓(xùn)練。
    的頭像 發(fā)表于 10-28 14:05 ?227次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練的<b class='flag-5'>方法</b>