专栏名称: 机器之心
目录
相关文章推荐
黄建同学  ·  Gemini Code ... ·  昨天  
爱可可-爱生活  ·  本文创新性地提出循环Transformer架 ... ·  2 天前  
爱可可-爱生活  ·  【[143星]getomni-ai/benc ... ·  3 天前  
51好读  ›  专栏  ›  机器之心

AutoML初创公司探智立方:模型的物竞天择与适者生存

机器之心  · 掘金  · AI  · 2018-07-19 06:15

正文

阅读 10

AutoML初创公司探智立方:模型的物竞天择与适者生存

机器之心原创,作者:邱陆陆。

从回归分析的出现到深度学习的蓬勃发展,这条算法的进化路线与其说是「机器替代人」,不如说是「机器帮助人类完成我们不擅长的事」。这份「不擅长」列表里有「不擅长从大量数据中寻找规律」、「不擅长同时完成大量变量的优化」、「不擅长从高维数据中提取特征」。在今天,又有一批研究者在反省人类是否也「不擅长进行模型设计与模型调优」,以及机器如何能提供帮助。近两年,以谷歌为代表的公司再次将这一类问题以 AutoML 之名推向众人视野之中,试图探讨这一技术能否让更多行业专家能够跨越工程与算法的障碍,仅仅利用专业知识和数据积累,就能在机器的帮助下完成深度学习算法的开发。

在国内,探智立方就是持有这样愿景的一家公司,这家成立于今年年初的公司致力于开发一个有「自主模型设计」能力的平台——DarwinML——以进化算法为基础,找到模型不依赖人工设计的「进化之路」,从而降低人工智能的应用门槛,让各行业的 IT 人员,行业专家能更简便的将人工智能落地于各种适合并需要的场景中,解決人才短缺及技术能力不足的普遍問題。

七月,机器之心采访了探智立方的两位创始人,CTO 钱广锐和产品总监宋煜,深入了解这个走向实际应用的 AutoML 系统。

机器之心:探智立方希望以 AutoML 解决哪些问题?

宋煜 :AutoML 并不是一个全新的概念,这两年它获得了广泛的关注,是因为大家看到数据集本身的分布和模型的关系是十分密切的。把一个论文中效果非常好的模型应用到某一个特殊场景下,模型的表现下降也会十分严重。两三年前,大家更多地会以「超参数调优」的形式进行模型改进。从基于规则的方法到贝叶斯方法,为了找到一个合理的、趋近于最优解的解空间,大家做了各种不同的尝试;有很多超参调优的自动化工具随之应运而生。之后大家发现除了超参之外,有时必须要改变网络结构等等。最后,大家开始思考:机器是不是可以设计一些模型。

之前我们在做模型的优化的时候也感受到,最有限的资源还是人的时间。因此,从去年开始我们尝试把模型优化的过程尽量抽象成一个纯数学问题,然后利用机器的强大计算力,以搜索拟合的方式,在有限的时间空间内来寻找全局最优解。探智立方今天就是以 AutoML 为主要方向,解决实际环境中人工智能相关应用模型自动化设计和优化的问题。

机器之心:AutoML 都有哪些类别?探智立方选择的是其中的哪一种?

钱广锐: 在业界,从「头」学习的 AutoML 算法大概有三种。除了进化算法之外,还有最早以谷歌为代表的纯强化学习算法。目前从论文以及实践效果来看,进化算法的效率比强化学习要高些。除此之外,还有目前也在探索中的元学习方法。

进化算法本身也有很多分支,比如「进化策略」和「演化方法」。谷歌采用的是演化做法,OpenAI 用的是「进化策略」算法。探智立方的「DarwinML 平台」是一个基于「演化」算法类型的 AutoML 系统。

当然,如果是不要求从「头」学习的 AutoML 方法,也有预设一个模型库,从中选择相应的模型进行优化或者迁移的做法。

机器之心:探智立方在 AutoML 中重点关注哪方面的工作?

宋煜: 我们和其他偏学术的机构不一样的地方是我们希望从 AutoML 的角度提供模型可解释性。

