作者:Lunarnai
链接:https://www.zhihu.com/question/61607442/answer/440944387
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先反对上面的尽可能调大batch size的说法,在现在较前沿的视角来看,这种观点无疑是有些滞后的。

关于这个问题,我们来看下深度学习三巨头之一的LeCun杨乐春同志怎么说(想看结论直接翻到最后):

Training with large minibatches is bad for your health. More importantly, it's bad for your test error. Friends don‘t let friends use minibatches larger than 32. Let's face it: the only people have switched to minibatch sizes larger than one since 2012 is because GPUs are inefficient for batch sizes smaller than 32. That's a terrible reason. It just means our hardware sucks.

翻译过来就是:

使用 大的batch size有害身体健康。更重要的是,它对测试集的error不利。一个真正的朋友不会让你使用大于32的batch size。直说了吧:2012年来人们开始转而使用更大batch size的原因只是我们的GPU不够强大,处理小于32的batch size时效率太低。这是个糟糕的理由,只说明了我们的硬件还很辣鸡。

那是什么使得大牛LeCun同志对大于32的batch size如此深恶痛绝而发此论呢?

细究出处可以发现这些评论是他读完Revisiting Small Batch Training for Deep Neural Networks 的感想,这篇论文对batch size(以及其他一些超参数)在深度学习中的选取做了详尽的分析并提供了实验数据。结果表明:

The best performance has been consistently obtained for mini-batch sizes between m=2 and m=32, which contrasts with recent work advocating the use of mini-batch sizes in the thousands.

也就是最好的实验表现都是在batch size处于2~32之间得到的,这和最近深度学习界论文中习惯的动辄上千的batch size选取有很大的出入。

其实回想我们使用mini-batch技术的原因,无外乎是因为mini-batch有这几个好处 :

  • 提高了运行效率,相比batch-GD的每个epoch只更新一次参数,使用mini-batch可以在一个epoch中多次更新参数,加速收敛。
  • 解决了某些任务中,训练集过大,无法一次性读入内存的问题。
  • 虽然第一点是mini-batch提出的最初始的原因,但是后来人们发现,使用mini-batch还有个好处,即每次更新时由于没有使用全量数据而仅仅使用batch内数据,从而人为给训练带来了噪声,而这个操作却往往能够带领算法走出局部最优(鞍点)。理论证明参见COLT的这篇论文Escaping From Saddle Points-Online Stochastic Gradient for Tensor Decomposition。也就是说,曾经我们使用mini-batch主要是为了加快收敛和节省内存,同时也带来每次更新有些“不准”的副作用,但是现在的观点来看,这些“副作用”反而对我们的训练有着更多的增益,也变成mini-batch技术最主要的优点。(有点像伟哥西地那非,最早是被发明出来治疗心血管疾病的,但是发现其副作用是容易使人勃起,最后反而是用来助勃,而不是用来治疗心血管了)

Figure 1. ImageNet top-1 validation error vs. minibatch size [4]

综上所述,我们选取batch size时不妨这样操作:

  1. 当有足够算力时,选取batch size为32或更小一些。
  2. 算力不够时,在效率和泛化性之间做trade-off,尽量选择更小的batch size。
  3. 当模型训练到尾声,想更精细化地提高成绩(比如论文实验/比赛到最后),有一个有用的trick,就是设置batch size为1,即做纯SGD,慢慢把error磨低

