梯度消失、爆炸带来的影响

  举个例子,对于一个含有三层隐藏层的简单神经网络来说,当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。
      

产生的原因

  以上图中含有三个隐藏层的单神经元神经网络为例,激活函数使用 Sigmoid :  

    σ(x)=11+ex

    σ(x)=σ(x)(1σ(x))=(σ(x)12)2+14

  图中是一个四层的全连接网络,假设每一层网络激活后的输出为 fi(x),其中 i 为第 i 层,x 代表第 i 层的输入,也就是第 i1 层的输出,f 是激活函数,那么得出

    fi+1=σ(fiwi+1+bi+1) 

  记为 

    fi+1=σ(fiwi+1) 。   

  BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,参数的更新为 ww+Δw ,如果要更新第二隐藏层的权值信息,根据链式求导法则,更新梯度信息: 

    Δw2=Lossw2=Lossf4f4f3f3f2f2w2

  由 

    f2=f(f1w2)

  得

    f2w2=σ(f1w2)(f1w2)(w2)=σ(f1w2)f1=σf1

  其中  f1是第一层的输出。

  且

    f4f3=σw4

    f3f2=σw3

  对激活函数进行求导  σ,如果此部分大于 1 , 那么层数增多的时候,最终的求出的梯度更新将以指数形式增加,即发生梯度爆炸。如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减, 即发生了梯度消失。另外,需要注意的是 w 往往是矩阵形式,对于每个分量 wij 分析如同激活函数。

    Δw2=Lossw2=Lossf4σw4σw3σf1

  从深层网络角度来讲,不同的层学习的速度差异很大,表现为网络中靠近输出的层学习的情况很好,靠近输入的层学习的很慢,有时甚至训练了很久,前几层的权值和刚开始随机初始化的值差不多。因此,梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。

posted @   别关注我了,私信我吧  阅读(230)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
Live2D
点击右上角即可分享
微信分享提示