Fork me on GitHub

阿里云机器学习 AutoML 引擎介绍与应用

以下文章来源于 https://zhuanlan.zhihu.com/p/608483110

转载地址
**​导读:**在算法行业有这样一种说法,80% 的时间用在做数据清洗和特征工程,仅有 20% 的时间用来做算法建模,其核心是在说明数据和特征所占比重之大。与此同时,越来越多的数据从业者们也希望能够降低机器学习的入门门槛,尤其是降低对特定领域的业务经验要求、算法调参经验等。基于这一背景,AutoML 应运而生。

本文将介绍:

  1. 什么是 AutoML

  2. 超参调优(HPO)

  3. 自动特征工程(AutoFE)

  4. 网络结构搜索(NAS)

  5. AutoML - 其它


分享嘉宾|孔维丹 阿里巴巴 高级技术专家

编辑整理|胡回 中南大学

出品社区|DataFun


01/什么是 AutoML


1. 典型的机器学习流程图



典型的机器学习流程包括:

  • 数据采集和预处理。
  • 特征工程。
  • 模型选择,在有了待 training 的数据之后我们会选择一个模型来进行训练。
  • 模型调参,在模型训练过程中有很多参数需要调整。
  • 模型压缩,为了提升推理效率(inference efficiency),要考虑对模型进行一些压缩。
  • 模型评估 & 部署,对压缩后的模型进行评估,然后上线。

在这一流程中,有很多模块都可以应用机器来进行优化:

  • Hyperparameter Optimization(HPO)超参调优,主要针对模型调参,当然 HPO 也可以运用到整个流程中的各个阶段。
  • AutoFE,主要针对特征工程。
  • Neural Architecture Search (NAS),主要针对模型选择模块,在做模型选择的时候,可以考虑选择现成的经典模型和经典模型的改造,也可以考虑从无到有创造出更适合应用的模型。

2. 阿里巴巴计算平台 PAI 架构图

通过以下架构图可以看到 AutoML 在整个 PAI 计算平台中的位置。



PAI 架构中最下面是基础硬件层、分布式的优化、调度层,基于此构建了各类计算引擎的框架,比如深度学习框架 TensorFlow 、Pytorch,流式机器学习框架 Alink 等。AutoML 引擎则是构建在计算引擎之上,为更上层的算法、产品和业务提供服务,起到了承上启下的作用。

--

02/超参调优(HPO)


1. HPO -目标



通常一个模型,会有很多参数需要进行调整,这些超参的范围构成了一个搜索的空间。HPO 的目标就是在这个空间里找到最优的超参组合,并提供训练完成的模型。


2. HPO - 搜索空间

参数类型举例:

  • 树模型:

树的数量(10,50,100)

树的深度(5,6,7)

特征采样率(0.6,0.7,0.8)

训练数据采样率(0.6~0.8)

仅仅这几个参数,就已经存在一个很大的搜索空间待选择,对人工调参来说并不友好。

  • 深度模型:Learning rate、batch_size、Learning rate decay、网络深度、卷积核大小等等。

深度模型中待选的超参更多,这些参数组合起来则会是一个巨大的搜索空间。如何在巨大的搜索空间中高效快速地找到最优的超参,是 HPO 要研究的核心问题。


3. HPO-搜索策略



  • 穷举法

搜索策略里最常见的办法,包括随机选择超参、按次序穷举超参。

  • 概率模型

利用训练过程中得到的数据,基于概率模型,来做贝叶斯优化算法,或者做 TPE 算法,帮助我们更大概率的搜到更好的超参。

  • 采样算法

PAI team 提出的一种更高级的模型。当面临很大数据量去进行训练的时候,时间成本是非常大的。考虑到搜索空间里边有大量的很早就可以排除掉的参数组合,如果能够用非常低的采样率,比如说百分之一甚至千分之一、万分之一的数据量,通过训练就能够提前排除大量低质超参,就可以大大地提高训练效率。然后逐步将采样率提高,对剩下的超参进行细化调整,这样就可以在提高训练的效率的同时尝试更多的超参组合。实验证明,与概率模型做了一些对比,采样算法有更好的提升。


