超级收敛:使用超大学习率超快速训练残差网络

训练大型神经网络往往很耗时间。在最近一篇论文中,美国海军研究实验室和马里兰大学的两位研究者展示了一种名叫「超级收敛」的现象,可以将残差网络的训练迭代次数减少一个数量级。机器之心对该研究进行了摘要介绍,研究详情请参阅原论文。另外,该研究的实验代码也已公开发布。


  • 论文地址:https://arxiv.org/abs/1708.07120
  • 代码地址:http://github.com/lnsmith54/super-convergence



在这篇论文中,我们展示了一个现象,即比起标准的训练方法,可以使用少一个数量级的迭代次数训练残差网络,我们将其命名为「超级收敛(super-convergence)」。超级收敛的关键元素是使用周期学习率(cyclical learning rate)和一个很大的最大学习率进行训练。此外,我们也给出了证据说明使用很大的学习率进行训练可以通过对网络的正则化实现表现水平的提升。另外,我们还表明,当有标注的训练数据有限时,超级收敛能比标准训练方法带来更大的水平提升。通过使用 Hessian Free 优化方法的一个简化版本计算对最优学习率的估计,我们也提供了对大学习率的优势的解释。要复现本论文的数据结果,可以在 http://github.com/lnsmith54/super-convergence 获取实验的架构和代码。


这篇论文的贡献有:


1. 我们展示了一个新现象的存在(即超级收敛,可以使用 CLR 非常快速地训练残差网络),并且系统性地检查了这种现象会发生或不会发生的边界限制情况。

2. 我们表明大学习率(LR)可以正则化训练的网络,并且假设这种正则化可以在超级收敛发生时提升测试准确度。

3. 通过使用简化版的二阶 Hessian-free 优化方法来估计最优学习率,我们为大学习率的使用提供了支持。

4. 我们表明,但可用的有标注数据更少时,超级收敛的影响将更加显著。



图 1:使用 Resnet-56 在 Cifar-10 上的超级收敛示例。(a) 超级收敛示例与经典(分段的常数)训练方案的测试准确度的比较;(b) 不同步长的超级收敛的测试准确度的比较。


3 超级收敛


在这项研究中,我们使用了周期学习率(CLR)和学习率范围测试(LR range test),它们是由 Smith [2015] 最早引入的,后来在 Smith[2017] 中进行了更新。要使用 CLR,需要指定最小和最大的学习率边界和步长(stepsize)。步长是指每一步迭代的次数,而一个周期包含了这样两步——一步中学习率增大,另一步中学习率减小。Smith[2015] 测试了多种在两个边界值之间改变学习率的方法,发现它们都是等效的,所以就推荐使用其中最简单的方法,即让学习率线性变化。我们注意到 Loshchilov and Hutter [2016] 独立地提出了一种与 CLR 类似的方法,他们称之为 SGDR。SGDR 方法使用了余弦的锯齿模式,然后又跳回到原来的值。不幸的是,使用这种模式不可能观察到超级收敛现象。我们的实验表明,训练必须从一个很小的初始学习率开始才能出现超级收敛。


学习率范围测试可以用于确定超级收敛对一个架构而言是否是可能的。在学习率范围测试中,训练从 0 或非常小的学习率开始,然后在一个训练前的运行过程中缓慢线性增大。这能提供网络在一个学习率范围内能得到多好的训练结果的信息。图 2a 给出了学习率范围测试的典型曲线,其中测试准确度有一个明显的峰值。当从很小的学习率开始时,网络会开始收敛,然后随着学习率增大,最终会大到导致训练/测试准确度下降。这个峰值处的学习率就是使用 CLR 时用作最大学习率边界的最大值。最小学习率可以通过将这个最大值除以 3 或 4 得到。经典(分段的常数)训练方案的最优初始学习率通常位于这些最小值和最大值之间。



图 6:超级收敛与使用分段常数学习率方案的经典训练方法的结果比较。(a) 训练样本有限时,在 Cifar-10 上的测试准确度比较;(b) 使用 Resnet-20 和 Resnet-110 的测试准确度比较。


本文由机器之心编译出品,原文来自arXiv,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。

理论
登录后评论
暂无评论
暂无评论~
返回顶部