首页 > 解决方案 > 在大容量网络上训练少量数据

问题描述

目前我正在使用卷积神经网络来解决二进制分类问题。我使用的数据是 2D 图像,训练数据的数量只有20,000-30,000左右。在深度学习中,众所周知,如果模型相对于训练数据量而言过于复杂,则会出现过拟合问题。因此,为了防止过度拟合,使用了简化模型或迁移学习。

由于训练数据量少,以前同领域的开发者并没有使用大容量模型(大容量意味着大量的模型参数)。他们中的大多数使用小容量模型和迁移学习。

但是,当我尝试从头开始训练大容量模型(基于 ResNet50、InceptionV3、DenseNet101)的数据时,这些模型有大约1000 万到 2000 万个参数,我在测试集中获得了很高的准确率。(注意训练集和测试集是完全分开的,我使用early stopping来防止过拟合)

在 ImageNet 图像分类任务中,训练数据约为 1000 万。所以,我也认为我的训练数据量与模型容量相比非常小。

这里我有两个问题。

1)即使我得到了很高的准确率,有什么理由不应该在高容量模型上使用少量数据?

2) 为什么它表现良好?即使数据量和模型参数数量之间存在(非常)大的差距,像提前停止这样的技术可以解决问题吗?

标签: deep-learning

解决方案


1)您完全正确,在使用大型模型时,少量的训练数据可能会出现问题。鉴于您的最终目标是实现“高精度” ,如果实际性能对您来说是令人满意的,那么这个理论上的限制不应该过多地打扰您。当然,您可能总是做得更好,但如果测试数据上的分数是合法的并且您对此感到满意,我认为您的工作流程没有问题。

2)首先,我相信 ImageNet 由 1.X 百万张图像组成,因此在数据方面让您更接近一些。以下是我能想到的一些想法:

  • 你的问题比 ImageNet 更容易解决
  • 您使用图像增强来综合增加图像数据
  • 您的测试数据与训练数据非常相似

另外,不要忘记 30,000 个样本意味着 (30,000 * 224 * 224 * 3 =) 45 亿个值。这应该会让 1000 万个参数的网络很难简单地记住你的数据。

3) 欢迎来到 StackOverflow


推荐阅读