【问题标题】:Validation loss when using Dropout使用 Dropout 时的验证丢失
【发布时间】:2018-01-23 02:49:59
【问题描述】:

我试图了解 dropout 对验证平均绝对误差的影响(非线性回归问题)。

无辍学

辍学率为 0.05

辍学率为 0.075

1 所示,在没有任何丢失的情况下,验证损失超过了训练损失。我的理解是,验证损失应该只比训练损失稍微多一点。

小心地,我增加了 dropout,使验证损失接近于训练损失,如 2 所示。 dropout 仅在训练期间应用,而不是在验证期间应用,因此验证损失低于训练损失。

最终dropout进一步增加,验证损失再次超过3中的训练损失。

这三个中哪一个应该被称为合适的?

根据 Marcin Możejko 的回复,我针对 4 中所示的三个测试进行了预测。 “Y”轴显示 RMS 误差而不是 MAE。 “没有 dropout”的模型给出了最好的结果。

【问题讨论】:

  • 你也在使用keras提供的验证功能吗?
  • 是的,80% 用于训练,20% 用于验证。

标签: validation machine-learning neural-network deep-learning keras


【解决方案1】:

嗯 - 这是一个非常好的问题。在我看来 - 最低的验证分数(在单独的测试集上确认)是最合适的。最后请记住 - 你的模型在全新数据上的表现是最关键的,它在训练集上表现得更好这一事实并不那么重要。

此外-我认为您的模型通常可能不适合-您可以尝试将其扩展到例如拥有更多层或神经元,并使用dropout 对其进行一些修剪,以防止示例记忆。

如果我的假设被证明是错误的 - 请记住 - 仍然可能存在某些数据模式仅存在于验证集上(这在中等规模数据集的情况下相对常见)是什么导致训练和测试的分歧损失。此外 - 我认为,即使在没有 dropout 的情况下您的损失值已经饱和,但通过简单地增加 epoch 的数量仍有改进的空间,因为似乎有损失更小的趋势。

我建议您尝试的另一种技术是降低高原学习率(使用示例 this 回调),因为您的模型似乎需要使用较低的学习率进行细化。

【讨论】:

  • 感谢您的回复。我已经在 OP 中添加了“测试”的结果。
  • 您认为为什么会出现欠拟合?我想这是参考没有辍学的模型。欠拟合是指训练和验证损失相似,但误差较大。不确定您所说的“仍然可能存在某些数据模式仅出现在验证集上,这导致了训练和测试损失的差异”。您是否建议在我的情况下,交叉验证错误不如测试错误值得信赖。
  • 我的意思是,有时你的错误来自于训练集中某些数据点的代表性不足导致的简单分裂偏差。我所说的欠拟合是指给定更大的模型容量——由于它,它实际上可以捕捉到更多的细微之处——两种损失都应该减少。
  • 我的回答不正确吗?如果不是 - 我将不胜感激并接受它:)
  • 我还得再问一遍:你看到的曲线的哪一部分让你认为发生了欠拟合?据我所知,您需要了解数据、更好的指标以及可比较的数据集来判断这一点。
猜你喜欢
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多