学界 | 取代学习率衰减的新方法:谷歌大脑提出增加Batch Size
选自arXiv
作者:Samuel L. Smith等
机器之心编译
参与:李亚洲、路雪
谷歌大脑在最新的一篇论文中提出,通过增加训练过程中的 batch size,能够在训练集和测试集上取得类似学习率衰减的表现。此外这种方法还有一系列的优势:参数更新数量更少、更强大的并行、更短的训练时间等等。机器之心对此论文做了摘要介绍,更详细的内容请阅读原论文。
论文链接:https://arxiv.org/abs/1711.00489
摘要:学习率衰减是一种常见的方法。在这篇论文中,我们展示了通过增加训练过程中的 batch size 也能在训练集和测试集上获得同样的学习曲线。这一方法对随机梯度下降(SGD)、带有动量的 SGD、Nesterov 动量和 Adam 同样有效。在经过同样数量的训练 epoch 之后,它能获得同样的测试准确率,且需要进行的参数更新更少,从而实现更强大的并行、更短的训练时间。通过增加学习率ϵ、缩放 batch size B∝ϵ,我们可以进一步减少参数更新的数量。最后,你可以增加动量系数 m,缩放 B∝1/(1−m),尽管这会稍微降低测试准确率。最重要的是,该技术能让我们在不调整超参数的情况下,重设对大型 batch 训练的现有训练调度方法(schdule)。我们在 ImageNet 上训练 ResNet-v2,验证准确率达到 77%,参数更新低于 2500,高效利用了 65536 张图片的训练 batch。
图 1:作为训练 epcoch 中的函数,学习率(a)和 batch size(b)的调度方法
图 2:训练集的交叉熵,(a)横轴为训练 epoch 的数量,(b)横轴为参数更新数量。三种学习曲线变化一致,但增加 batch size 能极大地减少所需参数更新的数量。
图 3:训练过程中的测试集准确率,(a)带有动量的 SGD,(b)带有 Nesterov 动量的 SGD。在两种情形中,三种调度方法的曲线变化保持一致。
图 4:训练过程中的测试集准确率,(a)vanilla SGD,(b)Adam。同样,三种调度方法的测试集表现一致。
图 5:不同的训练调度方法下,测试集准确率随着参数更新数量的变化而变化。通过增加 batch size 取代学习率衰减的「增加 batch size」方法;把初始学习率从 0.1 增加到 0.5 的「增加初始学习率」方法;最后是把动量系数从 0.9 增加到 0.98 的「增加动量系数」方法。
图 6:在 ImageNet 上训练 Inception-ResNet-V2。增加 batch size 能获得与学习率衰减类似的结果,但这种方法能够减少参数更新的数量,从 14000 降低到 6000。我们可以把每个实验运行两次来说明其中的变化。
图 7:在 ImageNet 上训练 Inception-ResNet-V2。增加动量参数能够减少所需参数更新的数量,但也导致最终测试准确率的略微下降。
本文为机器之心编译,转载请联系本公众号获得授权。
✄------------------------------------------------
加入机器之心(全职记者/实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告&商务合作:bd@jiqizhixin.com
点击「阅读原文」,参与PaperWeekly论文讨论