第九節,改善深層神經網絡:超參數調試、正則化以優化(下)
阿新 • • 發佈:2018-03-30
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都進行標準化(正態化)
- 允許使用較大的學習率。
- 不必太關心初始化的問題。
- 同時一些例子中不需要使用Dropout方法避免過擬合。
- 此方法在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 大小為
m
的B
- ,對應的變換操作為:
- 作者給出的批標準化的算法如下:
- 算法中的
ε
是一個常量,為了保證數值的穩定性
- 假設mini-batch 大小為
-
反向傳播求梯度:
- 因為:
- 所以:
- 因為:
- 所以:
- 因為:和
- 所以:
- 所以:
- 對於BN變換是可微分的,隨著網絡的訓練,網絡層可以持續學到輸入的分布。
BN
網絡的訓練和推斷
- 按照BN方法,輸入數據
x
會經過變化得到BN(x)
,然後可以通過隨機梯度下降進行訓練,標準化是在mini-batch上所以是非常高效的。 - 但是對於推斷我們希望輸出只取決於輸入,而對於輸入只有一個實例數據,無法得到
mini-batch
的其他實例,就無法求對應的均值和方差了。 - 可以通過從所有訓練實例中獲得的統計量來**代替**mini-batch中m個訓練實例獲得統計量均值和方差
- 我們對每個
mini-batch
做標準化,可以對記住每個mini-batch
的B,然後得到全局統計量 - (這裏方差采用的是無偏方差估計)
- 所以推斷采用
BN
的方式為:
- 作者給出的完整算法:
實驗
- 最後給出的實驗可以看出使用BN的方式訓練精準度很高而且很穩定。
第九節,改善深層神經網絡:超參數調試、正則化以優化(下)