我应该接受具有良好验证损失和准确性但训练不佳的模型吗?

数据挖掘 神经网络
2022-02-22 04:51:14

我正在训练一个用于 3D CT 扫描分类的模型(图像中是否有结节)。

我正在使用 3D CNN 并获得以下曲线;

在此处输入图像描述

(蓝色曲线是验证数据(数据集的 10%))

如您所见,我在验证损失(分类交叉熵,val 高达 0.16)和度量(分类准确度)(val 高达 1.0)上都获得了很好的结果,但在训练数据上却没有。

由于我的数据集非常小(120 个样本),因此我在训练数据和几个 dropout 层上使用了网格变形,因此它可以解释训练集的较低结果。

不过,我不知道我是否可以接受这种结果?

2个回答

只有 12 个样本的验证集太小,无法考虑部署在验证集上表现良好的模型。

在具有 110 个样本的训练集上表现良好,然后在小型验证集上表现更好的模型会更可取。

由于您的集合太小,尽管它并不谨慎,您应该考虑在整个 120 个样本上运行模型,看看它在整个数据集上的表现如何。

我认为您无法获得更多样品,如果可以,那将是一个很好的步骤。

使用测试集是为了防止我们在所有可用数据上过度拟合模型

所以,我们对一组数据进行所有训练/调整,然后在未知集上对其进行测试。
它让我们相信模型是通用的(尽管它可能仍然在新数据上失败),但这是我们可能做的最好的事情。
即使我知道它没有正确地学习训练集,它也不意味着测试集上的好分数很好
它正在发生(很可能)因为你的测试集非常小


作为一个类比,让我们假设你的训练集有20 个不同的方差(用非常简单的术语来说),你的模型学习了其中的 14 个。
您的测试集只有 5 个方差,其中 4 个来自 14 个。所以,它会给出一个不错的分数,但是您应该期望在实际场景中,该模型将在 7 out of 21(33%) 上失败

- 尝试使用更大的测试集和更小的训练集(70/30),看看会发生什么
- 尝试使用小K 值的 K-Fold,即 3/5