文章目录

  • 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的关系
  • 总结

在其他笔记中我们讲述了数据, 模型的深度, 宽度对深度学习模型性能的影响, 这一次讲述一下 学习率和batchsize对模型性能的影响,在实践中这两个参数往往一起调整。

1. 学习率和batchsize的重要性

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

wt+1=wt−η1n∑x∈βΔl(x,wt)w_{t+1} = w_t - \eta\frac{1}{n}\sum_{x\in \beta}\Delta l (x, w_t) wt+1​=wt​−ηn1​x∈β∑​Δl(x,wt​)

n是批处理(batchsize), η\etaη是学习率。 上式可以直到, 这两个银子直接决定模型的权重更新, 从优化本身来看, 他们是影响模型性能收敛最重要的参数.

学习率直接影响模型的收敛状态, batchsize则影响模型的泛化性能.

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

通常我们需要选择合适的学习率才能进行学习, 要达到一个最佳值, 学习率的调整应该满足下面的条件, i代表第i次更新:

∑i=1∞ϵi=∞,∑i=1∞ϵi2<∞\sum_{i=1}^{\infty}\epsilon_i=\infty,\\ \sum_{i=1}^{\infty}\epsilon_i^2<\infty i=1∑∞​ϵi​=∞,i=1∑∞​ϵi2​<∞

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

学习率决定了权重更迭的步长, 因此是一个十分敏感的参数, 他对模型性能的影响体现在两个方面: 第一个是出是学习率的大小, 第二个是学习率的变化方案.

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

初始学习率肯定有一个最优值, 过大则导致模型不收敛, 过小则导致模型收敛的特别慢或者无法学习, 下图是不同大小的学习率:

找最佳学习率有个简单的方法 , 即从小到大训练模型, 然后几率损失的变化, 通常会几率到这样的曲线:
图片
随着学习率的增加, 损失会慢慢变小, 而后增加, 而最佳的学习率就可以通过从其中损失最小的区域选择.

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

学习率在模型的训练过程中很少不变的, 通常会有两个方式对学习率进行更改:

  1. 预设规则学习率变化法
  2. 自适应学习率变换方法

2.2.1 预设规则学习率变化法

常见的策略包括: fixed, setp, exp, inv, multistep, poly, sigmoid等
从各个学者的结果上看:

  • step,multistep方法收敛效果最好, 这也是我们常用他们的原因. 虽然学习率的变化是最离散的, 但是并不影响模型收敛到比较好的结果.
  • 其次是exp, poly. 她们能取得与step, multistep相当的结果, 也是因为学习率比较好的速率下降, 虽然变化更加平滑, 但是结果也未必能胜过step和multistep方法, 在很多研究中都得到过验证, 离散的学习率变更策略不影响模型的学习.
  • inv 和 fixed的收敛结果最差. 因为fixed 使用了较大的学连续梁, 而inv方法学习率下降过程太快.

2.2.2 自适应学习率变化法

自适应学习率策略以Adagrad, Adam等方法代表. 具体可以查看该网页: https://zhuanlan.zhihu.com/p/57860231

2.3 小结

如果经验不够, 最好考虑使用Adam系列方法.

3. batchsize如何影响模型性能

模型对batchsize虽然没有学习率那么敏感, 但是进一步提高模型性能上, batchsize会变成一个非常关键的参数

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

这是肯定的, 同样的epoch数目, 大的batchsize需要的batch数目减少了, 所以可以减少训练时间. 另外, 大的batchsize梯度的计算更加稳定, 因为模型训练曲线会更加平滑. 在微调时, 大的batchsize可能会取得更好的结果.

3.2 大的batchsize泛化能力下降

在一定范围内, 增加batchsize有助于收敛的稳定性, 但是随着batchsize的增加, 模型的性能会下降.
大的batchsize收敛到sharp minimum, 而小的batchsize会收敛到flat minimum, 后者具有更好的泛化能力. 如下图, 两个的区别是变化的趋势, 一个快一个慢, 造成这个现象的主要原因是小的batchsize带来的噪声有助于逃离sharp minimum.
图片
大的batchsize性能下降是因为训练时长不够, 本质上并不少batchsize的问题.

3.3 小结

batchsize在变化很多时, 会降低模型的泛化能力. 模型的性能随着batchsize通常没有学习率敏感.

4. 学习率和batchsize的关系

通常当我们增加batchsize为原来的N倍时, 要保证经过同样的样本后更新的权重相等,按照线性随访规则, 学习率应该增加为原来的N倍. 但是如果保证权重的方差不变, 则学习率应该增加为原来的sqrt(N)倍, 目前这两种策略都被研究过, 使用前者的多.
衰减学习率可以通过增加batchsize来实现类似的效果. 从各个学者的研究中发现, 从SGD的权重更新式子看出两者是等价的.
对于一个固定的学习率, 存在一个最优的batchsize能够最大化测试精度. 这个batchsize和学习率以及训练集大小正相关.
对此实际上有两个建议:

  • 如果增加了学习率, 那么batchsize最好也跟着增加, 这样收敛更稳定.
  • 尽量使用大的学习率, 因为很多研究都表明更大的学习率有利于提高泛化能力. 如果真的要衰减, 可以尝试其他方法, 比如增加batchsize, 学习率对模型的以你选哪个真的很大, 慎重调整.

