automl中如何提升搜索效率

2023-05-16

前言

automl, 简单来说,就是将机器学习应用于现实问题的端到端流程自动化的过程,其产生的主要原因就是因为机器学习的应用需要大量的人工干预,这些人工干预表现在:特征分析、模型选择、参数调节等机器学习的各个方面。AutoML视图将这些与特征、模型、优化、评价有关的重要步骤进行自动化地学习,使得机器学习模型无需人工干预即可被应用。
参考paper:
Automated Machine Learning Methods, Systems, Challenges.pdf

换言之,不管是HPO,还是NAS,我们可以简单的将问题抽象成如下示意图:
在这里插入图片描述

  • 首先构建好搜索空间,这个搜索空间可以是一个算法的超参数组合,可以是各种数据预处理方法的列表,可以是nas中各种cell的排列情况
  • 基于上面我们构建好了海量的候选人之后,我们需要用到一个搜索模块,用于在海量候选人中搜索到最优(相对最优)的候选人

那automl中如何构建这个搜索模块,就将直接影响到整个框架的搜索效率。所以下面简单的介绍一些常见的提升automl搜索效率的几种方式。

一、高效的搜索算法

网格搜索 ×
随机搜索 ×
贝叶斯搜索 √
进化搜索 √

那主流的调参框架optuna就使用的是贝叶斯搜索算法,而hypergbm使用的是进化搜索算法
贝叶斯参考: 点击跳转
进化搜索参考:点击跳转

二、引入元学习器

  • auto-sklearn 基于元学习选择若干个配置来用于优化贝叶斯搜索, 称之为热启动优化方法
  • hypergbm 通过引入元学习器进一步提升进化搜索算法效率。称之为学习搜索方向

auto-sklearn元学习器参考: 点击跳转
hypergbm元学习器参考参考:点击跳转

三、引入搜索判别器

在optuna中这个概念被叫做剪枝操作,就是在搜索过程中,将一些明显训练完成后性能也很差的trial提前停止训练,从而节省搜索时间,而在hypergbm中被叫做判别器,即判断当前trial是否有必要进行训练下去。这里以hypergbm中常用的两种判别器进行举例。在这里插入图片描述

如上图所示,我们使用hypergbm在某一数据集上搜索10次trials,那对于准确度最低的3个trials我们希望找到一种方式,可以提前预估出该参数组合的最终性能,然后可以提前停止掉这些trials, 因为明显目前的最优性能已经逼近了1,但是对于那些训练完成性能也只能徘徊在0.8附近的trials我们没有理由让它一直训练。

方式一: PercentileDiscriminator

顾名思义,就是判断当前trial的中间训练结果和历史trials的训练结果的一个百分位比作为判断标准(默认50%),即,如果当前trials在iteration=10的时候的性能在历史记录 iteration=10的性能集合中,排不上前50%,那我们就无需等该trial全部训练完成即可停止训练。

在这里插入图片描述
如上图所示,蓝色线trials表示的是基准trilas,即我们需要有一定的观测样本我们才可以进行准确的判别,而红色线trials表示可以被提前终止的trials。具体伪代码如下:

  1. 搜索,直到trials数超过5,并将最开始的5个trials作为历史参考样本集合
  2. 计算历史参考集合的50百分位的性能(eg:在iteration=10的时候开始计算),我们称之为判别阈值
  3. 如果当前trial在iteration=10时的性能低于判别阈值,即立即停止当前trial的训练。反之,更新到历史参考样本集合中去
  4. 重复2,3步骤,直到搜索结束

但是该方法极具攻击性,容易停止一些很有潜力trial。比如因为学习率的不同,那么学习曲线的涨势是大不相同的,那么在iteration=10的时候表现不行的trial在iteration=300的时候可能达到历史最优性能,而该trial已经被停止了。通常建议当学习率相同的情况下,采用该方法。

方式二: OncePercentileDiscriminator

当任务的学习曲线比较混乱,走势差异较大的时候,建议使用OncePercentileDiscriminator的判别方式。一般来说学习率曲线一般是先急后缓的这种走势,在训练至一半的时候大概就可以推断出最终性能情况,那么我们可以修改上面的判别逻辑为<当前trial训练到一半的时候的性能是否能够超过历史50百分位的性能>,也就是我们只在最有把握的时候判别一次就可以,从绝对位置的判断变成相对位置的判断。这样可以极大的保留住所有优秀的模型,代价就是整体耗时会增加。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

automl中如何提升搜索效率 的相关文章

  • 新手向:前端程序员必学基本技能——调试JS代码

    1前言 大家好 xff0c 我是若川 最近组织了源码共读活动 xff0c 感兴趣的可以加我微信 ruochuan12 参与 xff0c 已进行三个月了 xff0c 大家一起交流学习 xff0c 共同进步 想学源码 xff0c 极力推荐之前我
  • 全新的 Vue3 状态管理工具:Pinia

    大家好 xff0c 我是若川 最近组织了源码共读活动 xff0c 感兴趣的可以点此加我微信 ruochuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列 包含
  • 推荐2022前端必看的新书 《Vue.js设计与实现》

    大家好 xff0c 我是若川 持续组织了6个月源码共读活动 xff0c 感兴趣的可以点此加我微信 ruochuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列

