为什么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)的图像如下:

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

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

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

\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预测结果不准确,产生对整个后面的影响,最后无法训练。

  • 37
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值