引用自:学习率和batchsize如何影响模型的性能?

文章目录

  • 1 为什么说学习率和batchsize
  • 2 学习率如何影响模型性能?
    • 2.1、初始学习率大小对模型性能的影响
    • 2.2、学习率变换策略对模型性能的影响
      • 2.2.1 预设规则学习率变化法
      • 2.2.2 自适应学习率变化法
    • 2.3、小结
  • 3 Batchsize如何影响模型性能?
    • 3.1、大的batchsize减少训练时间,提高稳定性
    • 3.2、大的batchsize导致模型泛化能力下降
    • 3.3、小结
  • 4 学习率和batchsize的关系
  • 参考文献

1 为什么说学习率和batchsize

目前深度学习模型多采用批量随机梯度下降算法进行优化,随机梯度下降算法的原理如下,

n是批量大小(batchsize),η是学习率(learning rate)。可知道除了梯度本身,这两个因子直接决定了模型的权重更新,从优化本身来看它们是影响模型性能收敛最重要的参数。

学习率直接影响模型的收敛状态,batchsize则影响模型的泛化性能,两者又是分子分母的直接关系,相互也可影响,因此这一次来详述它们对模型性能的影响。

2 学习率如何影响模型性能?

通常我们都需要合适的学习率才能进行学习,要达到一个强的凸函数的最小值,学习率的调整应该满足下面的条件,i代表第i次更新。

第一个式子决定了不管初始状态离最优状态多远,总是可以收敛。第二个式子约束了学习率随着训练进行有效地降低,保证收敛稳定性,各种自适应学习率算法本质上就是不断在调整各个时刻的学习率。

学习率决定了权重迭代的步长,因此是一个非常敏感的参数,它对模型性能的影响体现在两个方面,第一个是初始学习率的大小,第二个是学习率的变换方案。

2.1、初始学习率大小对模型性能的影响

初始的学习率肯定是有一个最优值的,过大则导致模型不收敛,过小则导致模型收敛特别慢或者无法学习,下图展示了不同大小的学习率下模型收敛情况的可能性,图来自于cs231n。

那么在不考虑具体的优化方法的差异的情况下,怎样确定最佳的初始学习率呢?

通常可以采用最简单的搜索法,即从小到大开始训练模型,然后记录损失的变化,通常会记录到这样的曲线。

随着学习率的增加,损失会慢慢变小,而后增加,而最佳的学习率就可以从其中损失最小的区域选择。

有经验的工程人员常常根据自己的经验进行选择,比如0.1,0.01等。

随着学习率的增加,模型也可能会从欠拟合过度到过拟合状态,在大型数据集上的表现尤其明显,笔者之前在Place365上使用DPN92层的模型进行过实验。随着学习率的增强,模型的训练精度增加,直到超过验证集。
(lr是learning rate:学习率)

2.2、学习率变换策略对模型性能的影响

学习率在模型的训练过程中很少有不变的,通常会有两种方式对学习率进行更改,一种是预设规则学习率变化法,一种是自适应学习率变换方法。

2.2.1 预设规则学习率变化法

常见的策略包括fixed,step,exp,inv,multistep,poly,sigmoid等,集中展示如下:
(fixed是固定的学习率)

笔者之前做过一个实验来观察在SGD算法下,各种学习率变更策略对模型性能的影响,具体的结果如下:

从结果来看:

  • step,multistep方法的收敛效果最好,这也是我们平常用它们最多的原因。虽然学习率的变化是最离散的,但是并不影响模型收敛到比较好的结果。

  • 其次是exp,poly。它们能取得与step,multistep相当的结果,也是因为学习率以比较好的速率下降,虽然变化更加平滑,但是结果也未必能胜过step和multistep方法,在这很多的研究中都得到过验证,离散的学习率变更策略不影响模型的学习。

  • inv和fixed的收敛结果最差。这是比较好解释的,因为fixed方法始终使用了较大的学习率,而inv方法的学习率下降过程太快。

从上面的结果可以看出,对于采用非自适应学习率变换的方法,学习率的绝对值对模型的性能有较大影响,研究者常使用step变化策略。

目前学术界也在探索一些最新的研究方法,比如cyclical learning rate,示意图如下:

实验证明通过设置上下界,让学习率在其中进行变化,可以在模型迭代的后期更有利于克服因为学习率不够而无法跳出鞍点的情况。

确定学习率上下界的方法则可以使用LR range test方法,即使用不同的学习率得到精度曲线,然后获得精度升高和下降的两个拐点,或者将精度最高点设置为上界,下界设置为它的1/3大小。

SGDR方法则是比cyclical learning rate变换更加平缓的周期性变化方法,如下图,效果与cyclical learning rate类似。

