爲何sigmoid會形成梯度消失?

這裏僅僅作一些數學上的簡單分析,首先看sigmoid的公式:3d

sigmoid= \sigma(z) = \frac{1}{1+e^{-z}}

它的導數:code

\sigma(z)' = \frac{e^{-z}}{(1+e^{-z})^2}=\sigma (z)*(1-\sigma(z))

\sigma(z)的圖像以下:blog

也就是說任何輸入都會被縮放到0到1,若是隱層的全部layer都使用sigmoid,除了第一層的輸入,最後一層的輸出,其餘層的輸入輸出都是0到1,看看\sigma(z)'的完整圖像:數學

z大概在-5到5之間,\sigma(z)'纔有值,而除第一層隱層的輸入都在0到1之間,因此\sigma(z)'的圖像以下:class

\sigma(z)'最終取值大概0.2到0.25之間,下面以一個簡單的神經原結構舉例:im

\frac{\partial L}{\partial z} = \sigma '(z)(w1 \frac{\partial L}{\partial z'}+w2 \frac{\partial L}{\partial z''})

\frac{\partial L}{\partial w} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial w}=a\frac{\partial L}{\partial z}

因爲\sigma(z)'會把\frac{\partial L}{\partial z}縮小4至5倍,而這個\frac{\partial L}{\partial z}又會影響前一層的\frac{\partial L}{\partial z},反向下去,每一層的\frac{\partial L}{\partial z}在不斷被縮小,深度越深這種連鎖反應越明顯,越靠近輸入層越小,\frac{\partial L}{\partial w}中a又是0到1之間的梯度再次被總體縮小,這裏主要考慮了\sigma '(z)以及\frac{\partial L}{\partial z}的傳遞性以及輸入a帶來的影響,我認爲權重w只會對局部的\frac{\partial L}{\partial z}帶來影響,而\sigma(z)'帶來的這種連續縮小的影響將傳遞到計算前層的\frac{\partial L}{\partial z}中。d3

梯度消失帶來的影響,靠近輸入層的參數幾乎不能被更新,靠近輸入層的layer預測結果不許確,產生對整個後面的影響,最後沒法訓練。img