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


当前回答

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

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

其他回答

epoch是用于训练的样本子集的迭代,例如,神经网络中的梯度下降算法。一个很好的参考:http://neuralnetworksanddeeplearning.com/chap1.html

请注意,该页面有一个使用epoch的梯度下降算法的代码

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

看看代码。对于每个历元,我们随机生成梯度下降算法输入的子集。为什么epoch是有效的,也解释了这一页。请看一看。

根据我的理解,当你需要训练一个NN时,你需要一个包含许多数据项的大型数据集。在训练神经网络时,数据项一个一个地进入神经网络,这称为迭代;当整个数据集通过时,它被称为epoch。

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

奖金:

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

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

你有训练数据,你洗牌并从中挑选小批量。当您使用一个迷你批处理调整权重和偏差时,您已经完成了一次迭代。

一旦你用完了你的小批,你就完成了一个纪元。然后你再次洗牌你的训练数据,再次选择你的小批量,并再次遍历它们。那将是你的第二个纪元。

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

在我开始回答这个问题之前,我想先了解一下背景。

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

小批量大小是学习算法在单次传递(向前和向后)中处理的示例数量。

迷你批是给定迷你批大小的数据集的一小部分。

迭代是算法已经看到的数据批次的数量(或者简单地说,算法已经在数据集上完成的次数)。

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

在批处理梯度下降的情况下,整个批处理在每个训练通过。因此,梯度下降优化器的收敛比Mini-batch梯度下降更平滑,但需要更多的时间。如果存在最优条件,分批梯度下降法保证能找到最优条件。

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