【问题标题】:Neural network and batch learning神经网络和批量学习
【发布时间】:2016-05-01 06:15:13
【问题描述】:

我是神经网络的新手,想知道什么时候应该降低学习率而不是批量大小。

我会理解,如果学习出现分歧,则必须降低学习率。

但是,我什么时候应该减少或增加批量大小?我的猜测是,如果 loss 波动太大,减小batch size 会比较理想?

【问题讨论】:

  • 我猜Data Science SE 可能会提供更多帮助。
  • 我投票结束这个问题,因为它应该在 datascience.SE 上

标签: machine-learning neural-network deep-learning


【解决方案1】:

“正确”的学习方法是将所有训练数据用于梯度下降的每一步。但是,这需要一些时间来计算它,因为这是一个非常繁重的函数,它 - 大多数时候 - 由数千个训练示例参数化。

这个想法是,当您留下几个训练示例时,误差函数/权重更新看起来就足够相似了。这加快了误差函数的计算。但是,缺点是您可能无法通过一些梯度下降步骤朝着正确的方向前进。但在大多数情况下,它应该是“几乎”正确的。

所以基本原理是,即使你没有完全朝着正确的方向走,你也可以同时做更多的步骤,这样就没有关系了。

小批量大小的一个非常常见的选择是 128 或 256。最极端的选择通常称为“随机梯度下降”,并且仅使用 1 个训练示例。

正如在 ML 中经常发生的那样,尝试不同的值是个好主意。

【讨论】:

    【解决方案2】:

    如果您增加批量大小,梯度更有可能指向正确的方向,从而降低(整体)误差。尤其是与仅考虑单个示例后更新权重相比,这会导致非常随机和嘈杂的梯度。

    因此,如果损失函数发生波动,您可以同时做到:增加批量大小和降低学习率。较大批量大小的缺点是每次更新的计算成本较高。因此,如果训练时间过长,请查看它是否仍以较小的批大小收敛。

    您可以阅读更多herehere。 (顺便说一句,https://stats.stackexchange.com/更适合不包含具体代码实现的理论题)

    【讨论】:

      猜你喜欢
      • 2012-07-09
      • 2016-07-11
      • 2020-05-15
      • 1970-01-01
      • 2016-05-25
      • 2019-03-15
      • 2011-08-17
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多