随机梯度下降与批量梯度下降
梯度下降(GD)是最小化风险函数、损失函数的一种常用方法。随机梯度下降和批量梯度下降是两种迭代求解的思路。
(1)批量梯度下降—最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。
(2)随机梯度下降—最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。
epoch、iteration和batchsize的区别
深度学习中经常看到epoch、 iteration和batchsize,下面按自己的理解说说这三个的区别:
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;
举个例子,训练集有1000个样本,batchsize=10,那么:
训练完整个样本集需要:
100次iteration,1次epoch。
训练步骤(batchsize为64,训练集有6400)
(batchsize大小一般固定为:32、64、128或256,效果相差不大)
- 利用函数shuffle函数将6400样本随机排序
- 按照排序后的顺序每次挑选64(batchsize)个进行训练
经过100次iteration,所有的样本都被训练了一次
SDG利用的是同样的原理
3 batchsize总结
3.1 Full Batch Learning
- 数据量太大时无法训练
- 不同batch之间采样性差异导致梯度消失
3.2 在线学习 batchsize = 1
- 每次修正方向以各自样本的梯度方向修正,横冲直撞各自为阵,难以达到收敛
3.3 合适的batchsize
3.3.1 合理范围内增大batch的好处
- 内存利用率提高了,大矩阵乘法的并行化效率提高。
- 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
- 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
3.3.2 盲目增大batch的坏处
- 内存利用率提高了,但是内存容量可能撑不住了。
- 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
- Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。