AutoML是未来么?
未来,AutoML能代替调参么?
最近是高考志愿填报的时间段,计算机特别是人工智能又是非常热门的填报方向。很多人担心后面5到10年,调参侠会因为AutoML的发展而丢掉工作。这里说一下我的观点,目前的AutoML不是什么大机会,但是算法API化是趋势。
什么是AutoML,只要是有任何自动化机器学习的过程都可以称为AutoML,那AutoML其实可以在自动提取特征,选择模型,设定参数等机器学习过程中发挥作用。
很多人用过xgboost的grid search 和 randomized search,但是不会认为这是一个神奇的东西,可能都不认为是AutoML。AutoML炒作最严重的部分其实是NAS的效果。但是现在的AutoML角色是有点尴尬的,浪费算力,但是承诺的效果达不到,所以在未来5-10年代替算法工程师是不可能的。
我觉得现在可以看到的趋势是用AutoML来锦上添花,当算法工程师的助手。比如,当我的网络已经训练完了,很多优化都做了,才去考虑用AutoML针对网络微调 ,对效果进行细微的提升。
AutoML常见的一些领域:
-
超参数选择
-
建模pipeline组合
-
NAS
超参数选择
超参数选择一般用于结构化数据,非深度学习模型,像XGBoost可以用到的超参数搜索有
-
Grid search
-
Random Search
-
Bayesian Search
但是其实我们任何一个都可以不用,最好的方法就是随机选。
如果自己来调的话,我们会区分重要非重要的变量,区分互相影响的变量,AutoML主要的问题是很多重要的参数选不全,不重要的参数选了没什么用。可以把重要的变量选出来,如果很多的话,可以用Grid Search来选择。
如果是深度学习模型,不需要做超参数选择,训练过程中参数的选择是动态的,比如学习率的选择。
**基于经验的建模pipeline组合 **
这种pipeline组合,常见于各大机器学习平台,比如:AutoML tabular。这种很多都是表格化的数据,模型也不是深度学习模型,这种都是固定套路了。
下图为google cloud 的 automl tables

**NAS **
NAS,即网络结构搜索,用来设计神经网络。其实通用的网络,好用的网络,改网络架构没什么用。NAS因为搜索空间大的问题,计算效率非常有问题,而且效果的提升有限。这种效果的提升,还不如去做数据扩充来得好。
NAS的常见子问题:
-
search space
-
search strategy
-
performance estimation startegy
搜索空间的问题,很多都是组件,不同粒度的问题,常常是从成熟的框架开始,搜索cell,不能搜索整个模块,不然搜索空间太大。
NAS是组合优化问题,求解组合优化,最常见的是遗传算法和强化学习。最关键问题是怎么把NAS变成组合优化问题。现在的效果来讲,遗传算法比强化学习更好,增强学习不稳定风险高,遗传算法只是变异,好控制,完全随机所以效果不可能有很大提升。
RENAS是遗传算法和强化学习的结合,可以去适当了解一下。Gumbel-max-trick 把ENAS问题变成一个连续可微的问题,是一个比较好的进展。
performance estimation startegy常用方法:
-
low fidelity estimates
-
learning curve extrapolation
-
network morphism
-
one-hot search
未来五到10年,AutoML应该可以当算法工程师的助手,协助网络架构的设计,避免一些坑,但是做到完全替代肯定是不行的,在被替代方面应该是不用担心。但是看到GPT3的发展,让我担心后面会变成无模型可训练,比AutoML更严重的模型API化的状态。
资源列表
-
Searching for Activation Functions
https://arxiv.org/abs/1710.05941
-
Learning Transferable Architectures for Scalable Image Recognition
https://arxiv.org/abs/1707.07012
-
The Evolved Transformer
https://arxiv.org/abs/1901.11117
- RENAS
-
Searching for A Robust Neural Architecture in Four GPU Hours
https://arxiv.org/abs/1910.04465
- hyperopt