目录标题
- 一、基本概念
- 二、SGD
- 三、代码
一、基本概念
Epoch
1 个 Epoch 表示模型完整遍历一次整个训练数据集的过程。例如,训练 10 个 Epoch 表示模型将整个数据集反复学习 10 次。
模型需要多次遍历数据集(多个 Epoch)才能逐步学习数据中的模式,单次遍历数据集(1 个 Epoch)通常不足以让模型收敛,多次遍历可以逐步优化模型参数。Batch Size
Batch Size 是每次训练时输入的样本数量。例如,Batch Size=32 表示每次用 32 个样本计算一次梯度并更新模型参数。
小批量数据计算梯度比单样本(Batch Size=1)更稳定,比全批量(Batch Size=全体数据)更高效。并且较小的 Batch Size 可能带来更多噪声,有助于模型泛化。Iteration
一次 Iteration 表示完成一个 Batch 数据的正向传播(预测)和反向传播(更新参数)的过程
例如,数据集现有 2000 个样本,对其训练 10 个 Epoch,选择 Batch Size=64:
Batch 个数为 2000//64+1=31+1=32 个(最后一个 Batch 仅有 16 个样本)。
每个 Epoch 中迭代次数 Iteration=32 次。
总迭代次数为 10×32=320 次。
总训练样本数为 10×2000=20000。
二、SGD
实际的操作时,一般会从训练数据中随机选择一个小批量数据(mini-batch)分是不是有放回抽取,然后用梯度下降法迭代多个轮次(iteration);这种“对随机选择的数据进行的梯度下降法”,被称作随机梯度下降法(stochastic gradient descent, SGD)。
具体过程如下:
1)随机选择批数据(mini-batch)
从训练数据中随机选出一部分数据,学习的目标就是要减少这个 mini-batch 数据的损失函数值。
2)计算梯度
对当前的各权重参数,计算出梯度的值,负梯度就表示了损失函数减小最多的方向。
3)更新参数
按照之前梯度下降法的公式,对权重参数沿负梯度方向进行微小更新。
4)重复迭代
重复上面的步骤 1)2)3),直到完成预定的总迭代次数。
三、代码
参考下一个blog实现 深度学习9:神经网络学习6:神经网络类实现和使用