万字深析工业界机器学习最新黑科技

近日,全球最顶级大数据会议Strata Data Conference在京召开。Strata大会被《福布斯》杂志誉为“大数据运动的里程碑”,吸引了大数据、人工智能领域最具影响力的数据科学家与架构师参会。第四范式联合创始人、首席研究科学家陈雨强受邀出席,并以“人工智能工业应用痛点及解决思路”为题,发表主题演讲。程序员

陈雨强是世界级深度学习、迁移学习专家,曾在NIPS、AAAI、ACL、SIGKDD等顶会发表论文,并获 APWeb2010 Best Paper Award,KDD Cup 2011名列第三,其学术工做被全球著名科技杂志MITTechnology Review报道。同时,陈雨强也是AI工业应用领军人物,在百度凤巢任职期间主持了世界首个商用的深度学习系统、在今日头条期间主持了全新的信息流推荐与广告系统的设计实现,目前担任第四范式首席研究科学家,带领团队研究、转化最领先的机器学习技术,着力打造人工智能平台级产品“先知”。算法

如下内容根据陈雨强主题演讲编写,略有删减。数据库

你们好,我是来自于第四范式的陈雨强,目前主要负责人工智能算法研发及应用的相关工做。很是高兴与你们分享人工智能在工业界应用的一些痛点、以及相应的解决思路。编程

工业大数据须要高VC维网络

人工智能是一个很是煊赫一时的名词,且已经成功应用在语音、图像等诸多领域。可是,如今人工智能有没有达到能够简单落地的状态呢?工业界的人工智能须要什么技术呢?带着这些问题开始咱们的思考。架构

首先,咱们先探讨一下工业界人工智能须要一个什么样的系统?人工智能的兴起是因为数据量变大、性能提高以及并行计算技术发展共同产生的结果。因此,工业界的问题都是很是复杂的。所以,咱们须要一个可扩展系统,不只在吞吐与计算能力上可扩展,还须要随着数据量与用户的增多在智能水平上可扩展。怎么实现一个可扩展系统呢?其实很重要的一点是工业界须要高VC维的模型,去解决智能可扩展性的问题。怎么得到一个高VC维的模型呢?你们都知道,机器学习=数据+特征+模型。若是数据在给定的状况下,咱们就须要在特征和模型两个方面进行优化。框架

特征共分两种,一种叫宏观特征,比方说年龄、收入,或是买过多少本书,看过多少部电影。另一种是微观特征,指的是比拟细粒度的特征,你具体看过哪几本书,或者具体看过哪几部电影。每一部电影,每一本书,每个人,都是不一样的特征。书有几百万本,电影有几百万部,因此这样的特征量很是大。机器学习

模型可分为两类,一个是简单模型,好比说线性模型。还有一种是复杂模型,好比非线性模型。分布式

图片描述

这样就把人工智能分为了四个象限。如上图,左下角是第一象限,使用宏观特征简单模型解决问题。这种模型在工业界应用很是少,由于它特征数少,模型又简单,VC维就是低的,不能解决很是复杂的问题。右下角的第二象限是简单模型加上微观特征,最有名的就是你们熟知的谷歌Adwords,用线性模型加上千亿特征作出了世界顶尖的广告点击率预估系统。左上角的第三象限是复杂模型加宏观特征,也有诸多知名公司作出了很是好的效果,例如Bing广告和Yahoo,经典的COEC+复杂模型在这个象限内是一个惯用手段。最后是第四象限,利用复杂模型加上微观特征,因为模型空间太大,如何计算以及解决过拟合都是研究的热点。函数

刚才说沿着模型和特征两条路走,那如何沿着模型作更高维度的机器学习呢?研究模型主要是在学术界,大部分的工做是来自于ICML、NIPS、ICLR这样的会议,非线性有三把宝剑分别是Kernel、Boosting、NeuralNetwork。Kernel在十年前很是火,给当时风靡世界的算法SVM提供了非线性能力。Boosting中应用最普遍的当属GBDT,不少问题都能被很好地解决。Neural Network在不少领域也有很是成功的应用。工业界优化模型的方法总结起来有如下几点。首先,基于过去的数据进行思考获得一个假设,而后将假设的数学建模抽象成参数加入,用数据去拟合新加入的参数,最后用另外一部分数据验证模型的准确性。这里举一个开普勒沿模型这条路发现开普勒三定律的例子。在中世纪的时候,第谷把本身的头绑在望远镜上坚持观察了30年夜空,将各个行星的运动轨迹都记录下来。基于这些数据,开普勒不断的进行假设,最后假设行星的运动轨道是椭圆的,用椭圆的方程去拟合他的数据,发现拟合的很是好,便获得了一个新的模型:开普勒第必定律。这就是一个典型的沿着模型走的思路,经过观测数据,科学家得到一个假设,这个假设就是一个模型,而后用数据拟合这个模型的参数,最终在新的数据上验证模型是否正确,这是沿着模型走的一条路。

