学习率规划
找到一个合适的学习率非常重要。如果将学习率设置过高,模型训练可能会发散。如果设置过低,那么训练虽然会收敛至最优,但是会耗费大量的时间。如果你将学习率设置得稍微有点高,那么模型在一开始训练收敛的速度会很快,但是最终会在最优点附近徘徊,无法真正收敛至最优。如果你拥有的计算资源有限,那么你可能会在收敛前就中止训练,生成一个次优解(见图2.8)。
在之前的文章中就提到过,一个寻找合适的学习率的策略是,对模型进行几百次迭代训练,并且从一个很小的学习率开始成倍提高。然后根据学习曲线,如果有一个学习曲线开始向上发散,那么就挑选比发散学习率稍小的即可。然后再重新初始化模型,用选中的学习率进行训练。
但是我们的模型可以比恒定学习率做得更好:如果你从一个很大的学习率开始,然后在训练无法取得进展时降低它,你就可以比最优恒定学习率更快地得到一个好的结果。这里有很多不同的在训练中降低学习率的方法。有些甚至会从一个小的学习率开始,不断调高,然后再减小。这些策略被称为学习率的规划(learning schedules)。接下来我们来看一些常用的学习率策略:
- 幂规划
将学习率设置为循环次数t的函数,如下式: