造成梯度爆炸的原因是求导得到的值大于1,造成导数很大,损失函数的值沿着梯度的方向呈下降趋势,然而,如果梯度(偏导数)很大话,就会出现函数值跳来跳去,收敛不到最小值。这个时候可以用梯度裁剪来解决问题。
梯度裁剪:对梯度进行裁剪,论文提出对梯度的L2范数进行裁剪,也就是所有参数偏导数的平方和再开方。主要是控制梯度在一定范围内。
注意:
当你训练模型出现Loss值出现跳动,一直不收敛时,除了设小学习率之外,梯度裁剪也是一个好方法。
如果你的模型稳定而且会收敛,但是效果不佳时,那这就跟学习率和梯度爆炸没啥关系了。因此,学习率的设定和梯度裁剪的阈值并不能提高模型的准确率。
原文地址:https://www.cnblogs.com/Mydream6/p/11665112.html
时间: 2024-11-06 09:35:04