【问题标题】:Train Accuracy increases, Train loss is stable, Validation loss Increases, Validation Accuracy is low and increasesTrain Accuracy 增加,Train loss 稳定,Validation loss 增加,Validation Accuracy 低且增加
【发布时间】:2020-04-21 11:27:10
【问题描述】:

我在 pytorch 中的神经网络训练变得非常奇怪。

我正在训练一个已知数据集,该数据集分为训练和验证。 我在训练期间对数据进行洗牌,并在飞行中进行数据扩充。

我有这些结果:

训练准确率从 80% 开始并增加

火车损失减少并保持稳定

验证准确率从 30% 开始,但会缓慢增加

验证损失增加

我有以下图表要显示:

  1. 如何解释验证损失增加和验证准确度增加?

  2. 验证集和训练集之间的准确度差异为何如此之大? 90% 和 40%?

更新:

我平衡了数据集。 是二分类。现在它有来自第 1 类的 1700 个示例,来自第 2 类的 1200 个示例。总共有 600 个用于验证,2300 个用于训练。 我仍然看到类似的行为:

**可能是因为我冻结了部分网络的权重吗?

**可能是因为像 lr 这样的超参数吗?

【问题讨论】:

  • 二分类还是更多类?
  • 二进制分类
  • 我猜是不平衡的,对吧?
  • 它们是平衡的(3000 vs 1200)
  • 很难说没有数据。实验为王。对于初学者,我会增加 val 集的大小,以“确定”指标是可靠的,并且不会因为样本量小而产生虚假。

标签: machine-learning neural-network pytorch training-data loss


【解决方案1】:

我找到了解决方案: 我对训练集和验证集进行了不同的数据扩充。匹配它们也提高了验证的准确性!

【讨论】:

    【解决方案2】:

    如果训练集与验证集相比非常大,您更有可能过度拟合和学习训练数据,这会使模型的泛化变得非常困难。我看到您的训练准确度为 0.98,而您的验证准确度以非常缓慢的速度增加,这意味着您的训练数据过度拟合。

    尝试减少训练集中的样本数量,以提高模型对未知数据的泛化能力。

    【讨论】:

    • 我的训练数据确实大于验证。大约 5000 次训练和 200 次验证。但是为什么大的训练规模会导致过拟合呢?样本数量少会导致过拟合!
    • @BestR 问题不在于大的训练集,而在于太小的验证集。请记住,为了使所有这些统计数据(损失、准确性等)有效,隐含地假设了一个足够大的基础数据集,否则结果可能是虚假的,实际上并不具有代表性
    • 如果您总共有 5200 个样本,您应该使用 60:40 或 70:30 的拆分进行训练:验证
    • 数据集是这样来的。我会尝试平衡并报告
    • @kynnem 我更新了结果。我仍然看到类似的行为。
    猜你喜欢
    • 2019-01-13
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多