3.2 批量和动量
批量的概念:
- 在深度学习中,训练数据被分成多个小批量(batch),每个批量包含B笔数据。
- 每个批量用于计算损失和梯度,以更新模型参数。
- 一个完整的数据集遍历称为一个回合(epoch)。
- 数据在每个epoch开始前通常会被随机打乱。
批量大小对梯度下降法的影响:
- 批量梯度下降法(BGD): 如左图,使用全部训练数据来更新参数,计算量大,更新稳定但速度慢。
- 随机梯度下降法(SGD): 如右图,每次只使用一个数据点更新参数,引入随机性,更新方向曲折,但有可能逃离局部最小值。
- [注] :随机梯度下降的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下降更容易逃离局部最小值。
实验观察:
- 在并行计算环境下,大批量并不一定导致计算时间增加。
- GPU并行处理能力强,大批量数据的处理时间并不会线性增加。
- 实验显示,大批量在训练时准确率可能较低,但测试时泛化能力可能较差。
*【注】:MNIST 中的“NIST”是指国家标准和技术研究所(National Institute of Standards and Technology),其最初收集了这些数据。MNIST 中“M”是指修改的(Modiffed),数据经过预处理以方便机器学习算法使用。MNIST 数据集收集了数万张手写数字(09̃)的28×28 像素的灰度图像及其标签。一般大家第一个会尝试的机器学习的任务,往往就是用 MNIST 做手写数字识别, 这个简单的分类问题是深度学习研究中的“Hello World”
动量法(Momentum Method):
- 动量法通过引入前一步的更新方向和当前梯度来更新参数,帮助模型逃离局部最小值和鞍点。
- 动量项是之前所有梯度的加权和,可以看作是在梯度方向上的“惯性”。
动量法的好处:
- 动量法可以在梯度方向变化频繁时平滑更新方向,减少震荡。
- 有助于模型在面对复杂的误差表面时,更快地收敛。
自适应学习率:
- 除了动量法,自适应学习率也是优化算法中的一个重要概念。
- 学习率调度(Learning Rate Scheduling)和优化算法如Adam,能够根据训练进度自动调整学习率,进一步提高训练效率和模型性能。
总结:
- 批量大小的选择对训练有显著影响,需要根据具体问题和硬件条件进行调整。
- 动量法是一种有效的优化策略,可以帮助模型在复杂的误差表面上更好地优化。
- 自适应学习率方法能够进一步提升模型的训练效果和收敛速度。