【问题标题】:what is the meaning of a 'mini-batch' in deep learning?深度学习中的“小批量”是什么意思?
【发布时间】:2019-10-07 12:21:39
【问题描述】:

我正在学习 fast-ai 课程,在第 2 课 SGD 中显示。

小批量:'用于更新权重的随机点'

它还说梯度下降使用 Mini-batch ...

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

感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 很好的回应,感谢 Majid,即便如此,你的意思是,在每次迭代中从训练集中处理一个示例?。
    • 不客气。我的意思是它只使用一个样本,即一个批量大小来执行每次迭代。请检查此文档:geeksforgeeks.org/ml-stochastic-gradient-descent-sgd
    • @LuisAnaya 我已经看到你提出的一些问题,它们提出了与深度学习相关的非常基本的问题。并且看到您正在学习 fastai 课程,如果这些内容没有包含在其中,那么您最好在 fastai 课程之前学习 Andrew Ng deeplearning.ai 课程。与 fastai 相比,内容更详细,更多来自基础知识(不是说它不好,它有利于实现高级任务)。
    • 如果答案有帮助,请检查是否属实。谢谢@LuisAnaya
    • @akshayk07 ,是的...你说得对,fastai课程只教你大图,我想也许deeplearning.ai课程对我很有帮助,我会试试看看我是否可以同时结合 2 门课程,或者我是否先上安德鲁课程,然后再上 fastai 课程
    【解决方案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
    

    • 批量训练算法也更容易陷入局部最优;在线训练算法中的随机性通常允许它们从局部最优解中跳出,并且 找到更好的全局解决方案。

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

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

    解释来自这个优秀的paper,,如果你有时间可以进一步阅读:

    【讨论】:

      猜你喜欢
      • 2018-02-21
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2016-04-05
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多