关于训练过程中损失函数出现断崖式增长的问题

训练过程中损失函数出现断崖式增长原因

(一). 由于损失函数是非凸函数,学习率设置的过大导致跳出了最优解的区间,我们可以选择动态改变学习率的优化算法,比如adam

(二) 当训练过程中出现梯度爆炸也会导致损失出现断崖式增长

梯度爆炸或消失出现的原因

根本原因:当我们采取不当的训练方法啊导致前面的层出现梯度消失后,模型会大幅度调整后几层的参数,导致梯度过大,最后出现梯度爆炸

注意:梯度消失出现在前几层,梯度爆炸出现在后几层

解决措施

注意:梯度截断法也是防止梯度爆炸的重要手段
1. 选择合适的分布去初始化参数,w过大容易导致梯度爆炸或消失,比如使用tanh激活函数时候,w过大导致z过大,再求导时导数却趋于0

2. 采用BN方式,尽可能的使得输入输出保持同分布,减缓梯度消失得出现也能避免梯度爆炸或消失产生(非常好用)
3. 根据链式法则,当我们w的值较小时,a的导数也会较小,a的导数越小前一层w的梯度也就越小,所以我们可以采用L1、L2正则化的方式来减缓梯度爆炸
4. 选择合适的激活函数,relu就是我们最常用的激活函数
5. 效果差不多的情况下,神经网络越简单越不容易出现梯度爆炸和梯度消失

猜你喜欢

转载自blog.csdn.net/qq_42861526/article/details/124021989