Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

WAIC 2021 | 九章云极DataCanvas方磊:Hypernets——自动化机器学习的基础框架

在 WAIC 2021 AI 开发者论坛上,九章云极 DataCanvas 董事长方磊发表主题演讲《Hypernets:自动化机器学习的基础框架》,在演讲中,他主要介绍了 Hypernets 的概念模型和两个具体实例。他认为,好的 AutoML 框架一定要具备富有表现力的搜索空间描述语言、支持高维空间的高效搜索算法和高性能的评估策略。



以下为方磊在 WAIC 2021 AI 开发者论坛上的演讲内容,机器之心进行了不改变原意的编辑、整理:
 



很高兴今天有这个机会跟大家分享我们所做的工作,九章云极 DataCanvas 是一家数据科学平台提供商,服务了众多客户,在服务客户的过程中不断做了沉淀。我们自主研发了 Hypernets,并且已在 GitHub 上开源。各位开发者朋友,如果感兴趣的话可以去 GitHub 搜索 Hypernets 或者搜索 HyperKeras,都能找到所开源的框架。

AutoML 是具有共性的问题,我将分三个部分介绍 AutoML:研发 AutoML 框架的原因和基本思路;Hypernets 概念模型和重要性;Hypernets 的具体事例。我将按照程序员标准,仔细讲一讲怎么使用,怎么在开发过程中受益。

AutoML 框架的重要性和基本抽象

首先 AutoML 框架本质是什么?就是空间的搜索,空间可以很复杂也可以很简单,大家对于自动机器学习第一个感觉就是调参,事实上,一个算法特别是机器学习深度学习算法,本质就是空间的搜索。AutoML 也是空间的算法,在算法定义的超维空间里,去搜索到让算法或者一系列算法组合达到最优效果,其中重要的思想是抽象性和层级的必要性。
 


有些算法框架自带自动机器学习的功能,为什么还要做专门框架?目前解决实际问题由很多不同算法框架组合起来,不再只是简单训练一个模型调参数,而多模态也能够实现,视频结构化的模型,训练好的模型变成结构化的数据,再结合结构化的数据,比如看病,除了看非结构化的片子,还有验血等结构化数据。当构建复杂的真实系统的时候,学习的系统、做模型的系统其实是异构的,搜索空间也不是单个算法框架就能带来的。

本质上为什么出现这个层级的重要原因就是,定义 AutoML 本身框架,能够让各种算法非常快的实现自动机器学习的搜索。

AutoML 框架的基本抽象

基本的抽象主要围绕三个基本部分:第一步是定义搜索空间(Search Space),第二步是搜索策略(Search Strategy),第三步是评估策略 (EstimationStrategy)。通过搜索结果得到更好的模型,即通过一组参数或者算法组合得到模型后进行评估,评估拥有成本问题。AutoML 框架能够快速低成本评估,并且反馈到搜索策略,搜索策略得到反馈后,找到很好的结果。




在这三个方面各自的需求是:

  • 第一,搜索空间描述语言相对比较丰富,能够描述各种各样的搜索空间。

  • 第二,搜索策略灵活多变,支持各种各样不同的场景。

  • 第三,高效的评估策略。

 

Hypernets 的概念模型和高级特性

下面具体介绍 Hypernets 是怎么实现丰富的搜索空间描述语言、灵活的搜索策略、高性能的评估策略?自动机器学习在已有学习框架中,无论运用什么算法框架,在这之上让它变成更好的模型,都可以使用 Hypernets,所以 Hypernets 与现有的各种框架是结合的关系。对于最新的深度学习 NAS 搜索有很多 paper,这是自动机器学习最重要的领域之一,Hypernets 也在其中做了很好的支持。
 


搜索空间

搜索空间本身怎么定义?这是非常经典的定义方式,绝大部分问题可以被定义为一个 DAG,本质搜索空间由三部分组成:一部分叫做 Connection Hypernets,一个点和下一个点连接,拥有有不同的连接方式;另外一个叫 Parameter Space,用算法里的参数,即参数空间;还有 Module Space,算法的使用方式不同,这一步用了算法,下一步可能是填充,不同计算模块本身有模块空间。很多不同的算子代表模块空间,连接方式代表连接空间,参数代表参数空间,将几个不同的空间结合起来就是整个搜索空间。
 


搜索算法

