Neural network 神经网络回归中最小批量的选择

Neural network 神经网络回归中最小批量的选择,neural-network,gradient-descent,Neural Network,Gradient Descent,我正在做一个具有4个特征的神经网络回归。如何确定问题的小批量大小?我看到人们在计算机视觉中使用100~1000个批量,每个图像具有32*32*3的功能,这是否意味着我应该使用100万个批量?我有几十亿的数据和数百GB的内存,所以我没有不这样做的硬性要求 我还观察到,使用大小约为1000的小批量比使用大小为100万的批量收敛快得多。我认为应该是另一种方式,因为使用较大批量计算的梯度最能代表整个样本的梯度?为什么使用小批量会加快收敛速度?来源: 来自Nitish Shirish Keskar、Dhe

我正在做一个具有4个特征的神经网络回归。如何确定问题的小批量大小?我看到人们在计算机视觉中使用100~1000个批量,每个图像具有32*32*3的功能,这是否意味着我应该使用100万个批量?我有几十亿的数据和数百GB的内存,所以我没有不这样做的硬性要求

我还观察到,使用大小约为1000的小批量比使用大小为100万的批量收敛快得多。我认为应该是另一种方式,因为使用较大批量计算的梯度最能代表整个样本的梯度?为什么使用小批量会加快收敛速度?

来源:

来自Nitish Shirish Keskar、Dheevatsa Mudigere、Jorge Nocedal、Mikhail Smelyanskiy、Ping-Tak Peter Tang。关于深度学习的大批量训练:泛化差距和夏普极小值:

随机梯度下降法及其变体是许多深度学习任务的首选算法。这些方法在小批量情况下运行,其中对训练数据的一部分(通常为32-512个数据点)进行采样,以计算梯度的近似值实践中观察到,当使用较大批次时,模型的质量会显著下降,这是通过其概括能力来衡量的。有人试图调查大批次区域中概括度下降的原因,但这一现象的确切答案是,迄今未知。在本文中,我们提供了大量的数值证据,支持这样的观点:大批量方法倾向于收敛到训练和测试函数的尖锐极小值,尖锐极小值导致较差的泛化。相反,小批量方法始终收敛于平坦极小值,我们的实验支持一个普遍持有的观点,即这是由于梯度估计中固有的噪声。我们还讨论了一些有助于大批量方法消除泛化差距的实证策略,并总结了一组未来的研究思路和开放性问题

[……]

缺乏泛化能力是因为大批量方法往往收敛到训练函数的尖锐极小值。这些极小化子的特征是$\nabla^2 f(x)$中有较大的正特征值,并且一般推广得不太好。相比之下,小批量方法收敛到平坦极小值,其特征是$\nabla^2 f(x)$的小正特征值。我们已经观察到,深度神经网络的损失函数景观是这样的:大批量方法几乎总是被具有尖锐极小值的区域吸引,并且与小批量方法不同,它无法逃脱这些极小值的盆地

[……]

此外,来自 回答关于Quora的问题:

学习率的大小主要受到以下因素的限制:学习方式 成本函数是弯曲的。你可以把梯度下降想象成 对成本函数进行线性近似,然后移动 沿着这个大概的成本走下坡路。如果成本函数是高度 非线性(高度弯曲)则近似值不会很高 适用于非常远的距离,因此只有小的步长才是安全的。你可以阅读 有关这方面的更多信息,请参阅《深度学习》教科书的第4章 数值计算:

当你把 在小型批处理中,需要进行O(m)计算并使用 O(m)内存,但可以减少梯度中的不确定性 仅通过O(sqrt(m))的系数。换言之,这一趋势正在减弱 在小批量中添加更多示例的边际回报。你可以 在深度学习教科书的第8章中,阅读更多关于这方面的内容 深度学习的优化算法:

还有,如果 你想想看,即使使用整个训练集也不会 给你真正的梯度。真正的梯度将是预期的 在所有可能的例子中都有期望值的梯度, 由数据生成分布加权。使用整个 训练集只是使用一个非常大的小批量,其中 迷你批处理的数量受到您在数据上花费的数量的限制 收集,而不是你花在计算上的金额