2.2.2 自适应学习率变化法

自适应学习率策略以Adagrad,Adam等为代表。

原理上各种改进的自适应学习率算法都比SGD算法更有利于性能的提升,但实际上精细调优过的SGD算法可能取得更好的结果,在很多的论文[3-4]中都得到过验证,我们在实验中也多次证明过这一点,如下图。
(SGD算法,即随机梯度下降法 Stochastic gradient descent)

2.3、小结

不考虑其他任何因素,学习率的大小和迭代方法本身就是一个非常敏感的参数。如果经验不够,还是考虑从Adam系列方法的默认参数开始,如果经验丰富,可以尝试更多的实验配置。

3 Batchsize如何影响模型性能?

模型性能对batchsize虽然没有学习率那么敏感,但是在进一步提升模型性能时,batchsize就会成为一个非常关键的参数。

3.1、大的batchsize减少训练时间,提高稳定性

这是肯定的,同样的epoch数目,大的batchsize需要的batch数目减少了,所以可以减少训练时间,目前已经有多篇公开论文在1小时内训练完ImageNet数据集。另一方面,大的batch size梯度的计算更加稳定,因为模型训练曲线会更加平滑。在微调的时候,大的batch size可能会取得更好的结果。

3.2、大的batchsize导致模型泛化能力下降

在一定范围内,增加batchsize有助于收敛的稳定性,但是随着batchsize的增加,模型的性能会下降,如下图,来自于文[5]。

这是研究者们普遍观测到的规律,虽然可以通过一些技术缓解。这个导致性能下降的batch size在上图就是8000左右。

那么这是为什么呢?

研究[6]表明大的batchsize收敛到sharp minimum,而小的batchsize收敛到flat minimum,后者具有更好的泛化能力。两者的区别就在于变化的趋势,一个快一个慢,如下图,造成这个现象的主要原因是小的batchsize带来的噪声有助于逃离sharp minimum。

Hoffer[7]等人的研究表明,大的batchsize性能下降是因为训练时间不够长,本质上并不少batchsize的问题,在同样的epochs下的参数更新变少了,因此需要更长的迭代次数。

3.3、小结

batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。在此临界点之下,模型的性能变换随batch size通常没有学习率敏感。

4 学习率和batchsize的关系

通常当我们增加batchsize为原来的N倍时,要保证经过同样的样本后更新的权重相等,按照线性缩放规则,学习率应该增加为原来的N倍[5]。但是如果要保证权重的方差不变,则学习率应该增加为原来的sqrt(N)倍[7],目前这两种策略都被研究过,使用前者的明显居多。

从两种常见的调整策略来看,学习率和batchsize都是同时增加的。学习率是一个非常敏感的因子,不可能太大,否则模型会不收敛。同样batchsize也会影响模型性能,那实际使用中都如何调整这两个参数呢?

研究[8]表明,衰减学习率可以通过增加batchsize来实现类似的效果,这实际上从SGD的权重更新式子就可以看出来两者确实是等价的,文中通过充分的实验验证了这一点。

研究[9]表明,对于一个固定的学习率,存在一个最优的batchsize能够最大化测试精度,这个batchsize和学习率以及训练集的大小正相关。

对此实际上是有两个建议:

  • 如果增加了学习率,那么batch size最好也跟着增加,这样收敛更稳定。

  • 尽量使用大的学习率,因为很多研究都表明更大的学习率有利于提高泛化能力。如果真的要衰减,可以尝试其他办法,比如增加batch size,学习率对模型的收敛影响真的很大,慎重调整。

关于学习率和batch size这次就说这么多,感兴趣可以自行拓展阅读。

参考文献

[1] Smith L N. Cyclical learning rates for training neural networks[C]//2017 IEEE Winter Conference on Applications of Computer Vision (WACV). IEEE, 2017: 464-472.

[2] Loshchilov I, Hutter F. Sgdr: Stochastic gradient descent with warm restarts[J]. arXiv preprint arXiv:1608.03983, 2016.

[3] Reddi S J, Kale S, Kumar S. On the convergence of adam and beyond[J]. 2018.

[4] Keskar N S, Socher R. Improving generalization performance by switching from adam to sgd[J]. arXiv preprint arXiv:1712.07628, 2017.

[5] Goyal P, Dollar P, Girshick R B, et al. Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.[J]. arXiv: Computer Vision and Pattern Recognition, 2017.

[6] Keskar N S, Mudigere D, Nocedal J, et al. On large-batch training for deep learning: Generalization gap and sharp minima[J]. arXiv preprint arXiv:1609.04836, 2016.

[7] Hoffer E, Hubara I, Soudry D. Train longer, generalize better: closing the generalization gap in large batch training of neural networks[C]//Advances in Neural Information Processing Systems. 2017: 1731-1741.

