神经网络:SGD 中的 epoch 是否与 mini-batch 中的 epoch 相同?

机器算法验证 机器学习 神经网络
2022-03-05 17:04:38

在 SGD 中,一个 epoch 将是训练数据的完整呈现,然后每个 epoch 会有 N 次权重更新(如果训练集中有 N 个数据示例)。

如果我们现在做小批量,比如 20 个批次。一个 epoch 现在是否包含 N/20 个权重更新,或者一个 epoch 是否“延长”了 20 以使其包含相同数量的权重更新?

我问这个问题,因为在几篇论文中,对于所述的时代数量来说,学习似乎太快了。

2个回答

在神经网络术语中:

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

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

弗兰克的回答是不正确的。说这个需要一些勇气,因为他的代表比我多得多,而且很多人已经投票支持它。

Epoch 是一个词,意思是单次通过训练集,而不是所有训练示例。

所以,是的。如果我们做小批量 GD 而不是批量 GD,比如 20 个批次,一个 epoch 现在包含 N/20 个权重更新。N 是样本总数。

详细地说,在批量梯度下降中,单次训练允许您只采取一个梯度下降步骤。使用 mini-batch(batch size = 5,000)梯度下降,单次通过训练集,也就是一个 epoch,允许您采取 5,000 个梯度下降步骤。