Fra*_*urt 546

在神经网络术语中:

  • 所有训练样例的一个时期 =一个前进和一个后退
  • 批量大小 =一个前向/后向传递中的训练样本数.批量大小越大,您需要的内存空间就越大.
  • 的数目迭代 =程数,每遍使用[批量大小]数目的实例.要清楚,一次传球=一次前进传球+一次后传传球(我们不计算前进传球和后传传球作为两次不同传球).

示例:如果您有1000个训练样例,并且批量大小为500,则需要2次迭代才能完成1个时期.

仅供参考:权衡批量大小与训练神经网络的迭代次数


术语"批处理"是模糊的:有些人用它来指定整个训练集,有些人用它来指代一个前进/后退中的训练样例的数量(正如我在这个答案中所做的那样).为了避免这种模糊性并明确批次对应于一个前向/后向传递中的训练样例的数量,可以使用术语小批量.

  • 我糊涂了.为什么你会训练一个以上的时代 - 不止一次对所有数据进行训练?这不会导致过度拟合吗? (36认同)
  • @Soubriquet神经网络通常使用迭代优化方法(大多数时候,梯度下降)进行训练,这通常需要在训练集上执行多次传递以获得良好的结果. (26认同)
  • @MaxPower - 通常,在每次*迭代*之后采取步骤,正如Franck Dernoncourt的回答所暗示的那样; 这就是我们对倒退传递信息的处理方式.在每个时期具有*m*次迭代的小批量梯度下降中,我们更新每个时期的参数*m*次. (8认同)
  • 但是,如果有很多f训练样本,比如说1百万美元,那么仅仅一个时代就够了吗?如果训练集非常庞大,人们通常会做些什么?只需将训练集分成几个批次,只执行一个时代? (6认同)
  • @pikachuchameleon这取决于任务的复杂性:在某些情况下,一个时代确实足够了. (5认同)
  • 嗯...这就是在训练时使用早期停止和验证设置的原因吗? (3认同)
  • @jbobcic这里有很好的解释:https://www.coursera.org/learn/machine-learning/lecture/9zJUs/mini-batch-gradient-descent (3认同)
  • @FranckDernoncourt如果我没有错,我们需要为迷你批次中的每个输入计算导数,所以这并不意味着迷你批次中每个输入的前向和后向传递,而不是一个前向和后向传递你提到的整批? (2认同)
  • @FranckDernoncourt不确定我理解.为了更具体,我将尝试解释您在上面提供的示例.因此,有1000个训练样例,批量大小为500,因此每个时期将有2个权重和偏差的更新.但是当计算一个批次的衍生物(500个训练样本)时,对于500个训练样例中的每一个,我们必须计算导数(一个向后传递)和激活(一个向前传递).那么每批500次前进和500次后向传递不是吗? (2认同)

Kho*_*hon 133

时代迭代描述了不同的东西.


时代

一个历元描述的次算法看到数量整个数据集.因此,每次算法看到数据集中的所有样本时,都会完成一个时期.

迭代

一个迭代描述的次数一批次通过算法传递的数据.在神经网络的情况下,这意味着向前传递向后传递.因此,每次通过NN传递一批数据时,都会完成迭代.


一个例子可能会让它更清晰.

假设您有10个示例(或示例)的数据集.批量大小为2,并且您已指定希望算法运行3个时期.

因此,在每个时代,你有5批(10/2 = 5).每个批次都通过算法,因此每个时期有5次迭代.由于您已指定3个时期,因此您总共需要15次迭代(5*3 = 15)进行训练.

  • 您能否解释一下每个时期之后或每次迭代后权重是否更新? (13认同)
  • @InheritedGeek在每个批次之后更新权重而不是纪元或迭代. (7认同)
  • @bhavindhedhi我认为Bee所问的是,在你的10000个样本中,每批1000个样本,你实际上总共有10个批次,相当于10次迭代.我认为这是有道理的,但不确定这是否是解释它的正确方法. (3认同)
  • @bhavindhedhi 1 批 = 1 次迭代,不是吗? (2认同)
  • @Bee不,例如10000个训练样本和每批1000个样本然后需要10次迭代才能完成1个时期. (2认同)
  • 除了之前的评论,如果您的批量大小与训练样本的总数相同,那么1个epoch = 1次迭代. (2认同)

Pre*_*tor 23

许多神经网络训练算法涉及将整个数据集多次呈现给神经网络.通常,整个数据集的单个呈现被称为"时期".相反,一些算法一次将单个案例的数据呈现给神经网络.

