机器学习 | 优化——调整学习率

写在前面:

学习率 是神经网络优化时的重要超参数。在 梯度下降方法 中,学习率的取值非常关键,如果过大就不会收敛,如果过小则收敛速度太慢。

本文将介绍一些改变学习率的方法,包括 学习率退火学习率预热周期性学习率调整

1. 学习率衰减 / 学习率退火

从经验上看,学习率在一开始要保持大些来保证收敛速度,在收敛到最优点附近时要小些以避免来回震荡。比较简单的学习率调整可以通过 学习率衰减(Learning Rate Decay)的方式来实现,也称为 学习率退火(Learning Rate Annealing)

假设初始化学习率为,在第次迭代时的学习率。常用的衰减方式为可以设置为 按迭代次数 进行衰减。

常见的衰减方法有以下几种:

1.1 分段常数衰减(Piecewise Constant Decay)

分段常数衰减(Piecewise Constant Decay):即每经过次迭
代将学习率衰减为原来的倍,其中为根据经验设置的 超参数

分段常数衰减 也称为 步衰减(Step Decay)


1.2 逆时衰减(Inverse Time Decay)

其中,为衰减率。


1.3 指数衰减(Exponential Decay)

其中,为衰减率。


1.4 自然指数衰减(Natural Exponential Decay)

其中为衰减率。


1.5 余弦衰减(Cosine Decay)

其中,为总的迭代次数。

最后,贴一张图片,直观感受一下这几种学习率衰减方法。

机器学习 | 优化——调整学习率_第1张图片

——图片来源:邱锡鹏:《神经网络与深度学习》

2. 学习率预热

小批量梯度下降方法 中,当批量大小的设置比较大时,通常需要比较大的学习率。但在刚开始训练时,由于参数是随机初始化的,梯度往往也比较大,在加上 比较大的初始学习率,会使得训练不稳定。

为了提高训练稳定性,我们可以 在最初几轮迭代时,采用比较小的学习率,等梯度下降到一定程度后再恢复到初始的学习率,这种方法称为 学习率预热(Learning Rate Warmup)。

一个常用的学习率预热方法是 逐渐预热(Gradual Warmup)。假设预热的迭代次数为,初始学习率为,在预热过程中,每次更新的学习率为:

当预热过程结束,再选择一种学习率衰减方法来逐渐降低学习率。

3. 周期性学习率调整

为了使得 梯度下降方法 能够 逃离局部最小值或鞍点,一种经验性的方式是在训练过程中 周期性地增大学习率。虽然增加学习率可能短期内有损网络的收敛稳定性,但从长期来看有助于找到更好的局部最优解。

一般而言,当一个模型 收敛到一个平坦(Flat)的局部最小值 时,其 鲁棒性会更好,即 微小的参数变动不会剧烈影响模型能力;而当模型 收敛到一个尖锐(Sharp)的局部最小值 时,其 鲁棒性也会比较差。具备良好泛化能力的模型通常应该是鲁棒的,因此理想的局部最小值应该是平坦的。

周期性学习率调整 可以使得梯度下降方法在优化过程中 跳出尖锐的局部极小值,虽然会短期内会损害优化过程,但最终会收敛到更加理想的局部极小值。

下面介绍两种常见的周期性调整学习率的方法:循环学习率(CLR)带热重启的随机梯度下降(SGDR)

3.1 循环学习率(Cyclic Learning Rate)

一种简单的方法是使用循环学习率,即在让学习率在 一个区间内 周期性地增大和缩小

通常可以使用 线性缩放 来调整学习率,称为 三角循环学习率(Triangular Cyclic Learning Rate)。

假设 每个循环周期 的长度 相等,都为,其中前步为学习率线性增大阶段,后步为学习率线性缩小阶段。

在第次迭代时,其所在的循环周期数为:

其中,表示向下取整。

第次迭代的学习率为:

其中、分别为第个周期中学习率的上界和下界,可以随着的增大而逐渐降低。

的计算为:

机器学习 | 优化——调整学习率_第2张图片

——图片来源:邱锡鹏:《神经网络与深度学习》

3.2 带热重启的随机梯度下降

带热重启的随机梯度下降(Stochastic Gradient Descent with Warm Restarts,SGDR)是用 热重启方式 来替代 学习率衰减 的方法。

学习率每间隔一定周期后,重新初始化为某个预先设定值,然后逐渐衰减。每次重启后模型参数不是从头开始优化,而是从重启前的参数基础上继续优化。

假设在梯度下降过程中重启次,第次重启在上次重启开始第个回合后进行,称为重启周期。在第次重启之前,采用余弦衰减来降低学习率。

第次迭代的学习率为:

其中,分别为第个周期中学习率的上界和下界,可以随着的增大而逐渐降低;为从上次重启之后的回合(Epoch)数。可以取小数,比如 等,这样可以在一个回合内部进行学习率衰减。重启周期 可以随着重启次数逐渐增加,比如,其中为放大因子。

机器学习 | 优化——调整学习率_第3张图片

——图片来源:邱锡鹏:《神经网络与深度学习》

写在最后:

参考资料:

  • 邱锡鹏:《神经网络与深度学习》

更多资料:

  • 各种学习率衰减方法 (tensorflow实现)
  • 周期性学习率(Cyclical Learning Rate)技术
  • 【深度学习】Cyclical Learning Rates 周期学习率
  • 神经网络学习速率设置指南(CLR Callback,LRFinder,SGDR等最新的学习率设置方案)附完整代码解析

“文章合为时而著,歌诗合为事而作。”——白居易《与元九书》

知识尚浅,望前辈多多包涵,多多赐教。

你可能感兴趣的:(机器学习 | 优化——调整学习率)