沿着特征走主要是由工业界来主导,好比说谷歌的Adwords里面有上千亿的特征,想要描述为何会产生一次广告点击,这就须要解决高效并行的问题。这些技术大部分进展来自于KDD或是WWW。沿着特征优化机器学习,就是把问题经过特征的方式分的足够细,作很是准确的模型。

究竟是深度模型好仍是宽度模型好呢?这里有一个没有免费的午饭定理:不存在万能的模型。简单来讲,世界上不存在一个优化算法对任何问题上都有效,也就是说咱们总能找到一个问题,让这个优化算法表现的并不比随机的更好。更进一步的说,全部的机器学习都是一个偏执,表明了对这个世界的认知。若是数据较少,这个偏执就须要比较强。好比说科学家观测物理现象,数据并非特别多。这种状况下,你须要大量的理论和猜测,有少许数据作拟合验证就能够了。但若是假设错的话,就可能出现错误的结论。好比用地心论研究天体物理的话,就发现结论都是错的。可是若是数据不少,咱们就不须要很强的偏置,将更多的不肯定性加入模型,自动的经过数据进行拟合。综合起来,工业界的机器学习里面并无免费的午饭,不存在哪个模型是万能的模型。因此说你必定要根据你的业务作出合适的选择,才是最好的一个方式。

人工智能落地的关键:提升AI的易用性

人工智能目前还远没有达到能够遍地开花的程度,即便解决了刚才讲的宽与深的问题,咱们依然还有不少事情要作。如何训练出好的模型、如何去选择好的参数、如何进行特征组合,都不是一件容易的事情。

图片描述

好比,数据须要归集、整理、导入、清洗、拼接、特征工程等以后才能模型训练。以后模型上线还要保证系统的稳定性、时效性和吞吐等等指标。同时为了提供线上服务,须要重作一套线上的架构,这个架构须要保证数据流实时性、线上线下一致性,以及模型做用的机制。只有完成这些,这样才真正拥有了一个落地的人工智能系统,不然只能称之为在笔记本上作一个AI的玩具而已。

刚才说到的还只是一个公司的问题与系统,若是用在各行各业的不一样问题上,会发现问题很是多,因此企业必定须要一个集成上述全部能力的人工智能平台。开源社区内好的工具平台和算法可以起到很大做用,这些工具也会日趋成熟,但并不足够。虽然看起来人工智能已经在很是多的领域应用或者开始了突破性的尝试,可是若是对比Hadoop这样的分布式存储计算系统来讲,还远远未普及。

图片描述

关于这个问题咱们先分析Hadoop。之全部这么多人用Hadoop是由于它虽然是个分布式系统,但对使用它的程序员并不须要掌握很高的分布式系统知识,研发人员并不须要为了使用Hadoop针对性的对本身的数据、业务作出改变,也不须要由于Map-Reduce框架从新设计本身的线上服务系统。但人工智能不同,为了使用AI,全部的上下游组件都会和模型相关:不一样的模型不只意味着不一样的训练系统,还意味着不一样的实时、非实时的数据流,不一样的拼表要求与框架选择、不一样的特征抽取、不一样的线上服务架构、不一样的灾备架构、回滚架构相关。这样你就会发现,为AI系统作数据流与线上系统的架构师,必需要懂机器学习才能作好工做。

因此如今可以作AI应用的人,主要仍是那些研究及应用的机器学习科学家,须要那种既懂机器学习,又了解业务,还精通系统架构的工程师。这就形成了AI的高门槛。就如同三四十年前,真正编程的人并非如今咱们这样的人,而是一群科学家们,他们经过纸带来控制程序的运行,本身不只要编程,还得很是懂计算机体系架构。致使的结果是,根本不是每一个人都能接触到这项技术,不是每一个企业都能受惠于这个技术。可是如今,甚至在Excel中均可以编程,这些程序员可能彻底不知道计算机的体系结构、操做系统、编译原理、数据库的概念,将所有心思花在理解与解决业务问题上,达到事半功倍的效果。

