总结一些loss不收敛的解决方法

总结一些loss不收敛的解决方法

经常遇到的两种情况:

  1. loss一直在震荡
  2. loss下降一点后不再下降到理想水平,而验证集上的表现保持不变。

解决办法:

  1. 保持需要的batchsize不变,或考虑调整batch size大小
  2. 查看是否有梯度回传。
  3. 查看数据是否有问题,如标签错乱,归一化等。
  4. 调节学习率,从大向小调,每次除以5或者10
  5. 如果学习率调好后,需要调节batchsize大小,如batchsize调大2倍,则将学习率对应调大,反之,学习率对应调小。
  6. 权重初始化方案(全零初始化、随机正态分布初始化和随机均匀分布初始化等)
  7. 正则化过度(当训练集loss下不来时,就要考虑一下是不是正则化过度,导致模型欠拟合了。一般在刚开始是不需要加正则化的,过拟合后,再根据训练情况进行调整。)
  8. 激活函数、损失函数
  9. 训练时间不足,网络比较大的时候,孪生网络,容易出现收敛缓慢,要多训练一段时间看看loss收敛情况

知乎上的总结:

train loss 不断下降,test loss不断下降,说明网络仍在学习;
train loss 不断下降,test loss趋于不变,说明网络过拟合;
train loss 趋于不变,test loss不断下降,说明数据集100%有问题;
train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;
train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。

参考:
[1]: https://zhuanlan.zhihu.com/p/36369878
[2]: https://blog.ailemon.me/2019/02/26/solution-to-loss-doesnt-drop-in-nn-train/
[3]: https://blog.csdn.net/Suan2014/article/details/103157226
[4]: https://zhuanlan.zhihu.com/p/136786657 几种loss出问题的情况
[5]:https://www.cnblogs.com/XDU-Lakers/p/10557496.html 关于激活函数

  • 11
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值