目录
- 深度学习每次结果不一致
- 实验结果不好
- 过拟合
- loss不下降的解决方法
深度学习每次结果不一致
使用定值随机种子比较好
随机数种子设置?一共有三个随机数种子,random,numpy和深度学习库的gpu种子,不过我三个都设置了,在gpu上还是会结果不一样,cpu每次都一样的,我用的dynet。
可以直接取最好值进行汇报,更严谨的话做10次取平均的。
深度学习实验总结
实验结果不好
先过拟合一个样本或者一个小子集,训练损失下降合理的话,再考虑泛化的事情。
- 确保代码正确(基石)
- 看下数据情况,量的问题,数据的分布(找训练集和测试集都看一下),数据是否平衡;
- 看下目标函数和业务目标是不是兼容的(方向错了,效果好不了);
- 对训练过程和预测的中间结果做一些可视化(定位问题点);
- 最后才是调参
调参:
- 损失函数loss不下降:数据读取是否正确、网络深度是否合适、损失函数选择是否有问题等;
- 训练集准确率高train acc、测试集准确率低val acc:网络是否过拟合了、如果过拟合是否需要dropout或其它正则化策略、测试集和训练集是否选取有问题、是否可以采用早停策略;
- 损失函数收敛过慢或达到某个值后不再降低:扩大学习率、采用学习率衰减策略、SGD、Adam、RMSProp等都试试;
当然,还有很多情况,在此就不介绍了。总之,我觉得实验结果不好,如果时间允许,就不应该放弃,这样才能“通过调参”更好的理解问题的难点在哪里。虽然调参只是深度学习的一部分,但是这一部分却是玄学基础。
过拟合
train loss下降时,val acc也下降的话,一般就是过拟合了。过拟合一般在训练集样本数比较小模型比较复杂的时候比较容易发生。一般是刚开始训练集loss下降、验证集准确度上升,训练到一定程度,训练集loss缓慢下降或不再下降了,验证集准确度反而下降了。可以加dropout、正则项或扩充数据集。
loss不下降的解决方法
参考链接
loss不下降一般分为三种,即:训练集上loss不下降,验证集上loss不下降,和测试集上loss不下降。