Batch Normalization論文翻譯

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

五次面試有三次會問到BN層,這個點一定要從前世今生都喫透啊!

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

Abstract

通過要求較低的學習率和仔細的參數初始化減慢了訓練,並且使具有飽和非線性的模型訓練起來非常困難。
我們將這種現象稱爲內部協變量轉移(internal covariate shift),並通過標準化層輸入來解決這個問題。
我們的方法力圖使標準化成爲模型架構的一部分,併爲每個訓練小批量數據執行標準化。批標準化使我們能夠使用更高的學習率,並且不用太注意初始化。它也作爲一個正則化項,在某些情況下不需要Dropout。將批量標準化應用到最先進的圖像分類模型上,批標準化在取得相同的精度的情況下,減少了14倍的訓練步驟,並以顯著的差距擊敗了原始模型。

1 引言

SGD很有效。且有2013年基於動量, 2011年Adagrad等改進。
在這裏插入圖片描述
SGD優化參數θ來最小化loss
Xi是訓練集,使用m個batch的小批量來更新參數,而不是一次一個樣本。

  1. 小批量數據的梯度損失是訓練集上的估計,其質量隨批量增加而改善
  2. 提供了計算的並行性,計算m個比單個計算m次要高效
    在這裏插入圖片描述
    雖然隨機梯度是簡單有效的,但它需要仔細調整模型的超參數,特別是優化中使用的學習速率以及模型參數的初始值。
    訓練的複雜性在於每層的輸入受到前面所有層的參數的影響——因此當網絡變得更深時,網絡參數的微小變化就會被放大。

層輸入的分佈變化是一個問題,因爲這些層需要不斷適應新的分佈。當學習系統的輸入分佈發生變化時,據說會經歷協變量轉移( covariate shift)(Shimodaira,2000)。
這通常是通過域適應(Jiang,2008)來處理的。然而,協變量漂移的概念可以擴展到整個學習系統之外,應用到學習系統的一部分,例如子網絡或一層。
考慮到:
在這裏插入圖片描述
是任意變換,學習θ1 ,θ2來最小化損失,
學習θ2可以看做x=F1(u,Θ1)x=F_1(u,\Theta_1)送入到子網絡=F2(x,Θ2)\ell = F_2(x, \Theta_2)

例如,梯度下降步驟Θ2Θ2αmi=1mF2(xi,Θ2)Θ2\Theta_2\leftarrow \Theta_2 - \frac {\alpha} {m} \sum_{i=1}^m \frac {\partial F_2(x_i,\Theta_2)} {\partial \Theta_2}
(對於批大小mm和學習率α\alpha)與輸入爲xx的單獨網絡F2F_2完全等價。因此,輸入分佈特性使訓練更有效——例如訓練數據和測試數據之間有相同的分佈——也適用於訓練子網絡。因此xx的分佈在時間上保持固定是有利的。然後,Θ2\Theta_2不必重新調整來補償xx分佈的變化。

子網絡輸入的固定分佈對於子網絡外的層也有積極的影響。考慮一個激活函數爲g(x)=11+exp(x)g(x) = \frac{1}{1+\exp(-x)}的層,uu是層輸入,權重矩陣WW和偏置向量bb是要學習的層參數,g(x)=11+exp(x)g(x) = \frac{1}{1+\exp(-x)}。隨着x|x|的增加,g(x)g'(x)趨向於0。這意味着對於x=Wu+bx=Wu+b的所有維度,除了那些具有小的絕對值之外,流向uu的梯度將會消失,模型將緩慢的進行訓練。然而,由於xxW,bW,b和下面所有層的參數的影響,訓練期間那些參數的改變可能會將xx的許多維度移動到非線性的飽和狀態並減慢收斂。這個影響隨着網絡深度的增加而放大。在實踐中,飽和問題和由此產生的梯度消失通常通過使用修正線性單元(Nair & Hinton, 2010) ReLU(x)=max(x,0)ReLU(x)=\max(x,0),仔細的初始化(Bengio & Glorot, 2010; Saxe et al., 2013)和小的學習率來解決。然而,如果我們能保證非線性輸入的分佈在網絡訓練時保持更穩定,那麼優化器將不太可能陷入飽和狀態,訓練將加速。

小結:
改變梯度消失方法: 1 更仔細的初始化 2 更小的學習率 3 BN層

我們把訓練過程中深度網絡內部結點的分佈變化稱爲內部協變量轉移。消除它可以保證更快的訓練。我們提出了一種新的機制,我們稱爲爲批標準化(Batch Normalization),它是減少內部協變量轉移的一個步驟,這樣做可以顯著加速深度神經網絡的訓練。它通過標準化步驟來實現,標準化步驟修正了層輸入的均值和方差。批標準化減少了梯度對參數或它們的初始值尺度上的依賴,對通過網絡的梯度流動有有益的影響。這允許我們使用更高的學習率而沒有發散的風險。此外,批標準化使模型正則化並減少了對Dropout(Srivastava et al., 2014)的需求。最後,批標準化通過阻止網絡陷入飽和模式讓使用飽和非線性成爲可能。

小節:BN允許更高的學習率,減少了對Dropout的需求,阻止了網絡陷入飽和模式

2. 減少內部協變量轉變(Internal Covariate Shift)

通過白化每一層的輸入,我們將採取措施實現輸入的固定分佈,消除內部協變量轉移的不良影響。(即輸入線性變換爲具有零均值和單位方差,並去相關)
我們考慮在每個訓練步驟或在某些間隔來白化激活值,通過直接修改網絡或根據網絡激活值來更改優化方法的參數
例如,考慮一個層,其輸入uu加上學習到的偏置bb,通過減去在訓練集上計算的激活值的均值對結果進行歸一化:
x^=xE[x]\hat x=x - E[x]x=u+bx = u+b, X=x1NX={x_{1\ldots N}}是訓練集上xx值的集合,E[x]=1Ni=1NxiE[x] = \frac{1}{N}\sum_{i=1}^N x_i
如果梯度下降步驟忽略了E[x]E[x]bb的依賴,那它將更新bb+Δbb\leftarrow b+\Delta b,其中Δb/x^\Delta b\propto -\partial{\ell}/\partial{\hat x}。然後u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]u+(b+\Delta b) -E[u+(b+\Delta b)] = u+b-E[u+b]。因此,結合bb的更新和接下來標準化中的改變會導致層的輸出沒有變化,從而導致損失沒有變化。
隨着訓練的繼續,bb將無限增長而損失保持不變
如果標準化不僅中心化而且縮放了激活值,問題會變得更糟糕。我們在最初的實驗中已經觀察到了這一點, 當標準化參數在梯度下降步驟之外計算時,模型會爆炸。

上述方法的問題是梯度下降優化沒有考慮到標準化中發生的事實。爲了解決這個問題,我們希望確保對於任何參數值,網絡總是產生具有所需分佈的激活值。這樣做將允許關於模型參數損失的梯度來解釋標準化,以及它對模型參數Θ\Theta的依賴。設xx爲層的輸入,將其看作向量。標準化可以寫爲變換
1
它不僅依賴於給定的訓練樣本xx而且依賴於所有樣本——它們中的每一個都依賴於Θ\Theta,如果xx是由另一層生成的。
對於反向傳播,我們將需要計算雅可比行列式
在這裏插入圖片描述
忽略後一項會導致上面描述的爆炸。在這個框架中,白化層輸入是昂貴的,因爲它要求計算協方差矩陣在這裏插入圖片描述
和它的平方根倒數,從而生成白化的激活
Cov[x]1/2(xE[x])Cov[x]{-1/2}(x-E[x])和這些變換進行反向傳播的偏導數。這促使我們尋求一種替代方案,以可微分的方式執行輸入標準化,並且在每次參數更新後不需要對整個訓練集進行分析。

3. Normalization via Mini-Batch Statistics

由於每一層輸入的整個白化是代價昂貴的並且不是到處可微分的,因此我們做了兩個必要的簡化。
首先是我們將單獨標準化每個標量特徵,從而代替在層輸入輸出對特徵進行共同白化,使其具有零均值和單位方差。
對於具有dd維輸入x=(x(1)x(d))x = (x^{(1)}\ldots x^{(d)})的層,我們將標準化每一維x^(k)=x(k)E[x(k)]Var[x(k)]\hat x^{(k)} = \frac{x^{(k)} - E[x^{(k)}]} {\sqrt {Var[x^{(k)}]}}其中期望和方差在整個訓練數據集上計算。如(LeCun et al., 1998b)中所示,這種標準化加速了收斂,即使特徵沒有去相關

