使用 Dropout 时的验证损失

tru*_*mee 8 validation machine-learning neural-network deep-learning keras

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

不辍学

在此处输入图片说明

辍学率为 0.05

在此处输入图片说明

辍学率为 0.075 在此处输入图片说明

在没有任何 dropout 的情况下,验证损失大于训练损失,如图1所示。我的理解是验证损失应该只比训练损失稍微多一点才能很好地拟合。

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

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

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

根据 Marcin Mo?ejko 的回应,我预测了三个测试,如图4所示。“Y”轴显示 RMS 误差而不是 MAE。“没有辍学”的模型给出了最好的结果。

在此处输入图片说明

Mar*_*jko 5

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

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

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

我建议您尝试的另一种技术是降低平台上的学习率(使用回调示例),因为您的模型似乎需要以较低的学习率进行改进。