【全自动机器学习】ML 工程师屠龙利器,一键接收训练好的模型

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介:

某日出差,在出租上闲来无事和司机闲聊,告知其本人专业是人工智能,司机师傅顿时打开了话匣子:人工智能我知道,那个 AlphaGo 下围棋没有人能下得过它,吧啦吧啦吧啦......某次乘地铁,听见地铁上三五青年大谈深度神经网络。似乎一夜之间,机器学习飞入寻常百姓家,大有全民机器学习之势。


然而,若在街上拉住一位大爷说:我们来讨论一下 SVM 的机制吧,大爷必然挣脱开来大吼:不要耽误我买菜!机器学习算法纷繁复杂,No free lunch 理论告诉我们,每一个模型都有其偏好,对待不同的学习任务,都需用不同的模型来解决。一个算法工程师可能需要多年的修炼,才能熟练掌握各个算法的特性,在处理问题时,仍然需要使用各种 tricks,花费大量时间去调整模型,以求达到最好的效果。


计算机科学工作者本着能让计算机干就不要人费劲的原则,自然不能忍受这种重复繁琐的劳动。因此,自动机器学习(Automatic Machine Learning, AutoML)应运而生,它能自动完成算法和超参的选择。对于机器学习工程师来说,AutoML 能将他们从重复劳动中解脱出来;对于机器学习菜鸟来说,再也不用担心所选的模型不 work、超参不收敛,所需要做的只是接收训练好的模型。


AutoML 如同倚天剑屠龙刀一般,使机器学习工程师功力大增,但这样一件利器在不久之前似乎知晓的人并不多,2017 年 5 月 18 日,谷歌开发者大会(I/O)以“学会学习”(learning to learn)为口号,才将 AutoML 推到更多人的视野中来。其实,自动调参的工作早在 20 世纪末 21 世纪初就已经出现,每年的机器学习和人工智能的各大顶会上也频繁出现 AutoML 的身影。自 2014 年起,每年来自德国弗莱堡大学的 ML4AAD(Machine Learning for Automatic Algorithm Design)小组,均会在机器学习顶级会议 ICML 上组织 AutoML 的 workshop,这是来自全球的 AutoML 工作者集中交流的舞台。近年,谷歌、MIT 等世界知名企业高校也纷纷发表文章,加入到此领域中。


既然 AutoML 发展了多年,也不能光打雷不下雨,AutoML 的产品早已上线,auto-weka[1](2013年)、auto-sklearn[2](2015年) 是其中的代表,这两个工具均是 ML4AAD 组的产品。此小组的 leader 是 Frank Hutter 博士,此人博士期间的研究方向即是 AutoML,但是大多成果均和自动超参选择有关,博士毕业后转战贝叶斯优化领域,为 SMAC 算法的主要作者,之后成功的将贝叶斯优化技术应用在 AutoML 领域,不断推出成熟的 AutoML 产品,可谓根正苗红。


本文就按时间为顺序,以成果为线索,分别对 auto-weka、auto-sklearn 这两大自动机器学习工具,以及谷歌大脑和 MIT 在今年 ICLR 上发表的工作进行介绍。其中,详细介绍 auto-weka、auto-sklearn 和谷歌大脑的工作,简略介绍 MIT 的工作。


从非梯度优化算法走向全自动机器学习,以及 Auto-WEKA:帮你选择分类器的分类器


贝叶斯优化是非梯度优化的代表,因为不需要知道梯度信息,也不需要优化问题,具有良好的数学性质,所以适用范围比梯度优化更加广泛,常常被用来求解复杂的优化问题。


贝叶斯优化与 autoML 的两大工具 auto-weka、auto-sklearn 有着密不可分的关系。机器学习能自动化的原因在于其算法过程遵循固定的步骤,一般来说为数据处理、特征选择、模型选择和超参优化。Auto-weka 和 auto-sklearn 中,便将机器学习过程归约成了算法选择和超参优化(Combined Algorithm Selection and Hyper-parameter optimization,CASH)问题。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

图1:auto-weka 算法选择树状图


CASH 用一个树形结构(如图1 所示)刻画机器学习中算法选择和超参设置的步骤,每一种算法的组合和超参的选择对应为一个采样,用 k 折交叉验证的错误率作为评价指标。SMAC 是基于随机森林的贝叶斯优化算法,结构和优化设置上均契合 CASH 问题,当仁不让的肩负起优化 CASH 的责任。SMAC 也出色地完成了这一任务,在ChaLearn AutoML challenge 竞赛中,auto-sklearn 分别获得了 auto 单元与 tweakathon tracks 单元的冠军。


