【机器学习】基于TensorFlow搭建一套通用机器学习平台

2017 年 12 月 14 日 产业智能官 ResysChina


TFX: A TensorFlow-Based Production-Scale Machine Learning Platform

本文介绍了基于tf搭建一套通用机器学习平台的关键部分和大体流程,但没有给出更详细的介绍。

是KDD 2017 Applied Data Science Paper,作者是谷歌的一大票人,这么多作者,按照经验来看应该是这个平台的主要开发人员。本文介绍的平台取名Tensorflow Extended,也就是说其核心组件都是使用tensorflow来完成的,可以理解为是基于tensorflow的一次二次开发。那么这个tfx和tf有什么区别呢?我的理解,区别主要在于tf提供的是一套功能,可以用来执行模型训练相关的一系列工作,而tfx是构建在tf基础之上的一个包含了机器学习整个生命周期的完整系统,这个系统不只包含了tf所提供的模型训练等机器学习相关功能,还提供了如数据校验和验证、模型热启动、线上服务、模型发布等重要功能。

这篇文章的意义并不在于手把手教你如何搭建一套tfx,而是阐释了搭建一套tfx系统所需要包含的主要组件,以及这些组件在实现时需要考虑哪些关键点,还有作者团队在这其中积累的经验教训。换句话说,更多的是一篇“授人以渔”的文章。对于希望动手实现一套类似tfx这样通用机器学习平台的人来说,具有着重要的指导意义。下面将我认为比较有价值的部分做一摘录和解读。

整体设计原则

tfx的核心设计原则包括以下几点:

  • 构建可服务于多个学习任务的统一平台。这要求系统具有足够的通用性和可扩展性。

  • 支持持续训练和服务。这两个事情看起来简单,但是如果考虑到其中的风险控制和自动化问题发现等细节的话,也并不简单。

  • 人工干预。如何优雅地让人参与整个流程,解决机器不好解决的问题,也是一个挑战。

  • 可靠性和稳定性。这里的可靠性和稳定性不只指的是服务不崩溃这个级别,还包括在数据层面发生问题的时候服务的效果依然可以保持稳定可靠。

数据分析、转换和验证

数据是机器学习系统的核心,如何处理数据决定了整个模型的质量,这部分作者介绍了数据分析、转换和验证方面的实现要点。

数据分析

数据分析指的是系统会对进入到系统的数据进行自动地统计分析,例如数据值的分布,特征在样本上的分布,每个样本上特征的分布等等。同时还支持对数据做分片统计,例如分别对正负样本的统计,对来自不同国家数据的统计,等等。这里的难点之一在于,在大数据和时效性要求下,很多数据统计的精确值是不好计算的,所以很多时候 需要使用流式近似算法来计算足够好的近似值。

数据转换

所谓数据转换,指的是从原始数据到可训练特征之间的种种数据变换,例如离散化、特征映射等等。里面还提到一些对稀疏特征的处理细节。

这部分比较重要的一点是保证训练和服务时数据转换的一致性,这两者不一致往往会导致模型效果变差。tfx的做法是将数据转换也作为模型的一部分输出,从而避免这种不一致的发生。换句话说,是通过在训练阶段和服务阶段复用同样的代码逻辑来保证一致性,而不是两个地方分别实现不同代码,这是很重要的一点。从我的经验来看,做不到这一点的话,不仅可能会出现特征转换不一致的问题,还会使得开发工作量增大,并且增加正确性验证的工作量。

数据验证

所谓数据验证,指的是进入系统的数据是否符合预期,是否存在异常。tfx的做法是引入一个数据schema的结构,用来指定对一份数据的约束,例如数据的类型、是否必填、最大最小值等等。这么做的目的是防止不符合预期的数据进入到模型训练阶段,影响模型的质量。有了这个schema,就可以对进入系统的数据做验证,进一步,还可以给出建议,尤其是在数据本身发生了变化,原有的约束应该发生改变的情况下,系统可以自动发现可能的变化,反馈给开发者,让开发者决定是否接纳系统提出的改进建议。下图是一个使用schema进行数据验证的例子,图中红色内容是验证后给出的建议。

上面提到的约束条件可以进行扩展,但是作者给出的建议是,过于复杂的约束常常难以给出适合的约束条件,而且如果数据发生变化会难以维护。出于是的数据验证更好地服务于系统,并且方便用户使用,下面是一些核心的设计原则:

  • 用户应该一眼就能看明白什么出了问题,以及问题的影响面。

  • 异常应该简单明了,并且用户明白如何处理。例如,你可以说某个特征值超出了某个范围,但不要说某两个特征的KL散度超过了阈值。

  • 根据数据的自然变化提示给出新的schema建议。很多数据会随着时间发生变化,所以需要考虑这一点。

  • 希望用户能够像对待bug一样对待数据异常。所以,tfx允许数据异常像bug一样被记录、追踪和解决。

