优化算法:batch_size/iteration/epoch

  • batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;即一个batch中有batchsize个样本。

  • iteration:1个iteration等于使用batchsize个样本训练一次;

  • epoch:1个epoch等于使用训练集中的全部样本训练一次;

同样数量的样本集,batchsize越大,iteration就越小,每一次epoch内迭代的次数就越少,

Tips:训练集有1000个样本,batchsize=10,那么进行1次完整个样本集的训练需要:  100次iteration,1次epoch。

  1. 当数据量足够大的时候,可以适当减小batchsize,由于数据量太大,内存不够;但太小有可能无法收敛。

  2. 全数据集方向能够更好的代表样本总体,确定极值所在。

  3. batchsize=1,有噪声时容易被噪声带跑偏。

  4. 适当增大batchsize的好处:

1)内存的利用率提高了,大矩阵乘法的并行化效率提高。

2)跑完一次epoch(全数据集)所需迭代次数减少,对于相同的数据量的处理速度进一步加快。         

3)一定范围内,batchsize越大,其确定的下降方向就越准,引起训练震荡越小。

但batchsize过大:

1)  内存爆炸,OOM(显存占用不是和batch size简单成正比)

2)跑完一次epoch(全数据集)所需迭代次数减少了,但要想达到相同的精度,时间开销太大,参数的修正更加缓慢——需要更多epoch才能达到相同的精度。

3)batchsize增大到一定的程度,其确定的下降方向已经基本不再变化。——就是batchsize超过了一个阈值在增大batchsize对提高模型精度没有帮助了。

 

附录:

每次反向传播的梯度是对mini-batch中每个instance的梯度平均之后的结果。

GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…时往往要比设置为整10、整100的倍数时表现更优

GD(Gradient Descent):就是没有利用Batch Size,用基于整个数据库得到梯度,梯度准确,但数据量大时,计算非常耗时,同时神经网络常是非凸的,网络最终可能收敛到初始点附近的局部最优点。

SGD(Stochastic Gradient Descent):就是Batch Size=1,每次计算一个样本,梯度不准确,所以学习率要降低。

mini-batch SGD:就是选着合适Batch Size的SGD算法,mini-batch利用噪声梯度,一定程度上缓解了GD算法直接掉进初始点附近的局部最优值。同时梯度准确了,学习率要加大。

在线学习 or 离线学习

在线学习(Online learning)与离线学习(Offline learning)_在线学习和离线学习-CSDN博客

在线学习也称为增量学习或适应性学习,是指对一定顺序下接收数据,每接收一个数据,模型会对它进行预测并对当前模型进行更新,然后处理下一个数据。这对模型的选择是一个完全不同,更复杂的问题。需要混合假设更新和对每轮新到达示例的假设评估。换句话说,你只能访问之前的数据,来回答当前的问题。

随机梯度下降

随机梯度下降(stochastic gradient descent,SGD) - 知乎

我们把要最小化或最大化的函数称为目标函数或准则。 当我们对其进行最小化时,我们也把它称为代价函数、损失函数或误差函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值