这三种方法是梯度下降优化算法的三种主要变体,其核心区别在于每次更新模型参数时,所使用的训练数据量不同。
1. 批量梯度下降
核心思想:使用整个训练数据集(全部样本)来计算损失函数关于参数的梯度,然后进行一次参数更新。
- 工作流程:
- 遍历整个训练集,计算每个样本的梯度。
- 对所有样本的梯度求平均。
- 用这个平均梯度来更新模型参数。
- 重复以上步骤,直到收敛。
2. 随机梯度下降
核心思想:每次只使用一个训练样本来计算梯度并立即更新模型参数。
- 工作流程:
- 随机打乱训练数据集。
- 遍历数据集中的每一个样本。
- 对于每一个样本 (x(i),y(i))(x(i),y(i)),计算其损失函数的梯度。
- 立即用这个(可能很“嘈杂”的)梯度来更新参数。
- 在一个“周期”(Epoch,即完整遍历一次数据集)内,会进行
m(样本总数)次参数更新。
3. 小批量梯度下降
核心思想:这是BGD和SGD之间的一个折中方案。它每次使用一个小批量(Mini-batch)的数据样本来计算梯度并更新参数。这个批量的大小通常是一个超参数,常见的有32, 64, 128, 256等。
- 工作流程:
- 将训练集分成许多个小批次。
- 遍历每一个小批次。
- 对于每一个小批次(包含
b个样本),计算该批次上损失函数的平均梯度。 - 用这个平均梯度来更新参数。
- 一个Epoch内,会进行
m / b次参数更新。