神經網路與深度學習(5) 梯度消失問題

2022-07-19 01:21:08 字數 1469 閱讀 8934

本文總結自《neural networks and deep learning》第5章的內容。 

隨著隱藏層數目的增加,分類準確率反而下降了。為什麼?

先看一組試驗資料,當神經網路在訓練過程中, 隨epoch增加時各隱藏層的學習率變化。

兩個隱藏層:[784,30,30,10]

三個隱藏層:[784,30,30,30,10]

四個隱藏層:[784,30,30,30,30,10]

可以看到:前面的隱藏層的學習速度要低於後面的隱藏層。

這種現象普遍存在於神經網路之中, 叫做消失的梯度問題(vanishing gradient problem)

另外一種情況是內層的梯度被外層大很多,叫做激增的梯度問題(exploding gradient problem)

更加一般地說,在深度神經網路中的梯度是不穩定的,在前面的層中或會消失,或會激增。這種不穩定性才是深度神經網路中基於梯度學習的根本問題。

先看乙個極簡單的深度神經網路:每一層都只有乙個單一的神經元。如下圖:

代價函式c對偏置b1的偏導數的結果計算如下:

先看一下sigmoid 函式導數的影象:

該導數在σ′(0) = 1/4時達到最高。現在,如果我們使用標準方法來初始化網路中的權重,那麼會使用乙個均值為0 標準差為1 的高斯分布。因此所有的權重通常會滿足|wj|<1。從而有wjσ′(zj) < 1/4。

這其實就是消失的梯度出現的本質原因了。

可以考慮將權重初始化大一點的值,但這可能又會造成激增的梯度問題。

根本的問題其實並非是消失的梯度問題或者激增的梯度問題,而是在前面的層上的梯度是來自後面的層上項的乘積。所以神經網路非常不穩定。唯一可能的情況是以上的連續乘積剛好平衡大約等於1,但是這種機率非常小。

所以只要是sigmoid函式的神經網路都會造成梯度更新的時候極其不穩定,產生梯度消失或者激增問題。

使用relu。

使用rel 函式時:gradient = 0 (if x < 0), gradient = 1 (x > 0)。不會產生梯度消失問題。

神經網路與深度學習筆記 梯度消失問題

神經網路與深度學習筆記系列一共有五個專題,分別是 第一章使用神經網路識別手寫數字 梯度下降演算法是什麼。主要介紹了神經網路的基礎例如感知器啟用函式等概念,最主要介紹了梯度下降演算法。第二章反向傳播演算法如何工作 反向傳播演算法原理。主要介紹了反向傳播演算法的工作原理。第三章改變神經網路的學習方法 代...

神經網路學習筆記(三) 梯度下降法

在上一張,我們學習過了lms演算法,就是利用了著名的梯度下降法,但是lms演算法只是一種特殊的實現,是均方差這個特定函式的梯度下降,這次我們來看一下梯度下降對普通函式求極值的一些應用。我們來試一下二次函式的極值點求法。首先我們建立乙個二次函式 y x 2 2 x 這個極值大家應該知道 x取 1就可以...

神經網路學習筆記三 梯度檢驗 高階優化

梯度檢驗的意義 為了驗證求導 是否正確 思路 利用導數的定義 可以去任意theta值對等式左邊的導數用 來近似。一般epsilon用乙個很小的常量 10 4數量級,不宜太小 因此若存在計算deltaj 的函式g 則 來檢驗函式是否正確,一般正常情況左右兩端至少有四位有效數字是一樣的 epsilon ...