Batch概念
深度学习中,batch 指在每次迭代(iteration中,模型使用的训练数据中的一部分。训练数据会被划分为若干个小批次(batches),每个批次包含一定数量的训练数据样本。
Batch相关的概念
Batch Size:每个批次(Batch)包含的样本数量。
Epoch: 模型对整个训练数据集完成一次遍历的过程就是一个Epoch。
Iteration: 模型对一个批次的训练数据完成一次训练(前向传播和后向传播)的过程。
Batch作用
效率提升:一次处理全部训练数据(称为“全批量”训练)会占用大量内存,尤其当数据集很大时,无法直接加载到显存中。
通过使用 batch,模型每次只处理部分数据,从而降低了内存需求,提高了训练效率。
稳定性与泛化性:使用小 batch 会在每次参数更新中引入一些随机性(由于梯度计算基于部分数据),这可以帮助模型跳出局部最优解,提升泛化能力。
并行化:小批次可以方便地利用 GPU 并行计算能力,加快训练速度。
不同Batch Size的影响
Batch Size特点
| Batch Size | 优点 | 缺点 |
|---|---|---|
| 小 Batch Size | - 梯度更新更频繁,增加训练的随机性,有助于逃离局部最优解 | - 计算梯度的方差较大,模型可能收敛较慢 |
| - 占用显存小,适合显存有限的设备 | ||
| 大 Batch Size | - 每次梯度更新更接近全局梯度,收敛过程更稳定 | - 需要更大的显存 |
| - 并行计算效率高,适合高性能硬件 | - 容易陷入局部最优,泛化能力可能较差 |
训练过程中Batch内数据集构造注意事项
- 确保数据分布的均衡性。
- 数据顺序的随机性,避免顺序模式带来的偏差。
- 合理选择 Batch Size。
- 数据增强需适度,避免引入过多无关信息。
- 注意数据泄露问题,避免训练集和测试集间的混淆。