文章目录

  • 一、梯度弥散
  • 1.1 什么是梯度弥散?
  • 1.2 梯度弥散造成的问题
  • 1.3 梯度弥散造成的原因
  • 1.4 梯度弥散的解决办法
  • 二、梯度爆炸
  • 1.1 什么是梯度爆炸?
  • 1.2 梯度爆炸造成的问题
  • 1.3 梯度爆炸造成的原因
  • 1.4 梯度爆炸的解决方式



一、梯度弥散

1.1 什么是梯度弥散?

梯度弥散就是梯度消失,导数为0

1.2 梯度弥散造成的问题

靠近输出层的隐藏层梯度大,参数更新快,所以很快就会收敛;
靠近输入层的隐藏层梯度小,参数更新慢,几乎就和初始状态一样,随机分布。

sigmoid梯度弥散 梯度弥散问题_人工智能


由于神经网络前几层的权重更新过慢,或者没有更新,从而导致了整个网络

的学习性能下降,达不到训练的标准。

1.3 梯度弥散造成的原因

  1. 激活函数的"饱和"。
  2. 样本中的奇异样本引起模型无法收敛。
  3. 使用反向传播算法传播梯度的时候,随着网络传播深度的增加,
    梯度的幅度会急剧减小,会导致浅层神经元的权重更新非常缓慢。
    不能有效学习。
  4. 从数学的角度看,是因为梯度连乘的问题,是梯度消失问题的所在。
  5. 学习率过大而导致模型震荡无法收敛。

1.4 梯度弥散的解决办法

  1. 使用ReLU,Leaky_ Relu等 激活函数替代Sigmoid。
  2. 网络层中的数据进行 batch normalization(批量标准化)。
  3. 数据归一化、数据清洗。
  4. 使用更好的网络,比如ResNet。
  5. 降低学习率。

二、梯度爆炸

1.1 什么是梯度爆炸?

梯度的衰减是有连续乘法导致的,如果在连续乘法中出现一个非常大的值,最后计算出的梯度就会很大,就想当优化到断崖处时,会获得一个很大的梯度值, 如果以这个梯度值进行更新,那么这次迭代的步长就很大,可能会一下子飞出了合理的区域。

1.2 梯度爆炸造成的问题

● 前面网络层的梯度通过训练变大,后面网络层的梯度指数级增大。

● 神经网络模型无法收敛,达不到训练结果。

sigmoid梯度弥散 梯度弥散问题_深度学习_02

1.3 梯度爆炸造成的原因

  1. 神经网络初始化的权值过大,每层网络反向求导的结果都大于1,
    这样梯度相乘就会变得更大。
  2. 学习率非常大而导致梯度爆炸

1.4 梯度爆炸的解决方式

  1. 重设初始化权值(指定正态分布采样)
  2. 学习率调小