从BP算法的4个公式分析梯度消失问题

在这里插入图片描述
(1)为网络中每个神经元的错误量的计算公式,上标l代表第几层 ,下标j代表该层的第几个神经元,z代表神经元的加权输入,这个公式可以这样理解:某个神经元的错误量为损失函数对它的加权输入的偏导数,也就是损失函数对它的加权输入的变化率,如果损失函数对某个神经元的加权输入的改变而变化得很大,说明该神经元的错误量很大,也就意味着该神经元还需要学习(调整连接它的权重值的大小)。
(2)为输出层神经元的错误量的计算公式,其中,a就是网络的最终输出,根据损失函数的形式可以很容易求得公式的第一项,也就是C对a的偏导数,第二项就是神经元激活函数的导数。
(3)为隐藏层神经元的错误量的计算公式,可以看到,误差是从后面的层像前面的层传播,这一层的误差值的计算要考虑后面几层的误差值。
在这里插入图片描述
(4)为某个神经元的偏置b的梯度,可以看到,某个神经元的偏置的梯度,直接等于该神经元的错误量
(5)为连接某个神经元的权重w的梯度

总结:
从(4)(5)可以看出,参数的梯度大小总体来说都是取决于错误量,错误两越大,梯度就越大,错误量越小,梯度就越小。而从(2)和(3)可以看出,错误量的计算公式中都含有激活函数的导数这一项,如果使用sigmoid或者tanh等非线性激活函数,则会出现错误量非常小,也就是梯度消失的问题,原因有两个:
1、sigmoid的导数范围为0~0.25,从(3)可以看出,某层的错误量,是要乘上后面几层传播过来的错误量,假设激活函数取能取到最大值0.25,错误量往前传4层,则该层的错误量的值会乘0.25^4,也就是此时的错误量已经很小了,也可以说这一层的梯度很小了,如果在更深层的网络中,这种情况会更加严重。
2、如果加权输入z很大,那么sigmoid函数的导数值会接近于0,这也是导致一个神经元的错误量很小的原因,也就是梯度很小(消失)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值