4. HPO-EarlyStop 策略

为进一步提高 HPO 训练的效率,我们也会使用 EarlyStop 策略。EarlyStop 策略参考下图。



图上 每一条曲线是一个训练的具体任务,横轴是 epoch,可以看到部分任务训练的曲线到了最后,而更多的任务则是训练了几个 epoch 之后,就提前被停止放弃。这样也可以大大提高训练效率,节省训练开销。


5. PAI-AutoML HPO

AutoML 在 PAI studio 上有具体产品的透出。对于用户而言,只需要在 UI 上选择具体的算法,然后提供参数选择就可以轻松使用 AutoML HPO 的功能。



6. HPO-业务案例



  • 0号:阿里内部的一个业务团队,在使用 HPO 之前人工选择的的超参。
  • 1号、2号、3号:是通过使用 HPO 的服务以后,得到的超参的组合。
  • 2号实验有着最优的效果,1 号实验在最终效果与 baseline 接近的情况下,使用的 tree_num 大幅减少。这也就意味着,在线上运行的时候会有更高的效率。

7. 在线数据分时实验

内部业务线分时实验,对比如下:



  • 2 号实验优于 0 号 baseline,如果业务方更关注线上的效果,那可以选择 2 号实验。
  • 如果业务有性能或者资源限制的考量,可以选择 1 号的实验。
  • HPO 除了能够帮找到最优的超参之外,还给我们提供了相同 metric 下性能效率更高的选项。

8. HPO - 合作伙伴案例



椰子科技在使用 PAI AutoML 的调参服务,大大地提高了效率,节省了人力。

--

03/自动特征工程(AutoFE)


1. 为什么需要特征工程?



数据和特征本身决定了机器学习的上限,而模型和算法是逼近这个上限。深度模型也不例外。所以当有更好的数据,更优的特征的时候,会提高最终的效果。

在互联网行业, CTR 预估、模型推荐场景的需求还是重中之重,在这两个场景下面,绝大部分的特征还是表格数据,而自动特征工程,恰恰可以应用在这些表格数据之上。

另一方面,金融行业对模型最终的可解释性要求比较高,对于 Deep learning 这样的 model 会有一些心理上的抗拒,通过特征工程进行优化,可以使特征有更好的可解释性。

与 HPO 类似,AutoFE 的研究方向也是两个,一个是搜索空间 ,一个是搜索策略。


2. AutoFE -- 搜索空间 - 操作与候选特征

搜索空间关注的一个是用什么样的操作 ,另一个是选取哪些特征。



(1)一元的操作符

  • 离散化。
  • 归一化。
  • 数学运算。
  • 统计特征,计数、最大值、最小值等。在推荐场景中,统计特征会有很好的效果。

(2)二元的操作

  • **数学运算。**比如关注的是一个人是胖还是瘦,通常会使用 BMI 指标,这样的指标就是典型的二元操作。
  • **逻辑运算。**比如有一列特征是性别,还有一列特征是年龄,那么性别是男,且年龄在20 到 30 岁之间,这就是一个典型的交叉的逻辑特征。
  • **统计特征。**比如 Average A Group By Label,对于这个特征而言,关注它和 Label 列直接的关系。这个特征和 Label 直接交叉之后,可能会得到一个很强的特征。

3. AutoFE -- 搜索策略 -候选特征选择



  • FeatureTools 与 DFS (Deep Feature Synthesis)

开源项目,通过定义表格上的 entity、entity 的 ID 以及 entity 之间的关系,作用于多个表格,表格往往都是关系性数据库的表格,然后去分析获得特征的组合,包括一些统计特征。

  • PAI -- AutoFE:SAFE (Scalable Automatic Feature Engineering)

来自蚂蚁的一篇 paper,面向的场景是大宽表。这个算法基于 Alink 引擎,可以很容易地处理海量的数据,也可以充分地依赖于 Alink 提供的各种算法和算子。FeatureTools 是需要代码开发的工作,使用上有一定的难度。而 PAI-AutoFE 在设计时,就考虑以配置驱动,无需代码开发,只需要提供简单的配置,就可以端到端地做自动的特征工程。


