第七章——深度学习中的正则化
7.8:提前终止
- 什么时候需要“提前终止”?
提前终止需要验证集。在训练中若出现下图7.3中,训练误差随着时间的推移逐渐降低但验证集的误差再次上升时,在验证集误差最小时就很可能得到了一个很好的模型。此时提前终止能够减少训练时间。 - 启示:分类不需要提前终止,分割实验需要设置提前终止。
- 如何实现提前终止?书本上有伪代码,但是自己是实现有一定难度,还是去网上百度快。
- 如何选择提前终止的标准:https://www.datalearner.com/blog/1051537860479157
- 代码实现:https://discuss.pytorch.org/t/early-stopping-in-pytorch/18800
第八章——深度模型中的优化
8.5 自适应学习率算法
损失通常高度敏感于参数空间中的某些方向,而不敏感于其他。
如果我们相信方向敏感度在某种程度是轴对齐的,那么每个参数设置不同的学习率,在整个学习过程中自动适应这些学习率是有道理的。
8.5.1 AdaGrad
- 原理
独立地适应所有模型参数的学习率。具有损失最大偏导地参数有一个快速下降地学习率,具有小偏导的参数再学习率上有相对较小的下降。 - 优点
在参数空间中更为平缓的倾斜方向会取得更大的进步 - 缺点
从训练开始时积累梯度平方会导致有效学习率过早和过量的减小。
8.5.2 RMSProp
- 原理
使用指数衰减平均以丢弃遥远过去的历史,使其能够在找到凸碗状结构后快速收敛,它就像一个初始化于该碗状结构的AdaGrad算法实例。 - 优点
规避了AdaGrad的缺点。
8.5.3 Adam
- 原理
看不懂 <