Auto-weka 和 auto-sklearn 分别对应了 java 和 python 环境,两者的调用也十分简单,如图 2、3 所示。Auto-weka 有可视化界面,只需轻点鼠标就能完成训练工作,auto-sklearn 也仅需数行代码便可构建可用的模型。操作如此简单,还不用担心训练后的模型不 work,是不是很值得上手试验一番?


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

图2:auto-weka 可视化界面


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

图3:auto-sklearn 调用代码


AutoML 新方向:谷歌、MIT 用强化学习自动生成 CNN、RNN 等架构


将 AutoML 归约成一个优化问题,然后用非梯度优化算法直接求解,是通向自动机器学习的一种思路。ICLR 2017上谷歌大脑的工作“Neural Architecture Search with Reinforcement Learning”[3]结合深度学习和强化学习,给我们提供了另外一种解决此问题的方法。


1. 谷歌大脑:用强化学习生成子网络


在谷歌大脑的工作中,待生成的神经网络被称为子网络,子网络中每一层的结构被看作是时间序列上某一个时刻的输出结果,这样一个 controller(用一个 RNN 网络来表示),就可以用来生成子网络每一层上的结构(图4 所示),子网络训练后在验证集上的准确率作为该子网络的评价。


于是,问题就转化为优化 controller 的权重,使其能生成子网络的准确率尽可能大。但是,优化 controller 权重时梯度无法直接获得,此时需要借助强化学习方法获得梯度。如果将 controller 对每一层的结构预测视为一个动作,这样准确率就可以视为一组动作之后的奖赏值,可用 REINFORCE 规则估计出 controller 的梯度,用于更新权重生成下一个子网络。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

图4:controller 生成子网络示意图


值得注意的是,每个子网络训练的计算开销都十分巨大,此工作中采用了异步并行的方法加速子网络的训练,这样就大大增加了对计算资源的需求,在 CIFAR-10 上生成 CNN 结构的实验中,谷歌大脑便使用了 800 个 GPU 来完成训练工作。在实验中,此方法被用来自动生成 CNN、RNN 等网络结构,生成的网络泛化能力与人工设计的网络结构相当,但是规模要略小于人工网络,说明了方法的有效性。


同时,此方法在生成子网络时需要预先设定好网络的深度(controller 的步数),而且每一层中结构也是从预先给定的候选结构中选择,所以欠缺了生成网络的灵活度。


2. MIT:用 Q-learning 生成 CNN 


无独有偶,同在 ICLR 2017 上 MIT 的研究者,在“Designing Neural Network Architectures using Reinforcement Learning” [4]中,也利用强化学习技术自动生成了 CNN 结构。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

图5:用 Q-learning 生成 CNN 示意图


此工作也是通过逐层生成的方式得到网络结构,与谷歌大脑不同的是,在此工作中,将前一层的网络结构视为一个状态,将预测下一层的结构视为一个动作,将网络在验证数据集上的准确率视为奖赏值,用 Q-learning 的方法不断完善 Q 函数,最终给出验证正确率高的动作预测,生成泛化性能好的网络结构。


让机器学会学习,让机器学习工程师更有价值


诸如 Auto-sklearn 的工具数年前就已经问世,但却没有被机器学习科学家广泛使用,其中一个原因是,模型的好坏很大程度取决于训练模型之前对数据的清洗工作。正如 Keras 之父 Francois Chollet 所说:“数据清洗工作很难自动进行,它通常需要专业领域的知识以及对工程师想要实现的工作有明确且高度的理解。”


因此,即使在算法和超参选择上做得足够出色,AutoML 工具得到的还仅是一个好的模型,并非足够好的模型。自然,这样的结果是不能令精益求精的机器学习科学家满意的。深度网络的出现改变了这一现象,谷歌大脑在其 ICLR 2017 论文中指出:“深度网络已经成功将机器学习范式从特征设计转向网络结构设计。”


摆脱了数据清洗的困扰,AutoML 似乎能在其擅长的结构搜索上挣脱束缚,大放异彩。其实不然,AutoML 的搜索依赖于对网络结构或算法组合的评价,当前的大部分工作中均将 k 折交叉验证错误率作为评价准则,结构和算法稍作改变均要重新训练,时间和计算开销十分巨大,导致搜索不够彻底,也会影响 AutoML 的效果,以至于谷歌大脑在其工作中“大动干戈”,使用了 800 个 GPU 完成加速模型训练工作。如何在模型发生变化时消除计算冗余,高效地得到模型的评价指标,也是 AutoML 亟待解决的问题。


