我对如何定义早期停止技术的想法感到有些困扰和困惑。如果你看一下它Wikipedia,它的定义如下:
- 将训练数据分成训练集和验证集,例如以 2 比 1 的比例。
- 仅在训练集上进行训练,并偶尔评估验证集上的每个示例错误,例如在每五个 epoch 之后。
- 一旦验证集上的错误高于上次检查时,立即停止训练。
- 使用网络在上一步中作为训练运行的结果的权重。
我自己在实验中使用了这种方法(使用 10 倍交叉验证)。我正在检查每个时期的验证错误(并计算验证准确性)并将耐心参数设置为 2。这意味着,如果验证错误连续 2 个时期增加 - > 停止训练。然后我在模型完成时使用了最后一个 epoch 的结果。
Ian Goodfellow 在他的深度学习书中使用了另一个定义。作为第四步,他建议使用最佳工作模型的权重(即每次检查验证错误时保存模型)。
我不需要保存的模型,我只需要我工作的结果。所以对我来说,Goodfellow 提议的提前停止意味着我将采用我为最终结果达到的最高验证准确度?不知何故,这似乎不合法。在没有开发集的情况下,我没有这些信息。但是在那种情况下,首先使用提前停止的原因是什么?通过例如平均折叠的时期数来确定时期数并将其用于稍后的测试运行?