随机推荐

  • 面试官问:跨域请求如何携带cookie?

    大家好 xff0c 我是若 川 持续组织了6个月源码共读活动 xff0c 感兴趣的可以点此加我微信 ruochuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整体架构系
  • 如何写好技术文章(看张鑫旭老师的直播总结

    大家好 xff0c 我是若川 持续组织了6个月源码共读活动 xff0c 感兴趣的可以点此加我微信 ruochuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列
  • Element使用的async-validator表单校验库源码超详细解析

    大家好 xff0c 我是若川 持续组织了8个月源码共读活动 xff0c 感兴趣的可以 点此加我微信ruochuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列
  • 我捡到宝了!2022版前端面试上岸手册,最新最细致!

    大裁员背景下 xff0c 没什么比辞职后找不到工作更扎心 xff01 在行情好转前 xff0c 前端程序员只能 猥琐发育 xff0c 不轻易跳槽 xff0c 同时要修炼内功 xff1a 对八股文 底层源码 重点项目等进行查缺补漏 xff0c
  • 点击页面元素跳转IDE对应代码,试试这几个工具!

    大家好 xff0c 我是若川 我持续组织了近一年的源码共读活动 xff0c 感兴趣的可以 点此扫码加我微信 ruochuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整
  • 为什么说组件库的源码非常值得学习?

    大家好 xff0c 我是若川 最近来了一些新朋友 xff0c 感谢大家关注 相比于原生 JS 等源码 我们或许更应该学习正在使用的组件库的源码 xff08 如 xff1a element antd vant semi arco tdesig
  • 写一个Vue DevTools,让开发体验飞一会

    大家好 xff0c 我是若川 我持续组织了近一年的源码共读活动 xff0c 感兴趣的可以 点此扫码加我微信 lxchuan12 参与 xff0c 每周大家一起学习200行左右的源码 xff0c 共同进步 同时极力推荐订阅我写的 学习源码整体
  • 偷偷盘点前端面试官才知道的进阶秘籍

    很多人都说35岁是程序员的职业尽头 而我们部门leader是位80年的大哥 xff0c 曾经是字节3 1大佬 xff0c 今年43岁了依然独当一面 于是 xff0c 我向他请教了 不被淘汰 的秘籍 他总结了两点 xff1a 1 努力修炼内功
  • Facebook CrypTen安全多方计算(MPC)框架介绍及核心代码分析

    简单介绍 CrypTen是Facebook在2019年10月开源的 用于多方安全计算 MPC 的框架 其底层依赖于深度学习框架PyTorch 官网说明见 xff1a https ai facebook com blog crypten a
  • 开源软件Asterisk:386变身交换机

    有关开源软件最令人激动的事情之一就是其创建超越传统的IT基础架构的应用程序的方式 一个恰当的例子是称作 Asterisk 的电话应用程序 Asterisk是一种功能非常齐全的应用程序 xff0c 提供了许多电信功能 也许它最著名的应用是当作
  • 2016.9---2017.1半年总,外派工作的感觉真爽 (补17年1月)

    16年8月份 xff0c 第二版订餐系统上线 xff0c 我就着手出去上班 xff0c 8月初提交简历后 xff0c 面试就一发不可收 xff0c 一直到12月初才出去 xff0c 历时四个月 xff0c 期间边学习边面试 xff0c 但这
  • gerrit - first commit

    最近公司有新项目 xff0c 已经让领导帮我把clone和push的权限都开通了 xff0c 但是在push的时候还是提交失败 xff0c 错误信息如下 xff1a git push origin master Counting objec
  • AutoML领域的一把利器---HyperGBM

    AutoML领域的一把利器 HyperGBM 文章目录 AutoML领域的一把利器 HyperGBM 前言一 何为AutoML xff1f 二 如何使用HyperGBM1 引入库2 读入数据3 初始化make experiment4 调用m
  • AutoML工具之HyperGBM介绍

    HyperGBM介绍 本文章主要是对autoML开源框架HyperGBM的一个介绍 文章目录 HyperGBM介绍一 关于HyperGBM二 功能特性总览二 如何安装HyperGBM三 HyperGBM入门样例1 准备数据集2 创建实验并进
  • HyperGBM如何定义autoML的搜索空间

    HyperGBM学习笔记之如何定义autoML搜索空间 文章目录 HyperGBM学习笔记之如何定义autoML搜索空间前言一 入门篇1 定义需求2 需求解析 二 进阶篇1 定义参数的搜索范围2 构建autoML伪代码3 HyperGBM定
  • HyperGBM之进化搜索算法

    HyperGBM学习笔记之进化搜索算法 文章目录 HyperGBM学习笔记之进化搜索算法一 什么是进化搜索算法 xff1f 二 HyperGBM中的变异算法实现1 构建进化搜索实例2 变异算法实现3 进化搜索算法整体流程 三 HyperGB
  • 机器学习之如何处理缺失值(missing value)

    机器学习之如何处理缺失值 备注 xff1a 本次数据来源于kaggle xff0c 详情请戳here xff0c 原文参考连接 xff0c 请戳here xff0c 本文篇幅较长 xff0c 旨在多介绍EDA过程中的一些思想和细节 文章目录
  • 机器学习中的早停策略

    前言 在做机器学习模型调优的时候 xff0c 往往会通过一系列的操作去提升调优效率 xff0c 其中有一种技术就是合理运用早停策略 关于数据集 xff1a 本文直接使用kaggle的数据集 xff0c 你可以直接点击链接下载 一 入门 1
  • 机器学习中如何处理非数值型的特征

    前言 传统的机器算法一般处理的是结构化数据 xff0c 而结构化数据中往往包含以下几种类别 xff1a 传统的机器学习算法 SVM xff0c LR xff0c lightgbm xff0c xgboost等 结构化数据类别 Categor
  • automl中如何提升搜索效率

    前言 automl 简单来说 xff0c 就是将机器学习应用于现实问题的端到端流程自动化的过程 xff0c 其产生的主要原因就是因为机器学习的应用需要大量的人工干预 xff0c 这些人工干预表现在 xff1a 特征分析 模型选择 参数调节等