在大容量网络上训练少量数据

时间:2019-03-22 08:36:55

标签: deep-learning

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

由于训练数据量少,同一领域的先前开发人员未使用大容量模型(大容量意味着大量模型参数)。他们大多数使用小容量模型和转移学习。

但是,当我尝试在高容量模型(基于ResNet50,InceptionV3,DenseNet101)上训练数据时,从头开始,这些模型具有 1000万至2000万个参数< / strong>,测试集的准确性很高。 (请注意,训练集和测试集是完全分开的,为了避免过拟合,我尽早停止了运动。)

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

这里我有两个问题。

1)即使我获得了很高的准确性,是否有任何理由为什么我不应该在大容量模型上使用少量数据呢?

2)为什么表现良好?即使在数据量和模型参数数量之间存在(非常大的)差距,诸如早期停止之类的技术也可以解决问题?

1 个答案:

答案 0 :(得分:0)

1)完全正确的是,使用大型模型时,少量训练数据可能会出现问题。鉴于您的最终目标是实现“高精度”,如果实用的性能对您来说令人满意,那么理论的限制就不会让您感到困扰。当然,您可能总是会做得更好,但是如果测试数据的分数合理且对它感到满意,我的工作流程就不会出现问题。

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

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

此外,不要忘记30,000个样本意味着(30,000 * 224 * 224 * 3 =)45亿个值。这样一来,一个拥有一千万个参数的网络很难简单地记住您的数据。

3)欢迎使用StackOverflow