AutoML自动超参调优

现在AutoML非常的火,各大云平台都在推出自己的AutoML服务,包括Google Cloud,Amazon SageMaker,MS Azure等等。AutoML要解决的问题主要是释放机器学习过程中的人力投入,包括:

  • 数据预处理
  • 特征提取
  • 模型选择/模型构建
  • 模型超参优化
  • 结果的评估

本文主要关注的是模型超参优化的自动化。

调参系统架构

AutoML自动调参又可以称作黑箱超参优化(Blackbox hyperparameter optimization)。比较常见的做法是将调参系统和训练系统分离开,模型、数据和训练过程由用户来控制,调参系统给训练系统建议一组或多组参数,训练系统反馈结果,然后调参系统根据反馈结果产生下一组建议的参数。这个过程一直迭代直至满足了终止条件。


调参系统架构

调参算法

调参算法的输入是用户指定的参数及其范围,比如设定学习率范围为[0.0001, 0.01]。比较常见的算法为网格搜索,随机搜索和贝叶斯优化等。

  1. Grid search

遍历所有可能的参数组合。网格搜索很容易理解和实现,例如我们的超参数A有2种选择,超参数B有3种选择,超参数C有5种选择,那么我们所有的超参数组合就有2 * 3 * 5也就是30种,我们需要遍历这30种组合并且找到其中最优的方案,对于连续值我们还需要等间距采样。实际上这30种组合不一定取得全局最优解,而且计算量很大很容易组合爆炸,并不是一种高效的参数调优方法。

  1. Random search

限定搜索次数,随机选择参数进行实验。业界公认的Random search效果会比Grid search好,Random search其实就是随机搜索,例如前面的场景A有2种选择、B有3种、C有5种、连续值随机采样,那么每次分别在A、B、C中随机取值组合成新的超参数组合来训练。虽然有随机因素,但随机搜索可能出现效果特别差、也可能出现效果特别好,在尝试次数和Grid search相同的情况下一般最值会更大

  1. Bayesian Optimization

业界的很多参数调优系统都是基于贝叶斯优化的,如Google Vizier [1], SigOpt[2].
该算法要求已经存在几个样本点(一开始可以采用随机搜索来确定几个初始点),并且通过高斯过程回归(假设超参数间符合联合高斯分布)计算前面n个点的后验概率分布,得到每一个超参数在每一个取值点的期望均值和方差,其中均值代表这个点最终的期望效果,均值越大表示模型最终指标越大,方差表示这个点的效果不确定性,方差越大表示这个点不确定是否可能取得最大值非常值得去探索。

Early Stop算法

在调参的过程中,有的参数在训练的过程中,观察曲线的趋势,会发现它是不太有希望在训练结束达成目标的,这个时候,将这些任务终止掉,释放资源,继续别的参数的尝试。这样可以快速试错,快速调整。[1]

  1. Performance Curve Stopping Rule: 对训练曲线做回归分析,对于一段曲线,预测最终能达到的准确率,如果太低,则停掉。

  2. Median Stopping Rule: 在Step s的准确率如果小于其他观测到的训练曲线在step s处的平均值,则将这次尝试停掉。

开源调参框架

我调研了Github上开源的超参调优系统,按照受关注程度排序如下:

调参框架 GitHub star 算法 语言
Hyperopt https://github.com/hyperopt/hyperopt 2358 1. Random Search 2. Tree of Parzen Estimators (TPE) 3. 设计中,未实现: Bayesian optimization Python
BayesianOptimization https://github.com/fmfn/BayesianOptimization 1687 Bayesian Optimization Python
Spearmint https://github.com/HIPS/Spearmint 1062 Bayesian Optimization Python
Advisor https://github.com/tobegit3hub/advisor 320 1. Random Search Algorithm 2. Grid Search Algorithm Baysian Optimization 3. Early Stop Python
RoBO https://github.com/automl/RoBO 230 Bayesian Optimization Python
SMAC3 https://github.com/automl/SMAC3 208 Baysian Optimization Python3
Bayesopt https://github.com/rmcantin/bayesopt 163 Bayesian Optimization Python
Autoweka https://github.com/automl/autoweka 146 Baysian Optimization Java

总结

现在的调参系统基本上都是基于贝叶斯优化的思想,将调参任务作为一个黑箱优化的问题。在后面的博客中,我会详细介绍贝叶斯超参调优的思想。

Reference

[1] Google Vizier A Service for Black-Box Optimization
[2] SigOpt: https://sigopt.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容