总结

学习率和batchsize是影响模型性能极其重要的两个参数, 慎重对待.
对于学习率算法, 可以选择Adam等自适应学习率策略线训练看看收敛结果, 再考虑使用SGD等算法进一步提高性能.
对于batchsize, 大部分人不会使用成千上万的batchsize, 因此不用担心模型性能的下降, 用大一点的batchsize(64, 128等), 这样需要迭代的次数更少, 结果也更稳定.

深度学习学习率对模型训练的影响相关推荐

  1. 【20210910】【机器/深度学习】lightGBM模型训练中报错:“Cannot set reference after freed raw data“

    一.原因在于: lightGBM模型训练完之后,Dataset的数据就会被清空,虽然在变量中它还存在,但实际已经被清空了,所以要再使用的话,需要重新生成! 二.补充知识点: lightGBM 模型训练 ...

  2. [深度学习-实践]Transformer模型训练IMDB-tensorflow2 keras

    1. 引言 什么是Self-attention, Muti-attention和Transformer 2. 数据预处理 mdb影评的数据集介绍与下载 下载后执行下面预处理代码,把每个词都转化为索引. ...

  3. 深度学习的seq2seq模型——本质是LSTM,训练过程是使得所有样本的p(y1,...,yT‘|x1,...,xT)概率之和最大...

    from:https://baijiahao.baidu.com/s?id=1584177164196579663&wfr=spider&for=pc seq2seq模型是以编码(En ...

  4. 基于深度学习的图像识别模型研究综述

    基于深度学习的图像识别模型研究综述 摘要:深度学习是机器学习研究中的一个新的领域,其目的在于训练计算机完成自主学习.判断.决策等人类行为并建立.模拟人脑进行分析学习的神经网络,它模仿人类大脑的机制来解 ...

  5. 从零开始搭建深度学习验证码识别模型

    文章目录 从零开始搭建深度学习验证码识别模型 CNN模型与图像识别 验证码数据集介绍 生成数据集 生成EasyCaptcha 生成Kcaptcha 搭建模型 EasyNet模型 KCapNet模型 模 ...

  6. 深度学习这么调参训练_深度学习调参及训练技巧(转)

    深度学习调参及训练技巧(转) 作者:婉儿飞飞 链接:https://www.jianshu.com/p/0b116c43eb16 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并 ...

  7. 深度学习 vs. 概率图模型 vs. 逻辑学

    深度学习 vs. 概率图模型 vs. 逻辑学 发表于2015-04-30 21:55|6304次阅读| 来源quantombone|1 条评论| 作者Tomasz Malisiewicz 深度学习de ...

  8. 从FM推演各深度学习CTR预估模型

    本文的PDF版本.代码实现和数据可以在我的github取到. 1.引言 点击率(click-through rate, CTR)是互联网公司进行流量分配的核心依据之一.比如互联网广告平台,为了精细化权 ...

  9. 深度学习的推荐模型(DLRMs):设计孪生掩码层高效学习维度自适应的Embedding...

    猜你喜欢 0.2021年10月份热门报告免费下载1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统架构.算法及后台设计4.微博推荐算法实践与机器学习平台演进5.腾讯 ...

最新文章

  1. inputstream怎么写给前端_写给“正在焦虑的设计师们”的一封信
  2. 【opus源码分析】celt_fir5函数
  3. 寒门出贵子,传递正能量
  4. 快速安装Git客户端及TortoiseGit并使用
  5. 多车调度问题(大疆Robot Master)——ROS键盘控制失灵,小车无法收敛定位,路径规划出错
  6. Java IO 之 管道流 原理分析
  7. 华为畅享max有没有人脸识别_看到Meeting视频会议一体机融合华为分布式能力,共建智能会议新体验...
  8. 等待来自服务器的响应超时_服务器的基本框架结构
  9. 【C】揭秘rand()函数;
  10. HTTP请求方式中GET和POST的区别?
  11. 2017 ACM-ICPC北京网络赛: C. Matrix(DP)
  12. 每日算法系列【LeetCode 287】寻找重复数
  13. windows server 2003 IIS6.0下session问题
  14. hmcl启动器怎么联机_hmcl启动器使用教程
  15. Android原生态实现分享转发功能(分享图片到其他APP)
  16. 键盘按键介绍及快捷键
  17. 使用 JavaScript 将 JSON 数据动态转换为 HTML 表
  18. 笔记本电脑外接显示器投屏问题
  19. sqlitespy怎么打开.db数据库文件
  20. MySQL installer直接解决安装(包括不想安在c盘也OK)、更新、卸载问题

热门文章

  1. 深入理解Java虚拟机到底是什么
  2. java课程设计之球球大作战
  3. 冷冰:Android核心分析系列
  4. 【软件工具篇02】使用Anki克服遗忘曲线
  5. POJ2367 家谱树
  6. vue中使用echart实现三维立体图
  7. 新浪微博PC客户端(DotNet WinForm C# 版,C#调用新浪微博API代码,源码下载)—— 初探 (第二部分内置链接)
  8. 什么是知识,什么是知识图谱,有什么作用,有哪些应用领域?
  9. android7.x Launcher3源码解析(2)---框架结构
  10. uniapp - app 获取短信内容