37 据我所知,当采用随机梯度下降作为学习算法时,有人将“ epoch”用于完整数据集,将“ batch”用于单个更新步骤中使用的数据,而另一人则分别使用“ batch”和“ minibatch”,并且其他人使用“时代”和“小批量”。这在讨论时带来了很多混乱。 那么正确的说法是什么?还是它们只是可以接受的方言? machine-learning — 提姆 source
15 一个时期通常意味着您的算法一次看到每个训练实例。现在假设您有nn训练实例: 如果运行批处理更新,则每次参数更新都需要您的算法对nn训练实例中的每一个进行精确地查看一次,即,每个时期您的参数都更新一次。 如果您用批量大小=小批量更新bb,每一个参数更新需要你的算法看到bb的nn训练实例,即,每次你的参数更新大约划时代n/bn/b倍。 如果您运行SGD更新,则每个参数更新都需要您的算法查看训练实例中的1,即,每个时期,您的参数都会被更新次。nnnn — 用户名 source
4 “ Epoch”通常是指将学习算法公开给整个训练数据集。由于我们有时会生成数据,所以这并不总是有意义。 “批处理”和“迷你批处理”可能会造成混淆。 有时需要对训练示例进行“批处理”,因为并非所有数据都必须立即暴露给算法(通常是由于内存限制)。 在SGD中,“小批量”是指在更新权重之前在整个批次中计算梯度。如果您不使用“迷你批次”,则“批次”中的每个训练示例都会独立更新学习算法的参数。 — 铁轮 source 您确定最后一段吗?我认为“批处理” SGD使用一个时期中的所有数据来缓慢地计算非常精确的梯度。你最后一句听起来像一个小批量大小1 — 马特·克劳斯 另外,欢迎交叉验证! — 马特·克劳斯 是的,原始SGD的迷你批次为1。我认为最终取决于软件作者的解释。很多时候,batch == mini-batch,而没有文档提到“ mini-batch”。 — 色轮 错误,我想我是说批处理GD使用了所有数据。我通常会交替使用批处理和小批量处理,但是当我想指出它确实很小的时候会使用“小批处理” ... — Matt Krause