“ epoch”,“ batch”和“ minibatch”之间有什么区别?


37

据我所知,当采用随机梯度下降作为学习算法时,有人将“ epoch”用于完整数据集,将“ batch”用于单个更新步骤中使用的数据,而另一人则分别使用“ batch”和“ minibatch”,并且其他人使用“时代”和“小批量”。这在讨论时带来了很多混乱。

那么正确的说法是什么?还是它们只是可以接受的方言?

Answers:


24
  • 时代意味着一次完整的训练
  • 批处理表示您在一次迭代中使用所有数据来计算梯度。
  • 迷你批处理意味着您一次迭代仅获取所有数据的一部分。

15

一个时期通常意味着您的算法一次看到每个训练实例。现在假设您有n训练实例:

如果运行批处理更新,则每次参数更新都需要您的算法对n训练实例中的每一个进行精确地查看一次,即,每个时期您的参数都更新一次。

如果您用批量大小=小批量更新b,每一个参数更新需要你的算法看到bn训练实例,即,每次你的参数更新大约划时代n/b倍。

如果您运行SGD更新,则每个参数更新都需要您的算法查看训练实例中的1,即,每个时期,您的参数都会被更新次。nn


4

“ Epoch”通常是指将学习算法公开给整个训练数据集。由于我们有时会生成数据,所以这并不总是有意义。

“批处理”和“迷你批处理”可能会造成混淆。

有时需要对训练示例进行“批处理”,因为并非所有数据都必须立即暴露给算法(通常是由于内存限制)。

在SGD中,“小批量”是指在更新权重之前在整个批次中计算梯度。如果您不使用“迷你批次”,则“批次”中的每个训练示例都会独立更新学习算法的参数。


您确定最后一段吗?我认为“批处理” SGD使用一个时期中的所有数据来缓慢地计算非常精确的梯度。你最后一句听起来像一个小批量大小1
马特·克劳斯

另外,欢迎交叉验证!
马特·克劳斯

是的,原始SGD的迷你批次为1。我认为最终取决于软件作者的解释。很多时候,batch == mini-batch,而没有文档提到“ mini-batch”。
色轮

错误,我想我是说批处理GD使用了所有数据。我通常会交替使用批处理和小批量处理,但是当我想指出它确实很小的时候会使用“小批处理” ...
Matt Krause
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.