Epoch, bach, batch size, mini batch, full batch, online learning, iterations 的概念
1、Epoch
**Epoch是世代。**一个完整的数据集通过网络模型的训练为一个epoch。
为什么使用多个epoch?
深度学习中,向神经网络传递一次全部数据集远远不够,需要反复迭代训练。从欠拟合的状态向适当拟合靠近,避免过拟合。即不同的数据集,最佳epoch不同,会受到数据集多样性的影响。
判断过拟合和欠拟合的方法
2、Bach
**Batch是批。**当数据集巨大时,每个epoch,很难将所有的数据集一次读入到内存中,因此需要将数据集分为几次读入,每次称为一个batch。
3、Bach Size
每个batch中样本的数量。深度学习每一次参数更新所需要损失函数并不是由一个{data:label}获得的,而是由一组数据加权得到的,这一组数据的数量就是[batch size]。
4、Mini Bach
为了提高效率,我们可以把样本分成等量的子集。 例如将500万样本分成1000份(子集), 每份5000个样本, 这些子集就称为mini batch。然后我们分别用一个for循环遍历这1000个子集。 针对每一个子集做一次梯度下降。 然后更新参数w和b的值。接着到下一个子集中继续进行梯度下降。 这样在遍历完所有的mini batch之后我们相当于在梯度下降中做了1000次迭代(iterations)。
梯度下降的方式
1、 批梯度下降(batch gradient decent)
每次使用整个batch计算损失,调整参数。性能相对较好,但是计算量大,速度慢。
2、随机梯度下降(stochastic gradient decent)
每次选取一个数据调整参数,计算很快,但是收敛性能不好,容易在最优点附近震荡。
3、小批量梯度下降(mini-batch gradient decent)
融合前两类,把batch分成小batch,在小batch上梯度下降。
5、Full bach
Bach Size的数量等于样本总数。
- bach 的利弊
- 优点
1)节约内存
2)训练速度快 - 缺点
1)精度较低
2)迭代过程中,损失函数会上下波动,但趋势是向下的
如图1,左边是full batch的梯度下降效果。 可以看到每一次迭代成本函数都呈现下降趋势,这是好的现象,说明我们w和b的设定一直再减少误差。 这样一直迭代下去我们就可以找到最优解。 右边是mini batch的梯度下降效果,可以看到它是上下波动的,成本函数的值有时高有时低,但总体还是呈现下降的趋势。不过整体还是朝着最优解迭代的。 而且由于mini batch一个epoch就走了5000步(5000次梯度下降),而full batch一个epoch只有一步。所以虽然mini batch走了弯路但还是会快很多。
把图2看做是梯度下降空间。 下面的蓝色的部分是full batch的而上面是mini batch。 就像上面说的mini batch不是每次迭代损失函数都会减少,所以看上去好像走了很多弯路。
- 关于bach 的经验
一般设置为2的n次方, 例如64,128,512,1024. 一般不会超过这个范围。不能太大,因为太大了会无限接近full batch的行为,速度会慢。 也不能太小,太小了以后可能算法永远不会收敛。
6、Online learning
每次只训练一个样本,一边训练一边学习。
7、Iterations
Iterations是迭代。若数据集有1000个样本,batch size是50,其将会有20个Iterations。这20个Iteration完成一个Epoch。
参考:
链接1:https://blog.csdn.net/xys430381_1/article/details/80680167
链接2:https://blog.csdn.net/weixin_45698935/article/details/106477624