神经网络中Batch与Epoch的区别

随机梯度下降是一种具有多个超参数的学习算法。

两个经常让初学者感到困惑的超参数是batch大小和epoch数量。它们都是整数值,似乎都做同样的事情。

在这篇文章中,你会发现在随机梯度下降中batch和epoch之间的区别。

读完这篇文章,你就会知道:

  • 随机梯度下降是一种迭代学习算法,它使用训练数据集来更新模型。
  • batch大小是梯度下降的超参数,它控制在更新模型的内部参数之前要处理的训练样本的数量。
  • epoch数是控制通过训练数据集的完整通过数的梯度下降的超参数。

我们开始吧。

概述

这篇文章分为五个部分,它们是:

  • 随机梯度下降。
  • 什么是样品?
  • 什么是Batch?
  • 什么是Epoch?
  • Batch和Epoch有什么不同?

随机梯度下降

随机梯度下降,简称SGD,是一种用于训练机器学习算法的优化算法,最著名的是用于深度学习的人工神经网络。

该算法的工作是找出一组在对数损失或均方误差等性能指标下表现良好的内模参数。

优化是一种搜索过程,你可以将这种搜索视为学习。该优化算法被称为“梯度下降”,其中“梯度”是指误差梯度或误差斜率的计算,而“下降”是指沿着该斜率向下朝某一最小误差水平移动。

该算法是迭代的。这意味着搜索过程发生在多个离散的步骤中,每一步都有望略微改进模型参数。

每个步骤涉及使用具有当前内部参数集的模型来对一些样本进行预测,将预测与实际预期结果进行比较,计算误差,并使用误差来更新内部模型参数。

这种更新过程对于不同的算法是不同的,但在人工神经网络的情况下,使用的是反向传播更新算法。

在我们深入到Batch和Epoch之前,让我们先来看看我们所说的样本是什么意思。

单击此处了解有关渐变下降的更多信息:

什么是样品?

样品是单行数据。

它包含输入到算法中的输入和用于与预测进行比较并计算误差的输出。

训练数据集由许多行数据组成,例如许多样本。样本也可以称为实例、观测、输入向量或特征向量。

现在我们知道了什么是样本,让我们定义一个Batch。

什么是Batch?

Batch大小是一个超参数,它定义在更新内部模型参数之前要处理的样本数。

可以将Batch看作是对一个或多个样本进行迭代并进行预测的for循环。在Batch结束时,将预测与预期输出变量进行比较,并计算误差。根据该误差,使用更新算法来改进模型,例如沿着误差梯度向下移动。

训练数据集可以被分成一个或多个Batch。

当所有训练样本都用来创建一批时,这种学习算法称为Batch梯度下降。当批次是一个样本的大小时,这种学习算法称为随机梯度下降。当Batch大小大于一个样本且小于训练数据集的大小时,该学习算法称为小Batch梯度下降。

  • Batch渐变下降。Batch大小=训练集的大小。
  • 随机梯度下降。Batch大小=1。
  • 小Batch梯度下降。1

在小Batch梯度下降的情况下,流行的Batch大小包括32、64和128个样本。你可以在文献和教程中看到模型中使用的这些值。

如果数据集没有按Batch大小平均划分怎么办?

在训练模型时,这种情况可以而且确实经常发生。这仅仅意味着最后一Batch的样品比其他Batch少。

或者,你可以从数据集中删除一些样本或更改Batch大小,以便数据集中的样本数除以Batch大小。

有关这些渐变下降变化之间的差异的更多信息,请参见帖子:

有关Batch大小对学习过程影响的更多信息,请参阅帖子:

Batch涉及使用示例对模型进行更新;接下来,让我们看一下Epoch。

什么是Epoch?

Epoch数是定义学习算法将通过整个训练数据集工作的次数的超参数。

一个Epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。一个Epoch由一个或多个Batch组成。例如,如上所述,具有一个Batch的Epoch称为Batch梯度下降学习算法。

你可以考虑对Epoch的数量执行for循环,其中每个循环对训练数据集进行处理。在这个for循环中是另一个嵌套的for循环,它迭代每个Batch样本,其中一个Batch样本具有指定的“Batch”数量的样本。

Epoch的数量传统上很大,通常是数百或数千,从而允许学习算法运行,直到来自模型的误差已经充分最小化。你可以在文献和教程中看到设置为10、100、500、1000和更大的Epoch数的示例。

通常创建线状图,将沿x轴的Epoch显示为时间,并在y轴上显示模型的误差或技巧。这些曲线图有时被称为学习曲线。这些曲线图可以帮助诊断模型是否过度学习、学习不足或是否适合训练数据集。

