1. 程式人生 > >對於梯度消失和梯度爆炸的理解

對於梯度消失和梯度爆炸的理解

分享 之間 family -s info 小數 right 也會 使用

一、梯度消失、梯度爆炸產生的原因

  假設存在一個網絡結構如圖:

技術分享圖片

  其表達式為:

技術分享圖片

  若要對於w1求梯度,根據鏈式求導法則,得到的解為:

技術分享圖片

  通常,若使用的激活函數為sigmoid函數,其導數:

技術分享圖片

  這樣可以看到,如果我們使用標準化初始w,那麽各個層次的相乘都是0-1之間的小數,而激活函數f的導數也是0-1之間的數,其連乘後,結果會變的很小,導致梯度消失。若我們初始化的w是很大的數,w大到乘以激活函數的導數都大於1,那麽連乘後,可能會導致求導的結果很大,形成梯度爆炸

  當然,若對於b求偏導的話,其實也是一個道理:

技術分享圖片

  推出:

技術分享圖片

三、梯度消失和梯度爆炸哪種經常出現

  事實上,梯度消失更容易出現,因為對於激活函數的求導:

技術分享圖片

  可以看到,當w越大,其wx+b很可能變的很大,而根據上面sigmoid函數導數的圖像可以看到,wx+b越大,導數的值也會變的很小。因此,若要出現梯度爆炸,其w既要大還要保證激活函數的導數不要太小。

二、如何解決梯度消失、梯度爆炸

對於梯度消失和梯度爆炸的理解