第四范式陈雨强:机器学习在工业应用中的思考(下)

亿欧网  •  扫码分享
第四范式陈雨强:机器学习在工业应用中的思考(下)

【编者按】在 上一篇 中讲到了人工智能成功的五个必要条件、工业界与人工智能的结合以及机器学习的四个象限、机器学习系统需要VC维,以及如何沿着模式和特征优化。这篇主要是讲述了机器学习是沿着宽度走好还是沿着深度走好?机器从监督学习到强化学习等方面探讨。

陈雨强,第四范式联合创始人,世界级深度学习、迁移学习专家。2016年12月23日,在 亿欧智库2016中国人工智能创业公司TOP50榜单 当中,第四范式入围榜单。

本文来自机器之心,作者陈雨强;由亿欧编辑整理,供业内人士参考。


▌宽度还是深度?

大家都会比较好奇,沿着宽度走好还是沿着深度走好?并没有那个模型在所有情况下都更好,换一句话说机器学习没有免费的午餐(No Free-Lunch):不存在万能模型。

No Free-Lunch Theory是由Wolpert 和Macready在95年提出的一个定理。他们证明对于任意算法或优化算法A与B,如果在某一种损失函数上A好于B,则一定存在另一个损失函数保证B好于A。 更直观的描述是,总能找出一个损失函数让任何算法都不比随机猜更好。

这告诉了我们什么?所有的机器学习都是一个偏置,这个偏置是代表你对于数据的假设,偏置本身不会有谁比谁更好这样的概念。如果使用更多的模型假设,就需要更少的数据,但如果模型本身越不符合真实分布,风险就越大。

当然我们也可以使用更少的模型假设,用数据支持模型,但你需要更多的数据支持,更好的特征刻画,然后表示出分布。总结起来对于我们工业界来说,机器学习并没有免费的午餐,一定要做出对业务合适的选择。

▌宽与深的大战 

第四范式陈雨强:机器学习在工业应用中的思考(下)

追求更高的VC维有两条路: 一个是走宽的、离散的那条路,即Google AdWords的道路;也可以走深的那条路,比如深度学习或者YAHOO!News那条路。这就是深与宽的大战,因为宽与深在工业界都有非常成功的应用案例, 坚信宽与深的人很长一段时间是并不互相理解的,各自忠实的信徒和粉丝们都会去拥护自己坚信的算法,质疑另一条路走不通。

坚信深度学习、复杂模型的人认为,宽的道路模型太简单了 ,20年就把所有的理论研究透彻,没有什么更多的创新,这样的技术不可能在复杂问题上得到好的结果。 坚信宽的模型的人,攻击深度模型在某些问题上从来没有真正把所有的数据都用好从来没有发挥出数据全部的价值,没有真正的做到特别细致的个性化 。的确深度模型推理做得好,但个性化、记忆方面差很多。

非常有幸的是,我自己在宽和深两边都在工业界做过实际的探索与研究。吴恩达还没正式加盟来百度之前,曾到百度访问交流,当时我在凤巢,有机会与他探讨机器学习在工业界的一些进展与尝试。

在那时我们就发现在工业界中, 宽与深有很强融合趋势 。Google作为宽度模型的发起者,正在在广告上尝试使用深度模型,而我在百度也在已经做了同样的事,不谋而合,Google和百度这些宽模型的拥护者正在向深的方向走。同时吴恩达分享他在Facebook交流的时候,发现Facebook走的是复杂模型宏观特征,虽然效果不错,但也非常急切的想要尝试怎样使用更宽的模型,对广告与推荐进行建模。

宽与深的模型并没有谁比谁好,这就是免费午餐定理:不同业务使用不同的模型,不同的模型有不同的特点。 我们对比一下宽度模型与深度模型:宽度模型有比较准确的记忆能力,深度模型有比较强的推理能力;宽度模型可以说出你的历史,在什么情况下点过什么广告,深度模型会推理出下次你可能喜欢哪一类东西。宽度模型是依靠层次化特征进行泛化的,有很强的解释性,虽说特征很多,但是每一个预估、为什么有这样的预估、原因是什么,可以非常好的解释出来;深度模型是非常难以解释的,你很难知道为什么给出这样的预估。

宽度模型对平台、对工程要求非常高,需要训练数据非常多、特征非常多;深度模型对训练数据、对整个模型要求相对较低一点,但现在也是越来越高的。还有一个非常关键的区别点, 如果你是CEO、CTO,你想建一个机器学习的系统与团队,这两条路有非常大的区别。

