机器学习笔记(二)--Epoch和Batch和iteration

在机器学习中,这几个概念是很重要也是较容易混淆的,百度上的资料个人觉得都没这篇外文讲得清楚。

 

原文:https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9

 

翻译:

 

 

Epoch vs Batch Size vs Iterations

在这之前,敲代码的时候你一定有想过这三个看起来非常相似的东西到底有什么不同。要得到问题的答案,你需要有相关机器学习的知识如梯度下降,这样理解起来会更快。

 

梯度下降

这是机器学习中一个利用迭代的优化算法取寻找最优解的方法。Gradient意思是斜率即函数的导数,Descent意思是

下降。迭代的解释是:我们需要多次获取结果使得最后得到的结果是最优结果(效果最好)。梯度下降有一个参数叫学习率。如上图,初始的时候步子很大意味着学习率很大,随着点向下走,学习率减小,步子也会减小。同时,成本函数也在减小,代表成本在减少。有时你可能听到人们说损失函数减小或者损失减少,与成本是一样的。

 

 

我们只有在当数据量非常大的时候才需要这三个属于术语:batch epoch iterations,因为这时我们不能将所有海量的数据一次性输入计算机中。所以,为了解决这个问题,我们需要将数据分割成多个小部分,逐个输入计算机中,然后在每一次拟合数据的最后去更新神经网络的权值。

 

 

Epochs--一个Epoch是整个数据集进入神经网络向前向后传播一次。

 

 

 

显然,一个epoch也是十分巨大的,无法一次性向计算机输入,所以要把它分割成多个小规模的batches。

 

为什么要使用多个Epoch?

我们清楚将数据集全部输入网络中处理一次可能是不够的(欠拟合),还不能得出令人满意的结果,所以就需要多次将全部数据输入网络处理。记住,我们使用的是有限的数据集,使用梯度下降法优化学习和流图是一个可迭代的过程。如上图,随着增加epoch,权值更新次数更多,曲线从欠拟合“优化”到过拟合,说明增加epoch是对提高学习效果有效。

 

那么最优的epoch是什么?

很不幸,这个问题现在没有确切答案。因为不同数据集有自己的最优epoch,但是你可以说最优epoch与你如何分割数据集有关联。

 

Batch Size--一次训练所用的样本数

注意:Batch size与Batch的数量是两个不同的概念。

 

就像之前说的,不能一次输入一个epoch,所以将数据集分成多个的batch。就像读一篇长文章时,分成多个部分,如说明书,梯度下降,epoch,batch size,iterations,会让你更好的理解整篇文章。

 

Iterations--完成一次epoch所需的batch数量

 

举个例子:我们共有2000个训练样本,500个样本分成一个batch(batch size=500),那么他需要4个iterations完成一个epoch。

 

 

你可能感兴趣的:(机器学习)