当我增加或减少用于随机梯度下降(SGD)的迷你批量大小时,我应该调整学习率吗?如果需要,那么如何调整?
为了参考,我之前与某人讨论过,有人说当批量大小增加时,学习率应该在一定程度上降低。
我的理解是,当我增加批量大小,计算出的平均梯度会变得不那么嘈杂,因此我可以保持相同的学习率或增加它。
另外,如果我使用自适应学习率优化器,如Adam或RMSProp,我想我可以不调整学习率。
如果我有误,请纠正我,并提供一些见解。
回答:
理论上,当批量大小乘以k时,应该将学习率乘以sqrt(k),以保持梯度期望的方差恒定。参见 A. Krizhevsky. One weird trick for parallelizing convolutional neural networks 的第5页:https://arxiv.org/abs/1404.5997
然而,最近使用大迷你批量的实验建议采用更简单的线性缩放规则,即当使用kN大小的迷你批量时,将学习率乘以k。参见 P.Goyal et al.: Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour https://arxiv.org/abs/1706.02677
我认为使用Adam、Adagrad和其他自适应优化器时,如果批量大小没有显著变化,学习率可以保持不变。