为随机梯度下降 (SGD) 选择合适的小批量大小

机器算法验证 机器学习 梯度下降 超参数 深度学习
2022-03-16 10:12:59

在执行随机梯度下降时,是否有任何文献检查小批量大小的选择?以我的经验,这似乎是一种经验选择,通常通过交叉验证或使用不同的经验法则找到。

随着验证错误的减少,慢慢增加小批量大小是个好主意吗?这会对泛化错误产生什么影响?我是否最好使用极小的 minibatch 并更新我的模型数十万次?在极小和批量之间的某个平衡数字会更好吗?
我应该使用数据集的大小或数据集中的预期特征数量来缩放我的小批量的大小吗?

我显然对实施小批量学习方案有很多疑问。不幸的是,我读过的大多数论文都没有具体说明他们是如何选择这个超参数的。我从 Yann LeCun 等作者那里获得了一些成功,尤其是在 Tricks of the Trade 论文集上。但是,我仍然没有看到这些问题得到充分解决。有没有人对论文有任何建议,或者关于我在尝试学习特征时可以使用什么标准来确定好的小批量大小的建议?

1个回答

SGD 有效性的理论是在单个示例更新(即 minibatch 大小 1)上制定的,因此理论上不需要使用更大的 minibatch。它有两个实际优点:

,如果计算可以向量化,您可能能够以几乎同样快的速度计算小批量 >1 的梯度,从而显着提高训练速度。

在这种情况下,最佳 minibatch 大小是您正在使用的特定硬件和实现的函数,因此您最好尝试找到最佳位置。

第二,在小批量大小 >1 上计算梯度将导致更准确的梯度和更优化的步骤。但是,一旦小批量大小增加到超过 1,这种好处就会很快达到并趋于平稳,因此您可以主要专注于第一个目标。