何时停止训练神经网络?

Posted

技术标签:

【中文标题】何时停止训练神经网络?【英文标题】:When to stop training neural networks? 【发布时间】:2016-04-08 19:45:42 【问题描述】:

我正在尝试使用 RNN 进行特定领域的分类研究,并积累了数千万条文本。由于运行整个数据集需要几天甚至几个月的时间,我只选择了一小部分进行测试,比如 100 万个文本(80% 用于训练,20% 用于验证)。我使用词向量化对整个语料库进行了预训练,并将 Dropout 应用于模型以避免过度拟合。当它在 12 小时内训练 60000 条文本时,损失已经下降到相当低的水平,准确率达到 97%。我应该继续还是不继续?是否有助于继续培训?

它仍在运行第一个 epoch,如果我现在停止,恐怕模型不会覆盖整个...

【问题讨论】:

【参考方案1】:

作为一般经验法则,您可能希望让模型保持在训练阶段,直到验证开始下降几个连续的迭代。在那之后,模型已经对数据进行了过度拟合。对于您的问题,由于训练模型需要很长时间,我建议您在第一个 epoch 之后停止训练并测试模型并确保代码中没有实现错误。如果模型具有可接受的准确度,则重新开始训练。

【讨论】:

嗯,所以你建议我让它运行至少直到第一个 epoch 结束,看看验证损失是什么样子的?我发现自己陷入了两难境地,如果我使用整个数据集来训练模型,那可能是浪费时间,而如果我只使用数据集的一部分,那将是浪费数据......那可能算是一种权衡吧…… 是的。对于大规模问题,明智的决定是在一段时间后停止训练,测试模型以确保它获得可接受的准确性,然后让它再次训练。假设每个 epoch 需要 1 天。在 1 天后停止训练并确保模型运行良好(并且代码没有错误)而不是浪费 10 天然后发现模型有问题不是更好吗? 感谢您的建议。我选择你的作为最终答案。

以上是关于何时停止训练神经网络?的主要内容,如果未能解决你的问题,请参考以下文章

XOR 神经网络误差在训练期间停止减少

如何在 TensorFlow 1.4 中使用提前停止来训练深度神经网络?

在 scikit-learn 中训练神经网络时提前停止

为啥 Keras Early Stopping 功能不会停止训练,虽然监测值在增加?

TensorFlow 的 ParameterServerStrategy 何时优于其 MultiWorkerMirroredStrategy?

Azure 触发的 Webjob - 检测 webjob 何时停止