赞
踩
学习率是神经网络优化时的重要超参数。在梯度下降方法中,学习率α的取值非常关键,如果过大就不会收敛,如果过小则收敛速度太慢。常用的学习率调整方法包括学习率衰减率、学习率预热、周期学习率以及一些自适应地调整学习率的方法,比如AdaGrad、RMSprop、AdaDelta等。自适应学习率方法可以针对每个参数设置不同的学习率。
为了使得梯度下降方法能够逃离局部最小值或鞍点,一种经验性的方式是在训练过程中周期性地增大学习率。虽然增加学习率可能短期内有损网络的收敛稳定性,但从长期来看有助于找到更好的局部最优解。一般而言,当一个模型收敛一个平坦(Flat)的局部最小值时,其鲁棒性会更好,即微小的参数变动不会剧烈影响模型能力;而当模型收敛到一个尖锐(Sharp)的局部最小值时,其鲁棒性也会比较差。具备良好泛化能力的模型通常应该是鲁棒的,因此理想的局部最小值应该是平坦的。周期性学习率调整可以使得梯度下降方法在优化过程中跳出尖锐的局部极小值,虽然会短期内会损害优化过程,但最终会收敛到更加理想的局部极小值。下面介绍两种常用的周期性调整学习的方法。
循环学习率 一种简单的方法是使用循环学习率(Cyclic Learning Rate)[Accurate, large mini-batch sgd: Training imagenet in 1 hour,Goyal. et al., 2017],即在让学习率在一个区间内周期性地增大和缩小。通常可以使用线性缩放来调整学习率,称为三角循环学习率(Triangular Cyclic Learning Rate)。假设每个循环周期的长度相等都为2∆T,其中前∆T 步为学习率线性增大阶段,后∆T 步为学习率线性缩小阶段。在第t次迭代时,其所在的循环周期数m为
其中⌊·⌋表示“向下取整”函数。第t次迭代的学习率为
其中αmax,αmin分别为第m个周期中学习率的上界和下界,可以随着m的增大而逐渐降低;b ∈ [0,1]的计算为
带热重启的随机梯度下降(Stochastic Gradient Descent with Warm Restarts,SGDR)[Loshchilov and Hutter, 2017a] 是用热重启方式来替代学习率衰减的方法。学习率每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减。每次重启后模型参数不是从头开始优化,而是从重启前的参数基础上继续优化。
假设在梯度下降过程中重启M次,第m次重启在上次重启开始第Tm个回合后进行,Tm称为重启周期。在第m次重启之前,采用余弦衰减来降低学习率。第t次迭代的学习率为
其中α max ,αmin 分别为第m个周期中学习率的上界和下界,可以随着m的增大而逐渐降低;Tcur 为从上次重启之后的回合(Epoch)数。Tcur 可以取小数,比如0.1,0.2等,这样可以在一个回合内部进行学习率衰减。重启周期Tm 可以随着重启次数逐渐增加,比如Tm = Tm−1× κ,其中κ ≥ 1为放大因子。
(1) 三角循环学习率 (2) 带热重启的余弦衰减
上图为两种周期性学习率调整的示例(假设初始学习率为1),每个周期中学习率的上界也逐步衰减。
在Adagrad算法中,如果某个参数的偏导数累积比较大,其学习率相对较小;相反,如果其偏导数累积较小,其学习率相对较大。但整体是随着迭代次数的增加,学习率逐渐缩小。Adagrad算法的缺点是在经过一定次数的迭代依然没有找到最优点时,由于这时的学习率已经非常小,很难再继续找到最优点。
RMSprop算法是Geoff Hinton提出的一种自适应学习率的方法[Tieleman and Hinton, 2012],可以在有些情况下避免AdaGrad算法中学习率不断单调下降以至于过早衰减的缺点。RMSProp算法和Adagrad算法的区别在于Gt 的计算由累积方式变成了指数衰减移动平均。在迭代过程中,每个参数的学习率并不是呈衰减趋势,既可以变小也可以变大。
AdaDelta算法[Zeiler, 2012]也是 Adagrad算法的一个改进。和RMSprop算法类似,AdaDelta算法通过梯度平方的指数衰减移动平均来调整学习率。此外,AdaDelta算法还引入了每次参数更新差∆θ的平方的指数衰减权移动平均。
改变学习率 | 优化算法 |
---|---|
固定衰减 | 分段常数衰减、逆时衰减、 (自然)指数衰减、余弦衰减 |
周期变化 | 循环学习率、SGDR |
自适应 | Adagrad、RMSporp、AdaDeltea |
除了调整学习率之外,还可以通过使用最近一段时间内的平均梯度来代替当前时刻的梯度来作为参数更新的方向。在小批量梯度下降中,如果每次选取样本数量比较小,损失会呈现震荡的方式下降。有效地缓解梯度下降中的震荡的方式是通过用梯度的移动平均来代替每次的实际梯度,并提高优化速度,这就是动量法。
动量是模拟物理中的概念。一般而言,一个物体的动量指的是这个物体在它运动方向上保持运动的趋势,是物体的质量和速度的乘积。动量法(MomentumMethod)[Rumelhart et al., 1988]是用之前积累动量来替代真正的梯度。每次迭代的梯度可以看作是加速度。
在第t次迭代时,计算负梯度的“加权移动平均”作为参数的更新方向,其中ρ为动量因子,通常设为0.9,α为学习率。
这样,每个参数的实际更新差值取决于最近一段时间内梯度的加权平均值。当某个参数在最近一段时间内的梯度方向不一致时,其真实的参数更新幅度变小;相反,当在最近一段时间内的梯度方向都一致时,其真实的参数更新幅度变大,起到加速作用。一般而言,在迭代初期,梯度方向都比较一致,动量法会起到加速作用,可以更快地到达最优点。在迭代后期,梯度方向会取决不一致,在收敛值附近震荡,动量法会起到减速作用,增加稳定性。从某种角度来说,当前梯度叠加上部分的上次梯度,一定程度上可以近似看作二阶梯度。
自适应动量估计(Adaptive Moment Estimation,Adam)算法可以看作是动量法和RMSprop的结合,不但使用动量作为参数更新方向,而且可以自适应调整学习率。
梯度方向优化 | 优化算法 |
---|---|
梯度方向优化 | 动量法、Nesterov加速梯度 、梯度裁剪等 |
改进梯度 | Adam≈动量法+RMSprop |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。