神经网络中Batch和Epoch之间的区别是什么?

https://mp.weixin.qq.com/s/FFF6RSudAas7j2vHqP5j2Q

随机梯度下降法是一种具有大量超参数的学习算法。通常会使初学者感到困惑的两个超参数: Batch大小和Epoch数量,它们都是整数值,看起来做的事情是一样的。在这篇文章中,您将发现随机梯度下降中Batch和Epoch之间的差异。

阅读这篇文章后,你会知道:

·   随机梯度下降是一种迭代学习算法,它使用训练数据集来更新模型。

·   批量大小是梯度下降的超参数,在模型的内部参数更新之前控制训练样本的数量。

·   Epoch数是梯度下降的超参数,其控制通过训练数据集的完整传递的数量。

概观

这篇文章分为五个部分:

1.    随机梯度下降

2.    什么是Sample?

3.    什么是Batch?

4.    什么是Epoch?

5.    Batch和Epoch有什么区别?

 

随机梯度下降

随机梯度下降(Stochastic Gradient Descent,简称SGD)是一种用于训练机器学习算法的优化算法,最值得注意的是深度学习中使用的人工神经网络。该算法的工作是找到一组内部模型参数,这些参数在某些性能测量中表现良好,例如对数损失或均方误差。

优化是一种搜索过程,您可以将此搜索视为学习。优化算法称为“ 梯度下降 ”,其中“ 梯度 ”是指误差梯度或误差斜率的计算,“下降”是指沿着该斜率向下移动到某个最小误差水平。该算法是迭代的。这意味着搜索过程发生在多个不连续的步骤上,每个步骤都希望略微改进模型参数。

每一步都需要使用模型和当前的一组内部参数对一些样本进行预测,将预测与实际预期结果进行比较,计算误差,并使用误差更新内部模型参数。该更新过程对于不同的算法是不同的,但是在人工神经网络的情况下,使用反向传播更新算法。

在我们深入研究批次和时代之前,让我们来看看样本的含义。

 

什么是Sample?

Sample是单行数据。它包含输入到算法中的输入和用于与预测进行比较并计算错误的输出。

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

现在我们知道Sample是什么,让我们定义一个batch。

 

什么是Batch?

Batch大小是一个超参数,用于定义在更新内部模型参数之前要处理的样本数。将批处理视为循环迭代一个或多个样本并进行预测。在批处理结束时,将预测与预期输出变量进行比较,并计算误差。从该错误中,更新算法用于改进模型,例如沿误差梯度向下移动。训练数据集可以分为一个或多个Batch。当所有训练样本用于创建一个Batch时,学习算法称为批量梯度下降。当批量是一个样本的大小时,学习算法称为随机梯度下降。当批量大小超过一个样本且小于训练数据集的大小时,学习算法称为小批量梯度下降。

·    批量梯度下降。批量大小=训练集的大小

·        随机梯度下降。批量大小= 1

·       小批量梯度下降。1 <批量大小<训练集的大小

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

如果数据集没有按批量大小均匀分配怎么办?

在训练模型时经常会发生这种情况。它只是意味着最终批次的样品数量少于其他批次。或者,您可以从数据集中删除一些样本或更改批处理大小,以便数据集中的样本数按批次大小均匀划分。有关这些梯度下降变化之间差异的更多信息,请参阅帖子:

·    轻微批量梯度下降的简要介绍以及如何配置批量大小

链接地址:

https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/

批处理涉及使用样本更新模型; 接下来,让我们来看一下epoch。

 

什么是Epoch?

Epoch数是一个超参数,它定义了学习算法在整个训练数据集中的工作次数。一个Epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。Epoch由一个或多个Batch组成。例如,如上所述,具有一批的Epoch称为批量梯度下降学习算法。您可以将for循环放在每个需要遍历训练数据集的epoch上,在这个for循环中是另一个嵌套的for循环,它遍历每批样本,其中一个批次具有指定的“批量大小”样本数。

epochs 数量传统上很大,通常是数百或数千,允许学习算法运行直到模型的误差被充分地最小化了。您可能会看到文献和教程设置为10,100,500,1000和更大的时期数量的示例。通常创建线图,其显示沿x轴的时间以及模型在y轴上的误差或技能。这些图有时被称为学习曲线。这些图可以帮助诊断模型是否已经过度学习,学习不足或者是否适合训练数据集。

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

·    如何诊断LSTM模型的过度拟合和欠拟合

链接地址:

https://machinelearningmastery.com/diagnose-overfitting-underfitting-lstm-models/

如果仍然不清楚,让我们来看看Batch和Epoch之间的差异。

 

Batch和Epoch有什么区别?

Batch大小是在更新模型之前处理的多个样本。Epoch数是通过训练数据集的完整传递次数。批处理的大小必须大于或等于1且小于或等于训练数据集中的样本数。可以将epoch设置为1和无穷大之间的整数值。您可以根据需要运行算法,甚至可以使用除固定数量的epoch之外的其他条件来停止算法,例如模型错误随时间的变化(或缺少变化)。它们都是整数值,并且它们都是学习算法的超参数,例如学习过程的参数,而不是学习过程找到的内部模型参数。您必须为学习算法指定batch大小和epoch数。如何配置这些参数没有固定的规则。您必须尝试不同的值,看看哪种方法最适合您的问题。

 