因此,若是想让AI在工业界中产生更大的影响,真正的落地,咱们须要的是一个完整的人工智能应用平台,让人以更低的成本用上人工智能。从这个角度上看,阻碍AI普及的并非如今的算法效果不够好,而是如今算法的门槛过高,研发新的平台以及算法下降门槛的重要性大于优化算法效果的重要性,咱们指望用低的门槛得到好的效果。

如何解决特征工程

如何下降这些门槛呢?这里分享一下第四范式的成果。首先特征工程是工业界应用AI的巨大的难关。特征工程的目标是针对于某个模型找出与要解决问题相关的关键属性,如今也有一些开源的项目尝试解决特征工程,下图就列出了Spark 2.2官方文档中包含的特征工程算法。那么,针对不一样的业务、不一样的模型,这些算子就足够咱们低门槛建模了吗?

图片描述

若是想要作好特征工程,须要对将要使用的机器学习算法有深刻了解才行,随便地将全部的特征所有扔进去,现有的算法并不能很好地处理。有时候,不一样的算法为了达到同一个目标,使用特征工程与作法会彻底不同。以新闻推荐为例,咱们要作两种特征,来提升推荐新闻的点击率。一种是一阶特征,描述的是那些用户直接喜欢的内容。另外一种是二阶特征,描述的的是个性兴趣的扩展。好比说喜欢大数据的人,颇有可能对机器学习也感兴趣。

在下面的示意中,小人表明一个用户(User),小人下面表示经过统计获得的用户画像,也就是用户的历史兴趣点(User_Topic)。右边是3篇新闻,每一个新闻有一个话题(News_Topic)。

图片描述

那么,如何在以前提到的“简单模型(线性模型)+微观特征”这条路添加一阶特征呢?如图左上角所示,咱们只须要简单的将用户与新闻话题作组合特征(User-New_Topic笛卡尔积)就能够了。在这条路上,咱们并不须要任何的用户画像统计,由于最后每篇新闻点击或者不点击就已经能够训练出“User-News_Topc”组合特征的权重与偏好了。这种方式下,在线上服务的时候,全部的信息都是推荐时能获取的,可是为了用户兴趣更新及时,咱们须要把模型的时效性作到很是高。

回头看,如何在以前提到的“复杂模型(非线性模型)+宏观特征”这条路添加一阶特征呢?如图左下角所示,因为是宏观特征,咱们须要将不一样的话题变成单个特征,一种作法是经过一阶逻辑的判断“本篇新闻的话题是否属于用户历史的兴趣”加入。这种方式下,在线上服务的时候,咱们除了须要推荐实时信息以外,还须要实时维护用户历史的兴趣点,可是模型本生的更新频率就不用那么快了。毕竟,为了达到推荐时效性目标,要么特征静态、模型特别实时,要么特征实时、模型静态不变。

那么,若是咱们要学习二阶特征呢?对于线性模型(如右上角所示),咱们也须要用到用户的历史兴趣点,将用户的历史喜爱与文章的话题进行组合(User_Topic-New_Topic),这样模型就能够学到历史上喜欢什么样话题的人还会喜欢什么样的新闻话题,达到二阶迁移的目标。对于非线性模型(如右下角所示),咱们要作的将原先的一阶逻辑判断(能够认为是个Identity矩阵)变成一个二阶状态转移矩阵,经过历史统计得知不一样话题间喜欢转换的状况,推算出一个不在用户现有兴趣点中的文章话题是否是用户喜欢的。

图片描述

更进一步的,咱们总结对比一下,对于前文提到的机器学习四象限中的第2,3,4象限的模型,咱们作特征工程的方式差距很是大。对于一阶特征,若是是线性模型加精细特征,直接作组合,不用统计;若是作非线性模型是须要统计的,同时用包含关系来作;若是用非线性模型不须要用包含关系,模型自己会进行特征组合。若是作二阶特征,每种方法都须要使用统计特征,但适用方式也各不相同,比方说非线性模型宏观特征,你须要三个相关的信息和不少统计才能够作到。

这个例子说明了一个道理,若是要作好的特征工程,须要很是多的针对模型的定制化的优化,仅用如今的工具还彻底不够,彻底须要靠人的经验与判断。所以,研发自动特征工程的算法就变得尤其重要。自动特征工程是一个比较难的问题,在学术界与工业界都在积极地研究这个问题,这里跟你们分享自动工程的三个方向,隐式特征组合(如NN,FM),半显式特征组合(如GBDT)与显式特征组合(显式特征叉乘)。

