SMBO(SequentialModel-Based GlobalOptimization)

序贯模型优化(Sequential model-based optimization,SMBO),是最有效的函数优化方法之一。与共轭梯度下降法等标准优化策略相比,SMBO的优势有:利用平滑性而无需计算梯度;可处理实数、离散值、条件变量等;可处理大量(成百上千)变量并行优化。

贝叶斯优化是参数优化的自适应方法,在探索参数空间的新区域之间进行权衡,并利用历史信息来找到快速最大化函数的参数。像随机搜索一样,贝叶斯优化是随机的。

贝叶斯优化属于一类称为基于顺序模型的优化(SMBO)算法的优化算法。这些算法使用先前评估的参数和结果来假设未观察到的参数,采集功能使用此信息建议下一组参数。

 

SMBO在AutoML的应用:

SMBO全称SequentialModel-Based GlobalOptimization,是AutoML中一种搜寻最优超参的方法,用一句话概括就是:在有限的迭代轮数内,按照损失函数的期望值最小同时方差最大的方式选择参数。直观点理解,就是选择loss小,并且最有可能更小的地方进行探索,寻找更优超参。

如下图,横轴为超参x,纵轴为超参的返回值即loss。红色实线是真实loss,蓝色圆圈是几个测试的点,蓝色虚线和灰色区域是根据蓝色圆圈拟合的均值和置信区间(2个标准差是95%的置信区间),EI即SMBO的评估方程。

可以看到,第一轮有个很明显的凸起高峰,这个高峰即第一轮的结果,拿着这个x' 重新计算 loss,就可以得到 (b) 里新的蓝圈,进入下一轮。在第二轮中,重新计算EI,发现有两个高峰,左边峰值

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenBox 是一个基于 Python 的黑盒优化库,它可以优化各种类型的函数,包括连续、离散和混合类型的函数。使用 OpenBox 可以自动调整模型参数,从而提高模型的性能。 以下是使用 OpenBox 进行优化的基本步骤: 1. 定义优化问题的目标函数。 2. 指定优化问题的搜索空间和约束条件。 3. 配置优化算法的参数。 4. 运行优化算法,获得最优解。 例如,如果你想使用 OpenBox 对一个连续的函数进行优化,可以按照以下步骤操作: 1. 定义目标函数。例如,我们想最小化函数 f(x) = x^2 + 2x。 ```python def f(x): return x ** 2 + 2 * x ``` 2. 指定搜索空间和约束条件。例如,我们希望 x 的取值范围在 [-5, 5] 之间。 ```python from openbox.utils.config_space import ConfigurationSpace from openbox.utils.constants import MAXINT cs = ConfigurationSpace() x = cs.add_hyperparameter(cs.FloatHyperparameter("x", -5, 5)) ``` 3. 配置优化算法的参数。例如,我们使用随机搜索算法进行优化,最大迭代次数为 100。 ```python from openbox.optimizer.generic_smbo import SMBO bo = SMBO(f, cs, max_runs=100, time_limit_per_trial=180, logging_dir='openbox_logs') ``` 4. 运行优化算法,获得最优解。 ```python inc_value, inc_config = bo.run() print("最小值为 %f,对应的参数配置为 %s" % (inc_value, inc_config)) ``` 需要注意的是,OpenBox 可以处理多维参数空间和多个目标函数,具体使用方法可以参考官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值