作者

比谷歌AutoML快110倍,全流程自动机器学习平台应该是这样的

Scala 替换 Python、GPU 加速数据科学模型、新建 AutoML 库,一个超越 Google AutoML 的自动建模系统该怎么设计?自动数据清理、自动特征工程、自动建模与评估,刚入行的人也能玩转的 AutoML 平台该怎样搞定真实业务?本文满足你对极速建模的一切幻想。

昨日,机器之心联合 MoBagel(行动贝果) 举行了 AutoML 线下技术分享会,我们很荣幸邀请到两位来自硅谷的技术大咖,MoBagel 钟哲民与郭安哲,他们向我们介绍了全流程 AutoML 技术到底是什么,它能干什么,能做哪些极致优化。

在短短的半天中,可能并来不及探讨最深层次的技术问题,但分享会能告诉我们在 ML 的发展路径中,到底 AutoML 的哪些研究方向是令人振奋的、哪些工程技术是必不可少的、哪些应用领域是非常有前景的。

线下分享会同时还举行了实战工作坊,数十位成功报名的体验者将现场尝试用 Decanter AI 快速做一个强力的机器学习模型。

极速与准确,超越 Google AutoML

MoBagel 在一些 Kaggle 挑战赛上公平对比了 Google AutoML 系统,包括回归分析聚类分析与时间序列分析等等。简单而言,Google AutoML 与 Decanter AI 会使用相同的数据源,并且在数据都不进行手动处理的情况下,观察两个系统的运行结果与时间。

「在准确度上,Decanter AI 在多个业务场景平均要高 10+百分点」,MoBagel CEO 钟哲民 表示准确度并不是最为显著的方面,训练速度会有较大的差异。他说:「在相同输入数据下,Decanter AI 的训练速度是该系统的 110 倍左右。

Decanter AI 与 Google AutoML 的效果对比,其中 R-Squared 为模型的确定系数,它越接近 1,模型对预测值的解释能力就越强。CPU-Hour 为模型的效率,拟合同样的数据,CPU-Hour 越低,系统的效率就越高。

根据 Google 官方数据,其 AutoML 系统背后的服务器池达到了 2208 块 CPU,但测试结果仍然比 Decanter AI 慢了 110 倍。对于机器学习模型来说,能越早看到结果,就能更早判断数据的好坏,从而加速模型迭代过程。

既然在效果和效率上能做到超越 Google AutoML 的性能,那么下面我们可以具体看看全流程 AutoML 以及 Decanter AI 到底有哪些令人惊艳的特性。

现场分享,从设计思路到体验

在一个多小时的分享中,我们能了解到全流程 AutoML 系统的设计思路及主要机制,也能了解到遗传算法在 AutoML 中的应用。MoBagel CEO 钟哲民说:「我发现大部分 AI 进展都以研究为导向,这些很厉害的算法都非常有优势,也非常复杂。但当它们具有这样的特性时,要把科研算法应用在正确的业务场景就会变的很困难。因此,我们做的自动机器学习技术希望帮助更快速与准确地完成 AI 应用。」

这是 Decanter AI 初衷之一,也是 AutoML 技术的目标。从最开始基于开源框架做一系列的整合与优化,重点关注自动化的模型搭建,到现在 Decanter AI 采用 Scala 语言重构整个系统,完善全流程的自动机器学习系统,MoBagel 在加速模型成熟为产品这个方向已经做出了很多工作。

MoBagel CEO 钟哲民:机器学习普及到每一张办公桌。

钟哲民在分享会上首次介绍了全流程 AutoML 系统的设计思路与历程,他表示最开始团队也是采用 Python 等开源工具与算法构建整个系统,当初的想法是集成更多好用的开源工具,让它们变得更简单与自动化,这是第一代产品。

