如何克服 CNN 中的过度拟合 - 标准方法不起作用

Mic*_*dak 5 artificial-intelligence machine-learning neural-network deep-learning conv-neural-network

我最近一直在玩斯坦福大学的汽车数据集(http://ai.stanford.edu/~jkrause/cars/car_dataset.html)。从一开始我就有一个过度拟合的问题,所以决定:

  1. 添加正则化(L2,dropout,batch norm,...)
  2. 尝试了不同的架构(VGG16、VGG19、InceptionV3、DenseNet121……)
  3. 尝试使用在 ImageNet 上训练的模型进行传输学习
  4. 使用的数据增强

每一步都让我前进了一点。然而,与 99% 的训练准确度相比,我完成了 50% 的验证准确度(开始时低于 20%)。

你知道我还能做什么才能达到 80-90% 左右的准确率吗?

希望这可以帮助一些人!:)

Dan*_*ola 5

你应该尝试的事情包括:

  • 提前停止,即使用您的一部分数据来监控验证损失并在某些时期的性能没有提高时停止训练。
  • 检查您是否有不平衡的类,使用类权重来平均表示数据中的每个类。
  • 正则化参数调优:不同的l2系数,不同的dropout值,不同的正则化约束(例如l1)。

其他一般性建议可能是尝试在这个特定数据集上复制最先进的模型,看看它们是否表现得像他们应该的那样。
还要确保解决所有实现细节(例如,卷积是沿着宽度和高度执行的,而不是沿着通道维度执行的——例如,这是开始使用 Keras 时的典型新手错误)。

了解有关您正在使用的代码的更多详细信息也会有所帮助,但现在这些建议将起作用。
无论如何,200 级问题的 50% 准确率听起来还不错。

干杯