【问题标题】:Model underfitting模型欠拟合
【发布时间】:2020-01-26 01:48:53
【问题描述】:

我已经训练了一个模型,我花了很长时间才找到正确的超参数。 该模型现在已经训练了 15 小时,并且它似乎可以很好地完成工作。

不过,当我观察到训练和验证损失时,训练损失略高于验证损失。 (红色曲线:训练,绿色:验证)

我使用 dropout 来规范我的模型,据我所知,dropout 仅在训练期间应用,这可能是原因。

现在我想知道我是否训练了一个有效的模型? 模型似乎没有严重欠拟合?

提前感谢您的任何建议,

干杯,

M

【问题讨论】:

    标签: keras deep-learning


    【解决方案1】:

    首先,检查您是否有良好的数据集,即如果是分类,则为所有类获取相同数量的图像,并从同一来源而不是从不同来源获取。而正则化、dropout 用于过度拟合/高方差,所以不用担心这些。

    然后,我认为当你训练你的模型时你的模型做得很好,它们之间的初始误差是不同的,但是随着你增加时期,它们都进入了一些稳定的路径。所以很好。这可能是我上面提到的原因,或者您应该尝试将它们打乱,然后使用 train_test_split 以获得更好的训练和验证集分布。 如果满足以下条件,则学习曲线图显示良好拟合:

    1. 训练损失图减小到稳定点。
    2. 验证损失图减小到稳定点,并与训练损失有一个小的差距。

    在您的情况下,这些条件都已满足。

    如果你想处理高偏差/欠拟合,那么这里有几个方法:

    1. 训练更大的模型
    2. 训练时间更长。使用更好的优化技术
    3. 尝试不同的神经网络架构和超参数

    您还可以使用交叉验证或 GridSearchCV 来寻找更好的优化器或超参数,但这可能需要很长时间,因为考虑到您的时间是 15 小时,您每次都必须在不同的参数上训练它,然后可能会很长但你会找到更好的参数,然后对其进行训练。

    首先,我认为你的模型做得很好。

    【讨论】:

    • 您好,感谢您的 cmets。我继续训练了 200 个 epoch,训练损失不断减少,而验证损失保持不变。所以我想我只需要继续训练直到收敛。我什至尝试了更高的学习率,但训练效果不如以前。
    • 在您的问题中,是什么让您认为该模型无效。我想说的是你的学习曲线很好。根据图表,我认为可能是您拆分的数据集,从验证集中,算法没有学习,即无法在验证集中找到所有必需的特征,这就是验证学习曲线存在干扰的原因。因此,请尝试正确地对数据集进行 shuffle 或 split。并尝试我提到的不同方法,不仅是 learning_rate。希望这可以帮助。随时问。
    【解决方案2】:

    如果你的模型underfits,它的性能会比较低,类似于overfitting的情况,因为实际上它不能有效地学习得到最优的结果,即适合给定分布的适当函数。所以你必须使用较少的正则化技术,例如减少 dropout 以获得最佳结果。

    此外,采样也很重要,因为可能存在训练验证子集,您的模型在验证集上表现良好,而在训练集上效果较差,反之亦然。这也是我们使用 crossvalidation 和不同采样方法(例如分层 k 倍。

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2013-12-19
      相关资源
      最近更新 更多