automl中如何提升搜索效率

前言

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百分位的性能>,也就是我们只在最有把握的时候判别一次就可以,从绝对位置的判断变成相对位置的判断。这样可以极大的保留住所有优秀的模型,代价就是整体耗时会增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值