<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>

          (附論文)常用 Normalization 方法的總結(jié)與思考

          共 3883字,需瀏覽 8分鐘

           ·

          2021-08-02 23:14

          點(diǎn)擊左上方藍(lán)字關(guān)注我們



          一個(gè)專注于目標(biāo)檢測與深度學(xué)習(xí)知識(shí)分享的公眾號(hào)

          編者薦語
          常用的Normalization方法主要有:Batch Normalization(BN,2015年)、Layer Normalization(LN,2016年)、Instance Normalization(IN,2017年)、Group Normalization(GN,2018年)。它們都是從激活函數(shù)的輸入來考慮、做文章的,以不同的方式對(duì)激活函數(shù)的輸入進(jìn)行 Norm 的。

          轉(zhuǎn)載自 | 機(jī)器學(xué)習(xí)算法那些事


          我們將輸入的 feature map shape 記為[N, C, H, W],其中N表示batch size,即N個(gè)樣本;C表示通道數(shù);H、W分別表示特征圖的高度、寬度。這幾個(gè)方法主要的區(qū)別就是在:


          1. BN是在batch上,對(duì)N、H、W做歸一化,而保留通道 C 的維度。BN對(duì)較小的batch size效果不好。BN適用于固定深度的前向神經(jīng)網(wǎng)絡(luò),如CNN,不適用于RNN;


          2. LN在通道方向上,對(duì)C、H、W歸一化,主要對(duì)RNN效果明顯;


          3. IN在圖像像素上,對(duì)H、W做歸一化,用在風(fēng)格化遷移;


          4. GN將channel分組,然后再做歸一化。

          每個(gè)子圖表示一個(gè)特征圖,其中N為批量,C為通道,(H,W)為特征圖的高度和寬度。通過藍(lán)色部分的值來計(jì)算均值和方差,從而進(jìn)行歸一化。

          如果把特征圖比喻成一摞書,這摞書總共有 N 本,每本有 C 頁,每頁有 H 行,每行 有W 個(gè)字符。


          1. BN 求均值時(shí),相當(dāng)于把這些書按頁碼一一對(duì)應(yīng)地加起來(例如第1本書第36頁,第2本書第36頁......),再除以每個(gè)頁碼下的字符總數(shù):N×H×W,因此可以把 BN 看成求“平均書”的操作(注意這個(gè)“平均書”每頁只有一個(gè)字),求標(biāo)準(zhǔn)差時(shí)也是同理。


          2. LN 求均值時(shí),相當(dāng)于把每一本書的所有字加起來,再除以這本書的字符總數(shù):C×H×W,即求整本書的“平均字”,求標(biāo)準(zhǔn)差時(shí)也是同理。


          3. IN 求均值時(shí),相當(dāng)于把一頁書中所有字加起來,再除以該頁的總字?jǐn)?shù):H×W,即求每頁書的“平均字”,求標(biāo)準(zhǔn)差時(shí)也是同理。


          4. GN 相當(dāng)于把一本 C 頁的書平均分成 G 份,每份成為有 C/G 頁的小冊(cè)子,求每個(gè)小冊(cè)子的“平均字”和字的“標(biāo)準(zhǔn)差”。


          一、 Batch Normalization, BN   


          論文鏈接https://arxiv.org/pdf/1502.03167.pdf


          為什么要進(jìn)行BN呢?


          (1)在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練的過程中,通常以輸入網(wǎng)絡(luò)的每一個(gè)mini-batch進(jìn)行訓(xùn)練,這樣每個(gè)batch具有不同的分布,使模型訓(xùn)練起來特別困難。


          (2)Internal Covariate Shift (ICS) 問題:在訓(xùn)練的過程中,激活函數(shù)會(huì)改變各層數(shù)據(jù)的分布,隨著網(wǎng)絡(luò)的加深,這種改變(差異)會(huì)越來越大,使模型訓(xùn)練起來特別困難,收斂速度很慢,會(huì)出現(xiàn)梯度消失的問題。


          BN的主要思想:針對(duì)每個(gè)神經(jīng)元,使數(shù)據(jù)在進(jìn)入激活函數(shù)之前,沿著通道計(jì)算每個(gè)batch的均值、方差,‘強(qiáng)迫’數(shù)據(jù)保持均值為0,方差為1的正態(tài)分布,避免發(fā)生梯度消失。具體來說,就是把第1個(gè)樣本的第1個(gè)通道,加上第2個(gè)樣本第1個(gè)通道 ...... 加上第 N 個(gè)樣本第1個(gè)通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是單純除以 N,最后得到的是一個(gè)代表這個(gè) batch 第1個(gè)通道平均值的數(shù)字,而不是一個(gè) H×W 的矩陣)。求通道 1 的方差也是同理。對(duì)所有通道都施加一遍這個(gè)操作,就得到了所有通道的均值和方差。


          BN的使用位置:全連接層或卷積操作之后,激活函數(shù)之前。


          BN算法過程:


          • 沿著通道計(jì)算每個(gè)batch的均值 
          • 沿著通道計(jì)算每個(gè)batch的方差 
          • 做歸一化
          • 加入縮放和平移變量  和 


          其中  是一個(gè)很小的正值,比如  。加入縮放和平移變量的原因是:保證每一次數(shù)據(jù)經(jīng)過歸一化后還保留原有學(xué)習(xí)來的特征,同時(shí)又能完成歸一化操作,加速訓(xùn)練。 這兩個(gè)參數(shù)是用來學(xué)習(xí)的參數(shù)。


          BN的作用:


          (1)允許較大的學(xué)習(xí)率;


          (2)減弱對(duì)初始化的強(qiáng)依賴性


          (3)保持隱藏層中數(shù)值的均值、方差不變,讓數(shù)值更穩(wěn)定,為后面網(wǎng)絡(luò)提供堅(jiān)實(shí)的基礎(chǔ);


          (4)有輕微的正則化作用(相當(dāng)于給隱藏層加入噪聲,類似Dropout)


          BN存在的問題:


          (1)每次是在一個(gè)batch上計(jì)算均值、方差,如果batch size太小,則計(jì)算的均值、方差不足以代表整個(gè)數(shù)據(jù)分布。


          (2)batch size太大:會(huì)超過內(nèi)存容量;需要跑更多的epoch,導(dǎo)致總訓(xùn)練時(shí)間變長;會(huì)直接固定梯度下降的方向,導(dǎo)致很難更新。


          二、 Layer Normalization, LN


          論文鏈接https://arxiv.org/pdf/1607.06450v1.pdf


          針對(duì)BN不適用于深度不固定的網(wǎng)絡(luò)(sequence長度不一致,如RNN),LN對(duì)深度網(wǎng)絡(luò)的某一層的所有神經(jīng)元的輸入按以下公式進(jìn)行normalization操作。


          LN中同層神經(jīng)元的輸入擁有相同的均值和方差,不同的輸入樣本有不同的均值和方差。


          對(duì)于特征圖  ,LN 對(duì)每個(gè)樣本的 C、H、W 維度上的數(shù)據(jù)求均值和標(biāo)準(zhǔn)差,保留 N 維度。其均值和標(biāo)準(zhǔn)差公式為:


          Layer Normalization (LN) 的一個(gè)優(yōu)勢是不需要批訓(xùn)練,在單條數(shù)據(jù)內(nèi)部就能歸一化。LN不依賴于batch size和輸入sequence的長度,因此可以用于batch size為1和RNN中。LN用于RNN效果比較明顯,但是在CNN上,效果不如BN。


          三、  Instance Normalization, IN


          論文鏈接https://arxiv.org/pdf/1607.08022.pdf


          IN針對(duì)圖像像素做normalization,最初用于圖像的風(fēng)格化遷移。在圖像風(fēng)格化中,生成結(jié)果主要依賴于某個(gè)圖像實(shí)例,feature map 的各個(gè) channel 的均值和方差會(huì)影響到最終生成圖像的風(fēng)格。所以對(duì)整個(gè)batch歸一化不適合圖像風(fēng)格化中,因而對(duì)H、W做歸一化??梢约铀倌P褪諗?,并且保持每個(gè)圖像實(shí)例之間的獨(dú)立。


          對(duì)于,IN 對(duì)每個(gè)樣本的 H、W 維度的數(shù)據(jù)求均值和標(biāo)準(zhǔn)差,保留 N 、C 維度,也就是說,它只在 channel 內(nèi)部求均值和標(biāo)準(zhǔn)差,其公式如下:


          四、 Group Normalization, GN


          論文鏈接https://arxiv.org/pdf/1803.08494.pdf


          GN是為了解決BN對(duì)較小的mini-batch size效果差的問題。GN適用于占用顯存比較大的任務(wù),例如圖像分割。對(duì)這類任務(wù),可能 batch size 只能是個(gè)位數(shù),再大顯存就不夠用了。而當(dāng) batch size 是個(gè)位數(shù)時(shí),BN 的表現(xiàn)很差,因?yàn)闆]辦法通過幾個(gè)樣本的數(shù)據(jù)量,來近似總體的均值和標(biāo)準(zhǔn)差。GN 也是獨(dú)立于 batch 的,它是 LN 和 IN 的折中。


          GN的主要思想:在 channel 方向 group,然后每個(gè) group 內(nèi)做 Norm,計(jì)算  的均值和方差,這樣就與batch size無關(guān),不受其約束。

          具體方法:GN 計(jì)算均值和標(biāo)準(zhǔn)差時(shí),把每一個(gè)樣本 feature map 的 channel 分成 G 組,每組將有 C/G 個(gè) channel,然后將這些 channel 中的元素求均值和標(biāo)準(zhǔn)差。各組 channel 用其對(duì)應(yīng)的歸一化參數(shù)獨(dú)立地歸一化。


          偽代碼如下:


          代碼如下:




          總結(jié)


          我們將feature map shape 記為[N, C, H, W]。如果把特征圖比喻成一摞書,這摞書總共有 N 本,每本有 C 頁,每頁有 H 行,每行 有W 個(gè)字符。


          1. BN是在batch上,對(duì)N、H、W做歸一化,而保留通道 C 的維度。BN 相當(dāng)于把這些書按頁碼一一對(duì)應(yīng)地加起來,再除以每個(gè)頁碼下的字符總數(shù):N×H×W。


          2. LN在通道方向上,對(duì)C、H、W歸一化。LN 相當(dāng)于把每一本書的所有字加起來,再除以這本書的字符總數(shù):C×H×W。


          3. IN在圖像像素上,對(duì)H、W做歸一化。IN 相當(dāng)于把一頁書中所有字加起來,再除以該頁的總字?jǐn)?shù):H×W。


          4. GN將channel分組,然后再做歸一化。GN 相當(dāng)于把一本 C 頁的書平均分成 G 份,每份成為有 C/G 頁的小冊(cè)子,對(duì)每個(gè)小冊(cè)子做Norm。


          另外,還需要注意它們的映射參數(shù)的區(qū)別:對(duì)于 BN,IN,GN, 其都是維度等于通道數(shù) C 的向量。而對(duì)于 LN,其都是維度等于 normalized_shape 的矩陣。


          最后,BN 和 IN 可以設(shè)置參數(shù):momentumtrack_running_stats來獲得在整體數(shù)據(jù)上更準(zhǔn)確的均值和標(biāo)準(zhǔn)差。LN 和 GN 只能計(jì)算當(dāng)前 batch 內(nèi)數(shù)據(jù)的真實(shí)均值和標(biāo)準(zhǔn)差。


          END



          雙一流大學(xué)研究生團(tuán)隊(duì)創(chuàng)建,專注于目標(biāo)檢測與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

          整理不易,點(diǎn)贊三連↓

          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  天天操天天综合 | 欧美黑人一级A片免费看 | 日本东京热一区二区 | 农村少妇久久久久久久 | 免费最婬荡的毛片A |