4. PAI-AutoFE - SAFE 算法



可以从端到端来看,用户输入是一个原始的表格以及 label 列。最终输出到用户的还是原始的那个表格,记忆新加的特征,并且明确地告诉用户这些特征的计算方式,比如 A 列加 B 列、group by A 列、B 列的最大值等等。

整个过程分两个阶段:

  • 阶段一:找到候选的特征。
  • 阶段二:在这些候选特征里面剔除掉效果不好的特征,保留效果好的特征,然后再把它加到最终的表格里面去。

具体细节:

  • 运行 GBDT,得到多棵树,以及每棵树上会有一些分裂节点、具体的分裂值。
  • 特征组合筛选。通过分析 GBDT 树的分支,可以得到特征交叉的候选组合。而使用 GBDT 则可以把特征组合候选量大幅降低。在有了这些候选特征组合之后,还可以进一步地去做过滤,GBDT 给了数据集的划分,对数据的特征组合,可以去计算 IGR(信息增益率),通过保留信息增益率比较高的组合,可以进一步的减少组合的特征。
  • 特征生成。得到了这些优秀的特征以后,再通过执行操作符,生成新的特征。
  • 移除无用特征,进一步优化。比如计算 information value(信息价值),把 IV 值比较高的特征给留下来。
  • 再次运行 GBDT, 让 GBDT 给每个特征打分,通过 GBDT 得到的 feature importance(特征重要性),保留最终特征。

整个流程下来,不会对用户的原始数据增加很多,但是却会得到很好的效果。


5. AutoFE -- PAI 平台推荐解决方案 EasyRec + AutoFE



在推荐领域,PAI 平台做了一个推荐的解决方案:EasyRec。这个解决方案里使用了各种 deep model, 帮用户做了基础的特征工程,端到端帮助用户生成模型。EasyRec 集成有HPO 和 AutoFE 模块,打开这些功能,可以让用户的特征效果得到进一步的提升。



上图是视频领域某客户的案例,2022年5月13-15 日三天的数据,红色框是 baseline, 是 EasyRec 的效果,v5 是表明已经迭代到了第五版。黑色框里的是使用了 AutoFE 之后的实验结果。

**可以看到,**使用 AutoFE 之后的效果显著优于 baseline, 最大会有十个点以上的提升。点击率、视频观看时长都有明显的提升。尽管 AutoFE 使用了传统的机器学习的方法进行自动特征工程,但在 Deep learning model 上同样有着很优秀的表现。

--

04/网络结构搜索(NAS)


1. 背景



深度学习打开了 AI 的大门之后,各个领域的专业问题都可以用深度学习来进行优化。不管是在 CV、NLP,还是在其他不同的领域,都会需要到不同的模型。


2. NAS -- 终极目标



**机器学习的终极目标:**用户只需要提供数据和 label, NAS 系统便能够使用尽可能少的资源资源的情况下,快速的给出一个便于用户理解的模型。

3. NAS -- 组成部分



与 HPO 和 AutoFE 类似,NAS 首先也是要定义一个网络结构的搜索空间,因为搜索空间很大,所以同时需要研究出更高效的搜索策略,更巧妙的加速方案。

搜索空间:

  • 有向无环图;
  • 块单元;
  • 元结构。

搜索的算法,目的是更快更高效地找到最优的模型,包括:

  • 强化学习
  • 进化算法
  • 梯度优化
  • 贝叶斯优化

加速的方案有:

  • 全部训练
  • 部分训练
  • 全值共享
  • 网络态射
  • 超网络

4. NAS -- 强化学习典型方案



经典 NAS 的处理过程使用了强化学习(reinforcement learning) 的方法。**使用参数推荐出的一个模型进行训练并得到 metric,然后给到控制器(controller),在已有模型的基础上推荐下一个潜在具有最优 metric 的模型,然后把该模型给到右边这个 child network ,再从零开始训练。**这样又可以得到下一组模型和 metric 的组合,循环往复,最终选出一个最好的网络。

