Press "Enter" to skip to content

概述自动机器学习(AutoML)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

华为年薪百万招聘的机器学习博士,其中一个的研究方向就是AutoML,今天借着最新的综述,来对AutoML进行简要的概述。

 

 

机器学习是让算法自动的从数据中找出一组规则,从而提取数据中对分类/聚类/决策有帮助的特征,随着机器学习的发展,其中人工需要干预的部分越来越多,而AutoML则是对机器学习模型从构建到应用的全过程自动化,最终得出端对端的模型(end to end)。有了AutoML,机器学习就会从下图的曲折变为上图的一马平川。

 

 

从流程先后顺序来分,最初是数据准备,包括数据收集和清洗,之后是特征工程,其中包括特征选择(决定哪些特征需要保留),特征提取(对特征进行降维,常用的方法例如PCA),特征组合(将多个特征合并/构建为一个新的特征);在之后的模型构建中,最关键的是模型选择,之后超参数优化,可以采取很多方式,最简单的做法是网格搜索,常用的方法包括用强化学习,进化算法,贝叶斯优化,以及梯度下降,来缩小搜索空间;最后,AutoML通过引入提前停止,降低模型的精度,参数共享来自动化模型评价的过程。

 

 

数据收集这项任务,不在是搜索与收集真实数据,还包括产生模拟数据,用来扩展训练数据集,可以使用的新技术包括对抗神经网络(点击查看对应文章),还可以使用强化学习的框架,来优化用于控制生成数据的参数,从而使得生成的数据能更有效的助力模型的训练。而数据清洗则是自动完成包括缺失值补全,离群点处理,特征归一化,类别型特征的不同编码等之前手动完成的工作。

 

模型的自动化选择,传统的方法是从传统的模型,例如KNN,SVM,决策树中选出一个,或多个组合起来效果最好的模型,而当前AutoML的研究热点是N eural Architecture Search, 也就是不经过人工干预,模型自动生成一个对当前任务最有效的网络结构,如下图所示,图中的每一个圆圈,代表一个操作,例如卷积,池化,批量正则化等,模型自动在自我生产的不同结构下搜索最好的操作组合序列。

 

 

搜索的结果如下图所示:

 

 

其中应用到强化学习的部分如下图所示:

 

 

这里的行为是以一定的概率选择某个网络结构,行为是在该结构下,训练子网络,使其在训练集上达到预设的准确率,奖励是该子网络在测试数据集上的准确率与该网络被选择的概率的乘积,通过将子模型的泛化能力作为反馈,用于控制不同模型被选择概率的RNN得以优化其梯度,以选出泛化能力最强的模型,同时通过始终保持一定概率选择其他模型,处理explore VS exploit的权衡。

 

NAS算法作为当前AutoML最热的研究领域,有很多变种,下图展示了在CIFAR1000上,不同NAS方法的效果及训练用时。相比于强化学习和进化算法,传统方法的用时更少。

 

 

为了找到合适的网络架构,除了传统的串行网络,还有基于cell来做层级化网络架构搜索的。下图展示的是先从几个最基本的操作,搜索得出一个一级的网络组件,之后在自动化的搜索如何用一级组件搭建网络。

 

 

模型选定后的调参过程,最常用的是网格搜索,也就是按照固定的间距,在搜索空间上打点,但下图指出,网格搜索不一定好过随机搜索,原因是对于重要参数,网格搜索采样的点会不足,从而导致无法取到对模型效果相对较好的点,autoML会使用随机抽样,首先评价各个超参数的重要性,之后再对重要的参数进行微调。

 

 

另一种超参数搜索的策略是进化算法,从初始随机产生的参数,经过杂交(将俩组参数的前后部分组合),并对其加上随机噪音,形成子代的超参数,在依据模型在改组超参数上的训练结果作为反馈,选出其中效果较好的超参数,

 

 

最后举一个AutoML的例子,用一个函数搞定整个机器学习流程,使用的是H2O这个常用的AutoML包,任务是对fashionMinst这个数据集进行分类

 

 

运行完成后,函数会返回所尝试各模型的准确度,以及每个模型的最佳参数,由于模型尝试的深度学习是全连接网络,因此效果不好,如果使用CNN,可以将模型的准确度提升到0.92

 

 

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注