首页 > 解决方案 > 随着批大小的变化,学习率应该如何变化?

问题描述

当我增加/减少 SGD 中使用的小批量的批量大小时,我应该改变学习率吗?如果是这样,那怎么办?

作为参考,我正在和某人讨论,据说当batch size增加时,学习率应该有所降低。

我的理解是当我增加批量大小时,计算出的平均梯度会减少噪音,所以我要么保持相同的学习率,要么增加它。

此外,如果我使用自适应学习率优化器,如 Adam 或 RMSProp,那么我想我可以保持学习率不变。

如果我弄错了,请纠正我并对此提供任何见解。

标签: machine-learningdeep-learning

解决方案


理论表明,当批量大小乘以 k 时,应该将学习率乘以 sqrt(k) 以保持梯度期望的方差不变。见A. Krizhevsky 第 5 页。并行化卷积神经网络的一个奇怪技巧https ://arxiv.org/abs/1404.5997

然而,最近对大型 mini-batch 的实验建议使用更简单的线性缩放规则,即当使用 kN 的 mini-batch 大小时,将学习率乘以 k。请参阅P.Goyal 等人:准确、大型 Minibatch SGD:在 1 小时内训练 ImageNet https://arxiv.org/abs/1706.02677

我想说的是,使用 Adam、Adagrad 和其他自适应优化器,如果批量大小没有发生实质性变化,学习率可能会保持不变。


推荐阅读