【问题标题】:How to train the final Neural Network model after cross validation?交叉验证后如何训练最终的神经网络模型?
【发布时间】:2018-03-08 08:41:54
【问题描述】:

这是我一直面临的问题,但似乎在任何地方都找不到答案。我有一个包含 700 个样本的数据集。因此,我必须使用交叉验证,而不是只使用一个验证和一个测试集来接近估计错误。

我想使用神经网络来做到这一点。但是在使用神经网络进行 CV 并获得错误估计之后,我如何在整个数据集上训练 NN?因为对于逻辑回归或 SVM 等其他算法,不存在何时停止训练的问题。但是对于 NN,您需要对其进行训练,直到您的验证分数下降。那么,对于最终的模型,在整个数据集上进行训练,你怎么知道什么时候停止呢?

为了清楚起见,我的问题不在于如何使用 NN 选择超参数。我可以通过使用嵌套的 CV 来做到这一点。我的问题是如何在整个数据集上训练最终的神经网络(什么时候更具体地停止),然后再将其应用到野外?

【问题讨论】:

  • 我有点困惑:“因为对于逻辑回归或 SVM 等其他算法,您可以在 10 种情况之一中使用参数以获得最佳结果。”为什么你觉得这些算法是这样,而神经网络却不是这样?
  • NN 也是如此,而不是我的问题。已编辑。

标签: python validation machine-learning neural-network conv-neural-network


【解决方案1】:

重新表述你的问题:

“在训练神经网络时,一个常见的停止标准是“早期停止标准”,它会在验证损失增加时停止训练(信号过度拟合)。对于训练样本很宝贵的小数据集,我们更愿意使用一些其他标准,并使用 100% 的数据来训练模型。”

我认为这通常是一个难题,因此您没有找到简单的答案我并不感到惊讶。我认为你有几个选择:

  1. 添加有助于防止过拟合的正则化(例如 Dropout 或 Batch Normalization)。然后,使用训练损失作为停止标准。您可以看到这种方法如何在不使用提前停止来确保模型没有过度拟合的情况下在验证集上执行。
  2. 确保不要过度配置模型。较小的模型将更难过拟合。
  3. 看看本文中描述的停止标准,它不依赖于验证集:https://arxiv.org/pdf/1703.09580.pdf

最后,你不能在这里使用神经网络。通常,这些模型在处理大量训练数据时效果最好。在这种有 700 个样本的情况下,您可能会使用另一种算法获得更好的性能。

【讨论】:

  • 感谢您指出我可以解决的一些方法。在这种情况下似乎没有商定的方法。
猜你喜欢
  • 2014-04-20
  • 2020-08-24
  • 2021-07-20
  • 1970-01-01
  • 2017-04-22
  • 2011-04-07
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多