美文网首页
论文导读《On Large-Batch Training for

论文导读《On Large-Batch Training for

作者: _从前从前_ | 来源:发表于2018-07-19 20:50 被阅读0次

    前言

    在最近的图片分类项目中,出现了一个违背自己直觉的现象:batch size越大,最后的结果反而越差。一直认为,batch size越大,梯度每次更新的方向越准确, 收敛速度应该越快,并且精度越高。百思不得其解的情况下,找到了这篇论文,也算是解答了自己的部分疑惑。
    On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima

    详细解读

    本来是想自己操刀写的,毕竟论文看了两天,但是写的时候百度了一下发现CSDN上有大神分享了自己的解读,我也就直接搬运了,毕竟项目紧张。

    这篇文章探究了深度学习中一个普遍存在的问题——使用大的batchsize训练网络会导致网络的泛化性能下降(文中称之为Generalization Gap)。文中给出了Generalization Gap现象的解释:大的batchsize训练使得目标函数倾向于收敛到sharp minima(类似于local minima),sharp minima导致了网络的泛化性能下降,同时文中给出了直观的数据支持。而小的batchsize则倾向于收敛到一个flat minima,这个现象支持了大家普遍认为的一个观点:小的batchsize存在固有噪声,这些噪声影响了梯度的变化。
    [CSDN大神对论文的解读]

    (https://blog.csdn.net/zhangboshen/article/details/72853121)

    总结一下几个点吧。

    1、关于mini-batch-size SGD及其变体

    主要优点:

    • 在强凸函数中能够收敛到最小值点,在非凸函数中也能收敛至不错的驻点。
    • 可以有效的避免鞍点。
    • 对输入的数据鲁棒性强。

    主要缺点:

    • 由于训练数据是序列性的连续迭代和其小批量的性质,大规模的并行化较困难,解决这个问题的最直接的方法就是加大batch size,虽然加大batch size会增加每次迭代的计算量,但是会减少迭代步数,可以通过并行化对计算量进行分配,加快训练速度。但是加大batch size就会出现Generalization Gap现象的出现,该论文也是在探讨这个问题。

    2、LB(Large batch size)为何不如SB(Small batch size)的猜测

    首先,LB与SB方法在训练的时候实际上得到的损失值是差不多的,这个现象的可能原因有下面几点,论文讨论的是第三点和第四点:

    • LB更容易过拟合
    • LB更容易陷入鞍点
    • LB缺少SB的随机探索性,更依赖于初始值,容易陷入初始点周围的最小值,而SB可以探索到离初始点更远的最小值
    • LB和SB收敛到具有不同泛化特性的最小化点

    3、作者的观点

    • 作者认为LB之所以出现Generalization Gap问题,原因是LB训练时候更容易收敛到sharp minima,而SB则更容易收敛到flat minima。并且LB不容易从这些sharp minima中出来。
    • 而且作者强调,LB出现的Generalization Gap现象并不是过拟合造成的,因为early stopping(防止过拟合)的方法对这个实验并没有帮助。
    • 作者认为关于batch size的选择是有一个阈值的,一旦超过这个阈值,模型的质量会退化,网络的准确度大幅下降。

    4、作者提出的解决方法

    这里只介绍两种可以提升测试精度的,一种依旧处于sharpness,一种减轻了sharpness。

    • piggybacked LB(or warm-started)
      就是利用SB先训练一定的轮数,让模型远离初始点附近的sharpness点,然后再换成LB接着训练,可以收敛至sharpness较小的点,并且可以提升测试精度。作者也称之为动态采样。

    • 数据增强
      作者通过水平映射(horizontal reflection)、随机旋转至10°、随机平移到图像尺寸的0.2倍几种数据增强的手段,提高了测试精度,但是sharpness依旧较高。

    5、作者提出的问题

    (a) 是否有人能够证明大batch的训练方法在神经网络的优化过程中严格收敛到sharp minima?
    (b) 优化过程的sharp和flat两种minimum的密度如何?
    (c) 是否有人能够设计出一种适合采用大的batch用来训练的CNN网络结构?
    (d) 能够找到一种合适的初始化方法使得大batch的方法能够收敛到flat minimum上面去?
    (e) 能够从一个算法的机制上面去找到一个算法,使得大batch方法远离sharp minima?

    个人总结

    自己的英语水平很捉急,看论文的过程很痛苦,推导的过程也很痛苦,但是耐下性子整个做下来了收获还是颇丰。希望自己今后遇到了问题不仅可以百度谷歌,更多的是去自己查阅论文动手解决自己的疑惑。项目很忙,但是还是希望自己能多多总结,记录自己成长的轨迹,东西都是学了忘忘了翻阅,自己写下来了,之后来翻阅自己写的东西捡起来也就快了。

    相关文章

      网友评论

          本文标题:论文导读《On Large-Batch Training for

          本文链接:https://www.haomeiwen.com/subject/kfhxmftx.html