后来与软银等公司合作的时候,钟哲民发现当前系统要应用到商业,会遇到一个瓶颈,系统需要更快速、稳定和准确。为此,MoBagel 开始使用 Scala 语言开发自己的 AutoML 套件,并最终将整个系统都用 Scala 改写了一遍。当这些改进与优化累积到一定程度后,MoBagel 就形成了自己完整的一套 AutoML 库,现在也正在尝试开放它。

就是这样一条优化路径,钟哲民说:「目前 Decanter AI 应用于销售预测、 精准营销、人事表现预测等领域皆有許多企业实时在生产环境使用中,不论是有没有数据科学背景,用户都能靠自己的能力落地,AI 的应用不再是无法掌控的黑盒子」

当然,在设计 Decanter AI 的过程中,也是有理论和工程两方面的考量。「在工程方面,我们希望最快地训练一个模型,而在理论方面,我们希望只用最少的尝试找到一个足够好的模型。」,MoBagel ML 总监郭安哲说。在工程上,除了前面采用 Scala 语言,郭安哲表示大规模并行训练、多模型联合搜索、多线程数据运算等都需要考虑。

MoBagel ML 总监郭安哲:使用演化算法解决贝叶斯问题,突破异质性超参数空间的限制性。

郭安哲后面重点介绍了 Actor 理论,它以比较正规的方式讨论了并行化。该理论主要提出了四种方法:第一是资源不要共享;第二是非同步信息;第三个是 location indepentent;第四是适当的隔离的机制。虽然它本身不是为自动机器学习设计的,但它对 AutoML 的系统设计非常重要。

在分享会的最后,味全的营业与财务主管李征也介绍了她的使用经验。「因为市场需求变化很快,且产品保质期不到一个月,味全面临着产销协调问题,过多生产造成库存水位高以致资源浪费,过少生产意味着缺货。」,李征说,「我们拿了一年的数据来训练,并期待通过 Decanter AI 精进产销问题。我发现随着特征数量的增加(影响变数的重要特征),预测准确率逐步提升达 90% 以上,对产销协调非常有帮助。」

李征表示,她本来是机械工程背景,但是也能快速地上手建模平台。所以,这就是全流程自动建模的优势,用户不需要统计或机器学习知识就能快速建模真实数据。「Decanter AI 真的能让人人都能成为数据科学家。」

Decanter AI 全流程自动建模

对于标准的数据科学处理流程来说,从预处理到建模,再到调参,中间涉及的处理过程非常繁杂。我们要小心翼翼地处理数据,从而构建干净的样本;我们需要仔细选择模型算法,从而获得不错的基本效果;同时,我们也要依据经验调调参,从而找到能接受的超参组合。所有这些,都要求数据科学家手动完成。

但是全流程的 AutoML 不一样,给定数据,我们坐等训练结果就行了。中间从数据清理到模型评估都可以自动完成,数据科学家可以着重在分析与决策,不用手动建立数十个实验来验证一个简单的假设。

MoBagel CEO 钟哲民称:「全流程 AutoML 本身不需要编程,全部通过可视化界面完成,Decanter AI 在底层会自动完成这一切。传统的方法论要经历 3 个月的过程,而现在只要 3 天,数据科学家就可以交出以往花 3 个月才能取得的成果。」

如上图所示,全流程 AutoML 主要分为四个模块。首先对于自动数据清理,Decanter AI 会完成一些数值填补、异常值查找或者数值的自动化统计处理。这些都是数据科学非常麻烦的地方,以往我们必须先理解数据然后才一点点提升数据状况。现在,交给自动数据预处理就好了,Decanter AI 会从统计和机器学习两个角度自动填补和处理异常值。

其次对于自动特征工程,Decanter AI 会自动选择重要的特征,并创建一些新的特征。不同的模型对于他的输入分布有不同的假设,例如深度学习对于其特征有线性假设,所以再处理类别型特征时,和 Tree-Based 模型就会不同。Decanter AI 可以针对数据集的特性,与不同模型自动建构合适的统计特征,如 One hot encoding/Label encoding,也会随机进行一些搜寻,自动产生新的特征,例如使用时间相关特征,或者组合特征。

