前言
自动机器学习(AutomatedMachine Learning, AutoML)技术是当前机器学习领域热点研究和迅速发展的方向之一,已被证明能够在多个领域达到或超过人类专家手动调参的效果,国内外许多头部公司纷纷将AutoML技术集成到自研AI平台中,降低算法工程师调参试错成本,加速机器学习模型的构建和落地。
【全球AutoML近5年热度趋势 (来源: Google Trend)】
本次分享将介绍AutoML的定义、目标和研究领域,梳理、回顾自动化超参数调优算法和机器学习管道创建方法,并对主流AutoML开源框架进行对比分析,并结合真实案例说明AutoML的实际效果,最后探讨AutoML领域目前存在的开放性问题及未来研究方向。
一、AutoML概述
主要回答什么是AutoML、为什么需要AutoML、AutoML能帮助解决什么问题、AutoML的研究范围是什么四个方面的问题。
1.AutoML是什么
AutoML是一个将机器学习这个用于解决现实世界问题的端到端的处理过程进行自动化的过程。AutoML是自动化与机器学习的交叉。
- 机器学习角度:在给定数据和任务上学习泛化能力非常强大的系统。
- 自动化角度:设计一系列高级的控制系统去操作机器学习模型,使得模型可以自动化地学习到合适的参数和配置而无需人工干预。
在无人工干预和有限计算资源预算的约束下,学习到一组能够最大化模型性能的模型参数配置。
2.直观认识AutoML
通过Google的Cloud AutoML Vision从图像分类领域的神经网络架构搜索的角度直观认识AutoML。
【基于NAS的自动图像分类】
通过华为Model Arts从结构化数据分类/回归模型自动构建的角度直观认识AutoML。
【结构化数据分类/回归】
3.为什么需要AutoML
1)现实问题:① 构建机器学习模型环节多、流程长;② 依赖数据科学、机器学习专家知识;③ 模型难以通用;④ 专业人才数量缺乏。
2)业务需求:
① 缩短 AI 应用投产时间:降低建模所需人员规模和技能门槛,通过自动化技术将 AI 应用构建时间缩短至数天;
② 降低 AI 应用建设成本:通过标准化建模过程实现企业AI应用规模化发展,大幅削减企业拥有 AI 能力总成本;
③ 适应业务快速变化:利用高性能 AI 开发工具实现模型的快速迭代,灵活适应业务变化。
4.AutoML解决哪些问题
核心任务:无需人工干涉;更低的计算开销;输出更好泛化能力的模型。
Current:Solution= ML Expertise + Data + Computing Power → Future:Solution= Data + Computing Power * 100
5.AutoML的研究领域
1)按模型类型划分:Classical ML&NAS
Classical ML:传统机器学习模型的自动化学习,包括基础算法的选择和超参数优化以及机器学习pipeline的自动合成等。
NAS:神经网络架构搜索 (Neural Architecture Search,NAS)是一种自动设计神经网络的技术,可以通过算法根据样本集自动设计出高性能的网络结构,在某些任务上甚至可以媲美人类专家的水准,甚至发现某些人类之前未曾提出的网络结构,这可以有效的降低神经网络的使用和实现成本。
2)按机器学习pipeline不同阶段划分
3)按垂直应用场景划分
二、AutoML问题形式化
主要介绍AutoML问题形式化的几个基本定义以及AutoML框架的基本组成。
1.几个基本定义
★ 典型监督学习模型pipeline
定义1:机器学习管道(MachineLearning Pipeline)
三元组(g,A ⃗,λ ⃗)称作一个配置。对于一个Pg,A ⃗,λ ⃗,需要评估其在给定数据集上的性能以确保构建的机器学习管道(ML Pipeline)具有低的泛化误差。
定义2:管道创建(Pipeline creation Problem)
定义3:管道性能(Pipeline Performance)
注:该定义仅限于监督学习,非监督和强化学习可通过选择适当的损失函数参照以上方式进行扩展。
★ 给定机器学习任务的数据集、损失函数和具体的任务类型(如分类、回归),针对具体机器学习任务,机器学习管道的构建问题可以划分为以下三个子任务:
- 如何确定管道的结构?需要选择多少个数据清洗类、特征工程类和模型类算法?算法之间如何连接?数据如何流转?
- 每个结点选择哪个具体的算法?
- 对于每个所选的算法,如何选择其超参数?
是一个“黑盒优化”(blackbox optimization)问题。由于依赖于具体数据和任务,通常不可能预测损失函数的任何性质,甚至无法将其表达为封闭形式的表达式。
因此,无法使用凸优化或基于梯度的优化等求解方式。
2.AutoML框架基本组成
AutoML框架主要解决搜索空间、搜索策略、性能预估策略三个方面的问题。
1)搜索空间:搜索空间定义了原则上可以选择的超参数的范围。结合具体任务的先验知识可以减小搜索空间并简化搜索。但是,这也引入了人为偏见,这可能会阻止寻找超越当前SOTA效果的新颖超参数组合。
2)搜索策略:搜索策略定义了如何探索搜索空间,使用怎样的算法可以快速、准确找到最优的超参数配置。它包含了经典的探索-利用权衡(exploration-exploitationtrade-off)。因为,一方面,需要快速找到性能良好的超参数配置,另一方面,应避免过早收敛到次优区域。
3)性能预估策略:超参数优化的目标是为了找到能够在待预测的新数据上实现高预测性能的超参数配置。性能预估最简单的选择是在数据集上进行标准的模型训练和模型验证,但计算成本很高,并且限制了可以探索的超参数组合的数量。因此,最近的许多研究都集中在开发降低这些性能评估成本的方法上。
三、CASH算法回顾
首先对CASH问题进行定义,然后回顾CASH主要算法并对其进行对比,最后总结探讨CASH算法的改进方向。
1.CASH定义
Combined Algorithm Selection andHyperparameter optimization
可配置空间表达为树状结构,减少搜索空间。
超参类型:① 类别型;② 整数型;③ 实数型;④ 条件型。
2.网络搜索与随机搜索算法
★ Grid Search:将连续超参数离散化,构成的搜索空间为n个离散化的超参的笛卡尔积空间。
★ Contradicting Grid Search:首先在粗粒度网格进行搜索,然后在表现较好配置点上进行细粒度的搜索。
★ Random Search:适合于具有多个局部极小值、不可导函数的求解;较网格搜索快。
- 优点:易实现,易并行。
- 缺点:在高维空间容易遇到维度灾难;没有考虑层次超参数结构,存在冗余超参配置。
3.基于模型的序列优化算法
基于模型的序列优化方法框架,包含三个核心部分:代理模型的选择、代理模型的更新和新超参组合的选取。
1)代理模型的选择
选择使用Gaussian Process, Random Forest,or TPE等方法捕获超参数组合与模型性能之间的关系,构建概率模型,模拟模型训练的结果,对目标函数进行预估评价。
2) 代理模型的更新
迭代式地采用贝叶斯方法对代理函数进行优化,即基于新的观测更新代理模型进而增强代理模型能力,使其超参数组合的选择越来越靠谱有效。
3) 新超参组合的选取
基于获益函数(Acquisition Function)计算超参组合的优劣程度,从中挑选出k个组合进行下一轮迭代。注意探索和利用的权衡。
【序列迭代过程】
【算法流程】
4.遗传进化类算法
遗传算法是受大自然的启发,模拟生物在自然环境中的遗传和进化过程而形成的一种自适应、具有全局优化能力的随机搜索算法。
基本思路:通过从给定一个初始群体出发,利用选择算子、杂交算子以及变异算子来模拟自然进化,选择较优的一部分,逐步改进种群,一步步逼近最优解,以达到求解最优化问题的目的。
★ 应用于CASH优化:每个个体代表具有相应超参数的算法,将连续超参离散化。
删除:剔除某个超参数用默认值来代替;
插入:将某个未配置的超参数用某个值来代替;
变异:改变某个超参数的值;
交叉:选择两个个体的超参数子集进行合并。
- 优点:同一种群个体之间独立,易并行处理。
- 缺点:相比于贝叶斯优化不够高效,不太适合于算法选择,因为两个算法很难交叉。
粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的。它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作,通过追随当前搜索到的最优值来寻找全局最优。
① 在初始化范围内,对粒子群进行随机初始化,包括随机位置和速度;
② 计算每个粒子的适应值;
③ 更新粒子个体的历史最优位置;
④ 更新粒子群体的历史最优位置;
⑤ 更新粒子的速度和位置;
⑥ 若未达到终止条件,则转第2步;
【粒子群算法流程图】
每个寻优的问题解都被想像成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。所有的粒子都由一个fitness function 确定适应值以判断目前的位置好坏。每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。
5.K-摇臂赌博机学习算法
基于一个概率来对探索和利用进行权衡。每次尝试时,以ε的概率进行探索,即以均匀概率随机选择一个摇臂;以1-ε的概率进行利用,即选择当前平均奖赏最高的摇臂(如有多个,则随机选取一个)。
6.基于梯度下降的算法
梯度下降(GD)是机器学习中较长使用的损失函数优化方法,随机梯度下降和批量梯度下降是两种迭代求解思路。
7.CASH算法的改进方向
从多保真近似、早停、集成学习、元学习、水平扩展性几个角度总结CASH算法的改进方向。
8.CASH算法对比
四、ML Pipeline合成方法回顾
1.两类ML Pipeline合成方法
1)Pipeline of fixed shape合成方法,预设一个固定结构的pipeline模板
- 优点:大大减少搜索空间
- 缺点:对于复杂数据,可能导致性能不佳
2)Pipeline of variable shape合成方法
- 优点:可解决复杂问题
- 缺点:易过拟合,计算开销大
2.Pipeline合成方法-AlphaD3M
利用了深度强化学习中self play的最新技术,结合蒙特卡洛树搜索,高效锁搜索高维空间。通过一个神经网络来预测pipeline的性能和下一步action的概率。
五、AutoML开源框架
重点介绍AutoSklearn和NNI两个开源框架,对主要的AutoML框架进行多维度对比,并结合真实案例说明AutoML技术的实际效果。
1.AutoML开源框架介绍-AutoSklearn
基于Scikit-learn,采用SMAC优化算法,基于元学习进行初始化加速,利用Ensemble Selection方法对搜索的多个模型进行集成。
-
优点:
① 基于元学习进行初始化加速;
② 对搜索的多个模型pipeline进行集成;
③ 采用的SMAC优化算法可处理结构化配置空间;
④ 可限制单个搜索实例的运行时间和占用内存;
⑤ 禁用部分耗时较长的数据预处理组合;
⑥ 基于pSMAC进行多核并行处理或跨机器并行; -
缺点:
① 缺少对多个优化算法加权利用的支持;
② 不兼容用户自定义搜索空间,需改造;
③ 暂不支持NAS;
④ 与k8s的兼容问题;
⑤ GPU加速问题;
2.AutoML开源框架介绍-NNI
由微软亚研院开源的自动机器学习工具。既支持神经网络架构搜索,也支持超参数搜索。
★ Configuration:指来自搜索空间的一个超参数组合实例,每个超参都会有一个特定的值。
★ Trial: 指一次尝试,它使用某组配置(如一组超参值或者特定的神经网络架构)。 Trial 基于提供的配置运行。
★ Tuner: 指一个自动机器学习算法,为下一个 Trial 生成新的配置。新的 Trial会使用这组配置来运行。
★ Assessor:通过分析 Trial 中间结果(如测试数据集上的精度),来确定 Trial 是否应该被提前终止。
★ Training Platform:指Trial 的执行环境。根据 Experiment的配置,可以是本机、或其它大规模训练平台(如K8S)。
- 优点:
① 支持多种模型框架和基础算法库;
② 多种Tunner、Assessor可选,且支持自定义;
③ 可以local、remote、cluster多种模式执行;
④ 具有Web UI,提供了试验管理和对比功能;
- 缺点:
① 不支持机器学习pipeline的自动创建;
② 需用户配置搜索空间,无默认值;
③ 未利用元学习和搜索结果集成进一步优化;
3.AutoML开源框架对比
从对代码的侵入性、超参数搜索算法范围、NAS、早停策略、算法的扩展性、并行/分布式、UI等维度进行对比。
4.真实案例实践
基于微软NNI,对两个真实模型进行超参数自动搜索,并与人工调参的效果进行对比。
(1)真实案例实践一
【某基于XGBoost的回归模型】
验证集RMSE提升:(3930337 – 3004705) / 3930337 =23.55%
(2)真实案例实践二
【某基于DNN的多分类模型】
验证集AUC提升:(0.949353 - 0.946338) / 0.946338= 0.32%
六、AutoML开放性问题
从六个方面探讨AutoML领域目前存在的开放性问题及未来研究方向。
★ OptimizationTechniques
(更智能优化算法的提出和创新,如基于梯度的方法改进)
★ CompleteAutoMLPipeline
(在避免过拟合和提高泛化能力的前提下,对完整MLPipeline的自动学习)
★ Reproducibility&Interpretability
(如何控制搜索结果的可复现性,约束搜索的结果不仅性能好,还具有可解释性)
★ Efficiency&Scalability
(优化算法的效率问题,算法的并行化/分布式改造)
★ LifelongLearn
(终身学习,持续迭代优化)
★ Benchmarks&Comparability
(统一的比较基准和性能度量指标)
本文作者:京东数科 黄绿君
文章来源:“京东数科技术说”微信公众号
原文链接: https://mp.weixin.qq.com/s/J2luw8QLvMkphQZScNzYVQ
更多好文欢迎关注“京东数科技术说”微信公众号,我们只凭技术说话!
转载:https://blog.csdn.net/JDDTechTalk/article/details/108403358