我阅读了不同的文章,并在这一点上一直感到困惑。不确定文献是否提供了混合信息,或者我的解释不正确。
因此,通过阅读文章,我对以下术语的理解(松散地)如下:
纪元: 一个纪元是指整个数据集仅通过神经网络向前和向后传递一次。
批量大小: 单个批次中存在的训练示例总数。在使用神经网络的现实生活场景中,数据集需要尽可能大,以便网络更好地学习。所以你不能一次将整个数据集传递到神经网络中(由于计算能力的限制)。因此,您将数据集划分为批次数。
迭代次数: 迭代次数是完成一个 epoch 所需的批次数。我们可以将 2000 个示例的数据集划分为 500 个批次,然后需要 4 次迭代才能完成 1 个 epoch。
所以如果一切都是正确的,那么我的问题是,损失/成本函数和随后的反向传播过程在什么时候发生(根据我的理解假设反向传播是在计算损失/成本之后直接发生的)?是否计算成本/损失函数:
在该批次中的数据样本已前馈到网络的每个批次结束时(即在每个“迭代,而不是每个时期”)?如果是这样,那么损失/成本函数会得到该批次中所有数据样本的所有损失的平均损失,对吗?
在每个纪元结束时?这意味着在计算成本/损失函数之前,首先对所有批次的所有数据样本进行前馈。
我的理解是这是第一点,即在每批结束时(传递给网络),因此在每次迭代时(不是 Epoch)。至少在 SGD 优化方面是这样。我的理解是 - 重点是您计算每批的损失/成本和反向传播。这样你就不会计算整个数据样本的平均损失。否则,您将在成本图中获得一个非常普遍的最小值,而不是从您单独训练的每个批次中获得成本较低的局部最小值。一旦所有的迭代都发生了,那么这将算作 1 个 Epoch。但后来我在看一个解释神经网络的 YouTube 视频,其中提到成本/损失函数是在每个 Epoch 结束时计算的,这让我很困惑。任何澄清将不胜感激。