隐式特征组合

隐式特征组合主要特色是对连续值特征很是友好,最成功的应用场景是语音和图像。在这些原始信号是像素或是声波的问题里面,深度学习经过神经元网络产生底层的Filter以及层次化的特征组合,得到了远超人类手工特征工程的效果。可是深度神经网络并非万能的,在深度学习中,高维离散特征的变量处理很是复杂,同时缺少可解释性,过于黑盒化也是神经网络你们关注的焦点。这样会致使深度学习出来的特征组合相对难用到其余算法之上,也很难给人明确的信息反馈。

图片描述

针对NN难以处理离散特征的问题,咱们须要Large Scale Embedding的技术进行解决。Embedding最先在NN上的应用是在NLP的问题上,当时研究者们使用Embedding的技术将每一个单词映射到一个低维空间,经过concat,sum,poolling,convolution等方式造成等长的最底层输入,而后使用标准的深度神经网络进行训练。随后在愈来愈多的领域用上了Embedding技术,推荐是一个典型的场景,限制波尔兹曼机(RBM)在提出之初就曾使用Embedding尝试解决协同过滤问题。最近,谷歌发表描述如何使用大规模Embedding技术在Youtube上向数以十亿计的用户推荐数以亿计的视频,在他们的工做中,他们同时对每一个用户与视频进行Embedding,以后把用户观看历史、搜索历史等视频的向量经过求和变成特征,继而进行深度学习,得到了比较大的成功。

图片描述

Large Scale Embedding在如今依然是一个比较热门的研究领域,其中的成果包括Discrete Factorization Machine,FNN, PNN, DeepFM等,上图显示了这些算法的异同,简单来说这些模型既能找到特征之间的推理关系,同时也能去记忆比较细的特征。在这个领域,第四范式提出了DSN(Deep Sparse Network)的算法,它是一个很是宽且深的模型,里面一样会作大规模Embedding,用神经网络作自动学习组合,目标解决高维模型(上万万亿VC维度)的正则化以及并行计算问题。

半显式特征组合

第二个是半显式的组合,主要基于的是树模型。为何说是“半显式”呢?由于你们可能认为树模可解释或者作特征组合是很天然的事情,但其实并非:叶子节点的每个分支并非一种显式、直接的特征组合,而是这些特征在特定取值区间的组合。因此从结果上来讲咱们作到了特征组合,有必定可解释性,可是一样也没有办法直接看特征相关性或者特征之间组合关系。做为非线性模型,树模型主要的特色是容易理解,效果也是很是好的。可是相似的,它对离散的精细特征很是难处理,传统上训练一棵m个特征n个训练数据k层深t棵树的模型须要O(mntk)的时间,即便对系数特征进行优化,也很难下降特征分裂中分桶上的空间与传输消耗。在这个方面,第四范式提出了一系列算法,包括HE-TreeNet和GBM系列算法,经过Embedding,Ensemble、Stacking,General Boosting等方式让树模型能够在大规模特征的状况下能够进行特征组合。

图片描述

显式特征组合

第三个介绍一下显式的组合,算法的输出会明确指定哪些特征组合起来(笛卡尔积)做为基础特征。总体思路沿着搜索与搜索优化这条路,也有一些地方使用正则化加贪心。因为显式特征组合的问题求解空间大,寻找最优特征组合是个很是难的问题。咱们对比AlphaGo下围棋,19乘19的棋盘上每一个点上有黑子/白子/无子三种状态,它的状态空间最大是。考虑显式特征组合要作的事情,咱们要有个特征,限制高阶组合阶数不超过,从中选取个特征,那么2到特征的总量是,最终再从其中选取个特征,其空间是 ,即便将不大的中带入,量级会远远大于,从解空间大小的角度看显示特征组合比下围棋还要更难。

图片描述

显式特征组合还有一个问题是如何作连续值的组合,好比说一我的的年龄是30,收入是10000,应该怎么作组合特征呢?是乘、是加仍是平方和?在NN中,是经过线性组合加上非线性变化,在GBDT中使用过特征值分裂,可是对限时特征组合,实际上没有一个好的现有方法去直接组合。

虽然有着重重困难,显式特征组合的优点在于可解释性,会提供一个很是深刻的洞察,能够知道哪些特征是潜在有关系的,应该组合起来;同时这样的方法享受比较好的可叠加性:全部机器学习算法都基于特征,显式特征组合的产出是特征集,这个特征集能够加强全部其余机器学习的算法,成为训练的基础。