宽度模型可以比较方便与统一的加入业务知识,所以优化宽度模型的人是懂机器学习并且偏业务的人员,把专业的知识加入建模,其中特征工程本身的创新是提升的关键;如果走深度模型,模型的创新是关键,提升模型更关键来自于做Machine Learning的人,他们从业务获得知识并且得到一些假设,然后把假设加入模型之中进行尝试。

宽度和深度的大战,就我看来各自都有各自的缺点,我们要各取所长做宽与深的结合。 宽与深的结合已经逐渐成为一个研究热点,Google在今年4月份发表的一篇论文,介绍他们的最新工作「Deep & Wide Model」。模型分为Deep与Wide两部分,好处是它既能对比较细的特征有记忆,同时也有推理的能力。我们认为将来的方向都应该朝这路走。

除此之外,近期还有不少工作在探索这个方向,张伟楠2016年ECIR发表论文论述如何通过底层输入加上因子分解机让一个稀疏矩阵的深度学习可解,随后在ICDM 上发表论文进一步加入Inner Product 和Outer Product 希望更好的刻画特征之间的关系。

第四范式最近也有一些新进展,今年 7 月我们发布了 DSN 算法,算法底层是上千亿大小的宽度网络,上层是一个全连接的网络。难点在于如何解决它的可计算性以及如何解决模型的分布式,如何保持模型的稀疏与避免过拟合。总的来说这方面还是非常前沿的、非常热门的研究领域。

▌如何上线:从监督学习到强化学习

不管是宽也好、深也好、又宽又深也好,有这么多厉害模型,是不是欢欢喜喜搞好模型、做好特征,线下评估AUC( 亿欧注: AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。)涨了,我们就赶快上线?不要高兴太早,线下做好的模型实际上是一个监督学习模型,并不能保证它线上效果好。

第四范式陈雨强:机器学习在工业应用中的思考(下)

 以搜索广告为例,上图中最左边表示的是原系统对广告进行排序产生的结果,线上系统展示6条广告,还有一些是没有被展示的广告。展示的广告中有被点击的广告(黄色)和没被点击的广告(蓝色)。我们使用展示过的广告研发下一代机器学习模型,如上图中间所示,优化之后发现被点击的广告线下预估得点击率更高,位置向上提升,没有被点击的广告位置向下变化。

但是真正的应用到线上的时候(上如最右边所示),面对的侯选广告不止是它展示出来的广告,而是所有的广告。可能之前根本就没被原系统排上来的广告被排到了非常高的位置,这些广告可能很多根本就不会被点击。这样以来,展示过的广告虽然保持了原来的顺序,但是中间插入了很多不会被点击、原来没被排上的广告,占用广告展示位,使得系统AUC很差。

这里说一下我当年在百度搜索广告上线深度学习的的故事。那时百度凤巢还是在使用大规模离散LR系统,上千亿的个性化的特征让广告效果有长足的进步,刚获得百度最高奖。而这个时候,我是在这个LR系统的基础上,尝试使用深度学习的技术进一步提升效果。

怎么让一个上千亿特征的宽度系统变身深度系统在但是还是一个没被研究过非常困难的问题,我们花了大半年的时间历经千辛万苦在线下获得了非常显著的指标提升。 欢天喜地的想要上线,但刚一上线,我们就发现, 线下模型训练的越好,线上获得的效果反而越差。 这使我们当时非常沮丧,找了很久原因,定位到发现不是模型不对,也不是深度、宽度的问题,而是监督学习的问题—— 线上系统并不是问题封闭的监督学习系统,而是开放的不断变化的系统。 这就好比你去学打《星际争霸》,不能通过顶级玩家的录像来学,因为学到套路并不一定能打败初级玩家,而必须以赛代练,自己上手,才可以把学到的知识真的用起来,面对变化的现实世界。

回过来看,如何上线其实是从监督学习到强化学习的问题。 强化学习一般是闭环系统,系统里会不断的有外部反馈,这个反馈又是由系统产生的输出带来的结果。 那如何更好的用系统输出产生的结果进行强化学习?强化学习面临的空间是一个未知空间,在 PPT 的广告的例子中,可以看到的空间是原系统产生出来的空间(只有黄、蓝色广告),但是线上面对的空间其实是黄、蓝加上绿这些广告构成的空间。

