首页 > 编程语言 >超参优化算法——BO-GP

超参优化算法——BO-GP

时间:2023-09-08 11:32:40浏览次数:33  
标签:TPE GP BO 超参 算法 搜索 优化

超参优化算法

 

华为网络AI平台(NAIE)官方帐号

特性汇总

NAIE SDK包内置了多种参数优化算法, 适用于多种超参优化场景.

优化算法

收敛快

探索强

维度高

迭代多

极值多

离散值多

连续值多

Random Search (随机搜索)

---

---

---

---

---

---

---

Grid Search (网格搜索)

---

---

---

---

---

---

---

BO-GP (高斯过程)








BO-SMAC (SMAC)








BO-TPE (TPE)








算法简介

内置的算法主要包括两大类: 简单搜索方法基于模型的序贯优化方法.

简单搜索方法
简单搜索方法指的是一些通用的, 朴素的搜索策略. 当前内置的这类方法主要包括: 随机搜索网格搜索.

优化算法

算法简介

使用场景

Random Search (随机搜索)

随机搜索指的是每次随机生成一个样本.

随机搜索尽管思路简单, 但往往能在超参优化问题中取得令人意想不到的效果. 因此, 往往被当作基准使用.

Grid Search (网格搜索)

网格搜索指的是遍历用户配置中的所有样本.

网格搜索效率较低, 往往适用于在用户指定的配置空间进行精调.

基于模型的序贯优化方法
基于模型的序贯优化方法(SMBO, Sequential Model-Based Optimization)是一种贝叶斯优化的范式.
该范式主要可以分为两个部分: 代理模型(surrogate model) 和 采集函数(acquisition function).
代理模型用于对历史样本点的均值和方差进行拟合.
采集函数利用获得的均值和方差提出新的样本点.

超参优化算法——BO-GP_简单搜索

SMBO范式具体可参考论文.
当前内置的这类方法主要包括: BO-GPBO-SMACBO-TPE.

优化算法

算法简介

使用场景

BO-GP (高斯过程)

GP是SMBO范式下最经典的贝叶斯超参优化算法, 其采用的代理模型是高斯过程模型(GP, Gaussian Process).

BO-GP收敛性能好, 适合于资源受限的超参搜索场景(如:亟需寻找一个局部最优点), 但迭代次数较多时其性能会下降.

BO-SMAC (SMAC)

SMAC(Sequential Model-Based Optimization forGeneral Algorithm Configuration)隶属于SMBO范式, 其代理模型为随机森林(RF, Random Forest).

BO-SMAC具有优异的超参探索能力, 可以使用于各种超参优化场景, 尤其擅长处理大量离散型的超参.

BO-TPE (TPE)

TPE(Tree-structured Parzen Estimator)亦隶属于SMBO范式, 其代理模型为基于核密度估计模型(KDE, Kernel Density Estimation)混合模型.

BO-TPE可以使用于各种超参优化场景中, 其探索能力优异, 通常都能取得较好的效果.

SDK使用

使用示例

import json

from sklearn.metrics import accuracy_score
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

from naie.context import Context


## Step 1. 定义需要被优化的主函数
def main():
    iris = datasets.load_iris()
    X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target)
    n_estimators = Context.get("n_estimators")
    min_samples_split = Context.get("min_samples_split")
    max_features = Context.get("max_features")
    clf = RandomForestClassifier(
                                 n_estimators=int(n_estimators),
                                 min_samples_split=int(min_samples_split),
                                 max_features=max(min(float(max_features), 0.999), 1e-3),
                                 random_state=2
    )
    clf.fit(X_train, y_train)
    accuracy = accuracy_score(y_test, clf.predict(X_test))
    return accuracy


## Step 2. 定义超参空间
config = {
  "trial_iter": 10,
  "method": "bo-gp",
  "goal": "max",
  "domain_spaces": {
    "my_model": {
      "hyper_parameters": [
        {
          "name": "n_estimators",
          "range": [
            10,
            500
          ],
          "type": "INT",
          "slice": 1
        },
        {
          "name": "max_features",
          "range": [
            0.01,
            1.0
          ],
          "type": "FLOAT",
          "slice": 1
        },
        {
          "name": "min_samples_split",
          "range": [
            2,
            25
          ],
          "type": "int",
          "slice": 2
        }
      ]
    }
  },
  "async_optimization": True
}


