1. 什么是梯度弥散和梯度爆炸(发生原因)


  • 梯度弥散:由于导数的链式法则,连续多层小于1的梯度相乘会使梯度越来越小,最终导致某层梯度为0。
  • 梯度爆炸:由于导数的链式法则,连续多层大于1的梯度相乘会使梯度越来越大,最终导致梯度太大的问题。

2. 梯度弥散和梯度爆炸会造成什么影响


  • 梯度弥散:会使得网络前几层的参数不再更新,最终导致模型的性能很差
  • 梯度爆炸:会使得某层的参数​​w​​​过大,造成网络不稳定,极端情况下,数据数据乘以一个大​​w​​​发生溢出,得到​​NAN​​值。

3. 如何解决梯度弥散和梯度爆炸问题

梯度爆炸:


  • 用梯度截断方法,即当梯度超过一个阈值时,让他变小点
  • 权重正则化方法(on the difficulity of training rnn,2013)
  • 从​​rnn​​​->​​lstm​
  • 使用​​relu​​激活函数,梯度为1

梯度弥散:


采用BN算法 改变激活函数

4. 如何判断训练中发生了梯度爆炸和梯度弥散

梯度爆炸:


  • 模型不稳定,训练损失显著变化
  • 模型损失变成​​NAN​
  • 梯度快速增大
  • 每个节点的和层的误差梯度都超过1

梯度弥散:


  • 前几层的网络参数不更新
  • 梯度很接近0