epoch、batch、batch size和mini-batch都是深度学习中常见的名词,初学时经常混淆,在此整理。
当一个完整的数据集经过神经网络一次,并返回一次,这个过程称为一个epoch。
在深度学习中,向神经网络传递整个数据集一次是远远不够的,而需要多次在神经网络上训练。从欠拟合的状态向适当拟合靠近。当然一不小心也可能会过拟合。也就是说不同的数据集,最适的epoch是不同的,会受到数据集多样性的影响。
当数据集很大的时候,对于每个epoch,很难将所有的数据集一次读入到内存中,这是需要将数据集分为几次读入,每次称为一个batch。
即batch中样本的数量。
需要先介绍下梯度下降的两种方法。
这种方法每次使用整个batch计算损失,调整参数。性能相对较好,但是计算量大,速度慢。
每次选取一个数据调整参数,计算很快,但是收敛性能不好,容易在最优点附近震荡。
现在解释mini-batch。这里指的是一种梯度下降的方法,算是融合了上述两种方法的优点。也就是说把batch分成小batch,在小batch上梯度下降。