防止CNN的卷积层中的过度拟合

Aen*_*ed1 13 conv-neural-network tensorflow

我正在使用TensorFlow为手语应用程序训练卷积神经网络(CNN).CNN必须对27种不同的标签进行分类,因此不出所料,一个主要问题是解决过度拟合问题.我已经采取了几个步骤来实现这一目标:

  1. 我收集了大量高质量的培训数据(每个标签超过5000个样本).
  2. 我已经建立了一个相当复杂的预处理阶段,以帮助最大限度地提高照明条件等方面的不变性.
  3. 我在完全连接的层上使用了dropout.
  4. 我正在将L2正则化应用于完全连接的参数.
  5. 我已经进行了广泛的超参数优化(尽可能给定硬件和时间限制),以确定最简单的模型,可以在训练数据上实现接近0%的损失.

不幸的是,即使在所有这些步骤之后,我发现我无法在3%的测试错误上获得更好的效果.(这并不可怕,但为了使应用程序可行,我需要大幅改进.)

我怀疑过度拟合的根源在于卷积层,因为我没有采取任何明确的步骤来规范化(除了保持层尽可能小).但是基于TensorFlow提供的示例,似乎不会将正则化或丢失通常应用于卷积层.

我在网上发现的唯一一种明确涉及防止卷积层过度拟合的方法是一种称为随机池的相当新的方法.不幸的是,似乎在TensorFlow中没有实现这一点,至少现在还没有.

那么简而言之,是否有一种推荐的方法可以防止在TensorFlow中实现的卷积层过度拟合?或者是否有必要创建自定义池操作符以支持随机池方法?

谢谢你的指导!

Mar*_*oma 15

我该如何对抗过度拟合?

我怎样才能改善我的CNN?

托马,马丁." 卷积神经网络架构的分析与优化 ".arXiv preprint arXiv:1707.09725(2017).

有关分析技术,请参见第2.5章.如该章开头所述,您通常可以执行以下操作:

  • (I1)更改问题定义(例如,要区分的类)
  • (I2)获取更多培训数据
  • (I3)清理训练数据
  • (I4)改变预处理(见附录B.1)
  • (I5)增加训练数据集(见附录B.2)
  • (I6)更改培训设置(参见附录B.3至B.5)
  • (I7)更改模型(参见附录B.6和B.7)

杂项

CNN必须对27种不同的标签进行分类,因此不出所料,一个主要问题是解决过度拟合问题.

我不明白这是如何联系的.您可以拥有数百个标签而不会出现过度拟合问题.