这一方案最大的缺点是,每次训练都需要从零开始,不同模型之间做了大量重复训练,却没有共享训练成果的, 所以效率非常地下。


5. NAS -- OneShot - ENAS/DARTS



此基础之上,出现了很多 OneShot 方法。

(1)优化点

  • ENAS 方法做了不同模型之间的权值共享,训练不再从零开始,大大地提高了训练的效率。
  • DARTS 方案,不再使用 reinforcement learning 的方法,而是重新设计了一个可微的网络,通过梯度下降的方法去寻找一个最优的网络结构。

(2)问题点

  • OneShot 方法依旧需要大量的训练。
  • 搜索的空间大:搜索空间是一个 super net 超网络,而结果是在这个超网络上的一个子网络。

6. NAS -- 主干网络搜索



回归到实际用户使用场景,**用户做训练时,并非都是从零开始。**一种情形是,用户已经使用了经典模型,但是希望有更好的效果。另一种情形是,用户已经设计了一个网络,并且希望能够在此基础之上,能够有一些微调,以得到更优的效果。

针对这类需求,一部分 NAS 研究工作的重心,落到了 model 里的 backbone 主干网络的搜索。主干网络消耗了训练中的绝大部分的时间,所以主干网络的优化,能够大幅提高训练效率。



  • 案例

NAS-FPN 和 DetNAS,共同点是都使用了 FPN(Feature Pyramid Network)方法。在基础网络之上,通过设计 FPN 把原网络的特征层抽取出来,合并成新的特征,再加回到待抽取的网络特征里。这样搜索空间就是用户自己的 backbone,同时能提取出高阶的特征。

然而,这类方法还存在一个问题,它仍然是一类 OneShot 方法,依旧需要训练原有的数据,训练开销还是比较大。


7. NAS-MaE-NAS



针对上述主干网络搜索存在的问题,达摩院提出了 MaE-NAS 的方法。它是 Zero-shot 的方法,不再需要训练数据,而是通过评价网络的结构来确定网络需要怎样修改。

优势在于:

  • 无需训练网络参数,搜索代价几乎为 0。
  • 效率非常高。
  • 在精度,模型大小,推理速度,计算量等指标上全面超越主流网络结构。

(1)MaE-NAS 核心算法



MaE-NAS 核心算法本质上是把原有的 CNN 网络看成是一个信息系统,通过计算网络输出层的熵,熵越大,则代表着这个网络的表达能力就越强,效果就越好。通过这样的方法来训练网络结构,相比 OneShot 方法更加高效。

(2)MaE-NAS 案例



在拍立淘的案例中,**通过使用 MaE-NAS 方法,可以把模型大大的压缩,部署到客户端。**在这种情况下,同样是输入一张图片,客户端就已经对商品进行了检测,只把商品的热区,也就是我们关注的一小部分抠出来上传到服务器,再通过服务器的特征提取,最终返回检索结果,使用户搜索时延大幅降低。

--

05/AutoML -- 其他



AutoML 也会有很多其他领域的研究,比如 Transfer-learning,欢迎大家观看。



--

06/问答环节


Q:Auto FE 里 IV 值高的特征和 GBDT 选出的特征有什么关系,能相互印证吗?

A:在计算 IV 的时候,如果一些特征比较强,跟其他特征组合的时候,它会在多个特征下面表现出IV值都很高,但是可能是重复的。而在 GBDT 有一个特点,如果两个特征一模一样,那么一个特征很强的时候,另一个特征的权重就会直接打到零。所以从这个角度上讲, IV 值高不一定代表 GBDT 这边最后选出来的特征会是强。但是如果把上述情况剔除掉,那么 IV 值高在 GBDT 的 importance 也相对高。

今天的分享就到这里,谢谢大家。


分享嘉宾

孔维丹|阿里巴巴 高级技术专家

阿里巴巴高级技术专家,目前在阿里巴巴计算平台事业部任高级技术专家,专注于 AutoML 领域,包括 HPO、AutoFE、NAS 等方面的工作,负责阿里巴巴 AutoML 服务。此前先后就职于微软、小米等公司。


**


本文地址:https://www.6aiq.com/article/1677063600712
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出