- 批量梯度下降 (batch gradient descent) 每次梯度更新时,计算所有m个样本的梯度做梯度下降
- 小批量梯度下降 (mini-batch gradient descent) 每次梯度更新,计算n (n<m) 个样本的梯度做梯度下降
- 随机梯度下降(stochastic gradient descent) 每次梯度更新,计算1个样本的梯度做梯度下降
大多数用于深度学习的算法会采用mini-batch gradient descent,使用一个以上,而又不是全部
的训练样本。
值得注意的是,用mini-batch gradient descent会使得learning curve产生波动,如下图:
1.2 mini-batch的大小
mini-batch的大小通常由以下几个因素决定:
- 更大的批量会计算更精确的梯度估计,但是batch size不是越大越好,因为精确度的提高和批量的增大不是成正比的。
batch size不能太小,因为小批量通常难以充分利用多核架构。这促使我们使用一些绝对最小批量,低于这个值的小批量处理不会减少计算时间。。
如果批量处理中的所有样本可以并行地处理(通常确是如此),那么内存消耗和批量大小会正比。对于很多硬件设施,这是批量大小的限制因素。
在某些硬件上使用特定大小的数组时,运行时间会更少。尤其是在使用GPU时,通常使用2 的幂数作为批量大小可以获得更少的运行时间。一般,2 的幂数的取值范围是32 到256,16 有时在尝试大模型时使用。
可能是由于小批量在学习过程中加入了噪声,它们会有一些正则化效果(Wilson
and Martinez, 2003)。泛化误差通常在批量大小为1 时最好。但是因为梯度估计的
高方差(不稳定),小批量训练需要较小的学习率以保持稳定性,而降低的学习率和消
耗更多步骤来遍历整个训练集都会导致总的运行时间非常大。