1.引言
当我们使用梯度下降算法来优化目标函数的时候,当越来越接近Loss值的全局最小值时,学习率应该变得更小来使得模型不会超调且尽可能接近这一点,而余弦退火(Cosine annealing)可以通过余弦函数来降低学习率。余弦函数中随着x的增加余弦值首先缓慢下降,然后加速下降,再次缓慢下降。这种下降模式能和学习率配合,以一种十分有效的计算方式来产生很好的效果。

在论文Stochastic Gradient Descent with Warm Restarts中介绍主要介绍了带重启的随机梯度下降算法(SGDR),其中就引入了余弦退火的学习率下降方式,本文主要介绍余弦退火的原理以及实现。并且因为我们的目标优化函数可能是多峰的(如下图所示),除了全局最优解之外还有多个局部最优解,在训练时梯度下降算法可能陷入局部最小值,此时可以通过突然提高学习率,来“跳出”局部最小值并找到通向全局最小值的路径。这种方式称为带重启的随机梯度下降方法。

2.余弦退火的原理
论文介绍最简单的热重启的方法。当执行完 T i T_i Ti个epoch之后就会开始热重启(warm restart),而下标 i i i就是指的第几次restart,其中重启并不是重头开始,而是通过增加学习率来模拟,并且重启之后使用旧的 x t x_t xt作为初始解,这里的 x t x_t xt就是通过梯度下降求解loss函数的解,也就是神经网络中的权重,因为重启就是为了通过增大学习率来跳过局部最优,所以需要将 x t x_t xt置为旧值。
本文并不涉及重启部分的内容,所以只考虑在每一次run(包含重启就是restart)中,学习率是如何减小的。余弦退火( cosine annealing )的原理如下:
η t = η m i n i + 1 2 ( η m a x i − η m i n i ) ( 1 + c o s ( T c u r T i π ) ) \eta_t=\eta_{min}^{i}+\frac{1}{2}(\eta_{max}^{i}-\eta_{min}^{i})(1+cos(\frac{T_{cur}}{T_i}\pi)) ηt=ηmini+21(ηmaxi−ηmini)(1+cos(TiTcur

探讨余弦退火(Cosine Annealing)在Keras中的应用,此策略通过模仿余弦函数调整学习率,有效避免梯度下降算法陷入局部最小值。文章深入解析其原理,提供详细实现步骤,并加入Warmup预热阶段,确保模型训练初期稳定。
最低0.47元/天 解锁文章
3866