注意簡單標準化層的每一個輸入可能會改變層可以表示什麼。例如,標準化sigmoid的輸入會將它們約束到非線性的線性狀態。爲了解決這個問題,我們要確保插入到網絡中的變換可以表示恆等變換。爲了實現這個,對於每一個激活值x(k)x{(k)},我們引入成對的參數γ(k)β(k)\gamma{(k)},\beta{(k)},它們會歸一化和移動標準化值:y(k)=γ(k)x^(k)+β(k).y{(k)} = \gamma^{(k)}\hat x^{(k)} + \beta{(k)}.這些參數與原始的模型參數一起學習,並恢復網絡的表示能力。實際上,通過設置γ(k)=Var[x(k)]\gamma{(k)} = \sqrt{Var[x{(k)}]}β(k)=E[x(k)]\beta{(k)} = E[x^{(k)}],我們可以重新獲得原始的激活值,如果這是要做的最優的事。

每個訓練步驟的批處理設置是基於整個訓練集的,我們將使用整個訓練集來標準化激活值。然而,當使用隨機優化時,這是不切實際的。
因此,我們做了第二個簡化:由於我們在隨機梯度訓練中使用小批量,每個小批量產生每次激活平均值和方差的估計。這樣,用於標準化的統計信息可以完全參與梯度反向傳播。 注意,通過計算每一維的方差而不是聯合協方差,可以實現小批量的使用 ;在聯合情況下,將需要正則化,因爲小批量大小可能小於白化的激活值的數量,從而導致單個協方差矩陣。

1
考慮一個大小爲mm的小批量數據BB。由於標準化被單獨地應用於每一個激活,所以讓我們集中在一個特定的激活x(k)x^{(k)},爲了清晰忽略kk。在小批量數據裏我們有這個激活的mm個值,B={x1m}.B=\lbrace x_{1\ldots m} \rbrace.設標準化值爲x^1m\hat x_{1\ldots m},它們的線性變換爲y1my_{1\ldots m}。我們把變換BNγ,β:x1my1mBN_{\gamma,\beta}: x_{1\ldots m}\rightarrow y_{1\ldots m}看作批標準化變換。我們在算法1中提出了BN變換。在算法中,爲了數值穩定,ϵ\epsilon是一個加到小批量數據方差上的常量。

BN變換可以添加到網絡上來操縱任何激活。在公式y=BNγ,β(x)y = BN_{\gamma,\beta}(x)中,我們指出參數γ\gammaβ\beta需要進行學習,但應該注意到在每一個訓練樣本中BN變換不單獨處理激活。相反,BNγ,β(x)BN_{\gamma,\beta}(x)取決於訓練樣本和小批量數據中的其它樣本。縮放和移動的值yy傳遞到其它的網絡層。標準化的激活值x^\hat x在我們的變換內部,但它們的存在至關重要。只要每個小批量的元素從相同的分佈中進行採樣,如果我們忽略ϵ\epsilon,那麼任何x^\hat x值的分佈都具有期望爲00,方差爲11。這可以通過觀察i=1mx^i=0\sum_{i=1}^m \hat x_i = 01mi=1mx^i2=1\frac {1} {m} \sum_{i=1}^m \hat x_i^2 = 1看到,並取得預期。
每一個標準化的激活值x^(k)\hat x{(k)}可以看作由線性變換y(k)=γ(k)x^(k)+β(k)y{(k)}=\gamma^{(k)}\hat x{(k)}+\beta{(k)}組成的子網絡的輸入,接下來是原始網絡的其它處理。所有的這些子網絡輸入都有固定的均值和方差,儘管這些標準化的x^(k)\hat x^{(k)}的聯合分佈可能在訓練過程中改變,但我們預計標準化輸入的引入會加速子網絡的訓練,從而加速整個網絡的訓練。

在訓練過程中我們需要通過這個變換反向傳播損失\ell的梯度,以及計算關於BN變換參數的梯度。我們使用的鏈式法則如下(簡化之前):

在這裏插入圖片描述
因此,BN變換是將標準化激活引入到網絡中的可微變換。這確保了在模型訓練時,層可以繼續學習輸入分佈,表現出更少的內部協變量轉移,從而加快訓練。
此外,應用於這些標準化的激活上的學習到的仿射變換允許BN變換表示恆等變換並保留網絡的能力.

3.1. Training and Inference with Batch-Normalized Networks

在這裏插入圖片描述

3.1 批標準化網絡的訓練和推斷

