Mini-Batch Gradient Descent
小批量梯度下降
如果我们拥有海量的训练数据,那么在每一轮epoch训练时就会花费很长的时间,很难追踪其训练的情况。在小批量梯度下降中,训练的损失和梯度都是根据当前batch进行计算的。
示例:
假设当前有m个样本的数据集X,在mini-batch方法中会将其划分为多个batch,如下图所示
小批量梯度下降的程序说明如下:
For t= (1, ... , #Batches):
对t个批次的样本进行前向传播;
计算t个批次的样本的损失;
对t个批次的样本进行反向传播,求得每个参数的梯度并更新其值
值得注意的点是,在训练过程中,当我们不应用小批量梯度下降时,成本趋势比使用小批量来训练我们的模型更平滑。
Stochastic Gradient Descent
随机梯度下降
- 如果训练的batch_size为m(m<M),那么该训练为批量梯度下降
- 如果训练的batch_size为1,那么该训练为随机梯度下降
选择合适的Batch_size
当训练样本量大小为M(1<M<2000),那么该样本量就属于一个小数据集,这时用批量梯度下降(Batch_size)就比较合适,如果样本量M>2000,也许小批量梯度下降会更加合适,通常小批量的大小为64,128,256等等。
下面展示一张不同batch_size对应不同训练收敛过程的示意图,可以从图中看出随着batch_size的增大,其收敛过程能够逐渐趋于平稳,反之则更加抖动。