mini-batch梯度下降

一、背景

传统的梯度下降,每次梯度下降都是对所有的训练数据进行计算平均梯度,这种梯度下降法叫做full-batch梯度下降法。考虑一种情况,当训练数据量在千万级别时,一次迭代需要等待多长时间,会极大的降低训练速度。

每次训练的使用同一份数据,所以loss的损失函数会是一直下降的,收敛到的是全局最优解。


二、mini-batch梯度下降

如果选择介于1和最大训练数据量之间的一个bath size数据量进行训练,叫mini-batch 梯度下降。

每次训练的不能保证使用的是同一份数据,所以每一个batch不能保证都下降,整体训练loss变化会有很多噪声,但是整体趋势是下降的,随后会在最优值附近波动,不会收敛。


三、比较


当batch size 为1时,如图中红色变化示意图,每一个训练数据都要更新权值。通过小的学习率,噪声也会小很多,但舍弃了向量化处理带来的加速,这种梯度下降叫随机梯度下降(SGD);

当batch_size为mini batch时,如图中蓝色变化示意图,每一个batch更新一次去权值。下降会有一些噪声变化,但是总体趋势是走向拟合中心的;

当batch_size为full batch时,如图中黑色变化示意图,全部数据训练完更新一次权值。下降时变化很快,一直是趋于拟合的,但是当数据量大时,单次迭代时间过长,这种梯度下降叫BGD(batch gradient descent)。

版权声明:本文为CSDN博主「legend_hua」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/legend_hua/article/details/80633525

最新文章