怎么更好的探索黄、蓝、绿的空间,是强化学习要解决的问题。有很多工作在尝试解决这方面的问题,包括多臂老虎机、UCB等等很多算法,最近这些强化学习技术也被用到了搜索广告与推荐系统。总结起来,一定不要开心的太早,线上系统越强数据越有偏,学习越有偏的数据取得的效果,越不能代表上线的效果。

▌拆解复杂目标到单一目标,逐个优化

有这么多好的技术,怎么更好的服务业务?机器学习做的是单目标优化问题,并没有能做多目标优化的机器学习算法。虽然有研究在做尝试,但在工业界还处于研究的初步阶段。在真正出现多目标机器学习算法之前,我们要更多的解决单目标优化的问题。

第四范式陈雨强:机器学习在工业应用中的思考(下)

比方说新闻推荐就是一个多目标复杂的问题,想要优化的指标极多——我们想优化留存、想优化时长、想优化点击率、想优化转发、想减少低俗、想优化时效性、想加速新用户冷启动等等,只优化某一个目标并不能让我们一劳永逸。

那这里回想到以前有一个做推荐的朋友就因此特别的苦恼,因为每天面对这么多的要考虑的因素,每天都在自己跟自己左右互搏,非常的分裂。他在优化点击率时就很担心,是不是变低俗了?优化低俗的时候是不是降低了用户的参与?优化参与时又想阅读时长是不是会受到影响?但是,如果一心想一次优化所有的目标,那么没有一个目标最终能被优化。 机器学习解决问题的套路是通过把目标分解,逐个进行优化。

举搜索广告的例子,搜索广告的收入可以拆解成:流量 * 有广告展示的流量比例 (asr) * 平均页面广告展示条数 (asn) * 点击率 (ctr) * 广告平均计费价格 (acp)。拆解成这么多目标后,优化点击率时就不用考虑其他的因素,点击率用模型优化,价格、条数用竞价机制优化,流量通过产品与渠道优化。

把目标拆开后可以非常舒服的优化每一项,每一项都优化得非常极致,整个系统就能做到极致了。 再举一个停留时长的例子。如果我们想优化阅读的整体停留时长,并不是去按照直观优化每个页面的停留时常,而是将停留时长分解成点击率 * 点击后页面停留时长,然后分开进行优化。

如果进行了合理的拆解,我们实际上可以有更多基础模型,利用这些基础模型,我们可以定义出针对业务目标的机制,比如说指数加权乘法或者逐级阈值门限机制等。利用设计好的机制,我们可以调整各个目标之间的关系,做出取舍,还可以定量的观察与获得指标间的兑换比例,比方说在模型不进行变化的前提下,多少点击率的降低能兑换出多少总时长的增加。

因为每个指标都是独立的,我们只需要用ABTest就可以根据公司目标调整这些机制参数了。这样的方法相对于根据目标调整数据更能解释清楚,调整数据是我把目标的拆解直接加到数据中,认为什么目标重要就把那个目标对应的数据加倍、权重加倍。 但困难在于加倍数据后模型需要重新训练,也很难说清楚处于连续变化状态中的目标,各个分指标是怎么互换的。

▌关注人

最后分享一下我们在工业界应用中,关注人的一些经验。关注人其实是一件我之前很少想的事情。如果你专注做机器学习,你可能认为与你交流的人、用你的技术的人或多或少懂得机器学习。但如果我们的目标是让所有人都能用上人工智能、让工业界更多的产业用上人工智能,你面对的人关于机器学习的水平参差不齐,就是一个非常现实的问题。在这样的情况下,关注人在其中就是至关重要的事。

第四范式陈雨强:机器学习在工业应用中的思考(下)

 开头提到的机器学习成功必要条件的五点中, 专家数量是机器学习成功的必要因素。 困难之一是在更广阔的工业界,专家教授并没有那么多,企业内部需要优化的业务数量也远远大于专家数量。第二是非专业AI人员在无法理解(至少宏观上、直观上理解)模型原理之前,他们是不相信模型能够更好的优化他的业务的。

比如你要把司机替换成自动驾驶,会发现人有非常非常多的顾虑,因为人不知道为什么机器会做出左右、前后、刹车的判断,也不知道背后的机器学习会在什么时候失效、什么时候能应用。这些问题在当前的技术前提下都是很难被直接定义、描述清楚的,那么这就会导致人工智能很难被推广到更大的领域中。