爲了批標準化一個網絡,根據算法1,我們指定一個激活的子集,然後在每一個激活中插入BN變換。任何以前接收xx作爲輸入的層現在接收BN(x)BN(x)作爲輸入。採用批標準化的模型可以使用批梯度下降,或者用小批量數據大小爲m>1m>1的隨機梯度下降,或使用它的任何變種例如Adagrad (Duchi et al., 2011)進行訓練。依賴小批量數據的激活值的標準化可以有效地訓練,但在推斷過程中是不必要的也是不需要的;我們希望輸出只確定性地取決於輸入。
爲此,一旦網絡訓練完成,我們使用總體統計來進行標準化x^=xE[x]Var[x]+ϵ\hat x=\frac {x - E[x]} {\sqrt{Var[x] + \epsilon}},而不是小批量數據統計。跟訓練過程中一樣,如果忽略ϵ\epsilon,這些標準化的激活具有相同的均值0和方差1。
我們使用無偏方差估計,
在這裏插入圖片描述
其中期望是在大小爲mm的小批量訓練數據上得到的,
σB2\sigma_B^2在這裏插入圖片描述
是其樣本方差。使用這些值移動平均,我們在訓練過程中可以跟蹤模型的準確性。由於均值和方差在推斷時是固定的,因此標準化是應用到每一個激活上的簡單線性變換。它可以進一步由縮放γ\gamma和轉移β\beta組成,以產生代替BN(x)BN(x)的單線性變換。算法2總結了訓練批標準化網絡的過程。

3.2. 批標準化卷積網絡Batch-Normalized Convolutional Networks

批標準化可以應用於網絡的任何激活集合。這裏我們專注於仿射變換和元素級非線性組成的變換:z=g(Wu+b)z = g(Wu+b) 其中WWbb是模型學習的參數,g()g(\cdot)是非線性例如sigmoid或ReLU。這個公式涵蓋了全連接層和卷積層。我們在非線性之前通過標準化x=Wu+bx=Wu+b加入BN變換。 我們也可以標準化層輸入uu,但由於uu可能是另一個非線性的輸出,它的分佈形狀可能在訓練過程中改變,並且限制其第一矩或第二矩不能去除協變量轉移。相比之下,Wu+bWu+b更可能具有對稱,非稀疏分佈,即“更高斯”(2000);對其標準化可能產生具有穩定分佈的激活。

注意,由於我們對Wu+bWu+b進行標準化,偏置bb可以忽略,因爲它的效應將會被後面的中心化取消(偏置的作用會歸入到算法1的β\beta)。因此,z=g(Wu+b)z = g(Wu+b)z=g(BN(Wu))z = g(BN(Wu))替代,其中BN變換獨立地應用到x=Wux=Wu的每一維,每一維具有單獨的成對學習參數γ(k)\gamma{(k)}β(k)\beta{(k)}

另外,對於卷積層我們希望標準化遵循卷積特性——爲的是同一特徵映射的不同元素,在不同的位置,以相同的方式進行標準化。爲了實現這個,我們在所有位置聯合標準化了小批量數據中的所有激活。在算法1中,我們讓BB是跨越小批量數據的所有元素和空間位置的特徵圖中所有值的集合——因此對於大小爲mm的小批量數據和大小爲p×qp\times q的特徵映射,我們使用有效的大小爲m=B=mp,qm'=|B| = m\cdot p, q的小批量數據。我們每個特徵映射學習一對參數γ(k)\gamma{(k)}β(k)\beta{(k)},而不是每個激活。算法2進行類似的修改,以便推斷期間BN變換對在給定的特徵映射上的每一個激活應用同樣的線性變換。

3.3. 批標準化可以提高學習率

在傳統的深度網絡中,學習率過高可能會導致梯度爆炸或梯度消失,以及陷入差的局部最小值。批標準化有助於解決這些問題。通過標準化整個網絡的激活值,在數據通過深度網絡傳播時,它可以防止層參數的微小變化被放大。例如,這使sigmoid非線性更容易保持在它們的非飽和狀態,這對訓練深度sigmoid網絡至關重要,但在傳統上很難實現。

批標準化也使訓練對參數的縮放更有彈性。通常,大的學習率可能會增加層參數的縮放,這會在反向傳播中放大梯度並導致模型爆炸。然而,通過批標準化,通過層的反向傳播不受其參數縮放的影響。實際上,對於標量aaBN(Wu)=BN((aW)u)BN(Wu) = BN((aW)u)因此BN((aW)u)u=BN(Wu)u\frac {\partial BN((aW)u)} {\partial u}= \frac {\partial BN(Wu)} {\partial u},因此標量不影響層的雅可比行列式,從而不影響梯度傳播。此外,BN((aW)u)(aW)=1aBN(Wu)W\frac {\partial BN((aW)u)} {\partial (aW)}=\frac {1} {a} \cdot \frac {\partial BN(Wu)} {\partial W},因此更大的權重會導致更小的梯度,並且批標準化會穩定參數的增長。

