【问题标题】:optimal batch size for image classification using deep learning使用深度学习进行图像分类的最佳批量大小
【发布时间】:2020-02-10 17:56:43
【问题描述】:

我有一个广泛的问题,但应该仍然相关。 假设我正在使用 CNN 进行 2 类图像分类。 32-64 的批大小应该足以用于训练目的。但是,如果我有大约 13 个类别的数据,那么对于一个好的模型来说,32 个批次大小肯定是不够的,因为每个批次可能会得到每个类别的 2-3 个图像。是否有通用或近似公式来确定训练的批量大小?还是应该使用网格搜索或贝叶斯方法等技术将其确定为超参数?

塞迪

【问题讨论】:

    标签: machine-learning


    【解决方案1】:

    批量大小是一个超参数,例如学习率。很难说什么是适合您的问题的完美尺寸。 您提到的问题可能存在,但仅与您不能仅进行随机抽样(例如面部/人员重新识别)的特定问题真正相关。

    对于“正常”问题,随机抽样就足够了。 minibatch 训练背后的原因是为了获得更稳定的训练。对于整个数据集的损失函数的全局最小值,您希望权重更新朝着正确的方向发展。小批量是这个的近似值。

    随着批量大小的增加,您会获得更少的更新,但会获得“更好”的更新。使用小批量,您可以获得更多更新,但它们往往会朝着错误的方向发展。如果批大小太小(例如 1),网络可能需要很长时间才能收敛,从而增加了训练时间。批量太大会损害网络的泛化能力。关于主题的好论文On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima

    关于该主题的另一篇有趣的论文是:Don't Decay the Learning Rate, Increase the Batch Size。其中分析了批量大小对训练的影响。一般来说,学习率和批量大小是相互影响的。

    一般来说,batch size 是减少训练时间的一个因素,因为您可以利用并行性,并且随着batch size 的增加和稳定性的提高,权重更新更少。与所有事情一样,看看其他人为与您的问题相当的任务做了什么,并将其作为基线并进行一些实验。同样对于庞大的网络,可用内存通常会限制最大批量大小。

    【讨论】:

    • 感谢 cmets 和链接。您链接中引用的一篇论文(由 Goyal 撰写)提到“当小批量大小乘以 k 时,将学习率乘以 k”。我假设仅适用于使用 SGD 算法而不是 ADAM 或任何其他算法?
    • 我会假设是这样,因为 ADAM 对每个参数都有一个自适应学习率。大多数东西都是使用标准的 SGD 优化器进行测试的。
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 2019-09-13
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多