1. 程式人生 > >機器學習總結(二):梯度消失和梯度爆炸

機器學習總結(二):梯度消失和梯度爆炸

神經網路的訓練過程通常分為兩個階段:前向傳播反向傳播
前向傳播如下圖所示,原理比較簡單
前向傳播
上一層的神經元與本層的神經元有連線,那麼本層的神經元的啟用等於上一層神經元對應的權值進行加權和運算,最後通過一個非線性函式(啟用函式)如ReLu,sigmoid等函式,最後得到的結果就是本層神經元的輸出。逐層逐神經元通過該操作向前傳播,最終得到輸出層的結果。
反向傳播由最後一層開始,逐層向前傳播進行權值的調整,如下圖所示:
反向傳播
前向傳播得到的結果與實際的結果得到一個偏差,然後通過梯度下降法的思想,通過偏導數與殘差的乘積通過從最後一層逐層向前去改變每一層的權重。通過不斷的前向傳播和反向傳播不斷調整神經網路的權重,最終到達預設的迭代次數或者對樣本的學習已經到了比較好的程度後,就停止迭代,那麼一個神經網路就訓練好了。

那麼為什麼會出現梯度消失的現象呢?因為通常神經網路所用的啟用函式是sigmoid函式,這個函式有個特點,就是能將負無窮到正無窮的數對映到0和1之間,並且對這個函式求導的結果是f(x)=f(x)(1f(x))。因此兩個0到1之間的數相乘,得到的結果就會變得很小了。神經網路的反向傳播是逐層對函式偏導相乘,因此當神經網路層數非常深的時候,最後一層產生的偏差就因為乘了很多的小於1的數而越來越小,最終就會變為0,從而導致層數比較淺的權重沒有更新,這就是梯度消失

那麼什麼是梯度爆炸呢?梯度爆炸就是由於初始化權值過大,前面層會比後面層變化的更快,就會導致權值越來越大,梯度爆炸的現象就發生了。

如何解決梯度消失或者梯度爆炸呢?

用ReLU啟用函式來替代sigmoid函式。
Rectified linear unit(ReLU) 函式是深度神經網路在2015年最流行的啟用函式。它的啟用函式可以表示為f(x)=max(0,x),它更加符合神經元的啟用原理。它的一個平滑解析函式為f(x)=ln(1+ex),被稱為softplus function。softplus 的微分就是logistic函式f(x)=1/(1+ex)

ReLU函式有幾種變體:

Noisy ReLUs:
將高斯噪聲加入,f(x)=max(0,x+N(0,δ(x))),常用在機器視覺裡面。

Leaky ReLUs:
當unit沒有被啟用時,允許小的非零的梯度。f

(x)=x,x>0f(x)=0.01x,x<=0

優點:
Biological plausibility:單邊,相比於反對稱結構(antisymmetry)的tanh
Sparse activation:基本上隨機初始化的網路,只有有一半隱含層是處於啟用狀態,其餘都是輸出為0
efficient gradient propagation:不像sigmoid那樣出現梯度消失的問題
efficient computation:只需比較、乘加運算。
使用rectifier 作為非線性啟用函式使得深度網路學習不需要pre-training,在大、複雜的資料上,相比於sigmoid函式等更加快速和更有效率。
標準的sigmoid輸出不具備稀疏性,需要通過懲罰因子來訓練一堆接近於0的冗餘資料,從而產生稀疏資料,比如L1,L2或者student-t作為懲罰因子,進行regularization。而ReLU為線性修正,是purelin的折線版,作用是如果計算輸出小於0,就讓它等於0,否則保持原來的值,這是一種簡單粗暴地強制某些資料為0的方法,然而經實踐證明,訓練後的網路完全具備適度的稀疏性,而且訓練後的視覺化效果和傳統pre-training的效果很相似。這說明了ReLU具備引導適度稀疏的能力。
從函式圖形上看,ReLU比sigmoid更接近生物學的啟用模型。
實際測量資料:縱座標軸是神經元的放電速率(Firing Rate);橫軸是毫秒(ms)

基於生物學的數學規則化啟用模型(LIF)

(Softplus是ReLU的圓滑版,公式為:g(x)=log(1+e^x),從上面的結果看,效果比ReLU稍差)
ReLU在經歷預訓練和不經歷預訓練時的效果差不多,而其它啟用函式在不用預訓練時效果就差多了。ReLU不預訓練和sigmoid預訓練的效果差不多,甚至還更好。
相比之下,ReLU的速度非常快,而且精確度更高。
因此ReLU在深度網路中已逐漸取代sigmoid而成為主流。
ReLU導數(分段):
x <= 0時,導數為0
x > 0時,導數為1
早期多層神經網路如果用sigmoid函式或者hyperbolic tangent作為啟用函式,如果不進行pre-training的話,會因為gradient vanishing problem而無法收斂。
而預訓練的用處:規則化,防止過擬合;壓縮資料,去除冗餘;強化特徵,減小誤差;加快收斂速度。而採用ReLu則不需要進行pre-training。