一 传统优化算法

机器学习中模型性能的好坏往往与超参数(如batch size,filter size等)有密切的关系。最开始为了找到一个好的超参数,通常都是靠人工试错的方式找到"最优"超参数。但是这种方式效率太慢,所以相继提出了网格搜索(Grid Search, GS)随机搜索(Random Search,RS)

但是GS和RS这两种方法总归是盲目地搜索,所以贝叶斯优化(Bayesian Optimization,BO) 算法闪亮登场。BO算法能很好地吸取之前的超参数的经验,更快更高效地最下一次超参数的组合进行选择。但是BO算法也有它的缺点,如下:

  • 对于那些具有未知平滑度有噪声高维非凸函数,BO算法往往很难对其进行拟合和优化,而且通常BO算法都有很强的假设条件,而这些条件一般又很难满足。
  • 为了解决上面的缺点,有的BO算法结合了启发式算法(heuristics),但是这些方法很难做到并行化

二 多保真优化--Multi Fidelity Optimization

在自动机器学习(Automatic Machine Learning, AutoML)任务中评价往往通过 k 折交叉验证获得,在大数据集的机器学习任务上,获得一个评价的时间代价巨大。这也影响了优化算法在自动机器学习问题上的效果。所以一些减少评价代价的方法被提出来,其中多保真度优化(Multi-Fidelity Optimization)[1]就是其中的一种。而多臂老虎机算法(Multi-armed Bandit Algorithm, MBA)是多保真度算法的一种。在此基础上,有两种主流的bandit-based优化策略:

在贝叶斯方法中,目标函数的估计非常昂贵。 有没有更便宜的方法来估计目标函数? 多保真优化方法就是答案。 我会告诉你:

  1. Successive Halving (SH) 连续减半
  2. Hyperband (HB)
  3. BOHB

1. SuccessiveHalving算法

SuccessiveHalving算法:假设有nn组超参数组合,然后对这nn组超参数均匀地分配预算并进行验证评估,根据验证结果淘汰一半表现差的超参数组,然后重复迭代上述过程直到找到最终的一个最优超参数组合。

连续减半试图为最有前途的方法提供最多的预算。 它假设所有配置都可以提前停止并且可以获得验证分数。

想象一下,您有 N 个不同的配置和 B个预算(例如时间)。 在每次迭代中,如下图所示,连续减半保留了最好的一半配置,并丢弃了一半不好的算法。 它将一直持续到我们只有一个配置。 此方法将在达到其预算的最大值时完成。

连续减半最初是在 Non-stochastic Best Arm Identification and Hyperparameter Optimization 由 Kevin Jamieson 和 Ameet Talwalkar 撰写的

在连续减半策略中, 我们将评价代价参数化为一个变量budget,即预算。根据BOHB论文的阐述,我们可以根据不同的场景定义不同的budget,举例如下:

  1. 迭代算法的迭代数(如:神经网络的epoch、随机森林,GBDT的树的个数)

  2. 机器学习算法所使用的样本数

  3. 贝叶斯神经网络中MCMC链的长度

  4. 深度强化学习中的尝试数

举例说明,我们定义budgetmax=1, budgetmin=18, η=2 (eta = 2) 。在这里budget的语义表示使用100×budget%的样本。

  1. 首先我们从配置空间(或称为超参空间)随机采样8个配置,实例化为8个机器学习模型。

  2. 然后用1/8的训练样本训练这8个模型并在验证集得到相应的损失值。

  3. 保留这8个模型中loss最低的前4个模型,其余的舍弃。

  4. 依次类推,最后仅保留一个模型,并且其budget=1(可以用全部的样本进行训练)

2. Hyperband算法

连续减半有什么问题?

在连续减半中,我们需要在开始时选择多少配置和需要多少削减之间进行权衡。

1.Hyperband是什么

Hyperband 是随机搜索的一种变体,但使用一些 探索-利用 理论来为每种配置找到最佳时间分配。 您可以查看此 研究论文 以获取更多参考。

在介绍Hyperband之前我们需要理解怎样的超参数优化算法才算是好的算法,如果说只是为了找到最优的超参数组合而不考虑其他的因素,那么我们那可以用穷举法,把所有超参数组合都尝试一遍,这样肯定能找到最优的。但是我们都知道这样肯定不行,因为我们还需要考虑时间,计算资源等因素。而这些因素我们可以称为Budget,用

