batchsize和数据量设置比例_如何通过合适的 batch 大小收获 4 倍加速 & 更好的泛化效果...

本文探讨了选择合适 batch 大小的重要性,引用了 Yann LeCun 和 Jeremy Howard 的观点。文章介绍了 OpenAI 的论文「An Empirical Model of Large-Batch Training」,提出了简单噪声尺度的概念,用于确定何时增加或减少 batch 大小。通过实现在单 GPU 上的简单噪声尺度估计,作者展示了如何在不同的任务中应用这个概念来加速训练并提高泛化能力。实验结果显示,正确选择 batch 大小可以显著提升训练速度,甚至在某些情况下提高模型性能。
摘要由CSDN通过智能技术生成

有一次,我在 twitter 上看到 Jeremy Howard 引用 Yann LeCun 关于 batch 大小的话:

Twitter 上关于 batch 的讨论

自从我在 Fastai 找到了一个非常好的学习率查找工具后,我就一直在想这个问题,我一直在想是否有一个有用的 batch 大小查找工具,人们可以用来快速地得到一个合适的 batch 大小来训练他们的模型。

提醒一下,Fastai 中使用的学习速率查找器通过测试不同的学习速率来确定能最大程度地减少损失的数值,从而帮助找到正确的学习速率。更详细的解释可以在这里找到:https://sgugger.github.io/how-do-you-find-A-good-learning-rate.html

在我的脑海中,做一个 bacth 大小查找器的想法已经有很长一段时间了,在得到 Jeremy 里米的激励后,我决定开始这一旅程,实现一个 batch 大小查找器来训练神经网络。

今天我想和大家分享完成一篇论文的历程,在我看来,这些文章都很有趣,也许也会激励你去尝试更多的东西!

1.一个关于大小的故事

有关 batch 大小的 OC meme

一个常见的看法是不应该使用大 batch,因为这只会导致模型过大,并且可能会耗尽内存。显然这个观点是正确的,但前者比后者更复杂,为了回答这个问题,我们将深入研究 OpenAI 论文「An Empirical Model of Large-Batch Training」。

我非常推荐这篇文章,它解释了许多易于理解、记忆的想法。

首先,我们的目标是通过随机梯度下降法将损失最小化,并且有一个真正的潜在环境,我们将在这个环境下最小化损失。然而,我们不能访问整个数据集上的真实梯度,因此我们必须用有限的 batch 大小来近似梯度。

因为我们在一个 batch 上取平均值,如果我们的 batch 很小,就会有很多噪音存在,我们可能只在噪音上训练我们的模型。尽管如此,应用几个连续的更新是正确的策略,但我们也可以直接使用更大的批处理大小,它在计算效率上更高,并直接将噪声平均化。然而,在一个特定的大小之后,如果梯度已经是精确的,就没有必要使批处理更大,因为这只是在计算上的浪费,精度几乎没有提高。

此外,通过使用更大的 batch 尺寸(达到 GPU 允许的合理数量),我们加快了训练速度,这相当于采用了几个大步骤,而不是许多小步骤。因此,对于更大的 batch 尺寸,在相同的时间段,我们有时可以在计算时间上获得 2 倍的增益!

其次,有一个称为「简单噪音等级」的统计数据,它帮助我们确定什么是好的 batch 大小,定义为:

简单噪声标度方程

G 是损失 L 在 n 个参数上的实际梯度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值