1. 什么是梯度弥散和梯度爆炸(发生原因)
- 梯度弥散:由于导数的链式法则,连续多层小于1的梯度相乘会使梯度越来越小,最终导致某层梯度为0。
- 梯度爆炸:由于导数的链式法则,连续多层大于1的梯度相乘会使梯度越来越大,最终导致梯度太大的问题。
2. 梯度弥散和梯度爆炸会造成什么影响
- 梯度弥散:会使得网络前几层的参数不再更新,最终导致模型的性能很差
- 梯度爆炸:会使得某层的参数
w
过大,造成网络不稳定,极端情况下,数据数据乘以一个大w
发生溢出,得到NAN
值。
3. 如何解决梯度弥散和梯度爆炸问题
梯度爆炸:
- 用梯度截断方法,即当梯度超过一个阈值时,让他变小点
- 权重正则化方法(on the difficulity of training rnn,2013)
- 从
rnn
->lstm
- 使用
relu
激活函数,梯度为1
梯度弥散:
4. 如何判断训练中发生了梯度爆炸和梯度弥散
梯度爆炸:
- 模型不稳定,训练损失显著变化
- 模型损失变成
NAN
- 梯度快速增大
- 每个节点的和层的误差梯度都超过1
梯度弥散:
- 前几层的网络参数不更新
- 梯度很接近0