优化器方法-LookAhead

最近看到一篇博客,将LookAhead和RAdam结合产生了一个新的算法——Ranger,获得了比单独使用RAdam要好的效果。后来有人将LARS与Ranger结合,效果取得了进一步提升。最近Ranger的提出者又将GC(Gradient Centralization)方法与Ranger结合,也取得了比Ranger好的效果。这里我会分四篇文章分享我个人在阅读这四个方法相关论文时的总结和体会。由于LookAhead优化器与SWA比较相似,所以还会开辟一篇文章介绍SWA和Fast SWA优化器。本篇文章为系列文章的第三篇。

问题

之前对SGD优化器进行改进的工作主要分为两种:自适应学习率方式,如AdaGrad和Adam优化器;另一种是加速训练方式,如Nesterov momentum优化器,这些优化器都利用了累积的历史梯度信息来加速拟合,但是为了使用这些优化器获得性能提升,一般需要大量的调参。随着最近研究对神经网络损失函数空间平面的进一步了解(尤其是SWA优化器),作者提出了一种与前面两种方法完全不同的优化器——LookAhead。直观上,该算法通过预先查看(look ahead)由另一个优化器生成的“快速权重”(fast weights)序列来选择搜索方向。作者指出,LookAhead具有两个特点:1.与常规优化器(如ASGD或Adam)进行结合,从而提高这些优化器的拟合速度和泛化能力;2.对自身超参和学习率更加鲁棒。

方法

LookAhead优化器首先将模型参数拷贝两份,一份称为slow weights ,一份称为fast weights ,然后使用称为内部优化器(inner optimizer)的常规优化器(如SGD或Adam)对fast weights进行正常的训练优化,但是每隔个训练迭代,算法会在权重空间的方向上使用线性插值方式来更新slow weights,即,称为slow weights的学习率,然后再将更新后的slow weights赋值给fast weigts继续进行下个步训练,如此循环,训练结束后将slow weights作为最终的模型训练输出权重。算法的伪代码如下图右侧所示:

优化器方法-LookAhead_第1张图片

直观上,不考虑内部优化器的权重更新的话,将slow weights的更新公式展开可以看到,其实slow weights就是对每次步更新后的fast weights的指数移动加权平均(EMA),slow weights的更新不仅利用当前的fast weights,还保留了之前的fast weights信息,这样便可以降低权重前后更新的高方差带来的负面影响。

这些高方差可能来自较大的学习率或其他不是很合适的超参数,而LookAhead通过对权重进行平滑处理,从而具有对超参鲁棒的特点。尤其是当内部优化器使用较大的学习率时,权重更新可以尽快通过曲率较小的方向(梯度中值较小的分方向),而使用平滑方法可以缓解权重在高曲率方向(梯度中值较大的分方向)的振荡甚至发散,从而使得算法获得使用较大学习率带来的加速收敛的收益。

从Figure 1左侧中的权重更新轨迹可以形象看出,当步更新的fast weights还在最优点周围探索时,通过插值的方式计算的slow weights已经先一步接近最优点了(SWA思想)。

由于LookAhead只是将网络权重复制了一份,所以相比训练中的feature map对GPU内存的消耗,LookAhead带来的额外内存负担是可以忽略的。另外,每次对slow weights的更新也只是简单的数值计算,而且是每步训练后更新一次,所以带来的计算负担也是可以忽略的。总体上,LookAhead带来的计算和内存负担是很小的。

另外,LookAhead算法也引入了两个超参,更新间隔和slow weights的学习率,作者也提出了选择最优的方法,但是作者通过试验说明使用固定的经验值具有相同的拟合表现,从而在多个实验中都是使用固定的值。具体选择最优的方法见原论文。

实验效果

视觉数据集CIFAR上与其他优化器的性能比较实验

优化器方法-LookAhead_第2张图片

视觉数据集ImageNet上的实验

优化器方法-LookAhead_第3张图片

语音模型训练和翻译任务上的实验

优化器方法-LookAhead_第4张图片

从实验可以看出,相比SGD或Adam,LookAhead(SGD)或LookAhead(Adam)具有更快的收敛速度或更好的表现。

对SGD内部优化器超参的鲁棒性实验(学习率和momentum)

优化器方法-LookAhead_第5张图片

对自身超参和的鲁棒性实验

优化器方法-LookAhead_第6张图片

评价

  1. 作者也指出本文是受SWA的启发,所以与SWA具有很大的相似性,本质上的差异便是SWA只使用训练过程中累积的权重信息计算最终输出的模型权重,而作者将其应用到训练过程中,使历史权重也参与权重更新,从而加速模型收敛。
  2. 作者文中指出可能需要为LookAhead寻找更好的学习率调整策略,Ranger方法中使用的是flat cosin annealing策略,该方法可能是对LookAhead来说较好的学习率调整策略,但需要进一步的试验对比进行验证。

你可能感兴趣的:(优化器方法-LookAhead)