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

基线是什么?

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

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

  • 一次调一个值,多个值同时调可能会不知道谁在起贡献
  • 看看模型对超参数的敏感度是什么样子【没调好一个超参数模型可能会比较差,但是调好了也只是到了还不错的范围】
  • 想对超参数没那么敏感的话,可以使用比较好的模型【在优化算法中使用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可能是技术瓶颈。
总结

超参数调优的目的是找到一组好的值
数据预处理比较耗时
使用算法进行调优是一种趋势

二、超参数优化

在搜索空间中选择超参数
  •  backBone:【合理的区间:MobileNetV2_0.25,MobileNetV3_small,MobileNetV3_large,ResNet18_V1b,ResNet18_V1b,ResNet34_V1b,ResNet50_V1b,ResNet101_V1b,VGG16_bn,se_ResNext50_32*4d,ResNest50,ResNest200】(从模型的小到大排序的一
  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值