1956年的夏天,一场在美国达特茅斯(Dartmouth)大学召开的学术会议,多年以后被认定为全球人工智能研究的起点。2016年的春天,一场AlphaGo与世界顶级围棋高手李世石的人机世纪对战,把全球推上了人工智能浪潮的新高。
经历了两次起伏,人工智能现在进入了全球爆发的前夜。仅在中国就有上亿人直接或间接地观看了AlphaGo与李世石的比赛,而在2016年初,还有IBM在全球大举推广基于IBM Watson的认知计算,Watson的前身就是1997年打败了国际象棋大师卡斯帕罗夫的“深蓝”。
中国有句古话叫做60年一轮回。然而对于人工智能来说,往后的60年并不仅是轮回,而是新生。前60年的人工智能历程,可以用“无穷动”来形容;后60年的人工智能发展,可以用“无穷大”来期许。
“无穷动”是一首意大利小提琴名曲,卡耐基·梅隆大学人工智能教授邢波用这个名字命名自己研究小组研发的新一代分布式机器学习系统。“无穷动”又是一种寓意,代表了在过去60年间甚至到更远的古代,人们对于智能机器永无止境的想象以及去实践的冲动。
人们对于智能机器的想像永无止境
亚里士多德曾说过,如果机器能干很多活,岂不能让人类解放出来。《星球大战》《黑客帝国》《人工智能》等科幻电影,激发了一代又一代学者和实业家,前伏后继地投入到人工智能的研究中。AlphaGo算法的主要发明人,就是受了“深蓝”的影响而加入AI的行列。
在前60年的发展中,人工智能研究也取得了阶段性成果,特别是有监督深度学习在自然语言理解、语音识别、图像识别等人工智能基础领域,都已经发展到了成熟阶段。接下来,就是AlphaGo开创的无监督深度学习的未来——摆脱人类“监督”的增强学习。
实际上,随着计算机的发明,人们一直在探讨,这到底会导致什么样的人工智能?一种预见是可以产生功能性的人工智能,这就是今天有监督深度学习所广泛取得的成果。还有一种观点是人工智能可以模仿人的思维和感情活动,这就是无监督深度学习将要开创的未来。
当智能机器可以自己张开眼睛看世界,通过自主探索世界来获得智能的话,未来可能出现的变化就是“无穷大”了。从“无穷动”到“无穷大”,2016年注定是一个精彩之年。
上篇:前60年“无穷动”的韵律
人工智能头60年的发展,就是在起起伏伏、寒冬与新潮、失望与希望之间的无穷动韵律,寻找着理论与实践的最佳结合点。
从清华大学毕业后,邢波到Rutgers大学和伯克利攻读研究生,之后到卡耐基·梅隆大学成为一名人工智能领域的教授。卡耐基·梅隆是全球重要的人工智能研究基地,很多原创性成果都出自这所大学。
卡耐基·梅隆大学人工智能教授邢波
邢波在卡耐基·梅隆大学成立了一个人工智能小组SAILING LAB,试图在人工智能各个方面产生突破,理论研究包括概率图模型的最大似然和最大间隔学习、非参数空间高维推理、非稳态时间序列分析、非参数贝叶斯化推理等,应用研究包括计算生物学、群体遗传学、基因组学、社交网络和社交群体、互联网级文本挖掘和自然语言处理、计算金融等。
2016年3月19日,在AlphaGo战胜李世石后的第4天,邢波随着《未来论坛》之理解未来系列讲座走进了京东集团。邢波回顾了全球人工智能历程,人工智能作为一个科学和工程领域,得益于20个世纪国际科学、计算机科学、信息论、控制论等很多科学发展的交汇点。人工智能的研究基于一个很基本的假设,即认为人的思维活动可以用机械方式替代。
60年前的全球人工智能大会
谈到人工智能,就不能不提到鼻祖式人物:图灵。1936年,英国数学家、逻辑学家阿兰·麦席森·图灵(1912~1954)提出了一种抽象的计算模型——图灵机(TuringMachine),用纸带式机器来模拟人们进行数学运算的过程,图灵本人被视为计算机科学之父。
1959年,图灵发表了一篇划时代的论文《计算机器与智能》,文中提出了人工智能领域著名的图灵测试——如果电脑能在5分钟内回答由人类测试者提出的一系列问题,且其超过30%的回答让测试者误认为是人类所答,则电脑就通过测试并可下结论为机器具有智能。
卡耐基·梅隆大学
图灵测试的概念极大影响人工智能对于功能的定义,在这个途径上,卡耐基·梅隆两位科学家希尔伯特·西蒙(HerbertSimon)、曼纽尔·布卢姆(ManuelBlum)做了前期的工作,这二位又被称为逻辑理论家,他们非常精妙地证明了罗素《数学原理》52道中的38道。西蒙宣称在10年之内,机器就可以达到和人类智能一样的高度。西蒙和布卢姆均为图灵奖获得者。
第一批人工智能探索者找到共同的语言后,于整整60年前的1956年,在美国达特茅斯大学开了一次会,希望确立人工智能作为一门科学的任务和完整路径。与会者们也宣称,人工智能的特征都可以被精准描述,精准描述后就可以用机器来模拟和实现。后来普遍认为,达特茅斯会议标志着人工智能的正式诞生。
人工智能第一次浪潮和寒冬
达特茅斯会议推动了全球第一次人工智能浪潮的出现,即为1956年到1974年。当时乐观的气氛弥漫着整个学界,在算法方面出现了很多世界级的发明,其中包括一种叫做增强学习的雏形(即贝尔曼公式),增强学习就是谷歌AlphaGo算法核心思想内容。现在常听到的深度学习模型,其雏形叫做感知器,也是在那几年间发明的。
60年前的达特茅斯大学
除了算法和方法论有了新的进展,在第一次浪潮中,科学家们还造出了聪明的机器。其中,有一台叫做STUDENT(1964)的机器能证明应用题,还有一台叫做ELIZA(1966)的机器可以实现简单人机对话。于是,人工智能界认为按照这样的发展速度,人工智能真的可以代替人类。
第一次人工智能冬天出现在1974年到1980年。这是怎么回事呢?因为人们发现逻辑证明器、感知器、增强学习等等只能做很简单、非常专门且很窄的任务,稍微超出范围就无法应对。这里面存在两方面局限:一方面,人工智能所基于的数学模型和数学手段被发现有一定的缺陷;另一方面,有很多计算复杂度以指数程度增加,所以成为了不可能完成的计算任务。
先天缺陷导致人工智能在早期发展过程中遇到瓶颈,所以第一次冬天很快到来,对人工智能的资助相应也就被缩减或取消了。
现代PC“促成”第二次人工智能寒冬
进入20世纪80年代,卡耐基·梅隆大学为DEC公司制造出了专家系统(1980),这个专家系统可帮助DEC公司每年节约4000万美元左右的费用,特别是在决策方面能提供有价值的内容。受此鼓励,很多国家包括日本、美国都再次投入巨资开发所谓第5代计算机(1982),当时叫做人工智能计算机。
在80年代出现了人工智能数学模型方面的重大发明,其中包括著名的多层神经网络(1986)和BP反向传播算法(1986)等,也出现了能与人类下象棋的高度智能机器(1989)。此外,其它成果包括能自动识别信封上邮政编码的机器,就是通过人工智能网络来实现的,精度可达99%以上,已经超过普通人的水平。于是,大家又开始觉得人工智能还是有戏。
早期的专家系统Symbolics 3640
然而,1987年到1993年现代PC的出现,让人工智能的寒冬再次降临。当时苹果、IBM开始推广第一代台式机,计算机开始走入个人家庭,其费用远远低于专家系统所使用的Symbolics和Lisp等机器。相比于现代PC,专家系统被认为古老陈旧而非常难以维护。于是,政府经费开始下降,寒冬又一次来临。
那时,甚至学者们都不太好意思说是从事人工智能研究的。人们开始思考人工智能到底往何处走,到底要实现什么样的人工智能。
现代AI的曙光:新工具、新理念和摩尔定律
如何在有限的资源下做有用的事情,这是人工智能一直以来的挑战。一个现实的途径就是像人类造飞机一样,从生物界获得启发后,以工程化方法对功能进行简化、部署简单的数学模型以及开发强大的飞机引擎。
现代AI的曙光发生在这个阶段,出现了新的数学工具、新的理论和摩尔定律。人工智能也在确定自己的方向,其中一个选择就是要做实用性、功能性的人工智能,这导致了一个新的人工智能路径。由于对于人工智能任务的明确和简化,带来了新的繁荣。
基于神经元网络的深度学习算法示意图
在新的数学工具方面,原来已经存在于数学或者其他学科的文献中的数学模型,被重新发掘或者发明出来。当时比较显著几个成果包括最近获得图灵奖的图模型以及图优化、深度学习网络等,都是大约在15年前重新被提出来,重新开始研究。
在新的理论方面,由于数学模型对自然世界的简化,有着非常明确的数理逻辑,使得理论分析和证明成为可能,可以分析出到底需要多少数据量和计算量来以得期望的结果,这对开发相应的计算系统非常有帮助。
在更重要的一方面,摩尔定律让计算越来越强大,而强大计算机很少被用在人工智能早期研究中,因为早期的人工智能研究更多被定义为数学和算法研究。当更强大的计算能力被转移到人工智能研究后,显著提高了人工智能的研究效果。
由于这一系列的突破,人工智能又产生了一个新的繁荣期。最早的结果即为1997年IBM深蓝战胜国际象棋大师。在更加通用型的功能性方面,机器在数学竞赛、识别图片的比赛中,也可以达到或者超过人类的标准。
人工智能的繁荣也促进了机器人的进步,包括把人工智能原理用在机器狗的设计上。无论是人工智能狗还是无人车驾驶,都不是用编程方法写出来,而是通过一套学习算法在模拟器中不断的走路和开车,让机器自己产生行为策略,这是人工智能和原先控制论最不同的地方。
2011年,Facebook的挑战
在2011年的时候,邢波迎来做教授的第一次学术休假,美国教授大概每6年可以做一次休假。邢波选择去了一家很年轻的公司做客座教授,这就是当时的Facebook。那个时候只有500人的Facebook在斯坦福大学的仓库里搭起了自己的实验室,当时Facebook提出希望连接上亿用户,也希望能够运用人工智能投放有价值的广告以增加公司收入。
Facebook当时的目标为在不久的将来把用户从1亿增长到10亿,邢波的任务就是帮助Facebook实现这个愿景。作为Facebook的第一个客座教授,他的第一个任务要把用户在社交网络里连接起来,然后把这种连接投射到社交空间中,从而做社群检测并把社群检测用来实现用户分组和特征化。
这个任务并不难,可以通过混合成员随机区块模型来实现,这是2011年最好的处理网络数据的AI算法。但其中有一个问题,即计算的复杂度呈平方级现象,即用户数每增加10倍就需要100倍的CPU和存储,因此单机最多处理1万人,这是当时最大问题。
邢波于是通过研究算法模型实现计算加速,包括在社交网络抽取比“边”更强大的特征叫做“三角形”,模型也从混合块模型升级到混合三角模型。混合算法实现了显著的革新,计算复杂度在不断下降。当时的研究成果被用于全球电影明星网络研究,大约在100万人左右的网络,可实时展示人们在模型驱动下不断在社交空间找朋友并落入到不同的社交群。
100万的网络、几亿条边、500多亿特征数,用10核单机在40分钟内完成了模拟,这也是惊人的成果。
但问题来了,Facebook的目标用户不是100万,而是1亿用户。100万用户模拟只用了一台笔记本电脑,而当时在Facebook的机房里有1000台主机,上面跑着可运行并行程序Hadoop系统。当时邢波把任务进行了并行化处理,希望能在0.6分钟内处理1亿用户。可结果并不理想,一个星期后依然没有结果。
AI对于传统计算架构的挑战
到底发生什么事情呢?原来,用Hadoop进行并行计算的时候,其原理为把计算任务分解为若干子任务,然后在不同机器上运行不同的子任务,当每一个子任务都完成后再通过所有子任务之间的一次握手通信,宣告这次并行计算的结束。
Hadoop起源于1945年的冯·诺依曼架构,该架构也是现代计算机的原型,包括中央处理器、记忆存储器、输入和输出等,通过硬件和软件实现简洁的桥接,而不用对每个晶体管和电子管做局部编程。在20世纪60年代就已经有人看到冯·诺依曼的局限,当有更大的任务或者速度有更高要求,需要让很多台机器一起执行同一个任务,于是就有了早期的并行计算系统。
后来,莱斯利·兰伯特(LeslieLamport)创造了BSP桥接模型(1980~1990s),通过简单抽象把计算和通信分成了两个不重合的项,每个项只完成各自的计算或通信任务。Hadoop(2000s)就是这一思路的优秀代表,它可以用不同的机器以并行方式执行子任务,子任务完成后再通过握手通信完成计算。
Hadoop是当前流行的并行计算架构
Hadoop现在已经成为主流的运算平台,对传统计算程序像数据库、统计数据归纳等都相当有效。BSP桥接模型的一个最近突破就是Spark(2010s),它与Hadoop的区别在于,Hadoop用硬盘作为存储单元而Spark用内存作为存储单元,但二者的通信原理是一样的。
于是,在Hadoop机制下,整个并行计算的瓶颈出现在机群里最慢的那台机器。而在实际情况中,总会出现最慢的一台机器。因为整个机群是共享计算资源,同期还有其它计算任务跑在机器上争抢计算资源,此外甚至机房的温度不均匀也会影响机器的速度。
装了Hadoop的千台机器很好地支持Facebook当时其他的业务,包括搜索业务和存储业务。为什么到了人工智能业务就不行了呢?原因是人工智能计算有它的独特性,人工智能是迭代式反复读取数据和刷新模型的方式,与传统计算模式有很大的不同,这是人工智能发展遇到的又一瓶颈。
从人工智能角度来讲,需要完成大型的计算任务,光有好的数学模型或算法还不够,还需要强力计算引擎支持,而且这个计算引擎跟原来的不一样。这就是当时邢波在Facebook机群上运行人工智能程序,每一次迭代接近结束进入下一个迭代时,总会出现已经完成99%还有1%的计算没有完成并且拖延一个星期的情况。
新的AI计算引擎
人工智能采用了渐进迭代方式,迭代速度和迭代效率与数学方程难度有关。在大数据和复杂任务情况下,每一次计算中心都要把大数据遍历刷一遍,1000次迭代就要刷1000遍。如果深度学习模型有几十亿参数,意味着每次迭代都要把所有参数刷新一遍。而当数据和模型同时放大时,这个任务就变得无比困难。
传统计算架构下的BSP通信协议,就是先计算再通信、再计算再通信,这是实现计算一致性基本保障之一。理论上假设这样的代价为零,但在工程实际系统中这并不是一个零代价的工程,各种问题使得机群不同步,要花很多时间等待计算的一致性。
邢波通过自己在Facebook的经历,发现人工智能运算和传统计算非常不一样,传统计算由指令集构成,执行指令目的就是执行程序,执行的过程中不能出错。这是传统执行计算任务经典特征,所有操作系统都是围绕着这个目的来优化,包括容错性和通信有效性等。
人工智能算法就像爬山,中间可以出错,只要能到达山顶。
人工智能的运算也是由指令集构成,但执行指令集的执行只是一个过程而不是目的,目的是优化算法。就像爬山一样,目的是爬到山顶。传统计算体系是严格设定登山路线,一步也不能出错,但人工智能则可以在中间出错,只要能到山顶。
2012年,邢波及其同事设计了一种新的参数服务器模型,这个框架下的核心概念,就是人工智能的计算任务不再像传统计算任务那样以精准性为前提,而是像执行救火任务的机群那样,其任务为“灭火”,至于如何达到火场只是一个手段。而且“扑火机群”还需要以机群为整体给上级一个简单的指挥界面,具体飞行细节则由飞行员们自行协调,这是人工智能的新观点。
基于这样一个目标,邢波及其同事开发了新的桥接模型——SSP有限异步模型。在有限异步模型下,运行机器服从中央指挥,但每个“战队”都有局限性自由度,总体目的是打赢仗。传统并行计算,需要很精准的协调;而完全异步模型下,每个机器各自为政,大部分不能协调实现共同目标。于是,邢波选择了第三条路线:有限异步模型。
邢波用有限异步桥接原理去构建参数服务器的编程界面,是一个分享内存的大规模编程界面,程序运行速度和精度都有了巨大的提升。而且这个系统并不是为某一个特定人工智能计算而设计的,更是一个公用的计算平台模型,在设计时考虑了整个人工智能程序的普遍共性。这个系统也有非常灵活的容错及通讯管理机制,最后的结果就是系统功效的巨大提升。
2013年,邢波研究小组取得了另一个突破。当训练巨大模型的时候,需要把模型分解到不同机器上,每个机器上完成一个子任务,子任务间必须有效通信,才能保证整体任务不失败。于是就设计了一个动态调度器Strads,其原理像拉小提琴十个手指一样,虽然很快速且每个手指执行异步异时的动作,但最终是为了同一首小提琴曲。
最后结果不仅可以保障大型模型程序在很细颗粒度下的正确性,有时候还能实现令人吃惊的加速收敛曲线效果,这是传统的完全同步运行程序无法达到的结果。
人工智能“无穷动”
到了2013年年底的时候,卡耐基·梅隆大学对这个分布式机器学习系统做了开源发布,并命名为Petuum。这个名字源于意大利小提琴帕格尼尼的著名小提琴曲Moto Perpetumm(无穷动)。这首以快著称的小提琴曲,共3005个音符、演奏者手指起落平均每秒达16次之多,曲子优美而紧凑,表达了Petuum的设计思想。
著名小提琴曲Moto Perpetumm(无穷动)优美而紧凑
Petuum从2013年12月发布0.1版本后,到2015年7月的1.1版本,一共发布了5个版本。现在Petuum解决了1亿个网络节点的挑战,只用5台Petuum机器就在37小时内处理完了1亿个节点,而1000台Hadoop机群预期可能要跑400个小时。
Petuum也在不断的发展,包括多任务资源调配问题。如同交响乐队让不同乐器表现不同的节奏与声音,Petuum开发了面向多任务的灵活资源配置系统。在AI人工智能程序部署方面,Petuum以容器的方式对程序进行了封装,可以在不同硬件环境中自如运行,这是即插即用的设计思路。整个Petuum系统为轻量级解决方法,轻便可用、方便调试、易于维护,可以说是新一代数据中心操作系统。此外,Petuum还可运行在AWS及谷歌公有云中。
“Petuum就是一个交响乐队,可以有不同的组合,根据需要演奏出不同的风格,一个好的操作系统应该有这样的灵活性。”目前,系统Petuum处在多次发布中,有规律发布开源的软件,包括平台和工具库,工具库有很多常用人工智能的软件,包括深度学习、主题模型等等,可登陆Petuum.org。
Petuum是从软件优化角度对Hadoop和Spark等分布式计算系统进行了优化,在另外一条线上还有其它的科研机构试图从硬件角度彻底解决冯·诺依曼架构的瓶颈,这就是神经元芯片以及更远期的量子计算。
总之,人工智能头60年的发展,就是在起起伏伏、寒冬与新潮、失望与希望之间的无穷动韵律,寻找着理论与实践的最佳结合点。Petuum的出现,为头60年划上了一个相对完美的句号,在于Petuum是在软件层面的革新,底层依然使用CPU和GPU组成的标准化服务器机群,这在梦想与现实之间找到一个平衡点。
微信扫描二维码,关注公众号。