[8] Smith S L, Kindermans P J, Ying C, et al. Don’t decay the learning rate, increase the batch size[J]. arXiv preprint arXiv:1711.00489, 2017.

[9] Smith S L, Le Q V. A bayesian perspective on generalization and stochastic gradient descent[J]. arXiv preprint arXiv:1710.06451, 2017.

有一些没看懂,作者写的蛮好的!!先收藏

深度学习中学习率(lr:learn rate)和batchsize如何影响模型性能?相关推荐

  1. 【深度学习】 学习率lr(Learning Rate)对精度和损失值的影响

    学习率对精度和损失值的影响研究 1 问题 探究不同学习率对深度学习的精度和损失的影响. 2 探究 通过设置不同学习率(lr)发现,训练精度随着学习率的减小在模型训练次数较多的背景下渐趋平稳,逐渐稳定在 ...

  2. 深度学习中学习率和batchsize对模型准确率的影响

    本内容来自其他的人解析,参考链接在最后的注释. 1. 前言 目前深度学习模型多采用批量随机梯度下降算法进行优化,随机梯度下降算法的原理如下: n是批量大小(batchsize),η是学习率(learn ...

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

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

  4. 深入剖析深度学习中Batch Size大小对训练过程的影响

    点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 推荐文章[点击下面可直接跳转]: 来源:https://z ...

  5. 全民 Transformer (一): Attention 在深度学习中是如何发挥作用的

    <Attention 在深度学习中是如何发挥作用的:理解序列模型中的 Attention>    Transformer 的出现让 Deep Learning 出现了大一统的局面.Tran ...

  6. 万字长文带你看尽深度学习中的各种卷积网络

    来源:AI科技评论 摘要:深度学习中的各种卷积网络大家知多少? 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,这篇文章非常值得一读.Kunlun Bai 是 ...

  7. 万字长文带你看尽深度学习中的12种卷积网络

    转自 | AI科技评论 作者 | Kunlun Bai 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,Kunlun Bai 这篇文章非常值得一读.Kunlu ...

  8. 深度学习中,人们常说的鲁棒性和泛化性是什么意思?通俗的给你解释清楚,一看你就明白了。

    在深度学习中,鲁棒性和泛化性都是评估模型质量的重要指标. 鲁棒性:指的是模型对于输入数据的健壮性,即模型在遇到各种不同的数据输入时,仍然能够保持高效的表现.一个鲁棒性强的模型能够在噪声.缺失数据或者其 ...

  9. 「AI不惑境」学习率和batchsize如何影响模型的性能?

    https://www.toutiao.com/a6712708989177561611/ 大家好,这是专栏<AI不惑境>的第四篇文章,讲述学习率以及batchsize与模型性能的关系. ...

最新文章

  1. Eclipes的使用小技巧
  2. sql floor 取整函数
  3. app.vue里使用data_Python爬虫使用正则爬取网站,正则都不会就别玩爬虫了!
  4. 机房配电柜、机柜线缆施工标准做法及线缆入柜方式
  5. async异步注解和aspect切面注解等注解的原理
  6. CPU上下文切换(系统调用、进程上下文、线程上下文、中断上下文)
  7. 高性能异步批量ping的golang实现
  8. libcareplus一个Qemu-6.1.0热补丁示例
  9. ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
  10. 在地址栏直接使用Google“手气不错”功能
  11. HTNL5列表,表格,音频,视频,iframe内联框架
  12. 从vivo Photo Lab“影像实验室”透视门店新价值
  13. css背景图重复怎们弄,CSS如何实现背景图像重复效果
  14. 计算机专业的女孩穿搭,大学里女生一般喜欢男生怎样穿搭
  15. 用turtle模块画小猪佩奇
  16. 处理HttpWebRequest访问https有安全证书的问题
  17. 晶振(crystal)与谐振荡器(oscillator)
  18. 科学计算机程序 字表处理软件都是,计算机应用基础知识--1
  19. ISO Country Code - 标准国家码
  20. 安装skywalking

热门文章

  1. 力挺2007年国内原创音乐届最权威大赛!
  2. 【整理】SAP系统内核和ABAP版本
  3. 【MM模块】Batch 批次管理 2
  4. 【转】SAP Fiori Design Guidelines基础篇
  5. LSMW批处理使用方法(13)_步骤18
  6. 笔记本电源适配器的选择方法
  7. SAP设置信贷控制范围有什么作用?
  8. 生产订单成本的计划、控制和结算
  9. c++编写算法判断二叉树是否为完全二叉树_[校招-算法题] 二叉树基础算法1
  10. mysql tcp ip_通过TCP/IP连接Mysql数据库