實驗

mnist實驗對比圖,我們在網絡的每一個隱藏層後添加批標準化
在這裏插入圖片描述
圖1(a)顯示了隨着訓練進行,兩個網絡在提供的測試數據上正確預測的分數。批標準化網絡具有更高的測試準確率。爲了調查原因,我們在訓練過程中研究了原始網絡NN和批標準化網絡NBNtrN_{BN}^{tr}(Alg. 2)中的sigmoid輸入。在圖1(b,c)中,我們顯示,對於來自每個網絡的最後一個隱藏層的一個典型的激活,其分佈如何演變。原始網絡中的分佈隨着時間的推移而發生顯著變化,無論是平均值還是方差,都會使後面的層的訓練複雜化。相比之下,隨着訓練的進行,批標準化網絡中的分佈更加穩定,這有助於訓練。

4.2.1加速BN網絡

提高學習率。在批標準化模型中,我們已經能夠從高學習率中實現訓練加速,沒有不良的副作用
更徹底地攪亂訓練樣本。我們啓用了分佈內部攪亂訓練數據,這樣可以防止同一個例子一起出現在小批量數據中。這導致驗證準確率提高了約1%,這與批標準化作爲正則化項的觀點是一致的:它每次被看到時都會影響一個樣本,在我們的方法中內在的隨機化應該是最有益的。

減少L2權重正則化。雖然在Inception中模型參數的L2損失會控制過擬合,但在修改的BN-Inception中,損失的權重減少了5倍。我們發現這提高了在提供的驗證數據上的準確性。

加速學習率衰減。在訓練Inception時,學習率呈指數衰減。因爲我們的網絡訓練速度比Inception更快,所以我們將學習速度降低加快6倍。

刪除局部響應歸一化。雖然Inception和其它網絡(Srivastava等人,2014)從中受益,但是我們發現使用批標準化它是不必要的。

減少光照扭曲。因爲批標準化網絡訓練更快,並且觀察每個訓練樣本更少的次數,所以通過更少地扭曲它們,我們讓訓練器關注更多的“真實”圖像。
單網絡分類:
在這裏插入圖片描述
在這裏插入圖片描述
通過僅使用批標準化(BN-Baseline),我們在不到Inception一半的訓練步驟數量內將準確度與其相匹配。通過應用4.2.1小節中的修改,我們顯著提高了網絡的訓練速度。BN-x5需要比Inception少14倍的步驟就達到了72.2%的準確率。有趣的是,進一步提高學習率(BN-x30)使得該模型最初訓練有點慢,但可以使其達到更高的最終準確率。這種現象是違反直覺的,應進一步調查。在61066 \cdot 10^6步驟之後,BN-x30達到74.8%的準確率,即比Inception達到72.2%的準確率所需的步驟減少了5倍。

5. 結論

我們提出了一個新的機制,大大加快了深度網絡的訓練。它是基於前提協變量轉移的,已知其會使機器學習系統的訓練複雜化,也適用於子網絡和層,並且從網絡的內部激活中去除它可能有助於訓練。我們提出的方法從其標準化激活中獲取其功能,並將這種標準化合併到網絡架構本身。這確保了標準化可以被用來訓練網絡的任何優化方法進行恰當的處理。爲了讓深度網絡訓練中常用的隨機優化方法可用,我們對每個小批量數據執行標準化,並通過標準化參數來反向傳播梯度。批標準化每個激活只增加了兩個額外的參數,這樣做可以保持網絡的表示能力。我們提出了一個用於構建,訓練和執行推斷的批標準化網絡算法。所得到的網絡可以用飽和非線性進行訓練,能更容忍增加的訓練率,並且通常不需要丟棄來進行正則化

僅僅將批標準化添加到了最新的圖像分類模型中便在訓練中取得了實質的加速。通過進一步提高學習率,刪除丟棄和應用批標準化所提供的其它修改,我們只用了少部分的訓練步驟就達到了以前的技術水平——然後在單網絡圖像分類中擊敗了最先進的技術。此外,通過組合多個使用批標準化訓練的模型,我們在ImageNet上的表現顯著優於最好的已知系統。

引用:
https://www.jianshu.com/p/2bc6dab16cfe

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章