機器學習-梯度消失爆炸

梯度消失

本層的神經元的激活等於上一層神經元對應的權值進行加權和運算,
最後通過一個非線性函數(激活函數)如ReLusigmoid等函數,
最後得到的結果就是本層神經元的輸出,
逐層逐神經元通過該操作向前傳播,最終得到輸出層的結果。

梯度消失的影響:

  1. 淺層基本不學習,後面幾層一直在學習,失去深度的意義。
  2. 無法收斂。

梯度消失的現象呢?因爲通常神經網絡所用的激活函數是sigmoid函數
這個函數有個特點:

就是能將負無窮到正無窮的數映射到0和1之間,並且對這個函數求導的結果是f′(x)=f(x)(1−f(x))。
因此兩個0到1之間的數相乘,得到的結果就會變得很小了。
神經網絡的反向傳播是逐層對函數偏導相乘,因此當神經網絡層數非常深的時候
最後一層產生的偏差就因爲乘了很多的小於1的數而越來越小,最終就會變爲0,從而導致層數比較淺的權重沒有更新

一是在深層網絡中,網絡層數過多二是採用了不合適的損失函數,比如sigmoid

梯度爆炸

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

解決

ReLU激活函數來替代sigmoid函數。

區別:(1)sigmoid函數值在[0,1],ReLU函數值在[0,+無窮],所以sigmoid函數可以描述概率,ReLU適合用來描述實數;(2)sigmoid函數的梯度隨着x的增大或減小和消失,而ReLU不會。

早期多層神經網絡如果用sigmoid函數或者hyperbolic tangent作爲激活函數,如果不進行pre-training的話,會因爲gradient vanishing problem而無法收斂。

而預訓練的用處:規則化,防止過擬合;壓縮數據,去除冗餘;強化特徵,減小誤差;加快收斂速度。而採用ReLu則不需要進行pre-training

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