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

          【關(guān)于 BatchNorm vs LayerNorm】那些你不知道的事

          共 3563字,需瀏覽 8分鐘

           ·

          2021-04-16 17:44


          作者:楊夕、芙蕖、李玲、陳海順、twilight、LeoLRH、JimmyDU、艾春輝、張永泰、金金金

          面筋地址:https://github.com/km1994/NLP-Interview-Notes

          個人筆記:https://github.com/km1994/nlp_paper_study

          一、動機(jī)篇

          1.1 獨立同分布(independent and identically distributed)與白化

          • 獨立同分布
            • 強(qiáng)相關(guān):Naive Bayes 模型就建立在特征彼此獨立的基礎(chǔ)之
            • 弱相關(guān):Logistic Regression 和 神經(jīng)網(wǎng)絡(luò) 則在非獨立的特征數(shù)據(jù)上依然可以訓(xùn)練出很好的模型
            • 獨立同分布的數(shù)據(jù)可以簡化常規(guī)機(jī)器學(xué)習(xí)模型的訓(xùn)練、提升機(jī)器學(xué)習(xí)模型的預(yù)測能力
            • 為什么?
            • 相關(guān)性:
          • 白化【數(shù)據(jù)預(yù)處理步驟】
            • 去除特征間的相關(guān)性 -> 獨立;
            • 使所有特征具有相同的均值和方差 -> 同分布
            • 作用:

          1.2 ( Internal Covariate Shift,ICS)

          • 動機(jī):深度神經(jīng)網(wǎng)絡(luò)涉及到很多層的疊加,而每一層的參數(shù)更新會導(dǎo)致上層的輸入數(shù)據(jù)分布發(fā)生變化,通過層層疊加,高層的輸入分布變化會非常劇烈,這就使得高層需要不斷去重新適應(yīng)底層的參數(shù)更新。為了訓(xùn)好模型,我們需要非常謹(jǐn)慎地去設(shè)定學(xué)習(xí)率、初始化權(quán)重、以及盡可能細(xì)致的參數(shù)更新策略。
          • 模型訓(xùn)練對于數(shù)據(jù)的一個假設(shè):“源空間(source domain)和目標(biāo)空間(target domain)的數(shù)據(jù)分布(distribution)是一致的”。如果不一致,那么就出現(xiàn)了新的機(jī)器學(xué)習(xí)問題,如 transfer learning / domain adaptation 等。而 covariate shift 就是分布不一致假設(shè)之下的一個分支問題,它是指源空間和目標(biāo)空間的條件概率是一致的,但是其邊緣概率不同;
          • ICS 【每個神經(jīng)元的輸入數(shù)據(jù)不再是“獨立同分布”】導(dǎo)致的后果:
            • 上層參數(shù)需要不斷適應(yīng)新的輸入數(shù)據(jù)分布,降低學(xué)習(xí)速度;
            • 下層輸入的變化可能趨向于變大或者變小,導(dǎo)致上層落入飽和區(qū),使得學(xué)習(xí)過早停止;
            • 每層的更新都會影響到其它層,因此每層的參數(shù)更新策略需要盡可能的謹(jǐn)慎;

          1.3 ICS問題帶來的后果是什么?

          1. 上層參數(shù)需要不斷適應(yīng)新的輸入數(shù)據(jù)分布,導(dǎo)致學(xué)習(xí)速度下降;
          2. 下層輸入的變化可能趨于變大或變小,導(dǎo)致上層落入飽和區(qū),從而學(xué)習(xí)過早停止;
          3. 每層的更新都會影響到其他層,因此每層參數(shù)更新策略需要盡可能謹(jǐn)慎;

          二、Normalization 篇

          2.1 Normalization 的通用框架與基本思想

          • 前言

          假設(shè) 神經(jīng)元的輸入:

          輸出的結(jié)果:

          • ICS 問題:X 的 分布可能相差很大

          • 解決方法:

            • 方法:對每一層的數(shù)據(jù)做白化操作
            • 存在問題:成本高,因為要保證 白化操作是可微的
          • 基本思想:在將 x 送給神經(jīng)元之前,先對其做平移和伸縮變換, 將 x 的分布規(guī)范化成在固定區(qū)間范圍的標(biāo)準(zhǔn)分布;

          • 變換框架:

          參數(shù)介紹:
          μ:平移參數(shù)
          δ:縮放參數(shù)

          • 步驟:
          1. 對 x 進(jìn)行 shift 和 scale 變換

          得到的數(shù)據(jù)符合均值為 0、方差為 1 的標(biāo)準(zhǔn)分布

          1. b 是再平移參數(shù)(re-shift parameter), g 是再縮放參數(shù)(re-scale parameter),再進(jìn)一步變換為

          得到的數(shù)據(jù)符合均值為 b 、方差為 g2 的分布

          三、Batch Normalization 篇

          3.1 Batch Normalization(縱向規(guī)范化)是什么?

          • 方式:針對單個神經(jīng)元進(jìn)行,利用網(wǎng)絡(luò)訓(xùn)練時一個 mini-batch 的數(shù)據(jù)來計算該神經(jīng)元 xi 的均值和方差,因而稱為 Batch Normalization。

          其中 M 是 mini-batch 的大小。

          3.2 Batch Normalization(縱向規(guī)范化)存在什么問題?

          • BN 獨立地規(guī)范化每一個輸入維度 xi ,但規(guī)范化的參數(shù)是一個 mini-batch 的一階統(tǒng)計量和二階統(tǒng)計量。這就要求 每一個 mini-batch 的統(tǒng)計量是整體統(tǒng)計量的近似估計,或者說每一個 mini-batch 彼此之間,以及和整體數(shù)據(jù),都應(yīng)該是近似同分布的。分布差距較小的 mini-batch 可以看做是為規(guī)范化操作和模型訓(xùn)練引入了噪聲,可以增加模型的魯棒性;但如果每個 mini-batch的原始分布差別很大,那么不同 mini-batch 的數(shù)據(jù)將會進(jìn)行不一樣的數(shù)據(jù)變換,這就增加了模型訓(xùn)練的難度。
          • 由于 BN 需要在運行過程中統(tǒng)計每個 mini-batch 的一階統(tǒng)計量和二階統(tǒng)計量,因此不適用于 動態(tài)的網(wǎng)絡(luò)結(jié)構(gòu) 和 RNN 網(wǎng)絡(luò)

          3.3 Batch Normalization(縱向規(guī)范化)適用的場景是什么?

          每個 mini-batch 比較大,數(shù)據(jù)分布比較接近。在進(jìn)行訓(xùn)練之前,要做好充分的 shuffle. 否則效果會差很多。

          3.4 BatchNorm 存在什么問題?

          1. BN特別依賴Batch Size;當(dāng)Batch size很小的時候,BN的效果就非常不理想了。在很多情況下,Batch size大不了,因為你GPU的顯存不夠。所以,通常會有其他比較麻煩的手段去解決這個問題,比如MegDet的CGBN等;
          2. BN對處理序列化數(shù)據(jù)的網(wǎng)絡(luò)比如RNN是不太適用的;So,BN的應(yīng)用領(lǐng)域減少了一半;
          3. BN只在訓(xùn)練的時候用,inference的時候不會用到,因為inference的輸入不是批量輸入。

          四、Layer Normalization(橫向規(guī)范化) 篇

          4.1 Layer Normalization(橫向規(guī)范化)是什么?

          • 方式:綜合考慮一層所有維度的輸入,計算該層的平均輸入值和輸入方差,然后用同一個規(guī)范化操作來轉(zhuǎn)換各個維度的輸入。

          其中 i 枚舉了該層所有的輸入神經(jīng)元。對應(yīng)到標(biāo)準(zhǔn)公式中,四大參數(shù) μ, δ, g, b 均為標(biāo)量(BN中是向量),所有輸入共享一個規(guī)范化變換。

          4.2 Layer Normalization(橫向規(guī)范化)有什么用?

          LN 針對單個訓(xùn)練樣本進(jìn)行,不依賴于其他數(shù)據(jù),因此可以避免 BN 中受 mini-batch 數(shù)據(jù)分布影響的問題,可以用于 小mini-batch場景、動態(tài)網(wǎng)絡(luò)場景和 RNN,特別是自然語言處理領(lǐng)域。此外,LN 不需要保存 mini-batch 的均值和方差,節(jié)省了額外的存儲空間。

          五、BN vs LN 篇

          BN 的轉(zhuǎn)換是針對單個神經(jīng)元可訓(xùn)練的——不同神經(jīng)元的輸入經(jīng)過再平移和再縮放后分布在不同的區(qū)間,而 LN 對于一整層的神經(jīng)元訓(xùn)練得到同一個轉(zhuǎn)換——所有的輸入都在同一個區(qū)間范圍內(nèi)。如果不同輸入特征不屬于相似的類別(比如顏色和大?。敲?LN 的處理可能會降低模型的表達(dá)能力。

          六、主流 Normalization 方法為什么有效?

          1. Normalization 的權(quán)重伸縮不變性
          • 介紹:權(quán)重 W 按照常量 λ 進(jìn)行伸縮時,得到的規(guī)范化后的值保持不變

          其中:W' = λW

          • 原因:當(dāng)權(quán)重 W 伸縮時,對應(yīng)的均值和標(biāo)準(zhǔn)差均等比例伸縮,分子分母相抵。
          • 優(yōu)點:
            • 權(quán)重伸縮不變性可以有效地提高反向傳播的效率

          注:因此,權(quán)重的伸縮變化不會影響反向梯度的 Jacobian 矩陣,因此也就對反向傳播沒有影響,避免了反向傳播時因為權(quán)重過大或過小導(dǎo)致的梯度消失或梯度爆炸問題,從而加速了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。

          • 權(quán)重伸縮不變性還具有參數(shù)正則化的效果,可以使用更高的學(xué)習(xí)率。

          因此,下層的權(quán)重值越大,其梯度就越小。這樣,參數(shù)的變化就越穩(wěn)定,相當(dāng)于實現(xiàn)了參數(shù)正則化的效果,避免參數(shù)的大幅震蕩,提高網(wǎng)絡(luò)的泛化性能。

          1. Normalization 的數(shù)據(jù)伸縮不變性
          • 介紹:當(dāng)數(shù)據(jù) x 按照常量 λ 進(jìn)行伸縮時,得到的規(guī)范化后的值保持不變

          注:x'= λx

          • 優(yōu)點:
            • 數(shù)據(jù)伸縮不變性可以有效地減少梯度彌散,簡化對學(xué)習(xí)率的選擇

          對于某一層神經(jīng)元 :

          可得:

          每一層神經(jīng)元的輸出依賴于底下各層的計算結(jié)果。如果沒有正則化,當(dāng)下層輸入發(fā)生伸縮變化時,經(jīng)過層層傳遞,可能會導(dǎo)致數(shù)據(jù)發(fā)生劇烈的膨脹或者彌散,從而也導(dǎo)致了反向計算時的梯度爆炸或梯度彌散。

          加入 Normalization 之后,不論底層的數(shù)據(jù)如何變化,對于某一層神經(jīng)元 而言,其輸入 xi 永遠(yuǎn)保持標(biāo)準(zhǔn)的分布,這就使得高層的訓(xùn)練更加簡單。從梯度的計算公式來看:

          數(shù)據(jù)的伸縮變化也不會影響到對該層的權(quán)重參數(shù)更新,使得訓(xùn)練過程更加魯棒,簡化了對學(xué)習(xí)率的選擇。



          瀏覽 313
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(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>
                  久久久理论| 亚洲AV无码国产成人久久 | 久久久欧美精品sm网站 | 蜜桃视频在线91 | 免费在线观看视频黄 |