核心要点
监控验证集 loss/指标,而非训练 loss——后者会持续下降掩盖过拟合
patience:验证指标连续 N 个 epoch 不改善才停,容忍正常波动
保存并回退到验证集表现最佳的 checkpoint,而非最后一个 epoch
本质是隐式正则:限制有效训练时长,把模型停在泛化最好的点
标准回答
原理
训练过程中,训练 loss 一般单调下降,但验证集 loss 会先降后升:拐点之前模型在学习通用规律,拐点之后开始记忆训练集噪声即过拟合。早停就是在验证指标停止改善时及时终止训练,把模型固定在泛化最优附近。
关键机制
- 监控指标:用独立验证集的 loss 或准确率等,不能用训练集指标。
- patience(耐心值):允许验证指标连续 N 个 epoch 没有提升才真正停止,避免被短期噪声误触发。
- 回退最优:记录验证指标最好时的权重,停训后恢复该 checkpoint,而不是用最后一个 epoch 的权重。
- min_delta:只有改善超过某阈值才算"有提升",进一步抗噪。
为什么算正则化
它限制了优化的有效迭代次数,等效于约束模型复杂度的增长,故被视为一种隐式正则化,常与 Dropout、权重衰减等显式正则手段并用。
常见误区
⚠️ 常见踩坑
用训练集或测试集来触发早停都是错的——前者无法反映过拟合,后者会造成信息泄露;patience 太小易被噪声误停,太大则失去早停意义。
追问
追问 1:早停和 L2 正则、Dropout 有什么关系?
三者都是正则化手段、可叠加使用。早停是隐式正则(限制训练时长);L2/权重衰减直接惩罚大权重;Dropout 通过随机失活逼近模型集成。早停几乎零成本,常作为默认配置之一。
追问 2:patience 一般怎么设置?
没有定值,取决于验证曲线的噪声程度与训练成本:曲线波动大、单 epoch 便宜则设大一些(如 10–20);训练昂贵或曲线平滑则可小一些。通常配合学习率衰减一起调,作为超参数验证。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。