机器视觉算法|batch size对训练的影响


文章目录

  • 一、batch size
  • 二、batch size对训练的影响
    • 1.训练时间
    • 2.模型的影响
    • 3.实战中的超参数

在不考虑bn的情况下,batch size大小决定了深度学习训练过程中完成每个epoch所需的时间和迭代间梯度的平滑度。
一、batch size batch size是现代深度学习系统中最重要的超参数之一。从业者通常希望使用更大的batch 来训练他们的模型,因为它可以通过 GPU 的并行性提高计算速度。然而,众所周知的是batch size会导致泛化能力差。对于我们试图优化的凸函数,更小batch 和更大batch 的好处之间存在固有的拉锯战。在一种极端情况下,使用等于整个数据集的batch 可以保证收敛到目标函数的全局最优值。然而,这是以较慢的经验收敛为代价的。另一方面,经验表明,使用较小的batch size可以更快地收敛到“好的”解决方案。这可以直观地解释为较小的batch size允许模型“在必须查看所有数据之前开始学习”。使用较小batch size的缺点是模型不能保证收敛到全局最优。它将围绕全局最优值反弹,保持在一些?之外- 最优值的球,其中?取决于批量大小与数据集大小的比率。因此,在没有计算限制的情况下,通常建议从小批量开始,获得更快的训练动态的好处,并通过训练稳步增加批量大小,同时获得保证收敛的好处。
二、batch size对训练的影响 1.训练时间 batch size大小的直接影响很明显:影响一个epoch中需要迭代iteration的次数以及完成每个epoch所需的时间。
2.模型的影响 batch size的影响是对与gradient descent来说的。用整个数据集来用梯度法来更新weight叫做GD,而用一个随机的样本来更新weight叫做stocastic GD。这是两个极端,在这中间,用几个或者几十样本来更新的叫做mini batch SGD,这里就是batch这个概念的来由。
至于对于训练的影响, 其实你也可以从两个极端来讨论。
GD, 也就是整个数据集一更新, gradient 的准确率更高,但缺点是需要计算整个数据集来求梯度,在数据集太大的情况下,效率低下。
SGD,也就是一个样本一更新,graident的准确率低,因为这个样本的选取有很大随机性,于是造成noise很大,但是因为计算速度快,在经过几十轮几百轮更新后,结果converge的更快。这种算法因为有noise的影响,所以也不容易overfit。
minibatch 的目的就是取两者的优势,用几十个样本作为一个batch,大大提高了稳定性,同时多样本的计算也可以利用到计算机特别是GPU vectorization优势, converge速度远快于SGD。所以这个batch size也就是在两个极端的优势和劣势里找平衡。
3.实战中的超参数
  1. 更大的batch 会导致渐近测试准确度降低,我们可以通过增加学习率来从更大的批量中恢复丢失的测试精度。
  2. 大batch 开始不会“让模型陷入困境”在一些糟糕的局部最优附近。模型可以随时切换到更低的批量大小或更高的学习率,以达到更好的测试精度。
  3. 对于相同数量的样本,较大的batch size比较小的batch size产生更大的梯度步长对于与模型初始权重相同的平均欧几里德范数距离,较大的batch size具有较大的距离方差。
  4. 大batch意味着模型进行非常大的梯度更新或非常小的梯度更新。更新的大小在很大程度上取决于从数据集中抽取的特定样本。另一方面,使用小batch意味着模型进行大小相同的更新。更新的大小仅微弱地取决于从数据集中抽取哪些特定样本。
  5. 【机器视觉算法|batch size对训练的影响】较大batch的梯度分布有更重的尾部,更好的解决方案可能与初始权重相距甚远,如果损失是在批次上平均的,那么大的批次大小根本不允许模型行进足够远以达到相同训练时期数的更好解决方案,可以通过增加学习率或epoch数来补偿更大的batch size,以便模型可以找到遥远的解决方案

    推荐阅读