图片描述

目前,显式特征组合主要有几种算法,一些方法基于Boosting,训练单Feature弱分类器,经过Boosting的过程寻找组合的启发;或者基于Regularization进行权重截断,造成组合候选。这些算法通常不是为了特征组合而设计,组合也多为训练过程的副产物,很难真正的得到高阶的组合特征。

新一代的显式特征组合:FeatureGO

下面介绍第四范式最新发布的算法—FeatureGO。它是基于MCTS,对特征与特征组合状态进行建模,训练组合下的收益函数。在搜索的过程当中,咱们作了很是多的调优技术,使用咱们内部线性分型算法LFC解决连续值特征组合的问题。最终,咱们发现这个特征组合最多能达到十阶以上,且发现即便达到十阶也能提供明显的的效果提高,这个是过去靠人所作不到的事情。即便是在最好的广告或者推荐系统中,人工的特征组合通常也只能到达5-6阶。

咱们在4个数据及上实验了FeatureGO算法,包括两个公开的数据集(higgs、criteoDeepFM)与两个咱们私有的数据集(l_data,m_data),数据集统计信息以下:

图片描述

在这四个数据集上,咱们使用FeatureGO产生的特征集合加上LR模型进行训练,使用AUC做为评估标准。实验效果以下。能够看到,使用了FeatureGO进行特征工程,在4个数据集上的效果都有很是明显的提高,大部分提高在AUC 2个百分点左右。

图片描述

咱们也实验了效果随着时间与新组合特征的加入而发生的变化,以下图所示。能够看到随着时间的变长,特征组合数越多,特征组合效果会愈来愈好。

图片描述

基线对比算法除了LR以外,咱们也比较了一些最新的非线性算法成果,在cretio广告数据上进行实验,结果以下。在这个实验里,咱们也能够看到,即便是基于最新NN或者FM的特征组合,也并不能找全全部能够利用的信息,这个对比中显式特征组合依然有很是好的表现。同时要注意到的是,FeatureGO产出的新组合特征还能够进一步提升上述全部模型的效果。

图片描述

在FeatureGO这样的算法背后,其实还有好多隐藏的架构上的黑科技,让基于搜索的算法能够实际变成可行。比方说咱们提出了CPS(Cross Parameter-server Sharing),Dynamic Graph等技术,将计算过程当中公共的数据读取处理、特征请求存储更新等进行共享,达到同时训练10个模型的时候使用远小于10倍单模型时间的效果。
关于计算能力与架构,咱们认为这是人工智能相当重要的一部分。过去将APP开机速度由20ms优化到2ms其实意义并非特别大,可是在机器学习中,10倍的速度意味着同时间训练10倍多的数据,或者同时能训练10个模型,也就意味着更好的效果,这也就表明着以往模型优化、效果优化这种只有科学家作的事情,如今优秀架构师也能作到。在这方面,谷歌是很是好的榜样。在过去,从没有人想过LR这么简单的模型也能得到良好的效果,可是经过极致的工程架构与实现优化,谷歌证实了使用上千亿特征,即便简单的LR模型也不比任何非线性模型差。第四范式也是一个架构工程优化和算法并重的公司。咱们不只作人工智能的通用平台,也会投入很是多的精力去优化速度与架构,但愿能得到更强、更全面的人工智能水平和能力。

图片描述

说到计算与架构这一点,也要提到谷歌Deepmind团队最近作的另一件工做NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING,经过强化学习框架自动进行神经元网络结构的学习,有人提到这个工做为了自动得到一个网络结构,使用了800块GPU同时进行训练,很是不实用。但咱们认为,谈到未来的趋势,不会是经过专家来节省机器,下降机器的使用,而是经过机器节省专家下降专家的参与,由于随着摩尔定律,机器的计算成本会指数级的下降,可是专家的数量并不会指数增长。要让更多的领域用上人工智能,更少人力的AutoML是未来的必经之路。

目前,第四范式的算法与产品“先知平台”在更普遍意义上的AutoML与减低门槛两方面,都在持续的投入和研究。这些新的研究方向包括自动拼表数据导入、模型可解释、自动线上优化等。咱们要作的事情,是如何把人工智能变的更加自动化,使AI变得跟Windows同样普及。如今,“先知平台”试用版已经正式对外开放,欢迎扫描二维码注册使用。

相关文章
相关标签/搜索