用户还可以通过追踪异常的变化情况来发现特征工程方面的改进空间。

模型训练

模型训练这部分没有太多值得一提的,主要就是在用tensorflow做训练。值得一提的是模型的热启动(warm start)问题。热启动解决的是模型需要长时间训练才能收敛的问题,这个时候可以用一个已经训练好的模型,从中选取一些共同的特征权重,作为模型的初始状态,这样可以使得模型更快收敛,从而加快训练速度。为了使得这部分逻辑通用化,tfx将其进行了抽象开发,并进行了开源(可能是开源在了tf里,这部分没有验证)。

模型评估和验证

机器学习系统是个多组件复杂系统,这使得 bug有很多地方可能发生,而这些bug很多时候都不会导致系统崩溃,而且人又难以发现,所以需要对模型进行评估和验证。

定义“好”模型

作者将好的模型定义为可以安全提供服务(safe to serve)并且具有预期的预测质量(desired prediction quality)。其中安全提供服务指的是模型在服务时不会因为各种原因崩溃掉,例如占用太多资源或数据格式错误。而预测质量指的就是模型预测的准确率,这与业务的效果息息相关。

验证的敏感度

模型验证面临的一个挑战在于确定验证的敏感度。如果过于敏感,数据稍有波动就报警,会导致频繁报警,最终人们会忽略报警;而如果过于不敏感,则会漏掉问题。作者的经验是,模型一旦出问题一般会导致各种指标的重大变化,所以敏感度可以设的粗一些。当然这个比较业务相关,还是要根据自己 的业务来决定。

分片验证

除了对模型做整体验证,有时可能还需要对数据的某个分片做验证。例如针对男性用户的验证等等。这对于模型的针对性细致评估和优化很有意义。

其他

文章后面部分讲了一些服务层面性能优化和在Google Play上应用的一个案例,这个就不说了。对于文章细节有兴趣的可以搜原文去看。

本文作者:

张相於(zhangxy@live.com)现任转转推荐系统负责人负责转转的推荐系统。他正在招推荐算法和推荐架构工程师,负责转转推荐系统和机器学习系统的构建和持续





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


ResysChina 

                                                                       

背景


机器学习在经过近些年的野蛮生长之后,其有效性已经被无数成功应用所验证,在这一点上已经不需要更多证明。在使用方法和常用模型方面也已经没有什么太新奇的东西了。例如在模型方面,经过实践检验过的模型基本还是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集团转转事业部算法架构师负责转转的搜索&推荐系统。曾任当当网推荐系统开发经理多年来主要从事推荐系统以及机器学习相关工作也做过反垃圾、反作弊相关工作并热衷于探索大数据技术&机器学习技术在其他领域的应用实践。




机器学习系统丛林迷路指南


ResysChina  

注:本文的部分内容来源于作者之前的线上分享[1]和现场分享[2],在此基础上做了更为深入、更为系统化的阐述。


机器学习系统现在已经成为各种大数据应用中的标配,系统中没有机器学习环节都不好意思跟人打招呼。教你如何做机器学习的资料也有很多,但是本文有所不同,本文的重点在于告诉你不要如何去做,也可以说是机器学习中的“反模式”。


机器学习系统就如同热带雨林,极其容易迷失其中,踩到各种大坑,让你遍体鳞伤。本文摘选了我们团队在实践中踩过的一些坑,以及总结出来的经验教训,希望能够充当一份指南,减少大家迷失其中的几率。


0号坑:只见模型,不见系统。


机器学习系统的核心是各种机器学习模型,但并不能说模型是系统的全部,甚至都不一定是系统中最重要的部分。如果把一个完整的机器学习系统比喻成一辆汽车,那么模型可以算作是汽车的引擎,但是我们知道除了引擎以外,影响汽车最终性能的因素还有非常的多,从国外进口一台高级引擎并不代表就能造出世界一流的车来。


在机器学习系统中也是一样,要想模型充分发挥作用,需要在系统构建时具有充分的大局观意识,把模型当做系统的一部分来看待。在这里我们强调其中一点,就是在注意优化模型的同时,更要注意模型的提升是否对系统整体最终效果产生了提升,如果没有,那么要从系统中模型以外的部分找问题。


下面举一个广告系统中的例子来说明问题。我们知道广告展示的决策过程可以简单分为物料召回和排序两个部分,而机器学习经常被用来做排序部分的工作。但是最终的广告点击效果,不仅仅和排序模型的质量有关,同时和召回质量也有很大关系,如果召回的相关性不够好,那么无论怎么排序,最终效果都不会好。这个时候如果眼睛只看到模型效果,是很难找到真正问题所在的。


