@songying
2019-03-23T22:38:04.000000Z
字数 1782
阅读 5188
deep-learning
paper: Early Stopping — But When?
花书
early stoping 是一种正则化方式,其可以单独使用或与其他正则化策略一起使用。
early stoping 的步骤如下:
- 将训练数据划分为训练集和测试集
- 仅仅在训练集上训练,并在一段时间间隔内在测试集上预测
- 当验证集上的误差高于上次时立即停止训练。
- 使用上一时刻中所得的权重来作为最终权重
在这个过程中,验证集实际上是作为评测模型泛化误差的估计值。
early stoping带来了两个额外的代价;
- 需要不时的来通过验证集来评估泛化误差以估算最佳的训练时间
- 需要保持最佳的参数副本
训练误差会随着时间的推移逐渐降低但验证集的误差却再次上升,这意味着模型发生了过拟合,此时可以采用early stoping 来获取在验证集上表现最佳的参数。如下图所示:
在现实中,我们往往不能获得像上图中那么漂亮的曲线,我们获得的曲线往往是这样的:
实际中,验证集误差往往有多个局部极小值点,这阻碍了我们选择最佳的参数位置。何时停止实际上是对训练时间和泛化误差之间的权衡,我们的目的就是选择一个何时的标准。
第一个策略
当泛化损失大于某个阈值时立即停止
第二个策略
有时,第一个策略生效时训练误差依旧在快速减小,而我们假定过拟合仅仅发生在训练误差变化缓慢时。我们采用k来表示 k 个epoch 间隔,此时有:
第三个策略
当s个连续时刻的泛化误差增大时停止。该策略假设当验证集平均误差不仅增加了一次,而且在连续多个时刻增加时,这表明过拟合的开始,与实际增加的多少无关。
补充策略
由于以上的策略不能保证一定终止,因此设定当epoch 最多?时就停止训练。
一般而言,slower 标准比 faster 标准能够更好的提高泛化。
early stopping 可以将优化过程中的参数空间控制在初始参数值 的小邻域内。具体来说,通过限制迭代的次数以及学习速率就能够限制 的邻域空间大小(花书中有相关证明)
为了更好的利用所有数据,我们需要在完成 early stopping的首次训练之后进行第二轮的训练,在第二轮中,所有的数据都被包括在内。对此我们有两个基本策略
策略1
再次初始化模型,然后使用所有数据再次训练。在第二轮训练中,我们采用第一轮提取终止训练确定的最佳步数。
策略2
保持从第一轮训练获得的参数,然后使用验证集的数据继续训练,直到验证集的平均损失函数低于提前终止过程终止时的目标值。(不能保证能低于目标值,因此可能无法终止)