## Step 3. 运行超参优化
from naie.model_selection import HyperparameterOptimization

optimizer = HyperparameterOptimization(main, configuration=config)
optimizer.

标签:TPE,GP,BO,超参,算法,搜索,优化
From: https://blog.51cto.com/u_11908275/7408095

相关文章

  • springboot实现 伪微信登录
    众所周知,微信扫码登陆的功能,个人网站是无法申请的,我们想在本地测一下微信登录也是无法实现。要实现微信登录,首先你得是一个企业单位,有公章才能申请,申请还要花费300块大洋。如果我们只是想学习和体验一下微信登录,可以自己本地搭建个微型服务模拟一下,过一把瘾也是可以的。如果你是企......
  • 详谈SpringBoot启动项目后执行自定义方法的方式
    在main启动函数中调用这个是在所有启动后执行,也是常用之一。@SpringBootApplicationpublicclassListenerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ListenerApplication.class,args);System.out.println("启动成......
  • 【前端】CSS-flexbox弹性盒模型布局
    目录一、前言二、flexbox简介三、属性1、容器属性2、容器成员属性四、容器属性的作用1、flex-direction①、定义②、语句1)、属性值③、代码示例1)、flex-direction:row2)、flex-direction:row-reverse3)、flex-direction:column4)、flex-direction:column-reverse2、flex-wrap①、......
  • JavaScript—BOM
    BOM是什么?BrowserObjectModel是浏览器对象模型官方:浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构,BOM由多个对象构成,其中代表浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象人话:用来获取或设置浏览器的相关的属性、行为,例如:新建窗口......
  • springboot - idea - active: @profileActive@ 有时候 不识别 @ 导致启动失败
    1.背景有时候正常,有时候不行,特别是maven执行了clean命令后 2.解决右键执行一下这个即可 ......
  • macOS Ventura 13.5.2 (22G91) Boot ISO 原版可引导镜像下载 (修复零日漏洞)
    macOSVentura13.5.2(22G91)BootISO原版可引导镜像下载(修复零日漏洞)2023年9月7日(北京时间8日凌晨)macOSVentura13.5.2(22G91)发布,此次为安全更新,主要修复了零日漏洞CVE-2023-41064CVE-2023-41061。这些漏洞修复的更新也包含在同日发布的iOS16.6.1、iPadOS......
  • yolov8 macbook 快速使用食用
    YOLOv8onmacm1/classes.txtpersonbicyclecarmotorbikeairplanebustraintruckboattrafficlightfirehydrantstopsignparkingmeterbenchbirdcatdoghorsesheepcowelephantbearzebragiraffebackpackumbrellahandbagtiesuitcasefrisbeeskis......
  • 【API Management】使用 APIM Inbound Policy 来修改Content-Type Header的值
    问题描述在使用APIM提供API服务管理的场景中,遇见了客户端请求时候发送的请求Header中的Content-Type不满足后台服务器的要求,但是在客户端要求客户修改代码难度较高。所以面对这样的情况,是否在APIM端修改为对请求的Content-Type进行覆写呢?问题解答可以的。APIM支持通过设置策略(Poli......
  • springboot策略模式
    一.定义接口publicinterfacePearlTaskService{IntegergetTaskType();Map<String,Integer>execute(LonguserId,GameTaskgameTask,StringgameCode);}二.定义抽象类@Slf4jpublicabstractclassPearlTaskStrategyimplementsPearlTaskService{protec......
  • 记录下常用的boxShadow样式
    预览图代码1.box-shadow#0csscode====>box-shadow:rgba(149,157,165,0.2)0px8px24px;2.box-shadow#1csscode====>box-shadow:rgba(100,100,111,0.2)0px7px29px0px;3.box-shadow#2csscode====>box-shadow:rgba(0,0,0,0.15)1.95......