1. 程式人生 > >第九節,改善深層神經網絡:超參數調試、正則化以優化(下)

第九節,改善深層神經網絡:超參數調試、正則化以優化(下)

nbsp dao 區別 行列式 增加 ngs out 來看 row

一 批標準化 (batch normalization)

部分內容來自:

Batch Normalization 批標準化

深度學習Deep Learning(05):Batch Normalization(BN)批標準化

參考論文:http://jmlr.org/proceedings/papers/v37/ioffe15.pdf

  • 2015年Google提出的Batch Normalization
  • 訓練深層的神經網絡很復雜,因為訓練時每一層輸入的分布在變化,導致訓練過程中的飽和,稱這種現象為:internal covariate shift。
  • 需要降低學習率Learning Rate和註意參數的初始化,論文中提出的方法是對於每一個小的訓練batch都進行標準化(正態化)
  1. 允許使用較大的學習率。
  2. 不必太關心初始化的問題。
  3. 同時一些例子中不需要使用Dropout方法避免過擬合。
  4. 此方法在ImageNet classification比賽中獲得4.82% top-5的測試錯誤率。

批標準化通俗來說就是對每一層神經網絡進行標準化 (normalize) 處理, 我們知道對輸入數據進行標準化能讓機器學習有效率地學習,如果把每一層都

看成這種接受輸入數據的模式。

我們先來看看下面的兩個動圖, 了解下在每層神經網絡有無 batch normalization 的區別。

其中PreAct表示加權輸出值z,BN PreAct表示經過批標準化之後的輸出a。Act表示激活函數輸出z,BN Act表示BN PreAct經過激活函數的輸出a。

第一幅圖片激活函數選擇的是ReLU,第二幅圖片選擇的激活函數是Sigmoid函數。

看第一幅圖,我們可以看到在L2層之後,PreAct,以及Act輸出基本都為0了,說明神經網絡已經不起任何作用了。而經過BN處理後,我們可以看到

神經網絡可以正常工作。詳細內容參考這裏。

技術分享圖片

技術分享圖片

BN算法

    • 如果輸入數據是白化的(whitened),網絡會更快的收斂

      • 白化目的是降低數據的冗余性和特征的相關性,例如通過線性變換使數據為0均值單位方差
    • 並非直接標準化每一層那麽簡單,如果不考慮歸一化的影響,可能會降低梯度下降的影響

    • 標準化與某個樣本和所有樣本都有關系
      • 解決上面的問題,我們希望對於任何參數值,都要滿足想要的分布;
      • 技術分享圖片
      • 對於反向傳播,需要計算:技術分享圖片技術分享圖片
      • 這樣做的計算代價是非常大的,因為需要計算x的協方差矩陣
      • 然後白化操作:技術分享圖片
    • 上面兩種都不行或是不好,進而得到了BN的方法
    • 既然白化每一層輸入代價非常大,我們可以進行簡化
    • 簡化1
      • 標準化特征的每一個維度而不是去標準化所有的特征,這樣就不用求協方差矩陣
      • 例如d維的輸入:技術分享圖片
      • 標準化操作:
        技術分享圖片
      • 需要註意的是標準化操作可能會降低數據的表達能力,例如我們之前提到的Sigmoid函數
        技術分享圖片
      • 標準化之後均值為0方差為1,數據就會落在近似線性的函數區域內,這樣激活函數的意義就不明顯
      • 所以對於每個 ,對應一對參數技術分享圖片 ,然後令:技術分享圖片
      • 從式子來看就是對標準化的數據進行縮放和平移,不至於使數據落在線性區域內,增加數據的表達能力(式子中如果:技術分享圖片技術分享圖片 ,就會使恢復到原來的值了)
      • 但是這裏還是使用的全部的數據集,但是如果使用隨機梯度下降,可以選取一個batch進行訓練
    • 簡化2

      • 第二種簡化就是使用mini-batch進行隨機梯度下降
      • 註意這裏使用mini-batch也是標準化每一個維度上的特征,而不是所有的特征一起,因為若果mini-batch中的數據量小於特征的維度時,會產生

奇異協方差矩陣, 對應的行列式的值為0,非滿秩

    • 假設mini-batch 大小為mB
    • 技術分享圖片,對應的變換操作為:技術分享圖片
    • 作者給出的批標準化的算法如下:
      技術分享圖片
    • 算法中的ε是一個常量,為了保證數值的穩定性
  • 反向傳播求梯度:

    • 因為:技術分享圖片
    • 所以:技術分享圖片
    • 因為:技術分享圖片
    • 所以:技術分享圖片
    • 技術分享圖片
    • 因為:技術分享圖片技術分享圖片
    • 所以:技術分享圖片
    • 所以:技術分享圖片
    • 技術分享圖片
  • 對於BN變換可微分的,隨著網絡的訓練,網絡層可以持續學到輸入的分布。

  BN網絡的訓練和推斷

  • 按照BN方法,輸入數據x會經過變化得到BN(x),然後可以通過隨機梯度下降進行訓練,標準化是在mini-batch上所以是非常高效的。
  • 但是對於推斷我們希望輸出只取決於輸入,而對於輸入只有一個實例數據,無法得到mini-batch的其他實例,就無法求對應的均值和方差了。
  • 可以通過從所有訓練實例中獲得的統計量來**代替**mini-batch中m個訓練實例獲得統計量均值和方差
  • 我們對每個mini-batch做標準化,可以對記住每個mini-batch的B,然後得到全局統計量
  • 技術分享圖片
  • 技術分享圖片(這裏方差采用的是無偏方差估計)
  • 所以推斷采用BN的方式為:
    • 技術分享圖片
  • 作者給出的完整算法:
    技術分享圖片

  實驗

    • 最後給出的實驗可以看出使用BN的方式訓練精準度很高而且很穩定
      技術分享圖片

第九節,改善深層神經網絡:超參數調試、正則化以優化(下)