訓練深度神經網絡很困難。讓它們在合理的時間內收斂可能很棘手。在本節中,我們將介紹 批量歸一化,這是一種流行且有效的技術,可以持續加速深度網絡的收斂 (Ioffe 和 Szegedy,2015 年)。連同殘差塊(稍后將在第 8.6 節中介紹),批量歸一化使從業者可以例行地訓練超過 100 層的網絡。批量歸一化的第二個(偶然的)好處在于其固有的正則化。
8.5.1. 訓練深度網絡
在處理數據時,我們經常在訓練前進行預處理。關于數據預處理的選擇通常會對最終結果產生巨大影響。回想一下我們將 MLP 應用于預測房價(第 5.7 節)。我們處理真實數據的第一步是將我們的輸入特征標準化為零均值 μ=0和單位方差 Σ=1across multiple observations ( Friedman, 1987 )。至少,人們經常重新縮放它,使對角線是統一的,即 Σii=1. 另一種策略是將向量重新調整為單位長度,每次觀察的均值可能為零。這可以很好地工作,例如,對于空間傳感器數據。這些預處理技術以及更多技術有助于很好地控制估計問題。參見例如Guyon等人的文章。( 2008 )審查特征選擇和提取技術。標準化向量還有一個很好的副作用,即限制作用于它的函數的函數復雜性。例如,支持向量機中著名的半徑邊界( Vapnik, 1995 )和感知器收斂定理( Novikoff, 1962 )依賴有界范數的輸入。
直覺上,這種標準化與我們的優化器配合得很好,因為它先驗地將參數放在相似的范圍內。因此,很自然地會問在 深度網絡中相應的規范化步驟是否可能沒有好處。雖然這并不是導致批量歸一化發明的原因 (Ioffe 和 Szegedy,2015 年) ,但它是在統一框架內理解它及其堂兄層歸一化(Ba等人,2016 年)的有用方法。
其次,對于典型的 MLP 或 CNN,在我們訓練時,中間層中的變量(例如,MLP 中的仿射變換輸出)可能采用幅度變化很大的值:沿著從輸入到輸出的層,跨同一層中的單元,隨著時間的推移,由于我們對模型參數的更新。批量歸一化的發明者非正式地假設,這種變量分布的漂移可能會阻礙網絡的收斂。憑直覺,我們可能會推測,如果一層的可變激活是另一層的 100 倍,這可能需要對學習率進行補償性調整。自適應求解器,例如 AdaGrad (Duchi等人,2011 年)、Adam (Kingma 和 Ba,2014 年))、Yogi ( Zaheer et al. , 2018 )或 Distributed Shampoo ( Anil et al. , 2020 )旨在從優化的角度解決這個問題,例如,通過添加二階方法的方面。另一種方法是通過自適應規范化來防止問題發生。
第三,更深層次的網絡很復雜,而且往往更容易過度擬合。這意味著正則化變得更加關鍵。一種常用的正則化技術是噪聲注入。這已經為人所知很長時間了,例如,關于輸入的噪聲注入( Bishop, 1995 )。它還構成了第 5.6 節中 dropout 的基礎 。事實證明,批歸一化帶來了所有三個好處:預處理、數值穩定性和正則化。
批歸一化應用于單個層,或者可選地應用于所有層:在每次訓練迭代中,我們首先通過減去它們的均值并除以它們的標準差來歸一化(批歸一化的)輸入,其中兩者都是基于統計數據估計的當前的小批量。接下來,我們應用比例系數和偏移量來恢復丟失的自由度。批歸一化正是由于這種 基于批統計的歸一化 而得名。
請注意,如果我們嘗試對大小為 1 的小批量應用批量歸一化,我們將無法學習任何東西。這是因為在減去均值后,每個隱藏單元的值為 0。正如您可能猜到的那樣,由于我們將整個部分用于批量歸一化,并且具有足夠大的小批量,因此該方法被證明是有效且穩定的。這里的一個要點是,當應用批量歸一化時,批量大小的選擇甚至比沒有批量歸一化更重要,或者至少需要適當的校準,因為我們可能會調整它。
表示為B一個小批量并讓 x∈B作為批量歸一化的輸入(BN). 在這種情況下,批量歸一化定義如下:
在(8.5.1)中,μ^B 是樣本均值和σ^B是 minibatch 的樣本標準差B. 應用標準化后,生成的小批量具有零均值和單位方差。單位方差的選擇(相對于其他一些幻數)是一個任意選擇。我們通過包含元素尺度參數來恢復這種自由度 γ 和轉移參數 β具有相同的形狀x. 兩者都是需要在模型訓練中學習的參數。
中間層的可變幅度在訓練期間不能發散,因為批量歸一化主動將它們居中并將它們重新縮放回給定的均值和大小(通過 μ^B和 σ^B). 實踐經驗證實,正如在討論特征重新縮放時所提到的,批量歸一化似乎允許更積極的學習率。我們計算μ^B和 σ^B(8.5.1)中 如下:
評論
查看更多