时下的硅谷,一场机器学习战争已经来袭,越来越多的新技术、融资并购故事发生在这个领域上。研究机器学习不仅需要有正确的算法模型,而且还依赖于可研究的海量数据,而 Twitter 作为硅谷探索前沿的巨头,四年前搭建机器平台出于什么目的?日后如何成为影响 Twiiter 每年几十亿美元的营收与内容推荐背后的核心?
2016 年 7 月 15-16 日, ArchSummit 全球架构师峰会将在深圳举行。本届大会,我们邀请了 Twitter 机器学习平台组负责人郭晓江,前来分享《Twitter 机器学习平台的设计与搭建》的内容,讲述他在Twitter 从无到有领导团队搭建机器学习平台的过程,其中包括研发数据Pipeline、离线学习、在线学习等模块的经验与实践。
现在我们就来采访郭晓江老师,让我们了解Twitter 从四年前就开始准备的机器学习“弹药库”吧!
受访嘉宾介绍:
郭晓江,四年前加入Twitter,先后供职于广告组和机器学习平台组。在广告组设计和构建了ads ranking 后端平台,之后从无到有领导团队搭建了Twitter 的机器学习平台,应用在广告推荐、Timeline Ranking、反欺诈等多个产品中,是每年几十亿美元的营收与内容推荐背后的核心。本科毕业于清华电子工程系,硕士毕业于斯坦福电子工程系。
InfoQ: 您大学本科毕业后到斯坦福继续深造,大学时参与语音识别、神经网络系统、雷达跟踪、文件系统构架等多项科研项目,这对您之后选择机器学习领域是否有很多帮助?
郭晓江:本科和研究生时期我的涉猎面相对广泛一些,想什么都尝试一下,看看自己的兴趣点在哪里,所以在清华、港科、斯坦福、微软亚研院做了很多不同方面的科研项目。这些经历对我后来有很大指导性的帮助。
首先从大的方面来说,是对思维方式的训练、如何严谨地分析问题和解决问题。不同的问题的表现虽然很不一样,不过万变不离其宗,背后的方法论是相通的。
其次是学习如何将理论的研究与实际的工程系统结合起来,真正应用到实际中去发挥价值。在这个过程中会踩无数的坑,所谓的经验也是踩过无数的坑才逐渐积累起来的。另外就是在工具、算法、编程等方面也会有一些积累为之后的发展做一些准备。
具体到选择机器学习领域是我在斯坦福的时候,通过上 Andrew Ng [1] 、Daphne Koller [2] 、Jure Leskovec [3] 的课,系统地接触和了解了机器学习、数据挖掘的理论和应用,非常感兴趣,所以之后选择去 Twitter 的广告组做机器学习的工作。
InfoQ: 您四年前加入 Twitter,按时间推算,Twitter 是否您的第一份工作?能否谈谈您经历或参与了 Twitter 哪些重大技术发展,带给您哪些成长和变化?
郭晓江:其实在加入 Twitter 之前我在一个创业公司有一段时间的实习,不过 Twitter 是我的第一份全职工作。刚加入 Twitter 的广告组的时候,广告组刚成立一年多,广告商几百家,营收也很少。经过这几年的发展,广告商已经上万,营收也翻了十几倍左右,所以我也是见证了公司业务的成长和发展。在这个过程中,我带领团队为广告组搭建了机器学习平台,并随后把这套系统推广应用到公司其他的各项产品中。我的成长和变化主要是在这几个方面:
- 技术水平的成长和提高
无论是机器学习的理论,还是软件工程实现、性能调优都有了很大提高。只有对技术细节了如指掌,才能比较好地比较和衡量各个实现方案的优劣、做好技术把关和决策。而技术的成长,都是靠一行行代码、一个个 bug 和坑趟出来的。- 团队管理和高效执行
关键是对事和对人的了解和判断。对事了解,才能决定做什么,如何更好地完成团队的目标,对上负责;对人了解,才能决定怎么做,如何拆解目标,每个人的兴趣点在哪里、适合做什么、多长时间能做完、需要如何把控,对下负责。一方面我们希望团队高效运转为公司创造价值,另一方面我希望团队的每个成员都有清晰的成长路径,这样团队才更有凝聚力和战斗力。- 与其他团队沟通协调
现在 Twitter 的广告和几乎所有主要的产品都是我们的“客户”,为了不断给他们创造价值、解决新的问题,我也要扮演产品经理的角色,跟他们沟通了解痛点,并提出解决方案。对于新的客户,我也需要做很多“销售”的工作,去推广我们的平台和工具。
InfoQ:出于什么契机,您领导团队从零开始搭建机器学习平台?能否谈谈搭建机器学习平台的必要阶段?完全搭建好用了多长时间?踩过哪些坑并且如何解决的?
郭晓江:刚加入 Twitter 的时候我是在广告组,当时广告组的机器学习的模型和系统比较初级,模型是每天离线训练,几百几千个特征,无法支持大规模的流量,系统耦合高,自动化程度低。而 Twitter 的广告系统做的好坏直接影响到公司的盈利能力,收入多 1% 也是几千万美元,所以我们决定做一套机器学习的系统和工具以支撑未来公司广告发展的需要,让数据科学家和工程师用这个平台快速迭代。
大概是从 2013 年中开始,用了一年的时间完成了几个主要模块的搭建,包括分布式大数据处理框架、几种主要的训练器、在线学习系统以及一些辅助的工具,并把这些完全应用在广告中。这套平台在广告组应用的非常成功,一方面由于支持大规模多模型在线学习,特征从几千增长到几千万量级,营收增长了 30% 左右;另一方面通过设计好的系统和工具,提高了数据科学家和工程师的迭代和实验的速度,在单位时间内可以试验更多的想法。之后我们又花了一年多的时间完善,并把这套系统推广到公司各个产品中,替代原有其他产品的部分或全部机器学习工具。
机器学习是发展和变化非常快的领域,新的算法和技术框架层出不穷,所以机器学习平台是一个不断完善的过程。我们也只是在这条道路上初窥门径,之后的路还很长,我们也是在不断地学习中前行。
踩过的坑非常多,有技术上的也有团队合作方面的,解决方法也都不一样,一两句也说不清,在 7 月 15 日 ArchSummit 深圳站上我会结合具体问题做一些分享,这里就不展开说了。
InfoQ: 能否介绍一下 Twitter 机器学习的发展历史与变迁?互联网哪些领域有必要研究机器学习?机器学习对于互联网企业而言门槛如何?
郭晓江:在 Twitter,机器学习的应用范围非常广,传统的机器学习应用主要是在广告、推荐、安全,深度学习主要应用在图片、视频和文字的内容识别与理解。除了这些之外还有各种需要分析的问题,比如决定用户是怎么流失的因素有哪些?用户的价值有多少?
引入机器学习对于互联网公司门槛并不高,首先是机器学习人才很多,MOOC 网络课程也很方便,比如 Andrew Ng 的机器学习课程在 Coursera 上随时可以学,再一个是机器学习的工具近些年来发展的也很快,越来越成熟。
而搭建机器学习平台则需要考虑的因素更多,还需要做到系统规模化、服务规模化,门槛也会更高:
- 系统规模化,就是要从分布式数据处理到在线服务的部署需要很好的结合,同时能够满足在线高并发的需求;
- 服务规模化,就是平台可以支持多个数据科学家和工程师在平台上有效的开展工作,提高他们的效率。
机器学习平台首先是一个平台,对系统抽象、工程设计、性能调优的要求很高,而不是仅仅了解机器学习的算法就可以的。举个例子,就广告来说,它所需要的机器学习算法上过 Andrew Ng 的机器学习课的知识储备都够了,但是无论是 Twitter 还是 Google、 Facebook,都投入了无数的人才和资源,就是要把机器学习做到系统规模化和服务规模化。如果互联网企业有多条产品线都需要机器学习,能够有几十人的数据科学家和工程师在做机器学习相关的工作,那搭建一个机器学习平台团队是很有必要的。
InfoQ: 机器学习是 Twitter 每年几十亿美元的营收与内容推荐背后的核心,能否结合一些数据来说明?Twitter 未来还会在哪些领域实现机器学习?
郭晓江:我们 90% 的营收来自于广告,广告的核心就是预测用户点击每个广告的概率,从而给用户展示最相关的广告,而机器学习是核心,80% 的活跃用户与应用机器学习的产品直接相关。
Twitter 未来会在深度学习方面着力发展,通过对图片和视频内容的理解,来实现鉴黄、基于内容的精准匹配,也会尝试将深度学习应用在广告等领域;在传统机器学习方面会在分布式离线学习与在线学习相结合的方向上做一些尝试。
InfoQ: 互联网巨头目前都声称在研究机器学习,能否简单介绍一下机器学习在硅谷发展?您认为,Twitter 的机器学习跟其他公司相比有什么独到的地方?
郭晓江:机器学习在业界应用的两大目标是规模化 (Scalability) 和灵活性 (Flexibility)。规模化是系统方面的要求,强调高并发、稳定性、高可复用性等,是应用到产品中的关键;而灵活性是要求能够快速迭代,不断尝试新的算法。
这两个目标是相互制约的,R、Scikit Learn 等工具在灵活性方面不错,但很难规模化;而业界很多已有的规模化系统都只支持某一类或某几类的算法,把某一类问题有效的解决,但灵活度不高,无法推广到其他问题或者尝试其他方法。
所以硅谷的公司和机器学习平台的设计主要是在这两方面下功夫:组织结构上一般会有两个平行的团队,一个偏重算法研究,比如 Google 和 Facebook 都有专门做机器学习研究的团队,主要是解决灵活性的问题;另一个团队是偏重机器学习平台,和产品应用结合的比较紧密,主要解决规模化的问题。现在新出来的一些框架尤其是深度学习的框架,比如 TensorFlow,会尝试在规模化和灵活性中寻求一个不错的平衡;Twitter 也在基于 Torch 做一些这方面的尝试。
InfoQ: Twitter 是崇尚开源的公司,目前已经开源的软件项目接近 200 个,未来在机器学习领域是否会与其他公司合作,是否计划开源?
郭晓江:在传统机器学习方面我们暂时没有开源计划。在深度学习方面,Twitter 开源了一些 Torch 相关的库,比如 torch-autograd、torch-distlearn 等。
InfoQ: 对于希望从事机器学习的工程师,有什么感悟和经验可以分享吗?
郭晓江:我感悟比较深的一点是,机器学习算法和工程实现两手都要抓,两手都要硬。对机器学习的算法有效的掌握可以指导你工作的方向,工程实现可以帮你把想法付诸实施。一个优秀的机器学习人才或者领导者,首先必须是一名优秀的工程师,否则再有好的想法,无法“落地”解决实际问题,对公司来讲都是没有价值的。就好比一个完全不懂技术的产品经理很难有高效的产出一样。
另外就是要在工作中学习搭建分析和解决问题的框架,积累一套方法论,举一反三,才能在快速发展的机器学习领域不断创新,为公司创造价值。
InfoQ:感谢郭晓江老师接受我们的采访。期待您在 ArchSummit 全球架构师峰会上的分享。
- Andrew Ng:吴恩达,华裔美国人,是斯坦福大学计算机科学系和电子工程系副教授,人工智能实验室主任,是人工智能和机器学习领域国际上最权威的学者之一,也是在线教育平台 Coursera 的联合创始人(with Daphne Koller)
- Daphne Koller:斯坦福大学计算机系正教授,在线教育平台 Coursera 的联合创始人
- Jure Leskovec:斯坦福大学计算机师副教授,Pinterest 首席科学家,社会网络国际领军学者
感谢陈兴璐对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论