batch-size选取相关推荐

  1. 神经网络训练时如何选取batch size的大小

    神经网络训练时如何选取batch size的大小 做实验时batch size选取的128/144,设置每1000步模型保存一次.但发现训练到后面损失很难降低了. 做实验时batch size选取的6 ...

  2. 浅析深度学习中Batch Size大小对训练过程的影响

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨陈志远@知乎(已授权) 来源丨https://zhuanlan ...

  3. batch size 训练时间_深度学习 | Batch Size大小对训练过程的影响

    转自:面试中问你 Batch Size大小对训练过程的影响​mp.weixin.qq.com 先看两个问题: (1)深度学习中batch size的大小对训练过程的影响是什么样的? (2)有些时候不可 ...

  4. Batch Size理解

    目录 1.直观的理解: 2.为什么要提出Batch Size? 3.既然 Full Batch Learning 并不适用大数据集,那么走向另一个极端怎么样? 3.Batch Size设置合适时的优点 ...

  5. 深度学习中 Batch Size 对训练过程的影响

    作者 | 陈志远 编辑丨极市平台 之前面试过程中被问到过两个问题: (1)深度学习中batch size的大小对训练过程的影响是什么样的? (2)有些时候不可避免地要用超大batch,比如人脸识别,可 ...

  6. Batch Size 对训练的影响

    作者 陈志远@知乎  编辑 极市平台 侵删 来源 https://zhuanlan.zhihu.com/p/83626029 之前面试过程中被问到过两个问题: (1)深度学习中batch size的大 ...

  7. 神经网络中Batch Size的理解

    神经网络中Batch Size的理解 直观的理解: Batch Size定义:一次训练所选取的样本数. Batch Size的大小影响模型的优化程度和速度.同时其直接影响到GPU内存的使用情况,假如你 ...

  8. batch、batch size与epoch

    batch: 表示批次.设置过大的批次(batch)大小,可能会对训练时网络的准确性产生负面影响,因为它降低了梯度下降的随机性. Batch 的选择,首先决定的是下降的方向.如果数据集比较小,完全可以 ...

  9. batch size设置

    参考  batch size设置 - 云+社区 - 腾讯云 深度学习中经常看到epoch. iteration和batchsize,下面按自己的理解说说这三个的区别: (1)batchsize:批大小 ...

  10. batch size对训练的影响

    文章目录 一.batch size 二.batch size对训练的影响 1.训练时间 2.模型的影响 3.实战中的超参数 在不考虑bn的情况下,batch size大小决定了深度学习训练过程中完成每 ...

最新文章

  1. 《阿丽塔》脑机接口正从科幻走向现实
  2. 靠谱的Pycharm安装详细教程
  3. 腾讯校招历年经典面试汇总:C++研发岗
  4. LeetCode 1708. 长度为 K 的最大子数组
  5. 以WinGrub 引导安装Fedora 4.0 为例,详述用WinGrub来引导Linux的安装
  6. PyTorch(总)---PyTorch遇到令人迷人的BUG与记录
  7. 接口自动化测试框架必备的9个功能举例
  8. greenplum定期清理日志脚本-分割线后更新简单方法
  9. Oracle autotrace使用说明
  10. MySQL之字符串拼接
  11. OpenCV 单目摄像头(python版)
  12. 操作系统——内存映射文件
  13. windows定时截屏小工具
  14. 软件测试自动感应灯,基于单片机的智能感应灯设计
  15. PFC离散元+3DEC离散元技术与应用学习
  16. 七堂思维成长课-读后感
  17. 知识图谱嵌入的衡量指标:MRR,MR,HITS@n
  18. 兔子繁衍问题(PTA)
  19. 在查询分析器里执行数据库的备份和还原操作
  20. Three.js实现跳一跳(在线玩)

热门文章

  1. ABB 机器人调试总结1
  2. 工程硕士+计算机技术,改革计算机技术工程硕士在职研究生选拨制度
  3. 不请客不送礼不求人,坚持四条“土经验”,领导不得不重用你
  4. Docker容器的安装并运行一个网页游戏
  5. Steam Link xxx不可用 手机连接不到电脑设备?流媒体传输失败
  6. 一面向对象设计动物乐园
  7. 小扎放话,Meta今年缩招3000人!游戏引擎巨头Unity裁员400人
  8. 前端开发UI框架选择---帮你解决忧愁
  9. sublime粘贴图片问题
  10. 【软考中级】软件设计师笔记