并行计算是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。在训练 AI 系统的时候,并行是提高计算效率的主要途径。
作为机器学习方面的专家,腾讯 AI Lab 专家研究员、美国罗彻斯特大学助理教授刘霁博士认为,目前并行计算的主要难点在于如何提高并行效率。
因「提出一系列异步并行算法,解决了传统同步并行算法瓶颈问题,设计机器学习中去中心化的并行计算框架,可以极大地减少通讯代价」,刘霁博士作为「发明家」入选 MIT TR 35 China(详情参见 MIT TR35 中国区榜单公布,清华朱军、中科院陈云霁等十位 AI 相关学者获此殊荣)。
他们团队最具开创性的工作有两个:一是用异步的方式并行所有机器,二是提出去中心化的并行框架。
从一开始选择偏冷门的机器学习,到见证这一学科的逐年火热,刘霁博士不仅成为了机器学习飞速发展的亲历者,也一步一个脚印在该方向深耕。
作为腾讯 AI Lab 的一员,刘霁博士对雷锋网 AI 科技评论表示,他们的研究集中在游戏 AI,比如王者荣耀,星际争霸。「游戏 AI 是人工智能与博弈论的一个交叉领域,是理解通用人工智能的重要渠道。」
既投身学界,也涉足业界,刘霁博士说道,学术界和工业界各有各的优势和缺陷:学术界经常关心的问题未必是工业界真正的痛点,但是可以锻炼思维和解决问题的能力;工业界存在极具应用价值的问题,但很多时候缺乏追求技术上的创新。「二者如果能有机结合,我想一定能碰撞出不一样的火花。」
立足当下,放眼未来,他对研究并行优化、机器学习的同学提出建议:
「深度学习的热潮终将褪去……把基本功打扎实,少一些功利态度,多看看比较难的文章,这样才能以不变应万变迎接深度学习后的下一个热潮。」
恭喜您入选 MIT TR35 China 发明家榜单,这是对您研究工作的肯定,您有何感想可以分享一下?
非常感谢我的学生和所有的团队成员,我想这个荣誉属于大家。同时也非常感谢张潼老师以及所有推荐人的支持。感觉外界对我们的期望更高了。
您认为这次的成功上榜主要取决于哪些要素?
-
首先得益于这个大环境对 AI 的追捧。AI 正处于历史的风口浪尖,社会和人类对 AI 有着无限甚至不太理智的憧憬和期待。
-
同时也得益于自己在这个方向不懈的坚持,还记得我刚开始从事研究的时候,有两个研究方向可以选择:图形学或者机器学习。图形学更容易找工作,但是我选了机器学习。机器学习在那时候算偏冷门的研究方向,而且很难就业(彼时很难想像现在的火爆)。当时做出这种选择的主要原因是我对研究通用性的方法更感兴趣,个人感觉这更有挑战,不是所有人都能做的(尤其读了几篇张潼老师的文章以后)。
-
还有一个重要的原因是在正确的时候总能遇到合适的前辈和师长给我指引,比如:机器学习的启蒙老师叶杰平老师(密歇根大学计算机系终身教授)在我初入行就帮我找到合适的问题,后续再通过努力,总能取得一些阶段性的成果,订立一些宏大的目标。我从 Benjamin Recht(加州大学伯克利计算机系终身教授)那里学到了如何寻找有价值的科研问题;从博士导师 Stephen Wright(威斯康星大学计算机系 George B. Dantzig professor and Amar and Balinder Sohi professor)那里看到了最纯粹的科研本质和最严谨的科研态度;从 Ming Yuan(哥伦比亚统计系教授)那里学到了从一般到特殊再从特殊到一般的科研方法论;从 Jerry Zhu(威斯康星大学计算机系 Sheldon & Marianne Lubar Professor)那里学到了如何开拓一个全新的研究领域。
您当选的理由是「提出一系列异步并行算法,解决了传统同步并行算法瓶颈问题,设计机器学习中去中心化的并行计算框架,可以极大地减少通讯代价。」能具体谈谈您这一系列相关的研究工作吗?这些工作给目前的人工智能社群带来了哪些意义?
这一系列工作对 AI 有着非常重要的意义。将 AI 转化成生产力主要取决于两个方面:
第一,如何把实际问题转化成计算问题;第二,如何将计算问题求解变得高效。我在这两方面均有涉猎。
第一个方面的工作包括强化学习,稀疏学习等。我们在强化学习方面的研究在人工智能顶级会议 UAI 上获得 Facebook 最优学生论文奖。
第二个方面的工作主要是在并行计算上,提高并行效率可以有效提高训练 AI 的效率,让 AI 的迭代和产业化更加迅速。
当未来算法模型比较固定以后,大公司之间的竞争更多是计算效率的竞争。比如训练围棋 AI 的时候,成百上千的机器需要跑好几周的时间。如果有公司可以在一周内搞定,那么就会有更多的时间和机会去迭代和试错,有更大的可能训练出比 AlphaGo 更厉害的 AI。
并行是提高计算效率的主要途径,目前的主要难度在于如何如何提高并行效率。通俗一点讲,比如用一台机器训练围棋 AI 需要 1000 天,现在给你 50 台机器,你需要多久才能完成?最理想的情况是 20 天(这是最高的并行效率)。这在实际上不能实现,因为机器之间需要通讯协调工作,而当机器非常多的时候,代价非常大。我们主要解决的问题是如何减少机器之间通讯的代价,进而提高并行的效率。
我们最具有开创性的两个工作如下:
第一个先驱性的工作是用异步的方式并行所有的机器。异步是相对于同步而言,同步的方式比较好理解。
我们考虑求解一个机器学习的问题,这样的问题通常都能分解为若干个大任务,一个处于中心的机器每次都将大任务分解,然后送给每个机器,等所有机器都执行完任务之后,将他们返回的结果汇总,然后进入下一个大任务。这是最直观的并行方式,主要问题在于有的机器快有的机器慢,导致每次所有机器都在等待最慢的那个。在前面提到的那个例子里,可能需要 80 到 100 天。
异步并行可以解决这种快等慢的问题,简单来说就是让所有机器都不需要等待其他机器,每个机器只要完成了分给的任务,直接到中心的那个机器领取新任务,不用跟其他机器协同或者等待。这种方式完全打破了传统的同步并行方式,极大节省了同步协同代价。但是这种方式完全改变了任务执行的顺序,是否还能达到同步方式的解并不是显而易见的。
我们做了很多理论和实践上的工作,奠定了异步并行的技术基础。在前面的那个例子里面,通常只需要 30 到 40 天,相比同步的方法可以节省超过 50% 的时间。现在异步并行技术已经广泛被机器学习软件采用,比如 Google 的 TensorFlow,Amazon 的 MXNet,还有 Microsoft 的 CNTK。
我们的第二个开创性的工作是提出了去中心化的并行框架。
传统的并行架构都是假设有一个中心化的节点,来收集结果和分配任务给其他机器,这样做的主要问题在于中心节点会遭遇通讯拥堵,尤其是在网络条件不佳的状况下,以为所有机器都需要跟这个中心节点交互。为了缓解这种通讯拥堵,我们提出了一种去中心化的并行框架。简单来说就是去掉了中心节点,机器跟几个邻居之间互联通讯。
我们从理论和实践上都证明了这种方式能够保证求解的正确性,相比于传统的中心化的方法,不会增加额外的计算量,可以有效缓解交通拥堵情况,从而提高并行效率。这种去中心化的技术目前还比较新,我们相关的工作入选机器学习顶级会议 NIPS 2017 的大会宣讲论文(Oral 的入选概率大概 1%)。相信在未来,会对新一代的并行计算平台和软件开发产生极其重要的影响。
目前对这种去中心化的数据的理论研究,还有哪些亟待突破的地方。而想要大规模应用于工业实践,又有哪些难点?
主要有几个方面:
如何设计更高效的算法提高这种分布式学习的效率。
如何有效平衡通讯代价和计算代价。
如果有的节点向它的相邻节点传递错误信息,该如何设计算法保证正确性和稳定性。
我想最后一点是用于大规模工业实践最难的地方。
除了并行计算,您的研究还涉及到优化算法、强化学习。此外,您还在罗切斯特大学建立了机器学习和优化研究组。目前你们小组在优化算法、机器学习方面取得了哪些进展?
优化算法和并行计算是密切联系的,前面已经有很多介绍。我主要介绍一下与强化学习相关的研究。
我第一次接触强化学习是在2010年举办 NIPS 大会时,那时机器学习并不火,强化学习更是冷门中的冷门。我们做过的两个比较有影响力的工作都是关于如何求解强化学习中的核心问题 Bellman 方程,Bellman 方程不同于一般的机器学习或者深度学习求解的最小化优化问题。
传统的方法为了求解,做了各种各样的近似,导致不太容易扩展到求解大数据的问题,理论性质难以分析。我们找到了一种跟 Bellman 方程等价的最小化最大化优化问题,直接把原始问题和优化问题联系起来了,这样一来,不仅可以应用很多优化的理论性质,而且也容易扩展到大数据计算。这个工作获得了 2015 UAI 大会上的 Facebook 最优学生论文奖。
我们第二个重要的工作是直接求解 Bellman 方程(不做任何近似或者等价变换),我跟在普林斯顿的 Mengdi Wang 教授合作,研发了一套新的最优化的技术,称为 composition 优化。相应的算法和理论框架都已经建立起来了,开启了一种新的求解强化学习问题的思路。
目前机器学习的优化算法很大程度上仍然依赖研究者的经验方法,缺乏理论支持及可解释性。您认为可以从哪些角度来解决算法的黑箱问题?
我想你主要说的是深度学习这种 nonconvex 的优化问题吧(convex 的问题已经理解得相对比较清楚了)。我觉得要解决这个问题,技术层面是其次,更重要的是需要支持和鼓励根本性研究的环境。
坦白来讲,我个人觉得很多深度学习相关的优化算法文章和建模文章并不严谨,包括一些大牛的文章。文章大多缺乏严谨的推理和论证,过分相信经验性的东西。比如我们现在常用的深度学习的工具包(比如 TensorFlow)里的很多优化技巧都缺乏严格的理论论证,例如 batch normalization,random dropout 等等。大家的逻辑是:一旦有文章说经验上效果不错,也有现成的工具包,咱们就用吧,不用管是否收敛。如果效果不好,咱们调调参数,要不再换一个方法,最后不行了就改网络。从工程上讲这个是完全没有问题的,因为目的只是做好一个特定的应用或者数据集。但是如果从研究的角度会造成不良的后果,因为研究的目的是为了提供稳定性好适应性强最好还能有清晰的理论保证的解决一类问题和应用的算法和工具。
从功利的角度来讲,发一篇深度学习理论的研究文章要比发一篇深度学习实验研究的文章难很多。当一个领域的大多数人都完全相信纯经验的东西,从研究上讲这是非常危险的。久而久之,大家就不会去质疑这些常用的方法是否正确,尽管它很有可能是不完全正确的。这种研究方式也会助长研究者不严谨的作风。
深度学习的一些经验性研究的文章经常出现一些相互对立的结论,比如我曾听说过两个截然不同的结论,一个是说深度学习训练时大 batch 好,另外一篇文章说小 batch 好。想想看,这些不能完全经得起推敲的东西,一旦固化到我们的硬件,应用到我们的健康医疗,将会是多么令人不安的事情。
总的来说,我觉得需要有鼓励研究者去探寻根本的环境,少一些投机式的研究。最后我想借用 Eric Xing 在深度学习是不是炼金术之争上的一句话:炼金术师并不可耻,可耻的是并不努力从「炼金术师」学成「化学家」。
同时投身于学界和业界,您如何看待这两者之间的异同点?
就我个人来讲,学术界的研究更加纯粹和单一,目的是把一个个抽象的学术问题研究清楚,衡量的标准大多是论文的发表以及发明各种酷炫的方法。而工业界是真正接触实际项目的地方,衡量标准是项目的成功与否,更像一个系统工程,需要有产品化的思维,最后能把东西做出来才是目的,中间任何先进或者酷炫的技术都不是目的。
学术界和工业界各有各的优势和缺陷。学术界经常关心的问题未必是工业界真正的痛点,但是可以锻炼思维和解决单个问题的能力,而工业界有极具实际应用价值的问题,但很多时候过度依赖于搭积木的方式完成项目,缺乏对技术上创新的追求。
如果二者能有机结合,我想一定能碰撞出不一样的火花。腾讯在内容、游戏、社交到医疗领域,有极为丰富的应用场景,而 AI Lab 也有优秀的研究与工程师团队,这种研究与应用结合,非常有利于推进技术的快速迭代与发展。
对于研究并行计算、机器学习和优化算法的同学们,您有哪些学习和研究上的建议?
深度学习的热潮终将褪去,将来它很有可能成为大家都会的一种应用工具,而且使用也会越来越方便,连自动调参都能实现,完全成为端到端的服务。
我的建议是与其现在猛追深度学习的热潮,不如多学数学、优化、统计,把基本功打扎实,少一些功利态度,多看看比较难的文章,这样才能以不变应万变,迎接深度学习后的下一个热潮。
本文主要内容引自 雷锋网
336 thoughts on “腾讯 AI Lab 刘霁谈机器学习,异步计算和去中心化是两大杀器”