梯度累积(Gradient Accumulation)和批大小(Batch Size)的关系,可以一句话概括:
梯度累积是用“多次小批量”来“模拟”一个更大的批大小。
下面分点说明。
B 个样本B设:
bk则:
等效批大小 = b × k例如:
b = 8,k = 432b = 8常见原因:
在理想情况下(学习率不变、无随机性差异):
k 次再更新b×k 的大批做一次更新但有细微差别:
等效批变大后:
经验规则:
新学习率 ≈ 原学习率 × (新批大小 / 原批大小)| 方式 | 批大小 | 显存 | 更新频率 |
|---|---|---|---|
| 普通大 batch | 32 | 高 | 每次 |
| 小 batch + 累积 | 8×4 | 低 | 每 4 次 |
梯度累积不改变“最终看到的样本量”,而是把大 batch 的更新“拆散”到多次前向中完成。
如果你愿意,我也可以结合 PyTorch 代码示例 或 训练曲线对比 来讲。