【问题标题】:Choosing minibatch size for deep learning为深度学习选择小批量大小
【发布时间】:2016-01-03 00:29:36
【问题描述】:

在 Ilya Sutskever A brief overview of Deep Learning 的博客文章中,他描述了选择正确的小批量大小以有效训练深度神经网络的重要性。他给出的建议是“使用在你的机器上高效运行的较小的 minibatch”。请参阅下面的完整报价。

我已经看到其他知名深度学习研究人员的类似声明,但我仍然不清楚如何找到正确的小批量大小。鉴于更大的 minibatch 可以允许更高的学习率,似乎需要大量的实验来确定某个 minibatch 大小是否在训练速度方面产生更好的性能。

我有一个具有 4GB RAM 的 GPU,并使用 Caffe 和 Keras 库。在这种情况下,考虑到每个观察值都有一定的内存占用M,选择一个好的小批量大小的实用启发式是什么?

小批量:使用小批量。现代计算机不能高效,如果 您一次处理一个培训案例。它的效率要高得多 在 128 个示例的小批量上训练网络,因为这样做 将导致更大的吞吐量。实际上会很好 使用大小为 1 的小批量,它们可能会导致 提高性能并降低过拟合;但这样做的好处 所以超过了提供的大量计算收益 小批量。但是不要使用非常大的小批量,因为它们往往 工作不太好,过度拟合更多。所以实用的建议是: 使用在您的机器上高效运行的较小的 minibatch。

【问题讨论】:

    标签: performance deep-learning


    【解决方案1】:

    当我们训练网络时,当我们计算前向传递时,我们必须保留所有中间激活输出以用于后向传递。除了其他内存限制(将权重存储在 GPU 上等)之外,您只需计算在前向传递中存储所有相关激活输出将花费多少内存。因此请注意,如果您的网络非常深,您可能需要较小的批量,因为您可能没有足够的内存。

    选择小批量大小是内存限制和性能/准确性的混合(通常使用交叉验证进行评估)。

    我个人猜测/计算我的前向/后向传递将使用多少 GPU 内存并尝试几个值。例如,如果我能适应的最大大约是 128,我可能会使用 32、64、96 等进行交叉验证,只是为了彻底,看看我是否可以获得更好的性能。这通常用于更深的网络,它将推动我的 GPU 内存(我也只有 4 GB 卡,无法访问怪物 NVIDIA 卡)。

    我认为人们往往更加重视网络架构、优化技术/行业技巧、数据预处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多