使用Dropout时验证丢失

时间:2018-01-23 02:49:59

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

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

没有辍学

enter image description here

退出0.05

enter image description here

退出0.075 enter image description here

没有任何辍学,验证损失超过训练损失,如1所示。我的理解是,验证损失应该仅略微超过训练损失以获得良好的适应性。

小心地,我增加了辍学率,以便验证损失接近2中所见的训练损失。辍学仅适用于培训期间而非验证期间,因此验证损失低于培训损失。

最后,辍学率进一步增加,验证损失再次超过3中的训练损失。

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

根据MarcinMożejko的回应,我预测了4中显示的三项测试。 'Y'轴显示RMS错误而不是MAE。 “没有辍学”的模型给出了最好的结果。

enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

如果我的假设被证明是错误的 - 请记住 - 有可能某些数据模式只存在于验证集上(这在中型数据集的情况下相对常见)是什么导致了火车和测试的分歧失利。此外 - 我认为即使你的损失价值在没有辍学的情况下已经饱和,但由于似乎存在损失趋势较小的趋势,因此时代数量的增加仍有改善的空间。

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