在搜索空间使用什么搜索算法?目前有非常多种类搜索算法可以使用。第一个是大家熟悉的并且阿尔法狗使用的算法——Monte-Carlo Tree Search,在很多科普媒体文章都介绍过,简单来说作为经典算法的 Monte-Carlo Tree Search 是在搜索空间中,进行搜索切割,实现向下或向子空间搜索的算法实践。

第二种算法叫遗传算法 (Evolutionary Algorithm),与第一种算法相比,不那么结构有序。但在搜索空间比较复杂的时候,想要找到接近于全局最优的局部最优解,Evolutionary Algorithm 是非常有效的方式。

第三类算法 Reinforcement Learning,本身是比较好的一种算法。强化学习的目标是获得最多的累计奖励。
 


目前算法种类有很多,可以做组合,不同算法组合也可使用增强策略。

评估策略

评估策略在多快好省里最主要的是省,评估的时候在不是太不精确的情况下尽可能减少计算量。评估策略里面主要三个方向:第一,Meta-leaner,指导搜索方向。在搜索过程中使用在线训练的元学习器评估候选参数配置,减少实际执行 Trial 的次数。第二,Caching,节省预处理时间。可以记录很多中间结果,记下来之后可以反复使用,这是缓存的策略。第三,防止过拟合的 Early Stopping。有的时候搜索太深没有用,找到一个貌似很好的点,其实过拟合了,所以会做一些策略防止过拟合,有的时候浅尝辄止也是一件很好的事。
 


高级特性

对于高级特性,大家都知道一个框架体现共性的事情是可以解决的,我期待开发者朋友多多使用 Hypernets,Hypernets 也实现了高级的特性。我们经常遇到一些挑战,比如样本不均衡处理以及包括语言学习和二次搜索等特性。
 


高级特性主要干什么用的?第一,数据漂移,大家碰到非常常见的情况,做了不错的模型,上线后不能运行,因为数据基础分布发生变化,做模型要去检测在历史上哪些数据的分布容易发生漂移,并且作为特别处理。比如在营销中构建推介模型,有很多营销事件,你推荐别人买手机,但是昨天苹果开了发布会,可能大家兴趣变化了,或者华为又开了新的发布会,有非常多事件驱动营销场景下,数据漂移非常严重,这个时候如果有数据漂移的处理会让模型准确度大幅度上升。

包括二阶段的搜索,通过不同算法组合,首先运用半监督学习训练,打上标签,其次通过标签引导后面的训练,达到叠加的效果,并且对于样本不均衡的情况也是有很好的效果。

包括作为基本功的硬件加速和分布式处理,不可能只在一个机器上训练,在几十上百台机器上都有过应用的案例,所以其拥有较强的性能和分布式的能力。

同时也有一些训练适合在 GPU 上训练,不一定是深度学习,也有搜索的内容,均可以拆解。在 GPU 上运行,我们也做了一定探索,能实现一定的硬件加速,实事求是讲,不是特别成熟技术一定大幅度提高,但在一些场景之下有比较大的提升。

Hypernets 的具体示例:HyperGBM 与 HyperKeras

具体看几个例子,最基础的是 Hypernets,Hypernets 刚刚提到了三个空间,训练服务,在这个基础之上,结合不同的 training 框架,产生不同的 hyper 打头的一系列东西,比如 HyperGBM,是 GBM 加上 Hypernets。我们的定位是去帮助别的框架更好更快的找到训练模型。

Hypernets 家族开源地址:

Hypernets
https://github.com/DataCanvasIO/Hypernets

HyperGBM
https://github.com/DataCanvasIO/HyperGBM

HyperKeras
https://github.com/DataCanvasIO/HyperKeras


HyperGBM

举一个例子,大家最经常使用的 XGBoost、LightGBM、CatBoost 的 GBM 的算法,在结构化数据上有不错的效果。一个 GBM 的算法,一个 Full-Pipeline 可能很长,中间有很多步数据的清洗、切割、特征筛选、特征的组合等等,在中间有很长的 Pipeline,有十几、二十步之多,这个时候你想去利用这个技术怎么自动端到端的优化?运用我们研发的 HyperGBM,简单易用,实现自动端到端优化,当然也可以用强大的 Hypernets 来实现,如果用实现过的 HyperGBM,已经发现能够带来非常简便端到端整个自动机器学习的过程。
 


