梯度消失和梯度爆炸_深度学习梯度消失与爆炸之真正原因正解(一):推导CNN中的BP...

博客介绍了深度学习中梯度消失和爆炸的概念,指出这是梯度异常导致模型无法获取正确参数。解释其原因不仅与激活函数有关,还和神经元权重值、参数初始化相关。以CNN为例,推导BP算法梯度,说明要合理选取激活函数和初始化权重值。

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

5541a625578b375ac0e9b8ee3603df5f.png

梯度消失和梯度爆炸是深度学习网络结构中经常提到的概念。都是梯度异常使得参数无法更新或者产生剧烈震荡,导致模型得不到正确参数。

有一点要清楚:在解释梯度消失和爆炸原因的时候,10个人中有8个人会仅仅提到激活函数,诚然激活函数确实有重要影响,但是梯度消失和爆炸其实是梯度和神经元权重值共同作用的结果,所以参数初始化也很重要,后面会给出具体解释。

神经网络一度倾向于做的很深、层数多,参数更新依赖于链式法则求导即多层梯度反向传播,因此多层神经网络实际表现为:(1)各层参数更新的速率不一样(2)网络靠近输出的层参数更新速度快、靠近输入的层参数更新很慢,有时候训练了好多轮、可能前几层的权重值没怎么变化(CNN中亲身实证)。所以,反向传播训练法则是有先天缺陷的,也因此带来梯度消失和爆炸的问题。

这里,以cnn卷积神经网络为例,以cnn中的BP算法更新梯度的方式来阐明梯度消失和爆炸问题,为了简化问题,这里以一个简单的3层神经网络,每层只含一个神经元为例来推导BP算法的梯度。

其中σ为sigmoid激活函数,C表示的是损失函数,前一层的输出和后一层的输入关系如公式1所示。我们可以推导出第一层参数b1 w1 的更新梯度,如下图所示。

2937a890713711e389531124ad031211.png

看上面的公式有2点要说:

(1)梯度是激活函数导数和权重乘积的累乘,因此梯度消失与爆炸不仅仅是选取激活函数的问题。

(2)sigmoid激活函数的最大导数值为0.25,我们一般会使用0-1正态分布来初始化权重w,因此激活函数乘以权重仍然小于0.25,如果链式法则累成层数过大,最后就变无限逼近于0这就造成了梯度消失。因此要合理的选取激活函数,同时也要合理的初始化权重值。sigmoid激活函数属于饱和激活函数,目前神经网络中已经很少使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值