前言
在机器学习和深度学习中,训练集和验证集是两个非常重要的概念。训练集用于训练模型,而验证集则用于调整模型的超参数以及评估模型的性能。在训练过程中,我们通常会记录训练集与验证集的损失值,以便在训练完成后对模型进行评估。然而,训练集损失值与验证集损失值之间的关系却有很多种可能性,在本文中,我们将讨论以下几种情况。
训练集损失值持续降低 但验证集损失趋于收敛
如图:
原因可能来自于两方面:
一、模型过拟合 二、训练集与测试集不是独立同分布的
先从数据方面考虑:
数据来源是否一致:
可能的情况:
1、训练集与测试集的拍摄环境不同:例如训练集灯光分布均匀,亮度合适的环境,测试集在光照分布不均匀,出现强曝光、低曝光等等因素
2、摄像头不一致,且存在拍摄效果差别较大:例如摄像头拍摄后 图像的清晰度、对比度等等
3、数据集的噪声干扰项不同,例如训练集正常拍摄,而测试集加入了背景干扰、亮度猛烈变化、光照不均匀等等
解决思路:
将训练集与测试集打散,重新划分训练集与测试集,做到两者分布是一致的
若数据同分布,应该是模型过拟合
过拟合是指模型在训练集上表现良好,但在验证集上表现不佳的现象。这意味着模型已经学会了训练集中的噪声,而没有学到泛化的特征。为了解决这个问题,我们可以采用以下方法:
1、增加训练数据量,也可以在原数据集上进行数据增强:例如扭曲、添加噪声点、模糊、上下翻转、左右翻转等等;
2、减少模型复杂度;
3、使用正则化技术,如L1或L2正则化;
4、增加dropout层的数量或使用其他dropout技术
5、训练的时候降低batch size,batch size越大往往模型的泛化能力会降低
6、可以尝试使用’早停‘,提早结束训练
训练、验证和准确度曲线都非常不稳
如图:
可能存在以下原因的影响:
1、“学习率太高”,陷入了局部最优 2、“批量太小"
因此我们可以尝试降低学习率或者批量太小
批量的影响可以参考我这篇博客:
模型训练之batch 、batch size、epoch、 iteration
参考链接:
训练神经网络时,训练集loss下降,但是验证集loss一直不下降
欢迎大家点赞或收藏
点赞或收藏会鼓励作者加速更新哟~