如今的可解释性研究更多是让研究者去将中间的特征提取层权重或激活进行输出,研究每一层的影响是什么,再把自己的观察传达给机器。但是人的时间是有限的,我们希望由机器自己完成这个过程。

我们希望机器自己总结「特征提取」究竟提取了什么。找到为什么一个特定的提取方法和损失函数计算组合作用在特定的数据分布上的时候,能让梯度下降更快,损失更小,然后将这些知识解释成机器可以理解的数据化的表达方式反馈回系统,变成属性,为下一次设计提供指导性意见,提高设计效率。

换言之,我们也在实践进行模型设计的「大脑」可不可以越来越聪明,能不能在为相似的问题或者数据类型设计模型的时候,迅速地将设计时间从「四天达到 80% 准确率」缩短为一天甚至几小时之内达到同等准确率?能否让最初几代模型不用走太多弯路就能够进入一个和最优解非常相近的解空间里。

钱广锐 :如今的学界对 AutoML 的研究大多集中在方法论本身,而我们更多关注如何能够让 AutoML 技术用户实际的数据结合,在项目中落地。

我们开发了「DarwinML 平台」,在帮助大量的用户学习了自己的数据、训练自己的模型的过程中,也让平台越来越聪明,能够更高效地帮用户实际解决问题。


机器之心:DarwinML 平台的目标用户群是谁?完成一个任务需要用户完成哪些工作?平台完成哪些工作?

宋煜 :DarwinML 平台是一个全生命周期管理平台,这个平台的最终目标,是成为一个自动模型开发平台,让业务人员,或者说不是专门从事 AI 研究的人,也能够设计一个符合业务目标的模型出来。

用户要做的就是准备数据,以及进行一些算力和期望效果的选择:使用算力的上限、模型精度要求、最长训练时间等。对算法有了解和模型设计有经验的用户,也可以就模型设计过程中的参数,比如进化算法的最大演化代数、模型最大的期望深度进行设置,甚至可以动态剔除的模型设计中不需要的「基因」、调节不同变化操作方式的进化算子的比例等。

余下的数据清洗、模型设计、训练、调优、评估、推理,都在平台上自动完成演化。

机器之心:能否描述一下平台完成一个任务的过程?

宋煜 :首先,「DarwinML 平台」会提取数据的统计信息,根据统计信息设置一个演化的初始条件,包括模型的种群的个数、演化迭代的最大代数,分布式计算资源的分配情况,加上用户设置的算力限制等。

然后平台开始自动进行模型设计。在进化到每一代时,都会对模型进行一次评估,以选择继续演化的方向,同时防止种群,也就是所有模型的整体早熟(避免重复使用前期效果比较好的相同或者相近的模型,尽量让选择在解空间里分散化)。

当演化到达客户的准确率或者时间限制要求后,DarwinML 平台会再固定模型结构进行一次参数精调,同时进行超参数的局部优化。

最后,在整个过程结束后,以报告的形式将模型的特征、硬件配置、各项表现指标返回给用户。

机器之心:模型的基本组成模块是什么?

钱广锐 :我们的平台叫「DarwinML」的原因就是在于其核心算法是进化算法。进化算法的实现基本思想就跟模拟自然界生物进化过程一样。

如同动物从单细胞动物开始,进行繁殖时通过 DNA 的交叉变异生成新的个体,我们的模型设计也从第一代的模型种群的初始化开始,保持着种群的大小基本不变,通过逐代演化生成更好的模型。

针对机器学习和深度学习,平台有着相同的演化核心算法,但分别面向机器学习和深度学习的基本构成单元(我们称之为「基因」)有所不同。因此,基因是「DarwinML 平台」设计模型过程中最基本的组成模块。

