梯度消失与梯度爆炸解释

目录

what & why

  • 首先,什么是梯度爆炸、梯度消失,或者说,emmmm,什么是梯度?下面通过一个神经网络来解释一下,(字不好还请见谅)
    在这里插入图片描述
    之前看到吴恩达课程中关于梯度消失和梯度爆炸的课程讲解,当时就没太理解,直到今天这个问题出现了才不得不重新审视一下。
  • 上图是我简单写了一个每层只有一个神经元的神经网络,然后写了一下它反向传播更新w1参数的链式求导公式,因为梯度消失和梯度爆炸影响的是对于参数w的更新过程。梯度消失时,越靠近输入层的参数w越是几乎纹丝不动;梯度爆炸时,越是靠近输入层的参数w越是上蹿下跳。稳定和突变都不是我们想要的,我们想要的是参数w朝着误差减小的方向稳步变化。
  • 从图中推导公式我们可以看到,最终决定w更新的,是 w i ⋅ σ i ′ w_{i}·σ'_{i} wiσi,也就是梯度 d z i / d z i − 1 d_{z_{i}}/d_{z_{i-1}} dzi/dzi1,但是千万不要忽略了累乘的效益,梯度消失和梯度爆炸不是一个梯度两个梯度不合理导致的,而是一个量变引起质变的过程,很多人把锅丢给激活函数,丢给w,其实都是不对的,首先这就是一个量变的问题,单单某一个梯度中的激活函数或者w不合理都不会导致梯度消失和爆炸。
  • 不过当然,激活函数本身的一些桎梏会促成梯度消失和梯度爆炸的出现。激活函数其实是很不好扮演的角色,它在神经网络中起到画龙点睛的作用,少了它,神经网络再怎么折腾终究也只是数据的线性组合,表现力有限,既然每一层都是线性组合,那深不深层的也没意义了。但是激活函数为神经网络添加非线性特征的时候呢还得尽量保持点梯度(此处说的梯度是指激活函数本身斜率),不然呢很容易就会陷入梯度消失。
    就比如这sigmoid函数就很容易陷入梯度消失:
    在这里插入图片描述
    这个函数自己的斜率很小,即便是最大值也是小于1的,而我们随机初始化的w权重矩阵又基本是均值为0标准差为1的高斯分布,如此一来妥妥的是陷入梯度消失。当然sigmoid也可能会出现梯度爆炸的情况,某篇论文里好像有发生这两种情况的区间分析,这不是我们讲解的重点。

how

  • 梯度消失和爆炸貌似目前没有办法能够彻底解决,只是能够降低其发生的概率,我了解到的是这样的,可能也是我没查明白,有指教还请留言评论。
  • 目前说的最多的就是使用ReLu激活函数和BN操作,其实ReLu的话到负数梯度就为0了,也不能完全保证不出现梯度消失。
  • BN的话,是通过改变数据分布,强行将其在经过激活函数之前先保持一定方差和均值的分布(执行PCA白化或ZCA白化操作),这样的话它们的值正好对应激活函数梯度变化大的部分,以sigmoid函数为例就很明显了,这样梯度就比较大了,防止出现梯度消失现象,但也不能杜绝其出现。
  • 其实这方面本身就是比较复杂的问题,权重矩阵w的初始化呀,训练的深度呀,数据呀等等很多因素作用在里面,这样的情况下往往就不能一概而论,感觉挺复杂的,如果有时间有兴趣的话,可以自己写几个深层神经网络,不是去实验不出现梯度消失和梯度爆炸的情况,而是专门让它出现梯度消失梯度爆炸的情况,有时候暴露出问题才更能深入理解暴露问题的原因,印象也会更加深刻。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CtrlZ1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值