【问题标题】:Overfitting, underfitting or good fit?过拟合、欠拟合还是良好拟合?
【发布时间】:2018-03-28 01:01:28
【问题描述】:

所以我为二进制文本分类任务训练了一个 lstm rnn,我在理解损失结果时遇到了一些问题。训练集大约有 700 000 个示例,验证集大约有 35000 个示例。 验证集和训练集是独立的,所以我没有对验证集中的数据进行训练。 从我在学校学到的知识以及在查看其他一些帖子时,验证损失应该略高于训练损失,才能很好地适应。但是,在我的情况下,您可以看到验证损失波动很大。我正在使用二元交叉熵作为损失函数。

自从我将批大小设置为 128 以来,我每 300 批训练数据运行验证集。因此,每 300 批训练数据意味着算法已经大致通过验证集的大小,因此每 300 批感觉就像一个很好的测量点。

我不太明白如何解释这些结果。准确率很好,在 3 个 epoch 后的验证集上约为 79%,在训练集上为 78-82%。但我不确定我是否过拟合/欠拟合。

不要介意 x 轴标签,它们的格式很奇怪。这张照片是在大约 3 个完整的 epoch 之后,刚刚开始第 4 个。 '

【问题讨论】:

  • 训练集是否包含验证集,或者它们是独立的?
  • 他们是独立的

标签: tensorflow machine-learning neural-network lstm rnn


【解决方案1】:

如果训练和验证是独立的,你似乎没有过拟合:你的训练和验证错误非常接近。如果您的验证损失开始增加,而您的训练继续减少,则说明您倾向于过度拟合,但这里不是这种情况。

您是否欠拟合更难判断,并且很大程度上取决于问题和您的数据。

验证损失波动的事实是绝对正常的。尤其是与您的训练集相比,它有点小。

为了更多地了解您的模型,您可以计算其他指标,例如 F1 socre、ROC、precision-recall 曲线等。

另一件有趣的事情是查看一些输入和预测输出对,以更准确地了解正在发生的事情:尤其是假阳性和假阴性。

一个非常重要的步骤是尝试使用 Sobol 指数 (ANOVA) 或 SHAP values 等敏感性分析技术“解释”您的模型行为。

【讨论】:

  • 感谢您的反馈,我会尝试一些建议的东西。你什么时候建议我停止训练,因为验证损失会波动,如果它增加一次,我就不能停止训练。我应该等到它连续增加几批吗?
  • 经典的“提前停止”策略包括在p 步骤(p 是一个整数超参数)没有达到最小验证损失时停止训练。请注意,您不应将相同的数据集用于提前停止和最终验证,以避免过度拟合和增加偏差
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 2019-02-10
  • 2020-01-11
相关资源
最近更新 更多