为什么sigmoid会造成梯度消失?

这里仅仅做一些数学上的简单分析,首先看sigmoid的公式:

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

它的导数:

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

\sigma(z)的图像如下:

为什么sigmoid会造成梯度消失?_第1张图片

也就是说任何输入都会被缩放到0到1,如果隐层的所有layer都使用sigmoid,除了第一层的输入,最后一层的输出,其他层的输入输出都是0到1,看看\sigma(z)'的完整图像:

为什么sigmoid会造成梯度消失?_第2张图片

z大概在-5到5之间,\sigma(z)'才有值,而除第一层隐层的输入都在0到1之间,所以\sigma(z)'的图像如下:

为什么sigmoid会造成梯度消失?_第3张图片

\sigma(z)'最终取值大概0.2到0.25之间,下面以一个简单的神经原结构举例:

为什么sigmoid会造成梯度消失?_第4张图片

\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}中。

梯度消失带来的影响,靠近输入层的参数几乎不能被更新,靠近输入层的layer预测结果不准确,产生对整个后面的影响,最后无法训练。

你可能感兴趣的:(ML&DL原理)