如果要让更多的人能使用上这样的技术,首先是要解决模型的可解释性。对应研究中的下一代技术叫XAI(Explainable Artificial Intelligence),是一个更易理解的、更可解释的AI系统。 XAI是DARPA今年的6月份提出的项目,被美国认为是攸关国家安全高度的人工智能的技术。

模型的可解释非常有用,更好的可解释性、可理解性可以把人工智能算法或技术推广到更多公司、以及推广到公司其他部门,否则会碰到很多不同层面的问题。模型的可解释有很多研究方向,做图片分类时通过深度学习给出一个Output,说图片是猫的概率是 0.93。

这会令人疑惑,图片中的确是一只猫,但并不知道为什么机器认为它是一只猫。将来的学习过程可能是,图片放进来不仅会给出一个结果说它是猫,还会给出它是一只猫的原因——两个毛茸茸的耳朵、还有爪子、脚上还有很多毛、还有小肉垫,因此认为它是猫。这样能更好的理解模型能做什么、不能做什么,这是应用人工智能至关重要的点。

要解决可解释性的问题,我们可以有多个思路, 第一个思路是对于重要的模型,我们针对性的设计解释机制。 比方说考虑如何去解释一个大规模特征 LR 模型的问题,虽然 LR 模型天生是个解释性很好的模型,但是特征特别多的情况下,由于它是微观模型,并不容易看到模型整体。

就像观察全国14亿人每个人的行为,我们可以了解很多事情的发生,但是这还是不够的,我们需要从微观特征中得到宏观的统计和宏观的分析。 这条思路其他重要的工作包括如何可视化以及解释深度学习的内部机制。

第二个思路是我们也可以设计出一些全新的模型,这些模型最重要的设计目标就是在高可解释性的同时不丢失预测效果。 最后一个思路是 做模型的黑箱推理 ,不管是深度模型、宽度模型或者其他模型,通过黑盒的输入输出来窥探模型内部的运行机制。

除了模型可解释,在实际应用中,模型可控也是非常重要的一点。越重要的领域对模型可控的要求越强,因为不能出错。推荐和广告出错一次没什么问题,如果贷款判断失误或是无人驾驶判断失误,后果可能会关系到国计民生。

为什么模型可控是一个难的问题呢? 因为刚才说到模型要好VC维就一定要高、一定要有足够的自由度,但可控是要限制解空间的自由度,让模型满足很多规则与约束。这就相当于想要造一个超音速的飞行器,但同时要求能用绳子牵着像风筝一样被控制方向。这方面,我们也在进行探索,针对具体的问题,比方说定价,我们可以设计出一些既满足规则、VC维又足够高的模型。

最后一点,模型的互动性、可干预性、可参与性。 机器学习更多的是通过观历史预测未来,如果是历史上没有发生过的事情,还是需要通过专家更好的预测。一方面我们不能把人全部替掉,另一方面人在人工智能时代可以产生更重要的作用。怎样设计一个模型把专家的知识加进来,在数据不够充分的时候更相信专家,有了足够的积累就更相信数据和事实,是非常重要研究的话题。

Take-Home Message

最后,总结一下这次分享,有这么几个关键信息:

第一点, 我们要设计一个开放的可扩展的机器学习系统。它一定需要是高 VC 维的系统,才能保证随着业务增长,效率与效果也不断提升;

第二点, 没有免费的午餐,也没有万能的模型;

第三点, 宽度模型和深度模型各有利弊,根据场景、根据团队选择最合适你的;

第四点, 模型从线下走到线上其实是强化学习的过程,你(和你的老板)最好做好半年抗战的准备。这个时间不是指写算法、做工程的时间,而是做强化学习、不断的迭代积累数据,让模型越来越好的时间。这点非常重要,否则新的模型很难用到实际的工作中。无数死于襁褓的模型都是惨遭缺乏强化学习之痛;

第五点, 关注业务,设定更专注的目标解决更宽泛的问题。不要妄想一个机器学习模型能解决所有问题,要解决所有的问题就设计更多的模型,用机制让这些模型共同工作;

第六点, 关注产品和业务人员,因为他们会最终决定AI能使用的深度和宽度。

随意打赏

提交建议
微信扫一扫,分享给好友吧。