分享好友 最新动态首页 最新动态分类 切换频道
【机器学习】——模型调参、超参数优化
2024-12-26 05:36

总结

【机器学习】——模型调参、超参数优化

二、超参数优化

在搜索空间中选择超参数

HPO算法有哪些

Black-Box

Multi-Fidelity

总结

三、网络架构搜索

Neural Architecture Search (神经架构的搜索)

早期NAS的工作:通过强化学习(Reinforcement Learning

One-shot 方法

可微的结构搜索(Differentiable Architecture Search

缩放CNN

最近的研究方向的重点

总结


手动调超参数

选取一个好的超参数得到一个好的结果是比较花时间的过程
一般会从一个好的基线开始。(Baseline)
基线是什么

  • 选一个质量比较高的工具包,其中设了不错的参数,虽然可能对我们的问题不算是最好的,但是是一个不错的开始点
  • 如果要做的东西是跟某些论文相关,可以看看该论文里面的超参数是什么(有些超参数跟特定的数据集有关,这些超参数在一般的情况下都不错

有了比较好的起始点之后,调整超参数后再重新训练模型,再去看看验证集上的结果(精度、损失

  • 一次调一个值,多个值同时调可能会不知道谁在起贡献
  • 看看模型对超参数的敏感度是什么样子【没调好一个超参数模型可能会比较差,但是调好了也只是到了还不错的范围】
  • 想对超参数没那么敏感的话,可以使用比较好的模型【在优化算法中使用Adam(对有些超参数没那么敏感,调参会简单很多)而不是SGD(在比较小的区域比较好)】
多次调参的管理
  • 每次调参一定要做好笔记【任何调过的东西,最好将这些实验管理好】(训练日志、超参数记录下来,这样可以与之前的实验做比较,也好做分享,与自己重复自己的实验
  • 最简单的做法是将log记录到txt上,把超参数和关键性指标(训练误差)放在excel中【适合实验没有那么多的参数】
  • Tensorboard,tensorflow开发的一个可视化工具
  • weight&kbias:允许在训练的时候用他们的API,然后把实验记录下来后上传到他们的网页上,就可以进行比较

重复一个实验是非常难的

  • 开发的环境:用的硬件是什么、新旧GPU可能会有点不一样;用的库的版本(Python本身也要去注意
  • 代码开发要做好版本控制(可以将每个版本的代码放在同一个地方 需求的库也放在这里
  • 要注意随机性(改变了随机种子,模型抖动比较大的话,说明代码的稳定性不是很好)【要避免换了个随机种子后,结果浮动比较大。这样的话,尝试能不能将不稳定的地方修改一下,实在不行就将多个模型做ensemble】
机器调参与人调参的成本比较
  • 在小任务上很多时候已经可以用机器来做了(到最后可能都是用机器来调参【人的成本在增加】
  • 训练树模型在CPU上花10min 大概花$0.4
  • 训练神经网络在GPU花1h左右 大概花$5
  • 跟人比(人大概花十天左右,算法训练1000次调参数,很有可能会打败人类(90%
自动调参(AutoML
  • AutoML在模型选择这一块做的比较好
  • 超参数的优化(HPO)【比较通用】:通过搜索的方法,找到一个集合去调整模型的超参数
  • NAS(Neural architecture search)【专注于神经网络】:可以构造一个比较好的神经网络模型,使得能够拟合我们的任务
  • 每个年代都有最大的技术痛点,当前AutoML可能是技术瓶颈。
总结

HPO算法

  • black-box:每次一个训练任务 当作一个黑盒(每挑一组超参数,然后拿去训练,然后看模型的关键的衡量指标(精度、误差,再去选下一个怎么做)【可以适用于各种机器学习算法】
  • Multi-fidelity(讨论比较多:因为训练一个模型太贵了(数据集很大,完整跑完很耗时间,还要试很多的话,太耗时了,所以可以不用把整个数据集给跑完(不关心最后的精度怎么样,只关心超参数之间的效果怎么样

以下是做法

  • 对数据集下采样(超参数如果在小数据集上效果比较好的话,在完整数据集上也不差
  • 将模型的变小(SGD的超参数在resnet18上效果差不多的话,在resnet152上也可能是不错的
  • 在训练时会对数据扫很多遍,但是对于不好的超参数来说,它训练一遍就知道它的效果怎么样了,所以不需要等到完全训练完,看到效果不好的,及时停止
  • 上面三点就是说,通过比较比较便宜点的但又跟完整训练有关系的任务来近似一个值,然后对超参数进行排序

Black-box 虽然会贵一点但是任务计算量比较小或优化算法不知道的话,这个方法会比较好;Multi-fidelity知道一些任务的细节,可以将任务弄小一点,这样每次试验的时候成本没有那么高。

HPO算法有哪些

Black-Box:

  • Grid Search:
  • Random Search:
  • Bayesian Optimization:
  • Simulated Annealing
  • Genetic Algorithms

Multi-Fidelity:

  • Modeling Learning Curve
  • Bandit Based(Successive Halving & Hyperband)
Black-Box

Grid search(网格搜索

  • 其实就是一个暴力穷举,对search space中的每一个config(每一组值),拿去训练一次然后去评价一次,把最好的结果返回出来,也就是把所有的组合过了一遍之后,再把最好的值返回出来。
  • 只要搜索空间足够好,就能覆盖到比较好的值,并且一定能找出来
  • 特点就是所有都会评价(Evaluate)一遍,并且保证能找到最好值,但是有个很明显的缺点,搜索空间随着超参数的变多会指数级的增加,也就是“维度诅咒”。但是如果算法足够简单,就那几个参数选择不大的话,当然预算足够的话,也是可以的。

Random Search(随机搜索

  • 随机搜索跟前面的有点类似,虽然也是有个search space 但是 我只选择n次,每一次在搜索空间中选出一个config,拿过去训练,再得出最好结果
  • 次数n保证了我们的这个算法一定会停,可以由我们自己选取,n取过大就跟网格搜索差不多,n取过小,可能并不是那么好用,就n要取得合适
  • 一般来说,随机搜索时一个非常有效的办法,再没有更好的想法之前可以尝试随机搜索
  • 其实也可以不选n,可以是等到差不多的时候(感觉精度没有什么进展)直接把它停掉

网格搜索可能会出现精度平稳之后,精度还会上升的情况;但是随机搜索很少会出现这样的情况,除非没有随机好。

Bayesian Optimization(贝叶斯优化

  • 在实际中用的不是那么多,因为相对来说比较复杂,但是是比较活跃的研究方向

  • BO(贝叶斯优化,是会学从一个超参数HP到目标函数(精度、损失)的一个函数【机器学习是数据到我们想要东西之间的一个映射的关系】,这里是说每一个数据点是一个模型

  • 就每做一个实验就会得到一个数据点,然后再拟合一个曲线出来;它在选下一个超参数去试的时候,会根据当前的评估,来的出数据点

  • Surrogate模型:就是拟合超参数与目标函数之间关系的模型,可以采用概率的一些regression模型,可以使用随机森林或者是高斯过程

  • 具体有张图

  • 随着采样的越来越多,对整个模型的进步会越来越准。

  • 在一开始的时候其实跟random search差不多(获取函数还不够好,就只能随机挑值来做,再后期的时候(建模比较准)会比较好一点

  • 随机搜索是并行的算法,贝叶斯优化是顺序的算法(采下一个点需要等上一个完成才行

  • 到底是什么时候会好一点,如果预算不够的话(搜的质量跟随机搜索的差不多,这样是划不来的;如果贝叶斯能在前期就做的比随机搜索好,那这样的划得来的。

  • 通常贝叶斯优化比随机搜索好的时候,一般来说是模型比较简单(模型比较简单的话,随机搜索也不差,或者是超参数的那个空间不那么复杂,或者有足够多的样本(需要很多的预算

Multi-Fidelity

以下这两个算法在现实生活中用的比较多

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

)]
[外链图片转存中…(img-m1kSEV3U-1714275010996)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

最新文章
DevEco Studio可视化界面开发教程
为了帮助刚入行的小白快速上手使用DevEco Studio进行可视化界面开发,以下是整体的流程:创建新项目设计界面布局添加控件元素设置控件属性和事件编写逻辑代码运行和调试下面将逐一介绍每个步骤需要做的事情以及相关的代码。首先,我们需要
2025最佳页面设计软件推荐,专业设计师常用的都在这里了
更新时间:2024-10-23 15:28:34今天这期不容错过,专业设计师们常用的 7 款软件都会在这期进行呈现,分别是即时设计、、Affinity Designer、Gravit Designer、Marvel、Bootstrap 与 Squarespace。对于专业设计师而言,选择适合自己的页面设
B站直播的极速排障建设
一、概述直播业务具有实时性强,复杂度高,排查链路长,影响面大等特征,线上问题如果不能立刻排查处理,分分秒秒都在影响用户的观看体验、主播的收入。但各端的问题可能都只是表象,例如,一个看似简单的画面卡顿问题,可能涉及到编码器配
Google 给我们展示了下一代搜索引擎的样子
作为一家靠搜索引擎发展起来的科技巨头,Google 在今年的开发者大会上给我们展示了下一代搜索引擎。1996 年 8 月,拉里·佩奇和谢尔盖·布林在斯坦福大学的网络上发布了一个名为 BackRub 的搜索引擎,后来这个搜索引擎改名为「Google」。到
C++实现DDos攻击测试
//for basic C funtions#includelt;stdio.hgt;//for string operations#includelt;stringgt;//only for cin and cout#includelt;iostreamgt;//for the socket programming in cpp#includelt;winsock2.hgt;//linking to ws2_32 library#prag
GCDF全球职业规划师认证:解锁职业发展新境界
在瞬息万变的职场江湖,如何规划自己的职业生涯成为许多人关注的焦点。全球职业规划师认证(GCDF)应运而生,为广大职场人士提供了一把解锁职业发展新境界的钥匙。本文北森生涯将深入剖析GCDF的内涵、价值及发展前景,助你把握全球职业规划
AI 绘画碰上经典古诗词,当真是笑不活了
用 AI 给“中文难度 10 级”的古诗词、文言文配插图,会是什么 Style?B站百万网友会告诉你:堪比“灵魂出窍”,直接绷不住了。具体啥情况?请各位观众老爷来看 VCR。现在展示的是李白《将进酒》名场面,这下可是真・300 杯:△网友:连羊
docker 中文官网 docker wiki
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Dcoker 是基
boss直聘苹果手机ios版
boss直聘ios版是苹果手机客户端版本,boss直聘专注于求职招聘,很多人都在用的找工作软件,超丰富的全面的职业岗位信息,公司企业在线查询,信息真实,让求职更高效,感兴趣的小伙伴不要错过哦!BOSS直聘专注互联网招聘求职找工作APP,求职
DBY DCY 250450500 三级圆柱齿轮减速机配5马力电机
ZQ JZQ软齿表面减速器ZSY / ZLY / ZDY圆柱齿轮减速机,齿轮渗碳,淬火,研磨,高承载能力,低噪音;主要用于皮带输送机和各种运输机械,也可用于驾驶其他一般机械。优点是:输入轴和输出轴在驱动装置中垂直布置,轴承容量强,使用寿命长,体
相关文章
推荐文章
发表评论
0评