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

博客介绍了网络中神经元错误量的计算公式,包括普通神经元、输出层和隐藏层神经元。还给出了神经元偏置和权重的梯度计算方式,指出参数梯度取决于错误量。同时分析了使用sigmoid等非线性激活函数时,因导数范围和加权输入问题导致梯度消失的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
(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,这也是导致一个神经元的错误量很小的原因,也就是梯度很小(消失)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值