我应该更喜欢部署验证损失最低还是验证准确度最高的模型?

人工智能 神经网络 深度学习 应用 过拟合 早停
2021-10-23 08:00:10

我在 Cifar10 上训练了一个 ResNet20,并获得了以下学习曲线。

在此处输入图像描述

从图中,我看到在 epoch 52,我的验证损失为 0.323(最低),验证准确率为 89.7%。

另一方面,在训练结束时(epoch 120),我的验证损失为 0.413,验证准确率为 91.3%(最高)。

假设我想将此模型部署在某个实际应用程序上。我应该更喜欢 epoch 52 的快照模型,即验证损失最低的模型,还是训练结束时获得的模型,验证准确率最高的模型?

2个回答

好的,我认为如果我们首先通过Jeremy 的回答区分损失和准确性会更好,我同意他的说法“低或巨大的损失是一个主观指标”

损失值容易受到数据噪声的影响,并且随着一些错误数据点的增加而显着增加。在这种情况下,我的建议是使用更多的评估指标,并正确理解您对模型的需求。

例如,对于 Cifar 10,您需要的标签越正确越好,您可以相信准确性。但是,如果您希望您的模型确保其结果是正确的,那么受试者工作特征曲线下面积 (AUROC) 可能是更好的选择。

例如,3类的分类问题,正确的标签y = 1:

  • 准确率好,AUROC 差:softmax [0.3,0.4,0.3] 的输出概率
  • 良好的准确性,良好的 AUROC:[0.1,0.8,0.1]

对于不平衡的数据集,Precision、Recall 和 F1-score 会更合适。

在高度不平衡的分类问题中,通常可以简单地通过将多数类分配给所有观察值来实现最高精度。这就是为什么学习算法不会最大化分类精度而是最小化损失函数的原因。从根本上说,当您要估计的统计数据与估计本身之间存在差异时,损失函数会捕获您“损失”多少。合适的损失函数不是大自然给的,而是你自己提供的。

考虑到这一点,说在 120 个 epoch 之后达到最高准确度并不十分准确:它只是算法迄今为止达到的最高准确度。除非您将算法运行更长时间,否则无法确定这是否是局部最大值。例如,将每个观察分配给多数类可能会比在 120 个 epoch 处获得的准确度更高。因此,120 个 epoch 的唯一意义在于您运行算法的时间。

考虑到这些因素,当损失函数最小化时,停在 50 个 epoch 左右会更有意义。