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

时间:2018-02-04 12:08:11

标签: machine-learning neural-network deep-learning artificial-intelligence conv-neural-network

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

  1. 添加正则化(L2,dropout,batch norm,...)
  2. 尝试了不同的架构(VGG16,VGG19,InceptionV3,DenseNet121,......)
  3. 尝试使用ImageNet培训模型进行trasnfer学习
  4. 使用过的数据扩充
  5. 每一步都让我前进了一步。然而,我完成了50%的验证准确度(开始低于20%),相比之下,列车准确率达到99%。

    您是否知道我还能做些什么来达到80-90%的准确率?

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

2 个答案:

答案 0 :(得分:2)

你应该尝试的事情包括:

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

其他一般性建议可能是尝试在此特定数据集上复制最先进的模型,看看它们是否按预期运行。
 还要确保完成所有实现细节(例如,沿着宽度和高度执行卷积,而不是沿着通道维度执行 - 例如,这在开始使用Keras时是一个经典的新手错误。)

有关您正在使用的代码的更多详细信息也会有所帮助,但现在这些建议都可以 无论如何,200级问题的50%准确率听起来并不那么糟糕。

干杯

答案 1 :(得分:0)

对于那些遇到同样问题的人,我主要通过辍学,学习率和学习衰退来获得66,11%的准确率。

VGG16架构取得了最好的成果。

该模型位于https://github.com/michalgdak/car-recognition