训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升,这种现象几乎一定会发生。这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并且因此有希望获得更好的测试误差)。在每次验证集误差有所改善后,当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。
超参数的训练
超参数在验证集上具有 U 型性能曲线。很多控制模型容量的超参数在验证集上都是这样的 U 型性能曲线 。在提前终止的情况下,我们通过控制拟合训练集的步数来控制模型的有效容量。大多数超参数的选择必须使用高代价的猜测和检查过程,我们需要在训练开始时猜测一个超参数,然后运行几个步骤检查它的训练效果。 ‘‘训练时间’’ 是唯一只要跑一次训练就能尝试很多值的超参数。通过提前终止自动选择超参数的唯一显的代价是训练期间要定期评估验证集。在理想情况下,这可以并行在与主训练过程分离的机器上,或独立的 CPU,或独立的 GPU 上完成。如果没有这些额外的资源,可以使用比训练集小的验证集或较不频繁地评估验证集来减小评估代价,较粗略地估算取得最佳的训练时间。
提前终止的训练策略
提前终止无需破坏学习动态就可以实现。提前终止需要有验证集,一般有两个训练的步骤:
提前终止 为什么具有正则化的效果
想象用学习率 ϵ 进行 τ 个优化步骤(对应于 τ 个训练迭代)。我们可以将 ϵτ 作为有效容量的度量。假设梯度有界,限制迭代的次数和学习速率能够限制从θ0 到达的参数空间的大小,如图 7.4 所示。在这个意义上, ϵτ 的效果就好像是权重衰减系数的倒数。