如何根据批量大小的变化调整学习率?

当我增加或减少用于随机梯度下降(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和其他自适应优化器时,如果批量大小没有显著变化,学习率可以保持不变。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注