在最初学习深度学习的时候,比较容易混淆三个概念
Epoch Batch Iteration
如果对这三个概念没有一个清晰的认识的话, 在看别人文章的时候,很容易犯糊涂
Epoch
In terms of artificial neural networks, an epoch refers to one cycle through the full training dataset.
Epoch指的是使用全部训练数据进行一次完整的训练, 通俗地讲, 就是加入我训练集有一百张烟草的图片, 我在训练中把这100张图片全部训练一次(这里的训练指的是都输入到模型中进行一次正向传播和反向传播,更新权重).
Batch
Batch size is a term used in machine learning and refers to the number of training examples utilized in one iteration.
正如我们说Epoch一般说 一个Epoch 两个Epoch 等等, Batch 一般说 size是多大, 这个如何理解呢, 它其实指的是我们把样本(训练集)分成一批一批的数据输入到模型中进行训练, Batch size指的是每批样本的大小. 举个例子, 我有100张烟草的图片, 我分成5批放到模型中去训练, 那一个Epoch是100张图片, 总共5个Batch, 每个Batch是20张图片.
Iteration
An iteration is a term used in machine learning and indicates the number of times the algorithm's parameters are updated.
中文翻译过来就是迭代的意思, 就是说我给机器输入一个batch 的数据之后, 机器训练一次 就是一个Iteration
问题补充:
一个batch的数据如何做反向传播?
对于一个batch内部的数据,更新权重我们是这样做的:
假如我们有三个数据,第一个数据我们更新一次参数,不过这个更新只是在我们脑子里,实际的参数没有变化,然后使用原始的参数更新一次第二个例子,然后使用原始参数更新一次第三个例子。这样一个batch完了之后,我们把这三次计算出来需要的update的参数量求和或者求平均,从而更新一次参数。
为什么要使用多于一个epoch?
在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。但请记住,我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降来优化学习过程。如下图所示。因此仅仅更新一次或者说使用一个epoch是不够的。
随着epoch数量增加,神经网络中的权重的更新次数也在增加,曲线从欠拟合变得过拟合。
那么,问题来了,几个epoch才是合适的呢?
不幸的是,这个问题并没有正确的答案。对于不同的数据集,答案是不一样的。但是数据的多样性会影响合适的epoch的数量。比如,只有黑色的猫的数据集,以及有各种颜色的猫的数据集。
本次总结参考了的资料如下:
https://www.jianshu.com/p/22c50ded4cf7
https://blog.csdn.net/qq_39521554/article/details/84480429