AutoML目前面临诸多困难,但是随着 GPU 的大规模使用,新一代计算设备 TPU 的出现,硬件性能大幅增长,在技术上,深度学习的成熟和强化学习的发展也为 AutoML 注入了新活力。


让机器学会学习才是 AutoML 的终极目标,每向此目标靠近一步,均是机器学习技术的突破。一旦困难得以解决,AutoML 的实现将解放广大机器学习工程师的劳动力,大幅降低机器学习的门槛。但是如 Francois Chollet 所说,“机器学习工程师的工作不会消失,相反,工程师将在价值链上走高”,这也是 AutoML 魅力所在,它体现了机器学习工程师的价值,这点也吸引着工程师们为之不断奋斗。 


文章转自新智元公众号,原文链接

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2天前
|
机器学习/深度学习 监控 算法
LabVIEW使用机器学习分类模型探索基于技能课程的学习
LabVIEW使用机器学习分类模型探索基于技能课程的学习
|
3天前
|
机器学习/深度学习 数据采集
构建高效机器学习模型的最佳实践
【5月更文挑战第11天】 在数据驱动的时代背景下,机器学习已经成为企业与研究者解决复杂问题的重要工具。本文将探讨构建高效机器学习模型的关键步骤,包括数据预处理、特征工程、模型选择与调参、以及性能评估。我们将深入分析这些步骤的重要性,并提供实用的技巧和最佳实践,以助读者提高模型的预测能力与泛化性能。通过案例分析和经验总结,本文旨在为从业者提供一套系统的方法论,帮助他们在面对各种机器学习项目时能够更有效地设计和实现解决方案。
4 0
|
3天前
|
机器学习/深度学习 存储 算法
【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
【5月更文挑战第11天】【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
|
3天前
|
机器学习/深度学习
【机器学习】噪声数据对贝叶斯模型有什么样的影响?
【5月更文挑战第10天】【机器学习】噪声数据对贝叶斯模型有什么样的影响?
|
3天前
|
机器学习/深度学习 数据处理
【机器学习】生成式模型与判别式模型有什么区别?
【5月更文挑战第10天】【机器学习】生成式模型与判别式模型有什么区别?
|
3天前
|
机器学习/深度学习
【机器学习】如何根据训练集大小选择分类器?
【5月更文挑战第10天】【机器学习】如何根据训练集大小选择分类器?
|
3天前
|
机器学习/深度学习 人工智能 算法
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
随着高通量测序技术的飞速发展和多组学分析的广泛应用,科研人员在探索生物学奥秘时经常遇到一个令人又爱又恼的问题:如何从浩如烟海的数据中挖掘出潜在的疾病关联靶点?又如何构建一个全面而有效的诊断或预后模型?只有通过优雅的数据挖掘、精致的结果展示、深入的讨论分析,并且辅以充分的湿实验验证,我们才能锻造出一篇兼具深度与广度的“干湿结合”佳作。
15 0
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
|
4天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的最佳实践
【5月更文挑战第10天】 在面对海量数据和复杂问题时,构建一个既高效又准确的机器学习模型显得至关重要。本文将探讨一系列实用的技术和策略,旨在帮助数据科学家和工程师优化他们的机器学习工作流程。从数据预处理到模型训练,再到最终的评估与部署,我们将深入讨论如何通过最佳实践提升模型性能,同时确保过程的可复现性和可扩展性。
|
4天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的五大技巧
【5月更文挑战第10天】 在数据驱动的时代,机器学习模型的性能往往决定了一个项目的成败。本文将深入探讨如何通过五个关键步骤——数据预处理、特征工程、模型选择、超参数调优以及模型评估与部署,来构建一个高效的机器学习模型。我们将提供实用的技术细节和策略,帮助读者避免常见的陷阱,并提升模型的准确性和泛化能力。无论你是机器学习新手还是有经验的开发者,本文的技巧都将对你构建更健壮、高效的模型大有裨益。
|
5天前
|
机器学习/深度学习 算法 异构计算
构建高效机器学习模型的策略与实践
【5月更文挑战第8天】 随着数据科学领域的不断进步,机器学习(ML)已成为解决复杂问题的重要工具。然而,构建一个既高效又准确的ML模型并非易事。本文将详细探讨在设计和训练机器学习模型时可以采用的一系列策略,以优化其性能和效率。我们将讨论特征工程的重要性、选择合适的算法、调整参数以及评估模型的有效性。通过这些策略,读者将能够更好地理解如何提升模型的预测能力并避免常见的陷阱。