深度學習筆記(2):1.9 標準化輸入 | 1.10 梯度消失與爆炸

1.9   標準化輸入

在數據輸入之前,我們先對數據作一個標準化處理,如下圖所示:

什麼是標準化處理呢?對於多維變量,我們希望通過標準化處理能得到變量的每一個特徵都滿足均值爲0,方差爲1。

假設我們有這樣一個例子,每個樣本有兩個特徵(是二維的),方便可視化,如上圖最左側所示,x1的取值跨度明顯大於x2的取值跨度(x1方差大於x2方差),首先我們對數據進行中心化處理,即樣本的每個特徵減去其對應均值。

作中心化處理之後,樣本取值由上圖最左側變爲上圖中間所示,可以看到,這時兩個特徵的均值都變爲0,但方差還未處理。對於已經中心化的數據,我們再除以其對應方差就可以得到標準化的數據,即滿足每個分量均值爲0,方差爲1的數據。

在實際問題中使用標準化處理數據,這裏有一個小tip,即使用訓練集計算得到的均值和方差去處理測試集,而不是在訓練集和測試集上分別預估均值和方差,因爲我們希望訓練集和測試集具有相同的分佈。

瞭解了怎樣對數據進行標準化處理,那麼爲什麼要對數據進行標準化處理呢?

在未對數據進行標準化處理之前,若x1和x2的取值範圍差距較大,比如上圖中的假設,x1取值範圍在1到1000之間,而x2的取值範圍在0到1之間。這種情況下,變量對應的係數w1和w2差距也會很大。如上圖中左上圖所示,目標函數J(w,b)窄長,在使用梯度下降法進行計算時,要求步長很小,如上圖中左下圖所示。但進行標準化處理之後,目標函數J(w,b)就變爲右上圖所示,這時使用梯度下降法計算時,如右下圖所示,輪廓變爲圓形,這時可以使用較大步長,提高計算速率,因爲我們的方向是對的。

1.10   梯度消失與爆炸

爲了便於大家更好的理解梯度消失與爆炸,這裏我們介紹一種極端情況。

假設我們的激活函數爲g(z)=z,而常數項b爲0(經過標準化處理)。顯然,在這種假設下,我們可以將yhat寫成圖中的形式,注意最後一個W[L]是向量,而不再是一個矩陣。所以,這裏我們暫時不考慮W[L],而考慮W[1]到W[L-1]的矩陣形式。

假設W的矩陣形式爲對角矩陣,且對角元素均爲1.5,即大於單位陣,那麼會有怎樣的情況呢?假設X1和X2取值均爲1,帶入yhat式子,我們會得到第一層的神經元取值均爲1.5,而第二層的神經元取值均爲1.5^2,以此類推,第L層的神經元取值均爲1.5^L,如果層數很多,可想而知這個值的大小,這種情況我們稱之爲梯度爆炸。

類似於梯度爆炸,梯度消失產生是因爲初始權重我們設爲小於單位陣的情況,比如對角元素均是0.5,那麼第L層的神經元取值就變爲0.5^L,如果層數很多,可想而知這個值會多小,這種情況我們稱之爲梯度消失。

梯度爆炸和消失會加大神經網路訓練難度。

那麼爲了避免梯度爆炸和梯度消失,我們初始權重應該怎樣設置呢?且聽下回分解。

 

版權聲明:尊重博主原創文章,轉載請註明出處https://blog.csdn.net/kkkkkiko/article/details/81184836

 

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