文章目录
序言
- 模型训练过程中,loss和accuracy不同的变化趋势是什么原因,如何调整
对loss和accuracy的理解
- loss可以很大,但accuracy只能是0~1
- loss评价模型的训练程度,accuracy评价模型的好坏
- loss是给模型看的,用来优化参数实现梯度下降,accuracy是给人看的,用来衡量网络好坏的指标,同样的 P/R/F1等也都是给人看的
- 模型的好坏,loss函数定义的好坏,最终都要体现在accuracy上,评估应该主要看accuracy
1. 验证loss先减小后增大,验证acc先上升后下降
-
当训练loss一直下降,训练accuracy一直上升,而验证loss先减小后增大,验证acc先上升后下降
-
可能原因:这种情况可能是训练集和验证集数据分布不一样,或者训练集过小,未包含验证集中的所有情况。也就是过拟合了
- 即对已知数据预测很好,表现为训练loss不断减小训练acc不断提升,但是验证loss先减小后增大,验证acc也先上升后下降
- 模型开始学习仅和训练数据有关的模式,而不是学习到了数据本质特征
-
应对方法:即如何应对过拟合
- (优先)调整学习率:使用学习率衰减机制,避免陷入局部最优无法进一步减小loss
- (优先)增加训练样本
- (优先)调整超参:如batch_size,分类阈值,hidden_size也可以调整
- (其次)加入early stop:验证loss上升的几个epoch直接停止,侧重验证acc上升即可
- (其次)增加正则项系数权重,减小过拟合
- (其次)dropout随机失活:随机失活使得每次更新梯度时参与计算的网络参数减小了,降低了模型容量,所以能防止过拟合
- (其次)交叉验证:将数据划分为几个子集,使用不同的子集进行训练和验证,以评估模型的泛化能力选择最佳模型
- (其次)采用focal loss:增加困难样本权重,使模型专注于难分类的样本