0

我正在参加 fast-ai 课程,在第 2 课 SGD 中它说。

Mini-batch:'用于更新权重的随机点'

它还说梯度下降使用小批量......

什么是小批量,小批量与批量有什么区别?

谢谢您的帮助

4

2 回答 2

4

两者都是梯度下降的方法。但是在批量梯度下降中,您在一次迭代中处理整个训练集。而在小批量梯度下降中,您在每次迭代中处理训练集的一小部分。

还比较随机梯度下降,您在每次迭代中处理来自训练集的单个示例。

另一种看待它的方式:它们都是梯度下降的相同方法的示例,批量大小为 m,训练集大小为 n。对于随机梯度下降,m=1。对于批量梯度下降,m = n。对于 mini-batch,m=b 和 b < n,通常 b 比 n 小。

小批量增加了确定 b 的正确大小的问题,但找到正确的 b 可能会大大改善您的结果。

于 2019-10-07T12:32:37.540 回答
3

@majid ghafouri 的出色解释,但我只想添加更多细节以确保您了解此内容以及我们使用它的原因或使用它可以获得哪些优势:

随机梯度下降根据以下迭代过程执行更新。这种一次更新单个示例的学习称为在线学习。

它的算法如下所示:

procedure Online
  for several epochs of training do
     for each training example in the data do
         Calculate gradients of the loss
         Update the parameters according to this gradient
     end for
  end for
end procedure

相比之下,我们也可以考虑批量学习算法,它将整个数据集视为一个单元,计算这个单元的梯度,然后只在对数据进行全通后才进行更新。这两种更新策略各有取舍。

• 在线训练算法通常会更快地找到相对较好的解决方案,因为它们不需要在执行更新之前对数据进行完整的传递。

• 然而,在训练结束时,批量学习算法会更加稳定,因为它们不会受到最近看到的训练示例的过度影响。

批处理算法如下所示:

procedure Batch
  for several epochs of training do
    for each training example in the data do
        Calculate and accumulate gradients of the loss
    end for
    Update the parameters according to the accumulated gradient
  end for
end procedure

• 批量训练算法也更容易陷入局部最优;在线训练算法的随机性通常使它们能够摆脱局部最优并找到更好的全局解决方案。

Minibatching是这两种策略之间的一种愉快的媒介。基本上,小批量训练类似于在线训练,但不是一次处理单个训练示例,而是一次计算 n 个训练示例的梯度。在 n = 1 的极端情况下,这相当于标准在线训练,而在 n 等于数据大小的另一个极端情况下,这相当于完​​全批量训练。

随着训练样例数量的增加,每次参数更新变得更加丰富和稳定,但执行一次更新的时间会增加,因此通常选择一个可以在两者之间取得良好平衡的 n。minibatching 的另一个主要优点是,通过使用一些技巧,实际上可以使同时处理 n 个训练示例比单独处理 n 个不同示例快得多。具体来说,通过采用多个训练示例并将相似的操作组合在一起同时处理,我们可以实现计算效率的巨大提升,因为现代硬件(尤其是 GPU,还有 CPU)具有可以利用的非常高效的向量处理指令具有适当结构的输入。

解释摘自这篇优秀论文,有时间可以进一步阅读:

于 2019-10-07T15:10:58.550 回答