深度学习中的“小批量”是什么意思?

时间:2019-10-07 12:21:39

标签: deep-learning pytorch computer-science cross-validation fast-ai

我正在上快修课程,并在第2课中说。

迷你批量:“用于更新权重的随机一堆点”

它还说梯度下降使用了迷你批处理...

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

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

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

还可以比较随机梯度下降,您可以在每次迭代中从训练集中处理一个示例。

另一种查看方式:它们都是相同的梯度下降方法的示例,批次大小为m,训练集大小为n。对于随机梯度下降,m = 1。对于批次梯度下降,m = n。对于小批量,m = b并且b

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

答案 1 :(得分:2)

@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

•批量训练算法也更容易陷入局部最优;在线训练算法的随机性经常使他们跳出局部最优值, 寻找更好的全球解决方案。

最小批处理是这两种策略之间的完美融合。基本上是小批量的 培训类似于在线培训,但不是在 时间,我们一次计算n个训练示例的梯度。在n = 1的极端情况下 这相当于标准的在线培训,而在另一种极端情况下,n等于数据大小,则相当于完全批量培训。

随着我们增加训练示例的数量,每次参数更新都变为 信息量更大,更稳定,但是执行一次更新的时间增加了,因此 通常会选择一个n,以便在两者之间取得良好的平衡。 迷你批处理的另一个主要优点是,通过使用一些技巧,它实际上是 可以使同时处理n个训练示例的速度大大快于 分别处理n个不同的示例。具体来说,通过多个培训示例 并将相似的操作分组在一起以同时处理,我们可以实现 由于现代硬件(尤其是GPU, 以及CPU)具有非常有效的矢量处理指令,可用于 结构合理的输入。

说明摘自这个优秀的paper,,如果您有时间,可以进一步阅读: