机器学习的平台化发展趋势

背景

机器学习在经过近些年的野蛮生长之后,其有效性已经被无数成功应用所验证,在这一点上已经不需要更多证明。在使用方法和常用模型方面也已经没有什么太新奇的东西了。例如在模型方面,经过实践检验过的模型基本还是LR和GBDT,以及这两者的一些变种和结合,例如FM、LR+GBDT等等;再例如在特征处理方面,常用的包括离散化、归一化、平滑等等。学术界对这些方面的进一步改进,从效果上来说就像在从95分到98分,对整个工业界应用来讲不是目前最重要的[1]。那么最重要的是什么呢?很有可能,最重要的是机器学习系统的平台化,以及围绕平台化展开的一系列工作。

什么是机器学习平台?

什么叫做“机器学习系统的平台化”呢?简单来说,就是要把机器学习系统做成一个简单易用的、更加通用的平台,让各种业务都能够方便地接入这个平台,从而享受到机器学习带来的红利。这里的业务,从大方面来说包括例如搜索、推荐等大业务,从小方面来说包括不同位置的推荐模块等小业务。说到平台,很容易和“大规模”这个词联系到一起,给人一种只有大规模才用得上平台的感觉。但其实不然,用不用得上平台的核心因素并不仅仅是数据量,而更是在于要使用机器学习的业务的多样性。如果你的数据量很大,但是只有一个地方在使用,例如某个模块的点击率预估,那么这个时候并不一定要做平台,只需要对这一个系统做充分地调优即可。但如果你想在更多的业务上使用机器学习技术的话,即使每个业务的数据量都没有达到海量,那么对每个业务分别走一套完整的机器学习系统流程也是成本很高的做法。这里的成本至少包括两个方面:开发成本和维护升级成本。

开发成本方面,因为多个业务很有可能用的都是同一套模型,甚至在样本和特征的采集处理流程上也会有比较大的重合,那么就有很多东西是可以复用的,这种情况下每一套业务都做一套开发显然就是很大的浪费。在维护升级方面,由于多个业务底层依赖的基础特征和模型都是类似的,那么在这种开发模式下,对这些数据和模型的升级和维护对应的工作量也会放大好多倍,显然也是一种浪费。这两种成本的产生,从软件工程的角度来说,其实就是违反了DRY原则[2]

那么平台化是如何解决这些问题的呢?回答这个问题之前,需要先了解在平台的模式下一个完整的机器学习流程是怎样的。为了方便理解,我们可以使用电商平台(例如天猫、京东等)的例子来做类比。想要使用机器学习技术的业务方可以看做是想要在电商平台上开店的小商家,而机器学习平台无疑就是电商平台了。作为一个商家,如果选择自己建网站开店,就好比每个业务自己搭建机器学习流程,显然是一个低效的选择。如果在电商平台上开店,平台会提供支付、订单管理、库存管理、店面建设、促销管理等等核心的功能,也就是“电子商务”中“电子”的部分。而商家需要负责的,就是“电子商务”中“商务”的部分,也就是和自己业务核心相关的部分,例如选择销售什么样的商品,决定使用什么样的促销策略,如何建设会员制度等等,而这其中的大部分,商家也不需要自己搭建实现,只需要通过平台提供的工具将自己的想法进行落地即可。

回到机器学习的业务中来,业务在接入平台之后,需要做的应该也仅仅是(或者说尽量是)和业务核心相关的部分,例如业务数据如何接入平台,决定使用什么特征,特征之间如何组合,使用什么样的模型(甚至模型也不用指定)等。而具体这些特征如何被抽取出来,和样本形成对应关系,又是如何进入模型训练的,训练时使用了什么参数配置,都是平台应该负责的东西,业务方都不用关心。如果类比“电子商务”这个词来造一个“智能业务”的词的话,那么平台负责的应该是“智能”的部分,而业务方负责的应该是“业务”部分。只有做到这样,才能让更多的业务使用到机器学习系统,享受到这个“大杀器”带来的便利,从而将机器学习的红利最大化。

上面提到的两种平台的类比关系可以用下图来简单表示:

构建机器学习平台的挑战

从上面的图可以看出,在机器学习平台的支持下,业务接入机器学习功能变得非常简单,在理想状况下,只需要点几个按钮,写一些配置文件就够了。但是俗话说得好:“天下没有免费的午餐”,业务方使用起来简单是因为将机器学习核心相关的部分都转嫁到了平台上面,由平台来实现。所以,平台面对的核心挑战就是如何如何提供足够的通用性,从而让各个业务都能够简单接入,而这显然不是一件简单的事情。这里面的核心挑战包括但不限于:

  • 不同业务数据格式和语义上的统一。不同业务涉及到的日志数据、业务数据在存储格式,更新方法等方面都可能存在着很大不同,这些数据从机器学习的角度来看涉及样本和特征两个大的维度。作为平台方,要求各个业务方将数据使用统一的方式存储更新显然是不现实的,那么就需要将通用的运算部分进行算子层面的抽象,同时对这种强异构性的数据进行多个维度的统一处理,才能保证后续流程的统一性和高效性。
  • 不同业务策略的统一表达语言。由于分处不同的业务领域,不同业务的策略(例如排序策略)有着不同的语言。例如商品详情页的推荐需要多考虑推荐商品和主商品的价格相关性,而在feed流推荐中又需要多强调时间上的新鲜性。那么如何用一套统一的DSL[3]将这些需求进行有效的组合表达,是决定能否建成机器学习的巴别塔[4]的重要因素。这一部分要求平台设计者具有高度的抽象和总结能力,如果某个业务的需求不能方便的被这个DSL所表达,那么这个业务就很难接入到平台中来。
  • 多业务场景下的在线/离线实验支持。效果评测和分流实验是任何算法系统中都不能缺少的部分,多业务场景下的评测和分流有着独特的挑战,例如实验之间可能出现相互影响的情况,所以需要设计能够支持多维度分层实验的在线实验平台[5]。而为了在不浪费流量的情况下对多个业务的策略做出评测,还需要建立一套合理的离线评测系统。

除此以外还有很多其他挑战,这些挑战多数都是围绕“异质性”、“大规模”这些特点展开的。但需要指出的是,在实现一个机器学习平台的时候,上面提到的平台层的东西不一定都要自己来做,一些机器学习核心组件的部分可以充分利用一些开源工具,甚至一些开放平台来做,例如Amazon、微软以及阿里的云服务都提供了机器学习的组件,那么公司内部需要实现的就是这些以外的部分,或者说是在这些平台提供的工具上再做进一步的封装和处理。这两者的区别,一定程度上有点像云计算领域“公有云”和“私有云”之间的区别,私有云牺牲了一定程度的通用性,但是由于只需要对企业内部服务,所以可能搭建更适合企业业务特点的架构和功能。二者孰优孰劣,还需要根据每个公司的业务特点来具体判断。

开源的野心

从上面的讨论可以看出,要想将机器学习的能力最大程度发挥,平台化可以说是必经之路,因为电商平台等其他平台的成功已经证明,只有平台才能成为技术的杠杆,将技术的能量最大化。

从这个角度再来看各个大厂为什么争相开源平台级框架级的工具,也就很容易理解了,因为平台和框架,既是行业的未来,一定程度上也是大厂门平台化发展的自然产物。但是开源对大厂们有什么好处呢?只是为了学雷锋做好事,让世界充满爱吗?为了深究大厂们的心路历程,不得不提到另一个领域的著名开源平台:安卓操作系统。

让我们回想一下安卓操作系统诞生的背景[6]。在安卓系统诞生之前,手机领域基本是没有太强烈的“操作系统”的概念的,一如计算机刚诞生,Windows出现之前的年代。每款手机都长不同的样子,系统的可定制性也非常的差,智能机时代看似遥遥无期。但是这时出现了打着开源旗号的安卓系统,大家可以随意使用,一下子让手机行业活跃了起来,后来的故事大家都知道了,开源的安卓系统已经为谷歌赚取了310亿美元的营收,220亿美元的利润,利润率高达70%[7]

俗话说“无利不起早”,这些开源系统以开源作为起点,但目的很有可能还是赚钱。安卓就是很好的例子,而且谷歌已经在用安卓的套路来运作TensorFlow了[8]。有了安卓的先例,相信国内外其他巨头们也都不会放过这个机会,这也就可以解释大家争相开源机器学习系统的原因了。

总结展望

人工智能的时代是否来到我们还不能确定,但是机器学习的时代的到来已经是确定无疑的。在当今的时代,对机器学习的利用程度可以看做是衡量一个组织技术先进性的一个重要指标。对平台建设和利用的重视程度一定程度上会决定一个企业的技术高度和业务效率,在这个群雄逐鹿的战场上,有人开始默默跟耘,有人已经亮出獠牙,鹿死谁手还未可知。但无论如何,对我们这些从业者来说,都是好事,因为这说明这个行业的春天已经彻底来到。

  1. 这么说并不是说这些细微的改进不重要,相反,当数据规模和业务规模足够大的时候,1%的提升也会带来很可观的收益。这里说的不重要意思是这通常来说不是最优先需要解决的问题。
  2. DRY == Don’t Repeat Yourself
  3. DSL == Domain Specific Language,可译为“领域特定语言”,指的是为某一领域设计的语言,目的是将这一领域中的操作进行统一抽象表达。例如SQL可看做是数据库领域的一种DSL。
  4. 据圣经记载,巴别塔指的是人类联合起来兴建希望能通往天堂的高塔。为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此失败。
  5. 在线实验平台的建设可参考google的经典文章:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation
  6. 笔者不是移动开发领域专家,此处的背景全凭不靠谱的记忆。
  7. 数字来源:http://tech.qq.com/a/20160215/007996.htm
  8. 用“谷歌 机器学习 安卓”作为关键字去搜索,你可以得到很多相关的新闻。

本文作者: 张相於(zhangxy@live.com),现任58集团转转事业部算法架构师,负责转转的搜索&推荐系统。曾任当当网推荐系统开发经理,多年来主要从事推荐系统以及机器学习相关工作,也做过反垃圾、反作弊相关工作,并热衷于探索大数据技术&机器学习技术在其他领域的应用实践。

原文发布于微信公众号 - 架构之美(beautyArch)

原文发表时间:2016-12-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏专知

如何构建一个AI:人工智能与混合现实的未来

【导读】本文是科技作家Drew Venegas撰写的一篇博文,讲述了机器学习的未来与混合现实。首先介绍了Waze公司彻底改变了GPS导航领域,并通过这个实例作者...

35216
来自专栏ATYUN订阅号

微软正在开发用于识别AI算法偏差的工具

微软正在开发一个工具来自动识别一个范围内的不同的AI算法偏差。将自动识别渗入机器学习的不公平现象是非常值得提倡的,它可以帮助企业利用人工智能,而不会无意中歧视某...

955
来自专栏前沿科技

中兴智能视觉大数据报道:人工智能与大数据的区别?

中兴智能视觉大数据报道:人工智能和大数据是人们耳熟能详的流行术语,但也可能会有一些混淆。人工智能和大数据有什么相似之处和不同之处?它们有什么共同点吗?它们是否相...

1895
来自专栏挖掘大数据

大数据分析步骤:十大步骤帮你有效使用预测分析算法

一个成功的预测分析项目不仅仅涉及软件部署,使用软件分析数据。越来越多的企业开始使用预测分析算法。了解下面这些步骤可以帮助你为分析项目打下坚实基础。

1875
来自专栏PPV课数据科学社区

解析 :跻身数据科学领域的五条职业规划道路

原文链接:http://www.kdnuggets.com/2017/02/5-career-paths-data-science-big-data-expla...

1073
来自专栏人工智能快报

如何防止机器人接管世界?

人工智能机器可以从他们行动的结果中进行学习来提高自己的能力,但专家说这种特性可能会导致 AI “不能被阻止”。 现在, 一组人工智能研究人员已经开发出了一个系统...

3204
来自专栏人工智能快报

Google的开源人工智能引擎预示着重大硬件变革

2015年11月9日,Google将其人工智能引擎(AI)作为开源项目发布到互联网上,作为最重要的创新项目之一,这显示了计算机软件行业正在发生着的变革。最近,互...

3056
来自专栏CDA数据分析师

大数据分析师:啥时候说Yes啥时候该说No?

早在20世纪90年代的美国沃尔玛超市中,就有“啤酒与尿布“的故事表现了大数据分析给企业带来的利益体现。这些年来大数据分析正在为企业带来巨大的变化。虽然越来越普遍...

1785
来自专栏PPV课数据科学社区

【观点】大数据时代社交图谱与兴趣图谱的融合

首先,我想问大家一个问题,这个词我们听了好长时间了,大数据,什么是大数据?这个词大概从去年,然后很多人就不停的听到,可能很多同学在跟硬件相关的厂商那边听到,所以...

36313
来自专栏新智元

【AI发展出人类无法理解的语言】Facebook关闭“失控” AI 项目

【新智元导读】 Facebook上个月引起广泛争议的“开发出人类无法理解”的沟通的智能对话机器人项目已经被关闭,因为研究者担心会“失控”。 根据digitalj...

3066

扫码关注云+社区