所以在开发系统的过程中,不能只关注模型本身的好坏,例如AUC之类的评测指标,更重要的是要关注模型对系统最终影响,以调优系统为目标,而不是仅仅调优模型为目标。如果只看到模型而看不到系统,很可能会做出指标漂亮但是没有实效的“花瓶系统”来。


1号坑:忽视模型过程和细节


很多人觉得机器学习模型是个神奇的黑盒子,只需要把样本和特征喂进去,就会有好用的模型参数生产出来,就像马三立相声中的牛肉罐头机器一样。这种黑盒子思维会让人习惯性地忽略模型的细节——例如某个参数为何是这个取值,这个取值是否合理,这个取值对应的样本数据是什么样子,等等——而是把精力都花在调一些外部参数之类的工作上。


这样做的后果是,如果模型效果不好,不一定能够通过调整外部参数来达到调优效果。例如,在样本收集处理过程中,掺入了一些噪音数据没有去除,那么这些噪音数据会影响最终的模型参数,进而影响模型效果。这种问题通过调一些诸如正则化参数之类的参数是无法解决的,真正有效的解决方法是深入的具体参数中,找到表现异常的参数,然后深入到该参数对应的正负样本及其特征,这样逐层渗透地查找问题。典型的LR模型作为当今最流行的模型,很多人只看到了训练速度和扩展性这些优点,而没有充分利用模型简洁性这一特点。LR简洁的参数形式非常适合使用上面描述的问题查找方法来定位问题。


当然,上面这个颇为复杂的查找流程,如果没有趁手的工具帮助,是很难通畅执行的。所以需要构建一套可视化工具,来辅助这个过程。具体地说,以LR模型为例,这个系统要能够支持:对于每个预测的case,能看到起作用的参数及其取值,能看到参与训练这个参数的样本以及特征细节,等等。有了这样一套系统,可能只需要点几下鼠标就能够定位到问题,降低了查找问题的难度,提高了使用的积极性,从而有利于系统的持续提升。


所以,对于机器学习模型,要敢于破除“黑盒迷信”,对其进行“解剖”,有针对性地优化和查找问题,通过把控训练过程细节来把控最终模型。


2号坑:不注重样本精细化处理


大家都知道样本是机器学习模型的“食物”,直接关系到模型效果的好坏。但是很多情况下,我们对待样本的态度并没有足够认真,没有像在乎特征那样在乎样本的质量。以二分类问题为例具体来讲,有两种情况会比较常见。


第一种情况,是对负样本的界定不够细致。负样本的含义一般来说是曝光但是未点击的样本,但是“曝光”是一件需要仔细琢磨的事情。最粗暴的方式是用服务器后台日志中的数据作为曝光,但是这样做会带来一个显然的问题,就是日志中的item不一定全部真正“曝光”,也就是不一定真的被用户看到了。更好的方式是通过页面埋点来记录真正曝光的东西,但是这种方法也会有问题,那就是即使页面上曝光了,用户也不一定真正看到了,或者说用户的眼睛不一定扫到了曝光的区域,毕竟页面那么大,用户的注意力不一定在哪里。针对这种情况一种解决方法是把最后一个被点击的商品以上的作为“真正曝光”的,因为用户既然点击了这一个,那么可以认为这个以上的用户都是看到了的。


第二种情况,也是更底层的一个问题,就是对样本这个概念的理解不到位。统计机器学习的根本思路是根据历史行为学习模式,从而预测未来。所以“样本代表历史”是很容易被接受的定义,但是在实际工作中,更好的样本代表的应该是“我们希望的历史”,而不一定是“真实的历史”。那么“我们希望的历史”和“真实的历史”之间差异在哪里呢?


举一个电商系统的例子。在电商系统的访问记录中,有这么三种类型的数据:

  1. 有明确购买意图用户的数据

  2. 随便逛逛用户的数据

  3. 各种作弊用户或爬虫的数据


这三种用户的行为模式是不一样的,第一种目标明确,浏览的商品关联性强;第二种目标不明确,看的东西相对发散;第三种在规律上明显与正常人不同。这三种类型的数据夹杂在一起,格式完全相同,不做专门的分析是无法区分开的。三种数据混在一起进入模型训练,当然也会得出一个模型,这个根据“真实数据”训练出来的模型,其中的参数都在尽量拟合这三种数据的混合体。但是让我们现在停下来想一想,我们训练模型出来,真正希望服务的用户是哪种用户?第三种肯定不是,第二种可能是,第一种一定是。如果我们真正希望服务的用户只是第一种用户,但是训练数据中包含了另外两种,那么第一种用户的体验一定会受到影响。而如果我们只用第一种用户的数据训练模型出来,那么这种“量身定做”的模型对目标用户的效果一定是更好的。根据我们的实践经验证明,无论是AUC指标还是上线效果,都是有明显提升的。


举这两个例子,目的是提醒大家,除了特征工程,样本工程也同样重要,在某些情况下甚至会更重要。所以在进行训练之前,以及模型调优的过程中,都要仔细思考样本是否真正反映了你的需求,有必要时要对样本做针对性选择。


3号坑:过于依赖算法


机器学习系统的核心是模型和算法,基于模型和算法的可扩展性也是机器学习系统的核心竞争力之一。但是这并不代表系统中的每个环节都一定要用算法来处理,完全摒弃非算法的、甚至手工的方法。很多机器学习系统中都会有一些核心的基础数据,这些数据的数据量谈不上海量,但是纯手工处理也是有一定工作量的,这个时候人们第一反应往往是用算法去处理这些数据,但是有的时候简单粗暴的方法才是真正有效的方法。


我们在构建当当的机器学习系统时,需要对图书文本做一个主体模型聚类,在此之前需要得到一份“干净”的原始文本数据。所谓“干净”数据指的是去除了诸如SEO词、商家乱填写的内容等等之后的一个类似词表的数据。为了达到去除噪音词的目的,我们尝试过很多方法,简单的高级的都试过,都有效果,但都达不到我们要的效果。经过ROI衡量,我们决定人工来处理这些数据,大概花了三个人一周左右的时间,人工处理之后,效果确实非常好。


这个例子并不是在宣传反算法,而是说要根据具体的问题选择合适的方法。这个问题为什么可以用人工方法去做呢?原因有很多,其中之一就是这个数据的变化幅度非常小,人工处理一遍之后可以用很久,如果是一份每天在变的数据显然就不适合用人工来做了。这个问题或许存在更高级的算法可以解决,但是考虑到数据的不变性,以及整体的ROI,从工程角度来讲还是手工比较合算。

所以说,即使是在机器学习系统这种整体比较高大上的系统中,也要具体问题具体分析,需要撸起袖子搬砖的时候,该搬就得搬。


4号坑:核心数据缺乏控制


从数据流的角度来看,机器学习系统中的数据要经过样本收集、特征生成、模型训练、数据评测等等这样一个流程,在这样一个比较长的流程中,不一定每个环节都是自己可控的,那么在那些不可控的环节,就有可能出现风险,而更可怕的是,由于数据控制在别人手里,出现了问题自己还不知道。


以样本收集为例,在大公司里,这样的工作很可能是由统一负责日志收集的平台部门来做的,而算法团队只要拿来用就可以了。这种做法是把双刃剑,好处很明显,就是减轻了算法团队的负担,但是也会带来隐患,就是你拿到的数据不一定真的是你要的数据。


正确的数据只有一种,但是错误的数据却有很多种错误方法。在样本收集方面,前台发送过来的曝光数据也存在着多种可能性,例如可能是缓存起来的数据,也有可能是用来做SEO的数据,等等。这些数据在发送方来看,都是合理的数据,但对于算法模型来看,都不是用户真正看到的数据,而用户真正看到的数据才是我们真正想要的数据。那么作为这份数据的使用方,算法模型很有可能就会受到这种错误数据的影响。最可怕的是,这种错误并不是那种能让程序崩溃的错误,让我们能在第一时间发现,而是完全隐藏在正常数据中,只有你栽了跟头返回来找问题时或许才能发现。


这种错误数据出现的原因是什么呢?并不是一定日志收集团队不负责任,关键在于收集日志的团队不使用日志,或者说出数据的人不用数据,那么就很难要求他们来保证数据的质量。这种分离的状态对于模型算法这种高度依赖数据的应用是有风险的,所以最好能够加强这部分数据的控制能力,如果不能完全自己来做,那么就要有对应的监控机制,做到有问题能及时发现、及时处理,而不是完全交给别人,自己只管拿来用。


5号坑:团队不够“全栈”


全栈工程师是近年来很火爆的一个概念,在机器学习这样一个复杂系统中,每个人都做到全栈未必现实,但是有一条基本要求应该努力做到,就是团队级别的全栈。


机器学习系统的团队一般主要由算法工程师和系统工程师组成,往往会忽略其他角色,比较典型的就是掌握前端技能的工程师。前端技能在机器学习系统中有很重要的作用,例如在效果评测时的可视化展示方面,但是更重要的是,能够一定程度上加强对数据流程的控制能力。例如在上面那个坑的例子中,说到前端曝光收集的问题,如果团队中没有熟悉前端技术的人,是很难找到这种数据发送的隐藏问题的。


当然,技术全栈只是解决问题的手段,更重要的是能关注全部系统的全局性思维。


6号坑:系统边界模糊/巨型系统


机器学习系统与其他软件系统相比,有一个显著的 特点,就是它是建立在实验性、探索性开发的基础上的。尤其是在初次搭建系统的时候,很难做到在完整设计的指导下开发,而大多是一边探索尝试一边开发,到最后达到上线要求的时候,系统也就随之成型了。


但是这样构建出的系统,有个很大的问题,就是很容易做成一个边界模糊、模块耦合、结构复杂的“巨型系统”,这种系统的典型特征包括:

  • 模块间不可拆分,样本、特征、训练等步骤都偶合在一起。

  • 很多实验性、探索性代码遍布其中,搞不清楚哪些在用,哪些已失效。

  • pipeline特别长,其中包括一些可能已经无用的流程。


为什么会出现这样的系统呢?重要原因之一就是前面提到过的,机器学习系统的探索式的本质。在刚开始做系统的时候,可能样本处理、特征处理这些都比较简单,所以就都写在了一起。随着各个流程处理的精细化、复杂化,每个步骤都在变复杂,但是由于这种变化是在慢慢发生的,很容易形成“温水煮青蛙”的效应,导致系统慢慢变得不可控,从技术债的角度来讲,系统就是在慢慢地、不知不觉地欠债,而且是利息很高的债。


这样的系统必然是难以维护、难以优化的,解决的方法就是逐步的重构,或者借鉴一些成熟的系统架构,然后再做适合自己的本地化。但这其中最关键的,还是要有一颗架构师的心,能够时刻审视自己的系统,评估其健康状况,并适时做出改变。关于机器学习系统技术债的更多详细讨论,可参见这篇文章[3]或这篇文章[4]。


7号坑:不重视基础数据架构建设


数据是机器学习系统的血液,这里面包括各种样本数据,原始特征数据,处理后的特征数据,支撑数据等等,那么提供这些数据的系统和架构就好比循环系统,循环系统的循环、代谢能力直接决定了这个系统的健康程度。


机器学习系统在构建初期,对待各种数据的态度往往是辅助性质的,认为这些数据只是为了模型服务的”燃料“,而没有把它们本身作为严肃的子系统来对待,所以这些数据的架构往往缺乏设计,大多比较随意,可能会有很多难以复用“一次性”代码。这在初期冲模型效果的时候似乎是没有问题的,但是到了系统搭建起来之后,需要频繁地对各种数据进行调整、尝试的时候,如果没有经过精心设计的数据架构支持,每次数据调整都会非常耗费精力,工作量可能不亚于重新出一遍数据。尤其是在系统上线之后,修改数据变得不能那么随意之后,问题就更加严重。


这是一个严肃而复杂的问题,也不是一两个简单方法就可以解决的,而是需要从数据源开始做仔细的设计,设计时充分考虑数据可能的用法,并留有一定扩展性,保证数据的可用性和可探索性。具体实践起来可以考虑微服务的做法,微服务是个性化推荐领先的Netflix公司最早提出并实践的概念,它们实践的场景也是围绕个性化推荐展开的。其中一个比较有趣的例子,是他们构建了一套“特征时光机”系统[5],以微服务的形式把不同时间维度的数据呈献给算法和研究人员,就好像拥有时光机一样,能够在不同时间中容易穿梭,获取数据。此外,在通用的数据基础架构方面,可以参考Stitchfix的做法[6],其核心是将数据流程根据职责进行划分,以求达到最高的团队协作效率。


总结


机器学习系统的坑远不止这几个,但是希望通过这几个代表性的坑,能够让大家意识到,从课本上的模型到实践中的系统,中间有非常多的工作需要做。做出一个成功的机器学习系统,也不仅仅是调调模型,跑跑算法这么简单。对这方面有兴趣的同学欢迎一起讨论。


参考资料:



[1] http://www.csdn.net/article/2015-10-16/2825925

[2] http://www.top100summit.com/think/10785

[3] http://research.google.com/pubs/pub43146.html

[4] https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf

[5] http://www.tuicool.com/articles/2qu6Bbf

[6] http://multithreaded.stitchfix.com/blog/2016/03/16/engineers-shouldnt-write-etl/




本文作者:

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





7步让你从零开始掌握Python机器学习!


来源:1024深度学习 


这篇文章旨在通过7个步骤,将最少的机器学习知识转化为知识型实践者,所有这一切都在使用免费的材料和资源。这个大纲的主要目标是帮助你通过许多可用的免费选项; 有很多,可以肯定的,但哪些是最好的?哪个互补?使用所选资源的最佳顺序是什么?


首先,我假设你并不是以下方面的专家:

  • 机器学习

  • Python

  • 任何 Python 的机器学习、科学计算或数据分析库

如果你对前两个主题有一定程度的基本了解就更好了,不了解也没有关系,提前花一点点时间了解一下就行了。


第一步:基本 Python 技能

如果你打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。幸运的是,Python 是一种得到了广泛使用的通用编程语言,加上其在科学计算和机器学习领域的应用,所以找到一个初学者教程并不十分困难。你在 Python 和编程上的经验水平对于起步而言是至关重要的。


首先,你需要安装 Python。因为后面会用到科学计算和机器学习软件包,所以建议你安装 Anaconda。这是一个可用于 Linux、OS X 和 Windows 上的工业级的 Python 实现,完整包含了机器学习所需的软件包,包括 numpy、scikit-learn 和 matplotlib。其也包含了 iPython Notebook,这是一个用在许多教程中的交互式环境。推荐安装 Python 2.7。


如果你不懂编程,我建议你从下面的免费在线书籍开始学习,然后再进入后续的材料:

  • Learn Python the Hard Way,作者 Zed A. Shaw:https://learnpythonthehardway.org/book/

如果你有编程经验,但不懂 Python 或还很初级,我建议你学习下面两个课程:

  • 谷歌开发者 Python 课程(强烈推荐视觉学习者学习):https://www.youtube.com/playlist?list=PLfZeRfzhgQzTMgwFVezQbnpc1ck0I6CQl

  • Python 科学计算入门(来自 UCSB Engineering 的 M. Scott Shell)(一个不错的入门,大约有 60 页):

    https://engineering.ucsb.edu/~shell/che210d/python.pdf


如果你要 30 分钟上手 Python 的快速课程,看下面:

  • 在 Y 分钟内学会 X(X=Python):

    https://learnxinyminutes.com/docs/python/

当然,如果你已经是一位经验丰富的 Python 程序员了,就可直接跳过。不过,我也是建议常使用 Python 文档:https://www.python.org/doc/


第二步:机器学习基础技巧

KDnuggets 的 Zachary Lipton 已经指出:现在,人们评价一个「数据科学家」已经有很多不同标准了。这实际上是机器学习领域领域的一个写照,因为数据科学家大部分时间干的事情都牵涉到不同程度地使用机器学习算法。为了有效地创造和获得来自支持向量机的洞见,非常熟悉核方法(kernel methods)是否必要呢?自然不是。就像几乎生活中的所有事情一样,掌握理论的深度是与实践应用相关的。对机器学习算法的深度了解超过了本文探讨的范围,它通常需要你将非常大量的时间投入到更加学术的课程中去,或者至少是你自己要进行高强度的自学训练。


所幸的是,对实践来说,你并不需要获得机器学习博士般的理论理解——就想要成为一个高效的程序员并不必要进行计算机科学理论的学习。


人们对吴恩达在 Coursera 上的机器学习课程内容往往好评如潮;然而,我的建议是浏览前一个学生在线记录的课堂笔记。跳过特定于 Octave(一个类似于 Matlab 的与你 Python 学习无关的语言)的笔记。一定要明白这些都不是官方笔记,但是可以从它们中把握到吴恩达课程材料中相关的内容。当然如果你有时间和兴趣,你现在就可以去 Coursera 上学习吴恩达的机器学习课程:https://www.coursera.org/learn/machine-learning

  • 吴恩达课程的非官方笔记:

    http://www.holehouse.org/mlclass/

除了上面提到的吴恩达课程,如果你还需要需要其它的,网上还有很多各类课程供你选择。比如我就很喜欢 Tom Mitchell,这里是他最近演讲的视频(一起的还有 Maria-Florina Balcan),非常平易近人。

  • Tom Mitchell 的机器学习课程:

    http://www.cs.cmu.edu/~ninamf/courses/601sp15/lectures.shtml

目前你不需要所有的笔记和视频。一个有效地方法是当你觉得合适时,直接去看下面特定的练习题,参考上述备注和视频恰当的部分,


第三步:科学计算 Python 软件包概述

好了,我们已经掌握了 Python 编程并对机器学习有了一定的了解。而在 Python 之外,还有一些常用于执行实际机器学习的开源软件库。广义上讲,有很多所谓的科学 Python 库(scientific Python libraries)可用于执行基本的机器学习任务(这方面的判断肯定有些主观性):

  • numpy——主要对其 N 维数组对象有用

    http://www.numpy.org/

  • pandas——Python 数据分析库,包括数据框架(dataframes)等结构 http://pandas.pydata.org/

  • matplotlib——一个 2D 绘图库,可产生出版物质量的图表 http://matplotlib.org/

  • scikit-learn——用于数据分析和数据挖掘人物的机器学习算法

    http://scikit-learn.org/stable/

学习这些库的一个好方法是学习下面的材料:

  • Scipy Lecture Notes,来自 Gaël Varoquaux、Emmanuelle Gouillart 和 Olav Vahtras:

    http://www.scipy-lectures.org/

  • 这个 pandas 教程也很不错:10 Minutes to Pandas:http://pandas.pydata.org/pandas-docs/stable/10min.html

在本教程的后面你还会看到一些其它的软件包,比如基于 matplotlib 的数据可视化库 Seaborn。前面提到的软件包只是 Python 机器学习中常用的一些核心库的一部分,但是理解它们应该能让你在后面遇到其它软件包时不至于感到困惑。下面就开始动手吧!


第四步:使用 Python 学习机器学习

首先检查一下准备情况

  • Python:就绪

  • 机器学习基本材料:就绪

  • Numpy:就绪

  • Pandas:就绪

  • Matplotlib:就绪

现在是时候使用 Python 机器学习标准库 scikit-learn 来实现机器学习算法了。

scikit-learn 流程图

下面许多的教程和训练都是使用 iPython (Jupyter) Notebook 完成的,iPython Notebook 是执行 Python 语句的交互式环境。iPython Notebook 可以很方便地在网上找到或下载到你的本地计算机。

  • 斯坦福的 iPython Notebook 概览:

    http://cs231n.github.io/ipython-tutorial/

同样也请注意,以下的教程是由一系列在线资源所组成。如果你感觉课程有什么不合适的,可以和作者交流。我们第一个教程就是从 scikit-learn 开始的,我建议你们在继续完成教程前可以按顺序看一看以下的文章。


下面是一篇是对 scikit-learn 简介的文章,scikit-learn 是 Python 最常用的通用机器学习库,其覆盖了 K 近邻算法:

  • Jake VanderPlas 写的 scikit-learn 简介

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/scikit-learn/scikit-learn-intro.ipynb

下面的会更加深入、扩展的一篇简介,包括了从著名的数据库开始完成一个项目:

  • Randal Olson 的机器学习案例笔记:

    http://nbviewer.jupyter.org/github/rhiever/Data-Analysis-and-Machine-Learning-Projects/tree/master/example-data-science-notebook/

下一篇关注于在 scikit-learn 上评估不同模型的策略,包括训练集/测试集的分割方法:

  • Kevin Markham 的模型评估

    https://github.com/justmarkham/scikit-learn-videos/blob/master/05_model_evaluation.ipynb


第五步:Python 上实现机器学习的基本算法

在有了 scikit-learn 的基本知识后,我们可以进一步探索那些更加通用和实用的算法。我们从非常出名的 K 均值聚类(k-means clustering)算法开始,它是一种非常简单和高效的方法,能很好地解决非监督学习问题:

  • K-均值聚类:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/04.2-Clustering-KMeans.ipynb

接下来我们可以回到分类问题,并学习曾经最流行的分类算法:

  • 决策树:

    http://thegrimmscientist.com/tutorial-decision-trees/

在了解分类问题后,我们可以继续看看连续型数值预测:

  • 线性回归:

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/scikit-learn/scikit-learn-linear-reg.ipynb

我们也可以利用回归的思想应用到分类问题中,即 logistic 回归:

  • logistic 回归:

    https://github.com/justmarkham/gadsdc/blob/master/logistic_assignment/README.md


第六步:Python 上实现进阶机器学习算法

我们已经熟悉了 scikit-learn,现在我们可以了解一下更高级的算法了。首先就是支持向量机,它是一种依赖于将数据转换映射到高维空间的非线性分类器。

  • 支持向量机:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/03.1-Classification-SVMs.ipynb

随后,我们可以通过 Kaggle Titanic 竞赛检查学习作为集成分类器的随机森林:

  • Kaggle Titanic 竞赛(使用随机森林):

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb

降维算法经常用于减少在问题中所使用的变量。主成份分析法就是非监督降维算法的一个特殊形式:

  • 降维算法:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/04.1-Dimensionality-PCA.ipynb

在进入第七步之前,我们可以花一点时间考虑在相对较短的时间内取得的一些进展。首先使用 Python 及其机器学习库,我们不仅已经了解了一些最常见和知名的机器学习算法(k 近邻、k 均值聚类、支持向量机等),还研究了强大的集成技术(随机森林)和一些额外的机器学习任务(降维算法和模型验证技术)。除了一些基本的机器学习技巧,我们已经开始寻找一些有用的工具包。我们会进一步学习新的必要工具。


第七步:Python 深度学习

神经网络包含很多层


深度学习无处不在。深度学习建立在几十年前的神经网络的基础上,但是最近的进步始于几年前,并极大地提高了深度神经网络的认知能力,引起了人们的广泛兴趣。如果你对神经网络还不熟悉,KDnuggets 有很多文章详细介绍了最近深度学习大量的创新、成就和赞许。


最后一步并不打算把所有类型的深度学习评论一遍,而是在 2 个先进的当代 Python 深度学习库中探究几个简单的网络实现。对于有兴趣深挖深度学习的读者,我建议从下面这些免费的在线书籍开始:

  • 神经网络与深度学习, Michael Nielsen:http://neuralnetworksanddeeplearning.com/

1.Theano   http://deeplearning.net/software/theano/

Theano 是我们讲到的第一个 Python 深度学习库。看看 Theano 作者怎么说:

Theano 是一个 Python 库,它可以使你有效地定义、优化和评估包含多维数组的数学表达式。


下面关于运用 Theano 学习深度学习的入门教程有点长,但是足够好,描述生动,评价很高:

  • Theano 深度学习教程,Colin Raffel:

    http://nbviewer.jupyter.org/github/craffel/theano-tutorial/blob/master/Theano%20Tutorial.ipynb

2.Caffe   http://caffe.berkeleyvision.org/

另一个我们将测试驱动的库是 Caffe。再一次,让我们从作者开始:

Caffe 是一个深度学习框架,由表达、速度和模块性建构,Bwekeley 视觉与学习中心和社区工作者共同开发了 Caffe。

这个教程是本篇文章中最好的一个。我们已经学习了上面几个有趣的样例,但没有一个可与下面这个样例相竞争,其可通过 Caffe 实现谷歌的 DeepDream。这个相当精彩!掌握教程之后,可以尝试使你的处理器自如运行,就当作是娱乐。

  • 通过 Caffe 实现谷歌 DeepDream:

    https://github.com/google/deepdream/blob/master/dream.ipynb

我不保证说这会很快或容易,但如果你投入了时间并完成了上面的 7 个步骤,你将在理解大量机器学习算法以及通过流行的库(包括一些在目前深度学习研究领域最前沿的库)在 Python 中实现算法方面变得很擅长。

原文:http://www.kdnuggets.com/2015/11/seven-steps-machine-learning-python.html

 


人工智能赛博物理操作系统

AI-CPS OS

人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。


AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。


领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:

  1. 重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?

  2. 重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?

  3. 重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?

AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:

  1. 精细种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。

  2. 智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。

  3. 高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。

  4. 不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。

  5. 边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。

AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:

  1. 创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;

  2. 对现有劳动力和实物资产进行有利的补充和提升,提高资本效率

  3. 人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间


给决策制定者和商业领袖的建议:

  1. 超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;

  2. 迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新

    评估未来的知识和技能类型;

  3. 制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开

    发过程中确定更加明晰的标准和最佳实践;

  4. 重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临

    较高失业风险的人群;

  5. 开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。


子曰:“君子和而不同,小人同而不和。”  《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。


如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!


新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。





产业智能官  AI-CPS



用“人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链






长按上方二维码关注微信公众号: AI-CPS,更多信息回复:


新技术“云计算”、“大数据”、“物联网”、“区块链”、“人工智能新产业:智能制造”、“智能农业”、“智能金融”、“智能零售”、“智能城市、“智能驾驶”新模式:“财富空间、“数据科学家”、“赛博物理”、“供应链金融”


官方网站:AI-CPS.NET



本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com




登录查看更多
7

相关内容

Sklearn 与 TensorFlow 机器学习实用指南,385页pdf
专知会员服务
129+阅读 · 2020年3月15日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
354+阅读 · 2020年2月15日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
谷歌机器学习速成课程中文版pdf
专知会员服务
145+阅读 · 2019年12月4日
如何用TF Serving部署TensorFlow模型
AI研习社
26+阅读 · 2019年3月27日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
已删除
将门创投
3+阅读 · 2018年4月10日
A Modern Introduction to Online Learning
Arxiv
20+阅读 · 2019年12月31日
Arxiv
8+阅读 · 2019年3月28日
Arxiv
8+阅读 · 2018年5月1日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
10+阅读 · 2018年3月23日
Arxiv
6+阅读 · 2018年2月7日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
如何用TF Serving部署TensorFlow模型
AI研习社
26+阅读 · 2019年3月27日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
已删除
将门创投
3+阅读 · 2018年4月10日
相关论文
A Modern Introduction to Online Learning
Arxiv
20+阅读 · 2019年12月31日
Arxiv
8+阅读 · 2019年3月28日
Arxiv
8+阅读 · 2018年5月1日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
10+阅读 · 2018年3月23日
Arxiv
6+阅读 · 2018年2月7日
Arxiv
4+阅读 · 2016年12月29日
Top
微信扫码咨询专知VIP会员