验证集loss上升,准确率却上升
验证集loss上升,acc也上升这种现象很常见,原因是过拟合或者训练验证数据分布不一致导致,即在训练后期,预测的结果趋向于极端,使少数预测错的样本主导了loss,但同时少数样本不影响整体的验证acc情况。ICML2020发表了一篇文章:《Do We Need Zero Training Loss After Achieving Zero Training Error?》,描述了上述现象出现的原因,同时提出了一种flooding策略,通过超参数b控制训练loss不要过小,阻止进一步过拟合,在此情况下,使model"random walk"至一个泛化能力更好的结果,亲测flooding策略可以在部分情况下缓解上述问题。以下是关于这篇文章的介绍以及一下讨论,会帮助理解。kid丶:【论文】一行代码发一篇ICML?。 validation loss 和 accuracy 不匹配的问题(尤其是cross entropy)已经有些工作专门去研究,代表作 Guo, Chuan, et al. "On calibration of modern neural networks." ICML 2017. 这个情况在实际项目中其实挺常见的,说白了loss也好, accuracy也好,都是很片面且脆弱的评估指标。与模型结构与数据分布都有很大关系。 具体如何选择模型应该与应用场景强相关。 在我把所有分类信息打印出来之后发现是模型过于极端导致的,即模型会出现在正确分类上给出0.00..x的概率值,导致loss异常的高,超过20,因此极大的提高了平均loss,导致出现了loss升高,acc也升高的奇怪现象。loss和准确率本身就不是完全正比的关系,loss只是方便优化的一种近似。假设题主代码写对的情况下,一种可能的原因是,那些大量正确分类的easy samples的损失之和,大于少数错误分类的样本,因此优化loss反而会降低准确率,或者反过来,loss上升准确率也上升。
说了多少次了,不要看loss,loss波动很正常,loss设的不够好导致部分上升占主导,掩盖了另一部分的下降也很正常。
看acc,看参数统计量,这才是有效的。
REF
链接:https://www.zhihu.com/question/318399418/answer/1420848079https://www.zhihu.com/question/291369144