机器学习的模型「基因」包括一些聚类、Imputer 等数据预处理操作,以及回归、分类等任务相关的四十多个机器学习基本操作,一百二十多个变种。深度学习的「基因」库则更加庞大和复杂,它包括不同的深度学习神经元基因,比如卷积模块、 LSTM 模块、池化、全连接层等等;而当一些「基因」组合在一起的形成性能优异的更「大」的模块时,也会被固定下来,成为一个新的「基因」。这个拥有超过一百二十个初始化的深度学习基因库,再加上不断演化出现的更复杂的「大」基因库,可以实现设让机器学习、深度学习模型的结构可变性尽可能多、模块尽可能细,让我们能够得以探索一些超出人类想象的领域,发现一些与人类已知经验不同的模型结构。

机器之心:模型的初始生成的过程是什么?

钱广锐: 初代种群中的模型有两种来源,一种是 DarwinML 平台根据数据分布情况,从「基因」中随机选择,自动生成一些模型,另外我们也支持从用户自己提供的一些「优秀」的初始模型开始演化。

其中模型的初始化生成过程里包含一系列类似「丢骰子」的初始化操作,根据预定义深度、总体神经元的个数随机生成一系列模型的。当然,DarwinML 平台会也从以前训练模型的经验里面进行学习,结合用户输入的参数,把初始化问题从一个简单的丢骰子情形变成一个根据数据的特征调整生成分布的问题。例如,系统会根据以往的经验判定,20 层以内的模型可能就可以取得很好的效果;或者,为了考量模型的性能,需要兼顾部署时的低延迟时,如何设计一个不超过 50 个神经元模型。

机器之心:能否描述一下模型的进化过程?

钱广锐: DarwinML平台会把第一代随机生成的模型进行训练、评估,然后进行性能排序。再根据进化算法的「优胜劣汰」法则,选择每一个基因能够「遗传」下去的概率:最好的个体理论上会有最大的可能性产生新的子代,来保证产生的个体的质量越来越高。

从一代模型中产生下一代新模型的方法有几种:

一是变异(mutation)操作,将一代模型中的少数几个「基因」替换掉。或者将模型中的一层整体删掉或者整体复制一次。二是交叉(crossover 或 heredity)操作,例如将两个一代模型分为三部分,把模型 A 的中间部分去掉,用模型 B 的中间部分替换。三是为了保证多样性,继续随机操作(random)生成一些,采用和第一代相同的办法随机生成新模型。

同时,DarwinML 平台还引入了基于贝叶斯的、基于蒙特卡洛树搜索(MCTS)和基于强化学习的三种方法来指导遗传算法进行搜索。贝叶斯方法用于计算下一代模型效力变好的概率分布,MCTS 提供依据树搜索产生的结果来设计可能存在的合理模型,而强化学习则不完全局限于模型变化本身,而是根据特定进化过程后、模型的得分、其他的输入信息更新 Q-table,指导生成更合理的模型和演化方向。

进化一代的时间由数据量和算力决定,一个 CIFAR 数据规模大小的深度学习模型 4 个 GPU 上进化一代大约需要 10-20 分钟。一个 400 万条数据的机器学习模型,在 100 个 CPU 核上进化一代大约需要 5-6 小时。

进化代数方面,机器学习模型一般一代在 15-20 个模型左右,不会超过 20 代。深度学习模型通常在 30-40 代,甚至更多。一般,模型越复杂,模型种群数量和进化代数就需要更多。

机器之心:能否以可视化的形式展示 DarwinML 平台的进化过程?

宋煜 :上图是一个基于 CIFAR-10 数据集的演化过程模型关系图。每个圆圈代表一个模型,圆圈大小代表模型性能,越大代表性能越好;圆圈距离中心的位置代表了模型演进的代数,越靠外的模型是越晚生成的;红色代表模型是由 Random 操作生成的,蓝色代表由 Heredity 操作生成,绿色表示由 Mutation 操作生成。通过这个图,我们可以可以看到,算法非常高效、方向性非常强地向更优方向演进。同时,在图的左下角,我们可以发现,后面的几代模型性能都比较稳定,而且大多都是来自于同一个父母。在一些复杂的数据中,更加复杂的模型「家族图谱」会清晰地告诉我们模型演化的过程,结合模型的特征,可以更好的研究哪些「优秀」的模块(结构)被一代一代的遗传下去,为模型的可解释性提供数据支持。(下图)







请到「今天看啥」查看全文