现在输入数据已经确定了,第三步就需要自动建模数据了。这一部分承担了最为核心的运算,也是研究最多的领域。Decanter AI 能自动组合包含回归、聚类、分类、时间序列等共 60 多类机器学习算法,并使用交叉验证(Cross-validation),hold-out 以找到模型最合适的超参数建模方法。

「除了常规的自动建模,初版模型会不断迭代而叠加不同的模型——Ensemble-stacking Model。例如浅层模型擅长某方面,深度模型擅长另一方面,那么我们会找到最好的权重叠加这两种模型。」钟哲民说。

确定模型与超参的选择策略,再加上合适的损失函数,模型以及模型效果就会一轮轮迭代,直到评估出一个最优结果,自动化的建模与评估就差不多完成了。

目前很多 AutoML 系统都比较关注最后的自动建模,但前面的数据预处理与特征工程却是手动建模最麻烦的过程,忽略两者会带来不够友好的用户体验。因此只有全流程 AutoML,才能让绝大部分用户从采集数据到部署模型都不会「卡壳」。

当然,这四大自动化流程的背后还有很多底层支持。钟哲民表示,在 Decanter AI 全自动流程的背后,怎样自动分散计算资源、怎样设计分布式系统、怎样完成 GPU 加速、怎样配置训练预选都是需要考虑的,这些工程方面的稳定流畅是我们从超过 100 个海内外项目不断累积的成果。

Decanter AI 亮点新特性

Decanter AI 的目标在于构建快速、简单、准确、可解释的自动机器学习平台,它有很多引人注目的新特性。比如说首个自动化的 AutoML 时序建模及交叉验证方案、采用 Scala 代替 Python 作为底层语言及分布式计算、实现 100 倍率以上的算力加速、在处理海量数据的稳定度远胜于 Python 集群、采用伯克利团队参与共同研发的 AutoML Library 及自动数据清理、自动特征工程数据分析模块。

这里主要介绍 Decanter AI 的时序建模、Scala 语言与 AutoML 库,其它更多的新特性可以查阅平台官网 mobagel.com。

新颖的自动时序建模

对于数据分析领域,大部分开源算法很少针对时间序列数据,即使支持时序建模,其在可用性或稳定性上也都会存在一些问题。这很大一部分原因在于时序数据,尤其是业务上的时序数据还需要很多处理过程,直接用 ARIMA 这样的统计方法建模效果并不好。

针对这些问题,钟哲民表示:「我们会结合统计算法与机器学习算法,并加上时序数据该有的一些特性,从而优化自动数据建模过程。除此之外,针对前面的数据预处理过程、特征工程,Decanter AI 也会自动构建合适的时序特征。」

时序建模示意图。

注意,我们可不能小看了前面的时间序自动预处理和特征工程,目前对于时序特征的开源及商用软件选择并不多,包括 Google AutoML 工具也没有时序预测分析。钟哲民举了个例子介绍什么是时序特征,假设我们要完成纸巾回购预测,即如果当前购买了一次纸巾,那么需要预测下一次购买纸巾的时间是什么。

这里非常重要的是模型需要考虑之前数据的区段,到底是三个星期前能知道下次购买时间,还是三个月、三年,以及下次回购的时间区段以及频次(日期时间特征、lag 特征、window 特征、趋势特征等等)。要确定这样的时序跨度通常都需要人工手动确认,但 Decanter AI 的自动特征工程能自动切分合适的时间区间,从而准确地预测后续行为。

Scala 的强悍模型训练速度

机器学习算法绝大多数模型都是用 Python 编写,一般开发者采用 NumPy 与 Scikit-Learn 这样的工具包完成整个模型的搭建。以这种方式做原型及内部项目是没问题的,但要用于对外公开的业务中常常遇到稳定度、可靠度、可用性的问题,还需要更多的工程优化及经验累积。