有关通过LSTM网络的学习曲线进行诊断的更多信息,请参阅帖子:

如果还不清楚,让我们来看看Batch和Epoch之间的区别。

Batch和Epoch有什么不同?

Batch大小是在更新模型之前处理的样本数。

Epoch数是训练数据集的完整通过数。

Batch的大小必须大于或等于1,并且小于或等于训练数据集中的样本数。

Epoch数可以设置为1到无穷大之间的整数值。你可以随心所欲地运行该算法,甚至可以使用除固定数量的Epoch之外的其他标准来停止它,例如模型误差随时间的变化(或缺少变化)。

它们都是整数值,并且都是用于学习算法的超参数,例如用于学习过程的参数,而不是由学习过程找到的内部模型参数。

你必须指定学习算法的Batch大小和Epoch数。

对于如何配置这些参数,没有神奇的规则。你必须尝试不同的值,看看哪种值最适合你的问题。

工作示例。

最后,让我们用一个小示例将其具体化。

假设你有一个包含200个样本(数据行)的数据集,并且你选择的Batch大小为5和1,000个Epoch。

这意味着数据集将被分成40 Batch,每个Batch有5个样本。模型权重将在每个Batch的五个样本之后更新。

这也意味着一个Epoch将涉及40批或40个模型更新。

对于1,000个Epoch,模型将暴露或通过整个数据集1,000次。就是整个训练过程一共是四万Batch。

进一步阅读

如果你想深入了解,本节提供了更多关于该主题的资源。

总结

在这篇文章中,你发现了随机梯度下降中批次和纪元之间的区别。

具体地说,你了解到:

  • 随机梯度下降是一种迭代学习算法,它使用训练数据集来更新模型。
  • batch大小是梯度下降的超参数,它控制在更新模型的内部参数之前要处理的训练样本的数量。
  • epoch数是控制通过训练数据集的完整通过数的梯度下降的超参数。

10

Python

发表评论

邮箱地址不会被公开。 必填项已用*标注

什么阻碍了你实现迈入机器学习领域的目标?

什么阻碍了你实现迈入机器学习领域的目标?

2020-04-22 机器学习

如果你在为进入机器学习领域而挣扎,感觉到有什么东西阻止了自己的开始,那么你应该看看这篇文章。 在这篇文章中,我们会讨论阻止进入机器学习领域的自我限制的信念,让你明白面临的问题。 几乎总是一种自我限制的信念阻碍了你们的进步。 也许你会在一个或多个这样的信念中看到自己。如果是这样的话, [......]

了解详情

R语言机器学习迷你课程

R语言机器学习迷你课程

2020-08-12 机器学习

在这个迷你课程中,你将发现如何开始,构建精确的模型,并自信地完成在14天内使用R预测建模机器学习项目。 这是一个重要而重要的文章。你可能想把它书签。 了解如何准备数据,拟合机器学习模型,并用我的新书评估他们在r上的预测,包括14步教程、3个项目和完整源代码。 我们开始吧。 [......]

了解详情

关于机器学习的几点思考

关于机器学习的几点思考

2020-04-26 机器学习

机器学习是一个大的、跨学科的研究领域。 你可以通过机器学习获得令人印象深刻的结果,并找到非常具有挑战性的问题的解决方案。但这只是更广泛的机器学习领域的一小部分,通常被称为预测建模或预测分析。 在这篇文章中,你将发现如何改变你对机器学习的思考方式,以便更好地为你提供机器学习实践者的服务。 [......]

了解详情

找到你的机器学习部落

找到你的机器学习部落

2020-04-26 机器学习

机器学习是一个充满算法和数据的迷人而强大的研究领域。 问题是,有这么多不同类型的人对机器学习感兴趣,每个人都有不同的需求。重要的是要了解你想要从机器学习中得到什么,并根据这些需求调整你的自学。 如果你不这样做,你很容易就会陷入困境,迷失方向,失去兴趣,得不到你想要的东西。 找到 [......]

了解详情

应用机器学习过程

应用机器学习过程

2020-04-26 机器学习

随着时间的推移,在处理应用机器学习问题时,你会开发出一种模式或流程,以快速获得良好的正常结果。 一旦开发完成,你就可以在一个又一个项目上反复使用此过程。你的流程越健壮、越发达,你就能越快地获得可靠的结果。 在这篇文章中,我想与你分享我解决机器学习问题的过程框架。 你可以将其用作下一 [......]

了解详情