[机器学习] 超参数优化算法-SuccessiveHalving, BH与BOHB相关推荐

  1. [机器学习]超参数优化算法-SuccessiveHalving与Hyperband

    一 传统优化算法 机器学习中模型性能的好坏往往与超参数(如batch size,filter size等)有密切的关系.最开始为了找到一个好的超参数,通常都是靠人工试错的方式找到"最优&qu ...

  2. Python 机器学习 | 超参数优化 黑盒(Black-Box)非凸优化技术实践

    文章目录 一.关键原理 二.Python 实践 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一.关键原理 为什么要做超参数优化? 机器学习建模预测时,超参数是用 ...

  3. [机器学习] 超参数优化介绍

    很多算法工程师戏谑自己是调参工程师,因为他们需要在繁杂的算法参数中找到最优的组合,往往在调参的过程中痛苦而漫长的度过一天.如果有一种方式可以帮助工程师找到最优的参数组合,那一定大有裨益,贝叶斯超参优化 ...

  4. [机器学习]超参数优化---贝叶斯优化(Bayesian Optimization) 理解

    背景 很多算法工程师戏谑自己是调参工程师,因为他们需要在繁杂的算法参数中找到最优的组合,往往在调参的过程中痛苦而漫长的度过一天.如果有一种方式可以帮助工程师找到最优的参数组合,那一定大有裨益,贝叶斯超 ...

  5. tensorflow官方Blog-使用Keras Tuner超参数优化框架 进行超参数调整 ,具体实现版本

    文章目录 进入正题,keras tuner超参数优化框架 模型构建def build_model(hp): 实例化tuner 加载数据集,进行超参数搜索tuner.search() 找到最佳的模型tu ...

  6. 超参数优化 贝叶斯优化框架_10个超参数优化框架

    超参数优化 贝叶斯优化框架 Tune your Machine Learning models with open-source optimization libraries 使用开源优化库调整机器学 ...

  7. 【机器学习】算法模型自动超参数优化方法

    什么是超参数? 学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,我们称为参数(Parameter).还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,我们称为超参数(Hyper ...

  8. 全网最全:机器学习算法模型自动超参数优化方法汇总

    什么是超参数? 学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,我们称为参数(Parameter).还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,我们称为超参数(Hyper ...

  9. 机器学习模型的超参数优化 | 原力计划

    作者 | deephub 责编 | 王晓曼 出品 | CSDN博客 头图 | CSDN付费下载自东方IC 引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模 ...

最新文章

  1. C语言基础知识【常量】
  2. Eclipse中用户库的使用
  3. JAVA程序员面试32问(答案)
  4. ios UIPickerView 技巧集锦
  5. Qt工作笔记-主界面传输数据到附属界面(通过信号与槽非构造函数)
  6. npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布
  7. atomic原子类实现机制_反射机制实现两个类的复制
  8. mysql 刚安装完的用户_mysql 离线安装后用户初始化
  9. 通过angularjs的directive以及service来实现的列表页加载排序分页
  10. JavaWeb面试题1
  11. 三阶科赫雪花PYTHON
  12. Java发送短信验证码
  13. qt在表格中如何画线_Qt如何在表格中显示和编辑数据
  14. PHP编写modbus,php – CRC-CCITT转CRC16 Modbus实现
  15. 元宇宙持续火爆,这些问题值得思考和警惕!
  16. 异常图标导致转码失败
  17. 幻核关停,腾讯折戟数藏
  18. Vivado使用技巧(22):综合策略与设置的选择
  19. jsp文件的上传与下载
  20. CUMT2022密码学考试

热门文章

  1. POJ 2983 浅谈差分约束系统处理严格等价性问题
  2. js的classList
  3. android ratingbar 高度,简单实用的自定义AndroidRatingBar
  4. 一个简单易用的RatingBar
  5. 宏LONG_MAX和LLONG_MAX
  6. 通过tfidf求文本的关键字
  7. javascript 两个对象深度合并
  8. 【PP系列】SAP 取消报工后修改日期
  9. 消息队列MQ新增3把武器
  10. APP调用第三方(微信)登录(最详细的实现流程)