如果是全流程 AutoML,那么我们肯定希望做出来的模型能直接用于实际业务。换而言之,AutoML 系统应该将这些工程优化都隐藏到底层。通过采用 Scala 语言,Decanter AI 相比以 R 或 Python 语言为主的系统,在模型训练速度上能有 10~100 倍以上的提升,并且在大数据计算中更加稳定。

「在 15 年的时候,我们第一版系统是基于 Python 完成的,当时遇到的问题在于,当数据体量非常大时,Python 的处理速度非常慢且不稳定,时常报错。」,钟哲民接着说,「因此我们用 Scala 重写了整个系统,并在算法层面、并行计算等架构层面做了非常多的优化,因此 Decanter AI 才有现在这么快的速度。」

当然 Python 也有很多开源的底层库,但钟哲民表示,这些开源算法会出现不稳定的情况,出错后要花大量的时间修正数据或开源库的问题。因此在做实际业务时,Decanter AI 的整个架构都用 Scala 改写,并获得更强的稳定性和数据场景的兼容性。总的来说,因为开源库维护成本高的特性比较适合用于內部一次性项目而非产长期生生产环境,Decanter AI 的 AutoML 库重点关注在追求稳定、准确、快速 这三大目标,对于实际商业场景上更加适用,毕竟沒有企业用戶想要为了新的 AI 应用每天陷入加班除錯的窘境。

AutoML 库

之前从 Python 转向 Scala 主要是架构层面的尝试,最近 MoBagel 从更细的角度优化 Scala,并开放了基于 Scala 的 AutoML 库。该软件库在使用上是开放的,用户都能申请调用 API。

钟哲民说:「我们发现越来越多的用户使用 Decanter AI 做系统上的串接,例如串接到 ERP 系统或 CRM 系统等等。所以,如果我们以库的方式提供一系列 API,那么整个流程的对接会更流畅一些,应用也更加快速。」此外,值得注意的是,在发布新版的 AutoML 库之后,Decanter AI 的训练速度可以快一倍,准确率也显著提升。

总的来说,因为开源库扩展性不够好,Decanter AI 的 AutoML 库重点关注在追求稳定、准确、快速的实际商业场景需求上更为适合。

工程经验分享谷歌AutoML
1
相关数据
深度学习技术

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

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

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

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

数据科学技术

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

数据清理技术

数据清理(data cleansing)指删除、更正数据库中错误、不完整、格式有误或多余的数据。数据清理不仅仅更正错误,同样加强来自各个单独信息系统不同数据间的一致性。专门的数据清理软件能够自动检测数据文件,更正错误数据,并用全企业一致的格式整合数据。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

聚类分析技术

聚类分析(CA)是一种典型的无监督学习方法,这种方法是根据对象的特点将它们分成不同的组。K-均值是应用最广泛的聚类方法,其它方法还包括 k-Medoids、分层聚类和 DBSCAN。期望最大化法(EM)也是聚类分析的一种解决方案。聚类分析在数据挖掘、市场调研、异常值检测等许多领域都有应用。另外,降维技术也是一类类似于聚类分析的无监督学习方法,其典型的代表有主成分分析(PCA)、线性判别分析和 Isomap。

遗传算法技术

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

交叉验证技术

交叉验证,有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。交叉验证的目标是定义一个数据集到“测试”的模型在训练阶段,以便减少像过拟合的问题,得到该模型将如何衍生到一个独立的数据集的提示。

回归分析技术

回归分析是一种用于估计变量之间的关系(当一个自变量变化而其它变量固定时,因变量会如何变化)的统计过程,在预测任务中有广泛的应用。回归分析模型有不同的种类,其中最流行的是线性回归和 逻辑回归(Logistic Regression)。另外还有多变量回归、泊松回归、逐步回归、脊回归(Ridge Regression)、套索回归(Lasso Regression)和多项式回归等等。随机梯度下降(SGD)就是一种起源于回归分析的常用方法,可用于控制复杂度。

聚类技术

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

机器之心机构

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

https://www.jiqizhixin.com/
推荐文章
暂无评论
暂无评论~