训练多层感知器时,历元和迭代的区别是什么?


当前回答

通常,你会把你的测试集分成小批,让网络从中学习,并让训练在你的层数中一步一步地进行,一直应用梯度下降。所有这些小步骤都可以称为迭代。

一个epoch对应于整个训练集通过整个网络一次。限制这种情况是很有用的,例如对抗过拟合。

其他回答

在神经网络术语中:

一个epoch =所有训练示例的一个向前传递和一个向后传递 批大小=一次向前/向后传递中训练示例的数量。批处理大小越大,所需的内存空间就越大。 迭代次数=通过次数,每次通过使用[批大小]示例的数量。需要明确的是,一次传球=一次向前传球+一次向后传球(我们不把向前传球和向后传球算作两次不同的传球)。

例如:如果你有1000个训练样本,你的批处理大小是500,那么将需要2次迭代来完成1个epoch。

供参考:权衡批大小和迭代次数来训练神经网络


术语“批处理”是模棱两可的:有些人用它来表示整个训练集,有些人用它来指代一次向前/向后传递中的训练示例的数量(就像我在这个回答中所做的那样)。为了避免这种歧义,并明确batch对应于一次正向/向后传递中训练示例的数量,可以使用术语mini-batch。

Epoch和iteration描述的是不同的东西。


时代

epoch描述了算法看到整个数据集的次数。因此,每当算法看到数据集中的所有样本时,就完成了一个epoch。

迭代

迭代描述了一批数据通过算法的次数。在神经网络的例子中,这意味着向前传递和向后传递。因此,每当你通过神经网络传递一批数据时,你就完成了一次迭代。


例子

举个例子可能会更清楚。

假设您有一个包含10个示例(或样本)的数据集。批处理大小为2,并指定算法运行3个epoch。

因此,在每个epoch中,您有5个批次(10/2 = 5)。每个批次都通过算法,因此每个epoch有5个迭代。 因为您已经指定了3个epoch,所以总共有15个迭代(5*3 = 15)用于训练。

时代 对整个数据集进行完整的训练,使得每个 例子已经见过一次了。因此,一个epoch表示N/batch 大小训练迭代,其中N是的总数 的例子。 迭代 在训练过程中对模型权重的一次更新。 迭代包括计算参数的梯度 对于单批数据的损失。

奖金:

批处理 在一次迭代中使用的示例集(即一个梯度) 更新)的模型训练。 请参见批大小。

来源:https://developers.google.com/machine-learning/glossary/

我认为迭代相当于批SGD中的单批正向+反向。Epoch将遍历整个数据集一次(正如其他人提到的那样)。

通常,你会把你的测试集分成小批,让网络从中学习,并让训练在你的层数中一步一步地进行,一直应用梯度下降。所有这些小步骤都可以称为迭代。

一个epoch对应于整个训练集通过整个网络一次。限制这种情况是很有用的,例如对抗过拟合。