小批量随机梯度下降(Mini-batch Stochastic Gradient Descent,简称 Mini-batch SGD 或 MB-SGD)是一种在深度学习中常用的优化算法。它结合了批量梯度下降(Batch Gradient Descent,BGD)和随机梯度下降(Stochastic Gradient Descent,SGD)的优点,既能较快地收敛,又能有效地利用计算资源。下面举例说明 Mini-batch SGD 的原理。
假设我们有一个神经网络模型,需要通过训练数据来优化模型的参数。训练数据包含 1000 个样本,我们的目标是最小化这些样本上的平均损失函数。
使用 Mini-batch SGD 的步骤如下:
1. 确定 mini-batch 的大小,例如 100。这意味着我们将训练数据分为大小为 100 的小批次,每次迭代只使用一个小批次的数据来更新模型参数。
2. 打乱训练数据的顺序。这一步可以提高随机性,有助于防止模型陷入局部最优解。
3. 按照打乱后的顺序,将训练数据分成 10 个大小为 100 的 mini-batch。这 10 个 mini-batch 将用于更新模型参数。
4. 遍历这 10 个 mini-batch,对于每个 mini-batch,执行以下操作:
a. 计算当前 mini-batch 中所有样本的损失函数梯度。
b. 将这些梯度求平均,得到当前 mini-batch 上的平均梯度。
c. 使用平均梯度来更新模型参数。具体地,将参数沿着梯度的负方向移动一小步,移动的步长称为学习率。
5. 当遍历完所有 mini-batch 后,完成一次迭代。需要多次迭代来优化模型参数,以达到收敛。
6. 为了更好地优化模型参数,可以重复进行步骤 2 到 5,将训练数据打乱顺序并重新分配 mini-batch。这样可以防止模型过拟合,提高泛化能力。
通过以上过程,小批量随机梯度下降可以在每次迭代中利用多个样本的信息来指导参数更新,从而加速收敛。同时,由于每次迭代只需要计算一部分样本的梯度,计算成本较低,可以更有效地利用计算资源。