-
batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;即一个batch中有batchsize个样本。
-
iteration:1个iteration等于使用batchsize个样本训练一次;
-
epoch:1个epoch等于使用训练集中的全部样本训练一次;
同样数量的样本集,batchsize越大,iteration就越小,每一次epoch内迭代的次数就越少,
Tips:训练集有1000个样本,batchsize=10,那么进行1次完整个样本集的训练需要: 100次iteration,1次epoch。
-
当数据量足够大的时候,可以适当减小batchsize,由于数据量太大,内存不够;但太小有可能无法收敛。
-
全数据集方向能够更好的代表样本总体,确定极值所在。
-
batchsize=1,有噪声时容易被噪声带跑偏。
-
适当增大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) - 知乎
我们把要最小化或最大化的函数称为目标函数或准则。 当我们对其进行最小化时,我们也把它称为代价函数、损失函数或误差函数。