
3.9 学习率
在机器学习中,学习率在迭代过程中会控制模型的学习进度。本节主要介绍学习率的作用、学习率衰减常用参数,以及常见的学习率衰减方法。
3.9.1 学习率的作用
在梯度下降法中,都是给定统一的学习率,整个优化过程中都以确定的步长进行更新,在迭代优化的前期,学习率较大,则前进的步长就会较长,这时便能以较快的速度进行梯度下降;而在迭代优化的后期,逐步减小学习率的值,减小步长,这样将有助于算法的收敛,更容易接近最优解。如何确定学习率方式及大小对控制模型的学习进度非常重要,也是后续研究的重点方向。
在模型优化中,常用的几种学习率衰减方法有:分段常数衰减、多项式衰减、指数衰减、自然指数衰减、余弦衰减、线性余弦衰减和噪声线性余弦衰减。
3.9.2 学习率衰减的常用参数
学习率衰减的常用参数如表3-2所示。
表3-2 学习率衰减的常用参数

3.9.3 常用的学习率衰减方法
下面将介绍常用到几种学习率衰减方法。
分段常数衰减
分段常数衰减需要事先定义好的训练次数区间,在对应区间设置不同的学习率的常数值,一般情况下刚开始的学习率要大一些,之后要越来越小。要根据样本量的大小设置区间的间隔大小,样本量越大,区间间隔要小一点。图3-35即为分段常数衰减的学习率变化图,横坐标代表训练次数,纵坐标代表学习率。

图3-35 分段常数衰减的学习率变化图
指数衰减
以指数衰减方式进行学习率的更新,学习率的大小和训练次数指数相关,其更新规则为:

这种衰减方式简单直接,收敛速度快,是最常用的学习率衰减方式,图3-36所示即为指数衰减的学习率变化图。曲线为学习率随训练次数的指数衰减方式,阶梯状的线为分段常数衰减,它在一定的训练区间内保持学习率不变。

图3-36 指数衰减的学习率变化图
自然指数衰减
它与指数衰减方式相似,不同之处在于它的衰减底数是e,故而其收敛的速度更快,一般用于相对比较容易训练的网络,便于较快地收敛,其更新规则如下:

图3-37为分段常数衰减、指数衰减、自然指数衰减三种方式的对比图,阶梯状的线为分段常数衰减图;最上方的曲线为指数衰减图;最下方的曲线为自然指数衰减图,可以看到自然指数衰减方式下的学习率衰减程度要大于一般指数衰减方式,有助于更快收敛。

图3-37 分段常数衰减、指数衰减、自然指数衰减三种方式的对比图
多项式衰减
应用多项式衰减的方式进行更新学习率,这里会给定初始学习率和最低学习率取值,然后将会按照给定的衰减方式将学习率从初始值衰减到最低值,其更新规则如下式所示:

需要注意的是,有两个机制,降到最低学习率后,到训练结束可以一直使用最低学习率进行更新,另一个是再次将学习率调高,使用decay_steps的倍数,取第一个大于global_step的结果,如下式所示。它是用来防止神经网络在训练的后期由于学习率过小而导致网络一直在某个局部最小值附近震荡,这样可以通过在后期增大学习率跳出局部极小值。

图3-38所示为多项式衰减的学习率变化图,虚线代表学习率降低至最低后,一直保持学习率不变,帆船状的线代表学习率衰减到最低后,又会再次循环往复地升高/降低。

图3-38 多项式衰减的学习率变化图
余弦衰减
余弦衰减就是采用余弦的相关方式进行学习率的衰减,衰减图和余弦函数相似。其更新机制如下式所示:

图3-39所示为余弦衰减的学习率变化图,最下方的曲线即为标准的余弦衰减曲线,学习率从初始值下降到最低学习率后保持不变。看起来有毛刺波动的曲线是噪声线性余弦衰减方式的曲线。和毛刺波动曲线相交的曲线是线性余弦衰减方式曲线,它是学习率从初始学习率以线性的方式下降到最低学习率值。

图3-39 余弦衰减的学习率变化图