AutoML自动超参调优

您所在的位置:网站首页 滴滴出行的发展历史最新 AutoML自动超参调优

AutoML自动超参调优

2024-01-10 07:11| 来源: 网络整理| 查看: 265

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

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

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

调参系统架构

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

调参系统架构 调参算法

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

Grid search

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

Random search

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

Bayesian Optimization

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

Early Stop算法

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

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

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/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3