"迭代"是一个更通用的术语,但由于你将它与"epoch"一起询问,我认为你的来源是指将单个案例呈现给神经网络.

  • 太棒了,你能参考一个详细的出版物吗? (3认同)

inv*_*dex 15

我猜在神经网络术语的上下文中:

  • Epoch:当您的网络最终遍历整个训练集时(即每个训练实例一次),它完成一个 epoch

为了定义迭代(又名steps),您首先需要了解批量大小

  • 批量大小:您可能不希望在一次前向传递中处理整个训练实例,因为它效率低下并且需要大量内存。所以通常做的是将训练实例分成子集(即批次),对选定的子集(即批次)执行一次传递,然后通过反向传播优化网络。子集(即批次)中的训练实例数称为batch_size

  • 迭代:(又名训练步骤)您知道您的网络必须一次遍历所有训练实例才能完成一个 epoch。可是等等!当您将训练实例分成批次时,这意味着您只能在一次前向传递中处理一批(训练实例的子集),那么其他批次呢?这就是迭代一词发挥作用的地方:

  • 定义:您的网络为了完成一个时期(即遍历所有训练实例)而必须执行的前向传递次数(您创建的批次数)称为迭代

例如,当你有 10000 个训练实例并且你想要做大小为 10 的批处理时;你必须做 10000/10 = 1000次迭代才能完成 1 epoch

希望这能回答你的问题!


nik*_*ani 13

要了解它们之间的区别,您必须了解梯度下降算法及其变体

在开始实际答案之前,我想建立一些背景。

一个批次是完整的数据集。它的大小是可用数据集中训练示例的总数。

最小批量大小是学习算法在一次遍历中(向前和向后)处理的示例数。

小批是给出的数据集的一小部分小批量大小

迭代次数是算法看到的数据批处理数量(或简单来说是算法在数据集上完成的传递次数)。

时代是次数的学习算法看到完整的数据集。现在,这可能不等于迭代次数,因为数据集也可以按小批处理。本质上,单遍可能只处理数据集的一部分。在这种情况下,迭代次数不等于epochs的次数。

在批次梯度下降的情况下,整个批次将在每个训练遍上进行处理。因此,梯度下降优化器的收敛性比Mini-batch梯度下降更平滑,但是花费的时间更多。如果存在梯度梯度下降,可以保证找到最佳值。

随机梯度下降是小批量梯度下降的一种特殊情况,其中小批量大小1

批次梯度下降与迷你批次梯度下降

批量,随机和小批量梯度下降的比较。


Mil*_* P. 11

你有一个训练数据,你可以随机抽取并从中挑选小批量.当您使用一个小批量调整权重和偏差时,您已完成一次迭代.一旦你用完了迷你批次,你就完成了一个时代.然后你再次洗牌你的训练数据,再次选择你的迷你批次,并再次遍历所有这些.那将是你的第二个时代.


Nik*_*yks 8

通常情况下,您将测试集分成小批量供网络学习,并逐步完成培训,逐层应用渐变下降.所有这些小步骤都可以称为迭代.

一个纪元对应于整个网络一次通过的整个训练集.限制这一点可能是有用的,例如对抗过度拟合.


Eli*_*ine 7

一个纪元包含一些迭代.这实际上就是这个'时代'.让我们将'epoch'定义为数据集上的迭代次数,以便训练神经网络.

  • *epoch*不是一个数字......我认为这可以用改写来表达. (4认同)

36K*_*6Kr 7

据我所知,当您需要训练NN时,您需要一个涉及许多数据项的大型数据集.当NN被训练时,数据项逐个进入NN,称为迭代; 当整个数据集通过时,它被称为时代.


And*_*sky 6

我相信迭代相当于批量SGD中的单批前向+后推.Epoch正在经历整个数据集一次(正如其他人提到的那样).


ris*_*ain 5

  1. Epoch 是神经网络看到所有数据的 1 个完整周期。

  2. 有人可能会说需要 100,000 张图像来训练模型,但是,内存空间可能不足以一次处理所有图像,因此我们将模型训练分成称为批次的较小数据块。例如批量大小为 100。

  3. 我们需要使用多个批次覆盖所有图像。因此我们需要 1000 次迭代才能覆盖所有 100,000 张图像。(100 批量大小 * 1000 次迭代)

  4. 一旦神经网络查看了整个数据,它就被称为 1 Epoch(点 1)。人们可能需要多个时期来训练模型。(假设 10 个 epoch)。