【问题标题】:How to overcome overfitting in CNN - standard methods don't work如何克服 CNN 中的过拟合——标准方法不起作用
【发布时间】:2018-07-14 10:36:00
【问题描述】:

我最近一直在研究斯坦福 (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% 的准确率吗?

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

【问题讨论】:

  • 50% 的验证准确率意味着,它并不比随机的好。您的训练集是否类似于验证集?如果所有架构都失败了,那一定与此有关。训练批次被打乱了?
  • @Littleone 他有 196 个类,所以随机的准确率约为 0.5%。

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


【解决方案1】:

您应该尝试的事情包括:

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

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

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

干杯

【讨论】:

  • 类相当平衡,因为每个类有大约 80-90 张图像,训练/验证拆分为 50%/50%。至于其余的,我玩了一点超参数,但会尝试更多。代码是基于 Keras 的。我使用了在 ImageNet 上预训练的 VGG16 ready mande 模型。
  • 模特base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3)) x = Flatten()(base_model.output) x = Dense(4096, activation='relu')(x) x = BatchNormalization()(x) x = Dropout(dropoutRate)(x) x = Dense(4096, activation='relu')(x) x = BatchNormalization()(x) x = Dropout(dropoutRate)(x) pred = Dense(len(classes), activation='softmax', kernel_initializer='random_uniform', bias_initializer='random_uniform', bias_regularizer=regularizers.l2(0.01), name='predictions')(x) model = Model(inputs=base_model.input, outputs=pred)
  • 顺便说一句。您认为对于呈现的数据集而言,什么样的准确性是好的?最初我认为是 80-90%,但现在我认为 70% 将是一个非常好的结果:)
【解决方案2】:

对于那些遇到同样问题的人,我主要通过处理 dropout、学习率和学习衰减来获得 66.11% 的准确率。

在 VGG16 架构上取得了最好的结果。

模型在https://github.com/michalgdak/car-recognition

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 2021-12-31
    • 2018-01-19
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2014-04-06
    • 2021-09-03
    相关资源
    最近更新 更多