由数据的预处理到特征的筛选、模型参数的优化以及模型的组合,这些结合起来是非常典型的使用 GBM 算法训练的 Pipeline,Pipeline 之上 HyperGBM 实际是调动了 Hypernets 里面不同的 Search 或者自动的组合,在定义好的 SearchSpace 里面,与 GBM 用的算法每一步都有关系,会自动选取不同组合进行自动结合,利用 Search 找到最好的参数

使用 HyperGBM 的五行代码,大大简化开发者使用相对复杂的技术来获得较好的模型。使用五行代码非常简单,在已有的基础上,利用 GBM 算法去进行训练代码技术上增加几行代码,就拥有全自动的搜索能力,大大便捷了我们和客户工作,在更广泛的开源社区里,我们希望开发者也可以使用。
 


HyperKeras

HyperKeras 主要在深度学习上去做一些模型的训练。Deep-learning 总结而言是找网络、找链接,网络里面也要找参数,也就刚才说的空间里面的连接、算子、参数,如果一个简单搜索的网络,可以用 Python 在 Hypernets 定义出来。

例如我写了好很多例子,你可以简单使用例子,5-10 行代码完全可以搜索模型。
 


Hyperents 的定位非常清晰,希望成为开发者的朋友,不管开发一个训练框架还是开发应用模型。开发训练框架可以让框架使用 Hypernets 很容易结合出框架本身的自动机器学习能力,如果是开发应用模型,可以组合不同学习训练框架的同时,使用 Hypernets,端到端的 Pipeline 进行自动机器学习参数搜索,得到非常较好的模型。

经过在行业上的大量应用,在特征丰富情况下,Hypernets 在搜索能力包括分布式计算能力体现出来很多优势,搜索时间短,算力仅需普通训练的 20-30 倍,就能够得到一个性能大大提升的模型。
 

产业AutoML九章云极
相关数据
华为机构

华为创立于1987年,是全球领先的ICT(信息与通信)基础设施和智能终端提供商,我们致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界:让无处不在的联接,成为人人平等的权利;为世界提供最强算力,让云无处不在,让智能无所不及;所有的行业和组织,因强大的数字平台而变得敏捷、高效、生机勃勃;通过AI重新定义体验,让消费者在家居、办公、出行等全场景获得极致的个性化体验。目前华为约有19.4万员工,业务遍及170多个国家和地区,服务30多亿人口。

https://www.huawei.com/cn/
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

半监督学习技术

半监督学习属于无监督学习(没有任何标记的训练数据)和监督学习(完全标记的训练数据)之间。许多机器学习研究人员发现,将未标记数据与少量标记数据结合使用可以显着提高学习准确性。对于学习问题的标记数据的获取通常需要熟练的人类代理(例如转录音频片段)或物理实验(例如,确定蛋白质的3D结构或确定在特定位置处是否存在油)。因此与标签处理相关的成本可能使得完全标注的训练集不可行,而获取未标记的数据相对便宜。在这种情况下,半监督学习可能具有很大的实用价值。半监督学习对机器学习也是理论上的兴趣,也是人类学习的典范。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

元学习技术

元学习是机器学习的一个子领域,是将自动学习算法应用于机器学习实验的元数据上。现在的 AI 系统可以通过大量时间和经验从头学习一项复杂技能。但是,我们如果想使智能体掌握多种技能、适应多种环境,则不应该从头开始在每一个环境中训练每一项技能,而是需要智能体通过对以往经验的再利用来学习如何学习多项新任务,因此我们不应该独立地训练每一个新任务。这种学习如何学习的方法,又叫元学习(meta-learning),是通往可持续学习多项新任务的多面智能体的必经之路。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

遗传算法技术

遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。 遗传算法通常实现方式为一种计算机模拟。对于一个最优化问题,一定数量的候选解可抽象表示为染色体,使种群向更好的解进化。

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
语言学技术

每种人类语言都是知识和能力的复合体,语言的使用者能够相互交流,表达想法,假设,情感,欲望以及所有其他需要表达的事物。语言学是对这些知识体系各方面的研究:如何构建这样的知识体系,如何获取,如何在消息的制作和理解中使用它,它是如何随时间变化的?语言学家因此关注语言本质的一些特殊问题。比如: 所有人类语言都有哪些共同属性?语言如何不同,系统的差异程度如何,我们能否在差异中找到模式?孩子如何在短时间内获得如此完整的语言知识?语言随时间变化的方式有哪些,语言变化的局限性是什么?当我们产生和理解语言时,认知过程的本质是什么?语言学研究的就是这些最本质的问题。

推荐文章
暂无评论
暂无评论~