工作实例

最后,让我们用一个小例子来说明这一点。

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

这意味着数据集将分为40个Batch,每个Batch有5个样本。每批五个样品后,模型权重将更新。

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

有1000个Epoch,模型将暴露或传递整个数据集1,000次。在整个培训过程中,总共有40,000Batch。

神经网络中Batch和Epoch之间的区别是什么?相关推荐

  1. 神经网络中Batch和Epoch之间的区别

    来自蜂口知道公众号 随机梯度下降法是一种具有大量超参数的学习算法.通常会使初学者感到困惑的两个超参数: Batch大小和Epoch数量,它们都是整数值,看起来做的事情是一样的.在这篇文章中,您将发现随 ...

  2. Batch和Epoch之间的区别是什么?

    写在前面(快速理解): · 随机梯度下降(SGD)是一种迭代学习算法,它使用训练数据集来更新模型. · Batch(批量)大小是梯度下降算法的超参数,在模型的内部参数更新之前控制训练样本的数量,一个周 ...

  3. 神经网络中Batch Size的理解

    神经网络中Batch Size的理解 直观的理解: Batch Size定义:一次训练所选取的样本数. Batch Size的大小影响模型的优化程度和速度.同时其直接影响到GPU内存的使用情况,假如你 ...

  4. (51)FPGA面试题-Verilog中function与task之间的区别是什么?

    1.1 FPGA面试题-Verilog中function与task之间的区别是什么? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog中fu ...

  5. 【Deep Learning 三】神经网络中的非线性激活函数之间的优缺点:sigmoid、tanh、ReLu、Leaky ReLu...

    1 什么是激活函数? 激活函数,并不是去激活什么,而是指如何把"激活的神经元的特征"通过函数把特征保留并映射出来(保留特征,去除一些数据中是的冗余),这是神经网络能解决非线性问题关 ...

  6. mysql 表连接 on_MysQL中表连接中“using”和“on”之间的区别是什么?

    我不使用USING语法,因为 >我的大多数联接都不适合它(不是匹配的相同字段名,和/或联接中的多个匹配)和 >在具有两个以上表格的情况下,它并不是立即显而易见的 即假设有3个带有'id'和 ...

  7. python return break 区别_python中return和break之间的区别是什么?

    break用于提前结束循环,而return是用于将返回值传递给函数调用者的关键字.如果它在没有参数的情况下使用它只是结束函数并返回到之前执行代码的位置. 在某些情况下,他们可以实现相同的目的,但这里有 ...

  8. [深度学习] 神经网络中的 batch 和 epoch

    参考文章为 神经网络中Batch和Epoch之间的区别是什么? Sample Sample是单个数据.即有意义的数据的最小单位. 训练数据集由许多Sample组成. batch batch是一个人为设 ...

  9. 神经网络中epoch、batch、batchsize

    1 epoch 当数据集中的全部数据样本通过神经网络一次并且返回一次的过程即完成一次训练称为一个epoch. 当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,称为完 ...

  10. 几句话明白:神经网络中的基本概念batch,epoch,iterations及对训练效果的影响

    ###神经网络中的基本概念batch,epoch,iterations及对训练效果的影响 自己一直很迷糊,这几个关键词也是傻傻分不清楚,为了彻底搞明白,所以用文字记录: batch:批,一次网络训练读 ...

最新文章

  1. WINDOWS SERVER 2003从入门到精通之组策略应用
  2. linux 终端 含义,ubuntu终端中@前后的字符串含义及修改-布布扣-bubuko.com
  3. python requests 示例_Python Requests模块的简单示例
  4. python flask框架教程_Flask框架从入门到实战
  5. 推荐:全网最全的Java并发面试题及答案。
  6. ES查看索引库结构和数据
  7. 用python编程输入三角形的三条边判断是否构成三角形_vb三角形编程输入三条边,判断能否构成三角形.看我的编程是否有问题,...
  8. C风格简易本地log系统
  9. 2020PHP版本,phpmaker2020
  10. 1731: [Usaco2005 dec]Layout 排队布局*
  11. 自动驾驶 8-1: 平方误差准则和最小二乘法 (上) Squared Error Criterion and the Method of Least Squares (Part 1)
  12. Android生成PDF文件
  13. Pdf转Word用Python轻松完成
  14. Ice通信之Ice::Application
  15. 如何用云计算搭建服务器,如何搭建一个云服务器
  16. 《一切都是最好的安排》脑图
  17. ORAN C平面 Section Type 7
  18. Android 敏感词过滤实现
  19. C# Predefined type 'System.Object' is not defined or imported
  20. “趣工厂”获得数百万元天使轮融资,梅鹤资本领投...

热门文章

  1. 豆瓣上的一条关于泰坦尼克的影评1
  2. python scipy 计算黎曼ζ函数
  3. Efficient Net
  4. ubuntu安装wine版微信
  5. 7 21 第一次团队赛——————写给队友
  6. 蒂姆-库克于2010年5月14日在奥本大学毕业典礼上发表的演讲全文
  7. C语言求乘方、幂数、取余
  8. 双线虚拟主机服务器,国内双线虚拟主机是什么
  9. 双足机器人课设报告_小型舞蹈双足机器人的设计及实现
  10. IP范围表示法(网络子网划分)