前言
在講述RNN與LSTM的時候曾經說過, RNN一個最大的缺陷就是梯度消失與梯度爆炸問題, 由於這一缺陷,使得RNN在長文本中難以訓練, 這才誕生了LSTM及各種變體。
梯度消失與梯度爆炸問題不僅僅在RNN中存在, 在其餘深層網路中同樣普遍存在, 本文先從梯度消失與梯度爆炸談起, 然後再回到具體的RNN梯度問題中, 最後, 再探討LSTM是通過什麼技術來解決RNN中的這一問題的。
淺談神經網路中的梯度爆炸問題
機器學習總結(二):梯度消失和梯度爆炸
神經網路訓練中的梯度消失與梯度爆炸
1. 什麼是梯度消失,梯度爆炸?
首先,你得知道梯度是什麼, 不了解的可以看看我關於梯度下降的那篇文章。
從那篇文章中就可以看出對於神經網路的訓練,梯度在訓練中起到很關鍵的作用。 如果在訓練過程中發生了梯度消失,這也就意味著我們的權重無法被更新,最終導致訓練失敗。而梯度爆炸所帶來的梯度過大,從而大幅度更新網路參數,造成網路不穩定(可以理解為梯度步伐太大)。在極端情況下,權重的值變得特別大,以至於結果會溢出(NaN值)
注意,梯度消失和梯度爆炸只會造成神經網路中較淺的網路的權重無法更新(畢竟神經網路中是反向傳播)
2. 這會造成哪些問題?
- 梯度消失會導致我們的神經網路中前面層的網路權重無法得到更新,也就停止了學習。
- 梯度爆炸會使得學習不穩定, 參數變化太大導致無法獲取最優參數。
- 在深度多層感知機網路中,梯度爆炸會導致網路不穩定,最好的結果是無法從訓練數據中學習,最壞的結果是由於權重值為NaN而無法更新權重。
- 在循環神經網路(RNN)中,梯度爆炸會導致網路不穩定,使得網路無法從訓練數據中得到很好的學習,最好的結果是網路不能在長輸入數據序列上學習。
3. 原因何在?
讓我們以一個很簡單的例子分析一下,這樣便於理解。