train loss与test loss结果分析
train loss 不断下降,test loss不断下降,说明网络仍在学习;
在训练过程中loss可能会出现几次震荡现象,但是整体有上升趋势就说明网络还在学习,可以继续训练。
train loss 不断下降,test loss趋于不变,说明网络过拟合
过拟合
最直观的表现就是 training accuracy 特别高,但是testing accuracy 特别低,即两者相差特别大。训练完了以后可以测试一下网络在训练集的正确率,如果和测试集的正确率相差特别大(比如20%),则说明网络过拟合了。
出现过拟合的原因(原文链接:https://blog.csdn.net/NIGHT_SILENT/article/details/80795640)
1. 训练集的数量级和模型的复杂度不匹配。训练集的数量级要小于模型的复杂度;
2. 训练集和测试集特征分布不一致;
3. 样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;
4. 权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。
解决办法:
即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:
- 从数据源头采集更多数据
- 复制原有数据并加上随机噪声
- 重采样
- 根据当前数据集估计数据分布参数,使用该分布产生更多数据等
train loss 趋于不变,test loss不断下降,说明数据集100%有问题;
train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;
train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题