分类任务,当测试集分布不同时,结果也不同



我正在使用conv网络对图像进行分类。多类问题(得12个类)

我的训练集是 3500 张图像,类未平衡(例如 A 类 = 1200 图像,B 类 = 50 张图像)。我使用类权重来对抗不平衡和数据增强

编辑数据增强是使用Keras功能,只做旋转和翻转。 我只扩充训练集

由于我的一些班级的数据非常小,我做了一个 60% 训练/20% 验证/20% 测试集(即对于 B 类,我得到了 30 个训练数据/10 个验证数据/10 个测试数据)

然后我做了不同的拆分,每次都有不同的训练/验证和测试数据 结果稳定=>我的指标(微型 F1 分数)不会随着不同的拆分而发生太大变化,混淆矩阵告诉我没有类效应:不同的拆分并不意味着给定类的不同结果

现在,我将我的模型应用于没有标签的集合。大约 10 000 张图像。 结果非常差:当我在测试集上获得 B 类 60% 的精度分数时,我的精度约为 5%,没有标签的集合

我的问题:

会不会是过配了?当我停止训练模型时,训练损失 = 0.3/训练 F1 = 95%。验证损失 = 0.7/验证 F1=80% 我不这么认为,因为验证损失不会增加(我在模型增加之前停止模型)

我可以调查什么来理解为什么我的结果在具有 10 000 个数据的新集合上如此糟糕(当我说我的结果时,我说的是精度,因为这是我可以为某些类轻松计算的唯一一个指标)

可能是你过度拟合了,因为你的模型正在学习一小组被增强的B类图像。增强会产生更多的数据,但本质上图像的内容保持不变。如果您新的未标记的 B 类图像与训练图像相似,那么您不应该有此问题,但如果它们不同,那么您将遇到此问题。也可以在增强图像上训练模型,但仅在原始图像上进行验证,以防止过度拟合并帮助模型更好地泛化。看看这个链接。

您可以尝试的另一件事是从其他类中获取一小部分样本,并在不进行增强的情况下训练新模型,然后测试图像。这将为您澄清模型是否过度拟合增强数据。

如果您只在 Keras 中进行基本增强,您也可以尝试 GAN 等高级增强技术。如果可能,请使用增强步骤更新您的问题。

最新更新