20年内,机器将能完成人能做到的一切工作。
——赫伯特·西蒙,诺贝尔奖及图灵奖获得者,1965年
1783年5月28日,匈牙利发明家沃尔夫冈·冯·肯佩伦(Wolfgang von Kempelen)致信本杰明·富兰克林(Benjamin Franklin),邀请他前往自己在巴黎居住的旅馆,参观“一个非常有趣的机器”,这个机器“曾经令法国科学院所有成员都迷惑不解”。富兰克林,当时任美国驻法国大使,接受邀请后不久便表示肯佩伦是个天才。那个叫“土耳其机器人(Mechanical Turk)”的机器,是个身披毛皮长袍,缠着头巾的会自动下国际象棋的机器人。接下去的80年中,这个机器在全欧洲巡回展示,和众多显赫之人对弈,例如拿破仑·波拿巴(Napoleon Bonaparte)、埃德加·爱伦·坡(Edgar Allan Poe),以及富兰克林本人。通常情况下这个机器人都能取胜,但它也曾败给当时的欧洲国际象棋冠军弗朗索瓦-安德烈·丹尼根·菲利多尔(Franois-André Danican Philidor)。虽然如此,后者也承认这是他下过的最累人的一盘棋了。年轻的查尔斯·巴贝奇(Charles Babbage,据说他设计了可编程计算机的第一个概念模型)对土耳其机器人万分着迷。多年后,他还会回想起土耳其机器人,并主张下国际象棋将是他的分析机(Analytical Engine)最为迷人的应用。
那个时候,肯佩伦的机器也有不少质疑者。确实,最后证明了那个机器根本不会自动下棋,而是“一个精心策划的骗局,无非是一个躲起来的人类棋手,一个铰接机械臂,和一些磁性联动装置而已”。可是,科学家和工程师都相信存在这样的机器人,也许人工智能这个梦本身太吸引人了吧。
150年后,这个幻想才得以不再借助诡计,而是靠着科学慢慢实现。
1950年,英国数学家艾伦·图灵(Alan Turing)发表了一篇名为《机器能思考吗?》的论文,为人工智能打下了真正的科学基础。图灵想象了这样一种场景,计算机能和人类交谈,并且让人类误判其为人类。这个假想的模仿游戏后来被称为图灵测试,在其后建立了衡量机器智能的雄心勃勃的里程碑。
不久之后,美国计算机科学家约翰·麦卡锡(John McCarthy)提议组织一次针对这个目标的研讨会,寻求让机器解决只有人类才有能力解决的种种难题的方法。麦卡锡募集资金的过程很不顺利,图灵的问题也许很撩人心弦,但如何真正着手实现却让很多人摸不着头脑。麦卡锡曾向洛克菲勒基金会(The Rockefeller Foundation)寻求投资,基金会的一名代表说到“总体感觉就是,这是个关于思维的数学模型新领域……要清晰把握仍然很困难”。话虽如此,基金会还是勉强赞助了他7500美金组织这次会议。
当时,这个领域的研究者长久以来关注的还只是狭隘的领域,例如自动机研究(automata studies)、控制论(cybernetics)和信息处理。在麦卡锡的眼中,这些研究领域都不足以支撑即将到来的重大革命,没有一个名字能够帮助圈外人理解他们所研究内容的深远意义。他有一次想解决这个问题,于是力劝数学家克劳德·香农(Claude Shannon)更改他所著的一本书的书名,那本书原本要命名为《自动机研究》。麦卡锡认为这个名字过于保守。香农拒绝了他的建议,但麦卡锡抓住机会将他的研讨会命名为“达特茅斯人工智能夏季研讨会(Dartmouth Summer Research Project on Arti cial Intelligence)”。历史学家相信,人工智能这个术语就此确立。“称之为人工智能显得极其雄心勃勃,激励了很多人进入这个领域,带来了大量进展。与此同时,也带来了被高度夸大的期望。”位于西雅图的华盛顿大学(University of Washington)的计算机科学家佩德罗·多明戈斯(Pedro Domingos)在我们最近的交谈中如此评论道。
那次会议最终于1956年夏季召开,吸引了约20名专家参加。会上形成了今日被人工智能视为基础的脚手架:确认了人类水平的智能是机器所要瞄准的黄金标准。“我觉得(会议所建立的)最主要的事情就是将人工智能这一概念视作科学的分支。仅仅这一点便激励了很多人以各自的方式来追逐人工智能的目标。”麦卡锡之后评论道。那次会议确认了图灵的问题虽然庞大,却是最适合定义这个新领域的研究内容:思维是什么?机器又是什么?两者于何处相结合、如何结合、目的又是什么?
那个时候,艾伦·图灵已在42岁时悲惨地死于氰化物中毒——是意外还是自杀仍无定论。他从未参加过人工智能科学家的大型聚会。但另一位先驱赫伯·西蒙(Herb Simon)参加了这次研讨会,他获得了1978年的诺贝尔经济学奖。他对经济学最重要的贡献就是指出了当时主流的经济决策模型的不足,该模型假设人们会做出完全理性决策以使效用最大化,现在这个模型仍在微观经济学中被广泛使用。他提出因为一些现实因素的制约,例如有限的时间和决策过程中的认知负担,人们常常寻求差强人意的方案而不是最优方案。西蒙关于“有限理性”的观点是行为经济学(behavioral economics)的基石之一。他还因其在人工智能方面的基础研究获得了计算机科学领域的“诺贝尔奖”——图灵奖。[9]
在参加达特茅斯会议的前几个月,西蒙在他的某个班上说“就在圣诞节假期里,艾尔·纽维尔(Al Newell)和我发明了个会思考的机器”。西蒙和纽维尔编写了第一个符号主义的软件程序,叫“逻辑理论家(Logic Theorist)”。这个软件证明了伯特兰·罗素(Bertrand Russell)和阿尔弗雷德·诺夫·怀特海(Alfred North Whitehead)所著的三卷巨作《数学原理》(Principia Mathematica)中提出的定理,甚至,用一位科学史家的话来说,“用比罗素和怀特海更优美的方法证明了一个定理”。对于这项工程学上的壮举,罗素本人回应道:“如果怀特海和我在浪费了10年光阴手工证明之前就知道这种可能性就好了。”
到1959年时,纽维尔和西蒙已经编写了第一个通用问题求解系统(general problem solver),能够应付更广泛的、可用公式表达的问题。在众人看来,这个软件程序表明了人类能够创建人工智能,巩固了西蒙和同事们在人工智能革命中的先驱者地位。[10]
到20世纪60年代中期时,人工智能界的雄心已然大大增长,西蒙曾声称“20年内,机器将能完成人能做到的一切工作”。1967年,麻省理工学院的工程师们开发的Mac Hack Ⅵ成为第一台参加人类国际象棋锦标赛并且赢得一场比赛的计算机。当时,人工智能界已经开始使用一些不同的方法开发智能系统。一些人,例如西蒙,依赖逻辑规则;另一些人使用统计技术,基于数据推导事件发生的概率(举个大家熟悉的当代例子,如果一封电子邮件包含了“免费资金”和“摆脱债务”这些关键字,那这封邮件是垃圾邮件的概率就会上升);还有些人使用神经网络,这是受到人脑中的神经元活动原理的启发而创建的一种技术,用来创建新的知识或者验证已有的知识。然而,到了1969年,这种方法失去了人工智能界的青睐,当时马文·明斯基(Marvin Minsky,人工智能先驱者和达特茅斯会议参加者)和他的同事西摩·佩尔特(Seymour Papert)出版了一本名为《感知器》(Perceptrons)的书,概括了神经网络的种种局限。他们的批判意见很快成为共识,人工智能界中的大多数人都丢下了神经网络,转而使用其他方法。如今回想起来,当时对于如何更好地创建一个神经网络的理解还是有局限性的,而且当时可用的计算资源对于如此复杂的技术而言也不够充足。“你的大脑是地球上最棒的超级计算机,而人们想用当时拥有的计算机完成同样的工作,是有点超前了。”多明戈斯说道。
接下来的10年中,可观的资金涌入了这个领域。但和20世纪70年代本身一样,这是一个过度承诺却无法兑现的年代。到了80年代,无论是政府投资人还是行业投资人,都因为看不到人工智能重大应用开花结果而倍感泄气。于是“人工智能的冬天”开始了。人工智能的投资直线下降,资金被投入了计算机科学的其他领域,例如网络化、数据库和信息检索。人工智能的媒体曝光率也同步下降。人们发现创建机器智能远比其鼓吹者期望的要难。人类有时候太把自己的智能当作理所当然的事情,却忘了进化花了数亿年的光阴来优化它,而且这个过程还远未结束。这个领域必须设置一些更现实的短期目标。
人工智能冬天导致了研究者和工程师转而处理不同类型的难题。之前他们的目标是通用人工智能(AGI),即人类水平的人工智能,能够应用到各种任务,也被称为强人工智能(strong AI)。如今看来,这个目标不仅过于野心勃勃,而且是条错路。于是关注点转向了更为实用的系统,重点在于更有可能交付的方法。
其中最为突出的是专家系统(expert systems):使用有针对性的知识和规则集,手工编写软件。想象一下,访谈一位医生,然后把他遵循的诊断规则编成代码,使诊断过程自动化。专家系统事实上成为20世纪90年代一次人工智能春天的主要驱动力。强大的早期成果吸引到了新的投资,公众又燃起了热情,尤其是1997年5月11日,IBM的深蓝在六局比赛中以3.5∶2.5击败了加里·卡斯帕罗夫(Garry Kasparov)——当时世界上有史以来级别最高的国际象棋大师。计算机史学家内森·恩斯门格(Nathan Ensmenger)将深蓝的胜利称为“现代计算史上最为关键的时刻之一”。
然而专家系统的能力也存在局限。一方面,专家系统擅长受限的、专门的任务,又被称为狭义人工智能(artificial narrow intelligence)或弱人工智能(weak AI)。另一方面,遇到未被明确编写如何处理的情况时,专家系统的算法就会失效。“到最后,大多数时候(专家系统)失效都是因为系统过于脆弱了。”多明戈斯解释。
21世纪初,研究者们开始意识到,不通过机器学习,计算机永远不可能获得真正的智能。研究重点转回了有适应能力、能够识别崭新的场景、然后自主推理解决的算法。可能这种算法刚诞生时性能很差,因为它们缺乏一些专家系统所具备的详细指令。但随着时间推移,它们能从数据中学习,表现会越来越好。
互联网时代的到来意味着获取大型数据集变得更容易了,这些数据集可用来训练机器学习算法。随着大数据革命到来的,还有更容易获得的专用处理器,这些处理器原本设计用来在游戏中处理3D画面,现在也能用来处理大型数据集。机器学习胜利回归所需的两个关键要素已经就位,第三个关键要素正在快速形成,那就是如何处理问题的范式转移[11]。
博士在读时,我研究过用简单的统计机器学习(statistical machine learning)方法来对付例如检测垃圾邮件之类的任务。用这种方法创建的工具会输入大量的邮件作为训练数据集,其中清晰地标注了垃圾邮件和正常邮件,这个工具能够自动学习和垃圾邮件相关的单词、短语和语言模式。这些工具运行得很好。在2013年的一次研究中,我的研究小组试图发现公司在Facebook上发布的社交媒体内容具备什么样的特征——情绪、幽默感、品牌引用、慈善传达等。我们首先创建了一个训练数据集包含有5000个邮件,其中诸如情绪和幽默感之类的特征已经人工标注。机器学习算法用这些数据进行训练,然后自动识别了超过100 000个其他邮件的内容特征。几个月中,我们评估调优了多个机器学习方法,最终得到一个内容特征识别准确率超过95%的算法。准确率是指预测准确的百分比:让一个垃圾邮件过滤器评估100个邮件,预测是否垃圾邮件,其中97个预测正确,那么准确率就是97%。
但我们和其他研究者都发现了这些方法的局限性。在传统的机器学习方法中,程序员通常需要指定查找的模式。举例而言,垃圾邮件检测算法可能会要求查看单个单词、双字短语、三字短语、词性和其他特定的语言模式。算法会检查训练数据集中的这些模式,决定哪些模式和垃圾邮件的关联最为密切。这些传统机器学习算法的性能(比如说以准确率来衡量)随着数据量的增加得到提高,但都有个极限。到某个点时,无论再追加多少数据,性能都不会再提高了。这些方法应用在复杂知觉任务中,例如识别和合成语音(想想Siri)及识别和追踪道路上的车辆(想想自动驾驶)时,未取得重大成功,也是这个原因。
近年来机器学习领域大爆发背后更为直接的原因则是深度学习(deep learning)的发展,这个术语指的是有多层结构的数字神经网络。在深度学习领域,程序员不再需要指定算法寻找的模式:算法会以不同的方式评估训练数据集,找出真正起作用的模式,这些模式连人类程序员都不一定会意识到。深度学习模型包含一个输入层,代表输入数据;一个输出层,代表判断的结果;还有两者之间的多个隐藏层,每个隐藏层都合并前一层的模式,识别数据中更为抽象和复杂的模式。举个例子,人脸识别深度学习模型的输入层可能只是直接记录输入图像中所有像素的RGB(红、绿、蓝)值,中间的隐藏层可能将这些简单的数值合并识别出一定的模式,例如眼睛的形状和额头的大小。模型依赖隐藏层识别出的模式进行最终输出,比方说,图像中人物的姓名。
在明斯基批判了神经网络之后,这种方法也许不再流行,但并没有完全消失。20世纪80年代,卡内基·梅隆大学的教授杰夫·欣顿(Geoff Hinton),如今就职于谷歌和多伦多大学,和同事们开发出一种快速的训练多层神经网络的算法。之后的数年内,很多研究者基于这个算法进行开发。他们的努力在2012年终于有了回报,欣顿的研究团队以大幅领先的优势赢得了ImageNet Challenge(机器视觉领域最权威的学术竞赛之一)。这场比赛中,各个团队比赛谁能创建出最好的图像识别算法。
深度学习模型中隐藏层识别诸如眼睛形状和额头大小的模式(基于吴恩达的原图)
深度学习方法在充分利用海量的现代数据方面更胜一筹,吴恩达(Andrew Ng)的示意图(请见下一页)很好地说明了这一点,他是斯坦福大学的计算机科学教授及百度的前首席科学家。这张图形展示了老式算法的性能比现代的深度学习算法更早地进入稳定阶段。深度学习算法的强项不只是它们能够处理海量数据,而且还能在此基础上蓬勃发展。对于数据在现代机器学习中的价值,如何高度评价都不为过。更多数据意味着存在更多算法可以学习的范例,更多的范例则带来准确率空前地提高。
海量的数据、处理能力和深度学习方法,三者合一,将机器学习重新带回舞台中央,创造了各式各样的现代奇迹,从可以从歌曲的音频信号中提取音乐特征的算法(以Spotify的方式),到可以诊断疾病的算法。
机器学习方法的性能对比训练数据的数量(基于吴恩达的原图)
1970年,杰克·迈尔斯(Jack Myers),一位德高望重的内科医师,亦是匹兹堡大学医学院主任,开始在诊断病人的过程中记录自己的思路。他不是要撰写书籍,也不是为了备课,而是和计算机科学家合作研发一台可以自主精确诊断疾病的机器。迈尔斯的任务就是将自己毕生所学教给这台机器。虽然数据收集的手段比较原始,但结果却令人震惊,这台机器能够“将3550种症状和超过500种疾病匹配,这占到了内科诊断约3/4的量”(《纽约时报》报道)。
这个系统被称为Internist-1/Caduceus,它是将医学研究论文编码为机器能够识别的形式,使得机器能应用专家知识从而拓展自己的能力。虽然这个系统因增强了人类医生的经验和技能而获得赞誉,但在完全替代医生诊断方面却收效甚微〔20世纪90年代中期,《新英格兰医学期刊》(New England Journal of Medicine)的一位评论家给其和一些类似系统打了C-的等级〕。
迈尔斯对这台机器投入了这么多的时间精力,他的经历说明了我们正从相对简单的任务,例如进行商品推荐,进步到更有挑战性的任务,例如诊断疾病。同时,我们无论从挑战的范围还是角度,离图灵问的那个“机器能够思考吗”的问题也越来越接近了。
类似Internist-1这样的专家系统还不够格被称为真正的智能,主要是因为两个不足之处。首先,它们没有使诊断的全流程自动化。卢克·奥克登-雷纳(Luke Oakden-Rayner),澳大利亚放射科医生,计算机科学研究者,也是一名博主,曾经就这个话题撰写过大量文章。他认为作为诊断医师,真正费时的不是处理所有的信息得出最终的意见。他认为资深的医生在几秒内就能通过简单的模式识别得出诊断结果。医生的大部分时间都花在了使用自己的五感——听病人的胸音,观察病人的苍白脸色——帮助捕获相关的信息。“几十年来,机器都不善于这种‘类人’的感知能力。”奥克登·雷纳写道。Internist-1这样的专家系统“让医生做了所有感知工作,然后把决策过程自动化了。这是个可以解决的问题,可是它……没有什么价值”。然而,擅长感知的深度学习算法,在许多任务中已经可以和人类媲美了(一个明显的例子就是智能手机的语音转录功能)。
专家系统的第二个缺点是,软件对每一种可能遇到的情况该如何应对都需要手工编程。对于程序员来说,这似乎是无穷无尽的任务,尤其当系统日益复杂时。想象一下为无人驾驶汽车的运动规划系统编程的任务,换句话说,就是驾驶策略,实质上就是处理交通状况和其他路上情况的策略,例如车道关闭和交通事故等。用专家系统来解决这个问题,需要识别一组规则然后进行编程,这些规则是我们在驾驶时凭直觉就会遵守的,例如“不要撞行人”和“不要撞树”,还有些规则是我们应该遵守但很多人没有遵守的,例如“变道前先打方向灯”。
一家叫nuTonomy的初创公司近期在新加坡上线了一支无人驾驶车队,使用的就是这种规则。这家公司的驾驶策略包含了完整的规则树:一些规则比其他规则优先级更高,例如“不要撞行人”优先级比“遇到黄灯要停车”更高。基于当前行驶环境的数据,车辆的算法会实时衡量它能选择的备选路径,并且从中选择和规则树最为匹配的路径。
谷歌的自动驾驶原型车则相反,不是基于人类专家编写的规则。相反,谷歌的算法使用人类驾驶视频的数据库进行训练,基于机器学习技术,汽车拥有了自己的驾驶策略。然后,如同15岁的少年在父母的陪同下学习驾驶,谷歌的无人驾驶汽车在安全驾驶员陪同观察其决策的前提下,在公共道路上行驶以积累里程。数字就能说明问题:谷歌的算法在训练阶段驾驶了几百万英里,即使是对汽车最为狂热的年轻人都难望其项背。今天,它已经学会了对道路状况做出最佳的反应,可以自主进行驾驶了。
谷歌并不是唯一从专家系统转向机器学习的公司。2015年,纽约西奈山医院的研究者们使用了和迈尔斯不同的方法创建自动医学诊断工具。他们将700 000名病人的数据供给深度学习算法,而不是访谈医学专家,按专家输入的信息创建一个基于诊断规则的系统。这个算法分析了这些病人的医学检验报告和人类医生最终得出的诊断结果,从中推断出哪些医学指标能够判断哪些病况。
这个名为Deep Patient的系统从数据中检测模式,自学诊断技巧,不需要用任何一条诊断规则进行编程。该系统运行得极好,不仅仅能做诸如咽喉炎这样的简单诊断,还能做诸如精神分裂症发作这样的极度复杂的诊断,这个诊断即使是经验丰富的医生也难以做出。而且它还不会让病人在候诊室干等一个小时。
这些例子似乎让专家系统和机器学习的对比结果毫无悬念:低效的系统对比高度实用的系统。实际上,这两种方法都是创建人工智能的正当途径,但是对于社会来说,它们代表着非常不同的方案。究竟是哪方面不同?哪一种方法在将来更可能占据主导地位?为了得到答案,我们首先回来看看我们的老伙伴——下棋的土耳其机器人,或者说,它的当代化身:会下棋的自动机。