梯度爆炸

什么是梯度爆炸

梯度爆炸是指神经网络在训练过程中大的误差梯度不断积累,导致模型权重出现重大更新,造成模型不稳定,无法利用训练数据学习。
误差梯度是神经网络训练过程中计算的方向和数量,用于以正确的方向和合适的量更新网络权重。在深层网络中,误差梯度可在更新中积累,变成非常大的梯度,这样会导致网络权重的大幅更新,使得网络变得非常不稳定,在极端的情况下,权重值变得非常大,以至于溢出,导致NaN值。在深层感知机网络中,梯度爆炸会导致网络不稳定,最好的结果是无法从训练数据中学习,最坏的结果是出现无法再更新的NaN权重值。在RNN中,梯度爆炸最好的结果是网络无法学习长的输入序列数据。

怎样判定是否出现了梯度爆炸

训练过程中出现梯度爆炸会伴随一些细微的信号:

  • 模型无法从训练数据中获得更新(如低损失)
  • 模型不稳的,在更新过程中损失值变化比较明显
  • 训练过程中,损失值变成NaN

梯度爆炸出现比较明显一点的信号:

  • 训练过程中模型梯度快速变化
  • 训练过程中模型权重变成NaN值
  • 训练过程中, 每个节点和层的误差梯度值持续超过1.0

如何解决梯度爆炸问题:

  • 重新设计网络层更少的网络,在循环神经网络中,训练过程中在更少的先前时间步上进行更新。(沿时间的截断反方向传播)来缓解梯度爆炸问题。
  • 使用ReLU激活函数
  • 使用LSTM网络
    LSTM(长短期记忆),是一种特殊的RNN, 在循环神经网络中,梯度爆炸发生可能是因为某种网络的训练本身存在不稳定性,如随时间的反向传播本质上是将循环网络转换成深层神经网络。
    使用LSTM单元和相关的门类神经元结构可以减少梯度爆炸问题。
  • 使用梯度截断, 在训练过程中检查和限制梯度的大小,当梯度超过阈值就截断。
  • 对权重使用正则化。惩罚产生较大权重的损失函数。

梯度爆炸和梯度消散

  • 梯度消散
    靠近输出层的hidden layer 梯度大,参数更新快,收敛快; 而靠近输入层的hidden layer梯度小, 参数更新的慢,几乎和初始状态一样随机分布。
  • 梯度爆炸
    靠近输入层的hidden layer梯度通过训练变大, 而靠近输出层的hidden layer梯度呈指数级增大。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 101.深度学习(CNN RNN Attention)解决大规模文本分类问题。 用深度学习(CNN RNN Att...
    大黄大黄大黄阅读 14,031评论 2 42
  • 激活函数(Activation Function) 为了让神经网络能够学习复杂的决策边界(decision bou...
    御风之星阅读 5,268评论 0 8
  • 放眼大自然,我们对她的美、她的活力、她的生气盎然,赞叹不已。在看着这些美妙的生命现象,如果自己不是一个悲观主义者,...
    4b56db15b993阅读 332评论 0 0
  • 公司在做H5的商城,需要银联支付功能。在chrome测试的时候没有问题,到了安卓app上的时候银联页面呼不出来了,...
    孙二柯阅读 2,096评论 0 0
  • 某一个区域,藏在荒野森林中,有个很高的石墙,因情而死的一对男女附在墙上,死时怨恨,诅咒自己,在墙上刻下抽象的面部,...
    鲤溯阅读 192评论 0 0