从图灵机到人工智能,关于“开荒”的故事
信息科学的出现和电子计算机的发明,让一批学者得以真正开始严肃地探讨构造人造机械智能的可能性。
“人工智能”作为一个专业名词,是在1956年首次出现,但是人类对人造机械智能的想象与思考却是源远流长。在古代的神话传说中,技艺高超的工匠可以制作人造人,并为其赋予智能或意识,希腊神话中出现了诸如赫淮斯托斯的黄金机器人和皮格马利翁的伽拉忒亚这样的机械人和人造人;根据列子辑注的《列子·汤问》记载,中国西周时期也已经出现了偃师造人的故事。
人类对人工智能的凭空幻想阶段一直持续到了20世纪40年代。由于第二次世界大战交战各国对计算能力、通讯能力在军事应用上迫切的需求,使得这些领域的研究成为人类科学的主要发展方向。信息科学的出现和电子计算机的发明,让一批学者得以真正开始严肃地探讨构造人造机械智能的可能性。
信息革命
从1939年到1945年,在二战发生的6年时间里,美国的国民生产总值(GDP)就增长了一倍,这是人类经济历史有GDP记录以来录得的最高增速,并且这种惊人的速度还是发生在一个基础规模已经极为庞大的经济体上,更是连最疯狂经济学家都不敢设想的奇迹。
美国作为二战中唯一本土不被战火直接波及的世界性大国,通过军事援助与战争贷款将各国的经济命脉与自身相连,从而迅速取代欧洲和亚洲,成为世界“经济的心脏”。稳定的社会环境、经济飞跃式的发展为军事、科技的发展注入了强大的驱动力,战争中大量受到纳粹迫害的各种领域顶尖的人才多以美国为避风港,天然地促使美国汇聚了全球最顶尖的人才与技术,令美国也成为了“世界的大脑”。在这种单一国家内几乎集中了全球经济资源和智慧力量的时代背景下,在二战这场几乎波及全人类的庞大战争压力推动下,以美、英两国学术界为首的人类精英学者们展现了出无与伦比的智慧和创造力。新军事技术对计算与通讯需求,更具体的是当时新出现的导弹、精确火炮等远程武器对计算速度、精确性和系统控制能力的要求,以及雷达、电话电报网络等侦查、通讯系统对信息传输安全和效率的要求,直接催生了信息科学和信息技术产业开始生根发芽。
二战结束之后仅一年(1946年)时间,世界第一台通用计算机,电子数值积分计算机“埃尼阿克”(Electronic Numerical Integrator And Computer,ENIAC)在美国宾夕法尼亚大学诞生,并实际应用于陆军火炮弹道和火力计算工作,这个事件标志了通用可编程的计算机技术不仅是理论已成熟,而且已经有了初步的工业化成果。
在两年之后(1948年),诺伯特·维纳(Norbert Wiener,1896-1964)和克劳德·香农(Claude Shannon,1916-2001)分别发表了两部极具开创性的著作,创立了“控制论”和“信息论”,再结合上之前路德维希·冯·贝塔朗菲(Ludwig Von Bertalanffy,1901-1972)在1945年发表的对“系统论”的总结性著作,整个信息科学仿佛被上帝的手推动着,后世称之为“信息学三论”的三门支柱性理论几乎于同一时刻问世,短短几年时间里面一下子就完成了过去需要几十年时间才可能完成的发展突破。信息科学的研究,不论是理论上还是工程上,都从之前各个学者、机构零散研究摸索的状态一下子变得系统有序起来。
信息科学这门学科在20世纪40年代诞生以后,很快就取得了一系列令人瞩目的成就,这让从政府官员、科学家等精英到社会的底层群众都感受鼓舞,大家似乎已乐观地预见到了蒸汽机械代替人类的体力劳作的工业革命后,下一场由智能机械代替人类做脑力劳作的信息革命的到来。从大半个世纪后的今天回望当初,我们确实在蒸汽动力革命、电力革命之后,见证了信息革命的来临,不过,即使有互联网这样超出了所有前人想象的技术出现,但在当时的大家看见的目标蓝图里,信息革命的最重要成果还不仅是大家现在能接触的电脑和网络,今天计算机可以根据人类预设的指令和程序,快速的传递、计算和处理人类无法想象的天量数据,而当时人们所期望的信息时代的新型机械,不仅能够完成计算和信息传输,甚至还将是一种能够和人类一样可看、可听、可写、可说、可动、可思考、可以复制自身甚至可以有意识的机械。笔者所描绘的这个场景,不是来自于可以随意凭空想象的科幻小说,而是引述了当年刊登在《纽约时报》上,美国海军对“感知机Mark-1”(这台机器可以说是连接主义在工程实践上的开端,我们后面章节中还要提到它)的期望和评价:
“The embryo of an electronic computer that (the Navy) expects will be able to walk, talk, see, write, reproduce itself and be conscious of its existence.”
这段六十多年前的报道,现在听起来是不是都还有一点莫名的熟悉感和科幻感?在互联网上大家对人工智能的期盼、想象、甚至恐惧的观点都也与此类似;我们今天在电影和小说中见到的各种机器人,与那时候人们对信息革命所设想的目标,也并没有太大差别。
信息科学在20世纪40年代的开场可以说是一个完美的开局,接下来的数十年内,信息科学和信息技术产业也是一帆风顺,迅速发展,在计算机、通讯、互联网等方面取得了丰硕的成果。但在人工智能这个领域,发展过程就是几经波折,三起两落。虽然现在也有了诸如Siri、Cortana、IBM Watson等各类人工智能产品、也有像DeepBlue、AlphaGo人机大战等人工智能的新闻和事件不时出现,但相比起电脑、网络、智能手机这类直接地、革命性地改变人们工作生活方式的科技成果而言,在人工智能上所取得的成绩还远远不够,没有达到最初的设想期望。为何信息学在人工智能领域的进展上会不如预期,甚至几段特定的时间里面完全陷入了泥潭?让机器拥有智能这个事情到底有多难?人类精英们做了怎样的努力和探索尝试?目前人工智能领域到底发展到什么阶段了呢?这些都是笔者希望与大家在本书中一同探讨的问题。
图灵机,计算的基石
英国数学和密码学家阿兰·图灵(Alan Turing,1912-1954,人工智能之父),今天被一些英国的学者和媒体评价为“未开一枪,却胜百万雄兵”,“在二战中间接拯救了上千万人生命”的传奇学者。他做出的重要贡献之一是在二战期间与布莱切利园的同事们(Bletchley Park)共同研制了名为“炸弹(Bombe)”的密码破译机器,成功破解了从1920年起开始商用,德国人直到战败都认为绝不可能被破解的加解密方法“迷”(Enigma),导致德军的军事部署在盟军面前再无秘密可言。图灵的成果直接加快了盟军获得战争胜利的速度,因军事指挥通讯被Bombe破译,引发了当时位列世界第一的德国战列舰俾斯麦号在丹麦海峡被英军伏击并围歼击沉,以及后来山本五十六的座机航线被盟军获知,进而遭拦截并击落等直接影响战争进程的事件。在二战期间,图灵的工作成果虽然没有对公众公开,但已经在盟军的密码学圈子内部声名远扬,已是一颗耀眼明星了。
破解德军Enigma密码的Bombe
1942年末,图灵被英国政府秘密派到美国,和美国海军交流破译德国的北大西洋潜艇舰队密码的研究成果。结束在华盛顿交流后,图灵又来到了贝尔实验室,参与这里的安全语音通讯设备的研发工作。这样,当时正在贝尔实验室数学组供职的香农就获得了一个和图灵合作的机会。图灵在当是破译了包括希特勒通话在内的多项德军秘密通讯的密码学破译专家,而香农当时的工作是通过数学方法证明“X系统”——这是美国总统罗斯福到英国首相丘吉尔之间的加密通讯系统,是不可能被他人所破译的,他们两位经过在密码学上“矛和盾”的攻防探讨,很快让图灵和香农成为了惺惺相惜的好友。虽说图灵是去美国做交流的,但是军事上的事情,尤其是密码的加密和破解这种事情,只要不在军方明确允许的范围内,平常时间是不允许交流各自进展情况的,所以在密码学上的话题,他们工作之外无法随意讨论什么。所幸香农和图灵在计算机科学、信息科学上的兴趣和研究范围都极为广泛,经常饭堂闲聊就经常拉到其他各种的前沿领域上。一次,他们在自助餐厅见面时,图灵给香农看了他还在剑桥大学念硕士时(1936年)写的一篇论文《论可计算数及其在判定性问题上的应用》(“On Computable Numbers, with an Application to the Entscheidungsproblem”),这篇文章是可计算性领域的里程碑式作品。
关于可计算理论可以追溯到1900年,当时著名的大数学家大卫·希尔伯特(David Hilbert,1962-1943)在世纪之交的数学家大会上给国际数学界提出了著名的“23个数学问题”。其中第10问题是这样的:
“存不存在一种有限的、机械的步骤能够判断“丢番图方程”(Diophantine Equation)是否存在解?”
这里就提出来了有限的、机械的证明步骤的问题,用今天的话说就是“算法”。但在当时,通用计算机还要半个世纪之后才会出现,人们还不知道“算法”是什么。不过,当时数学领域中已经有很多问题都是跟“算法”密切相关了,对“算法”,即“如何计算求解问题的步骤”的定义和是否可被算法计算的判定呼之欲出。
图灵这篇论文的解决可计算性如何定义和度量的问题,其中的关键是引出了今天被称为“图灵机(Turning Machine)”的概念模型。“图灵机”与“冯·诺依曼架构”并称现代通用计算机的“灵魂”与“躯体”,它的对可计算性理论、计算机科学、人工智能都影响深远,可以说是一项改变了人类近代科学史的伟大发明,
“图灵机”这种虚拟的计算机器实际上是一种理想中的计算模型,它的基本思想是用机械操作来模拟人们用纸笔进行数学运算的过程。通俗地讲,图灵把“计算”这一件日常的行为抽象概括出来,看作是下列两种简单动作的不断重复:
1.在纸上写上或擦除某个符号。
2.把注意力从纸的一个位置移动到另一个位置。
在每个动作完成后,人要决定下一步的动作是什么,这个决定依赖于此人当前所关注的纸上某个位置的符号和此人当前思维的状态。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
一条无限长的纸带TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号“_”表示空白。纸带上的格子从左到右依次被编号为0,1,2,…,纸带的右端可以无限伸展。
一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
一个状态寄存器。它用来保存图灵机当前所处的状态。因为寄存器数量是有限的,所以图灵机的所有可能状态的数目是有限的,并且规定有一个特殊的状态,称为停机状态,代表计算完成。
这种机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备,不会被真正的制造出来。图灵的论文证明了这台机器就能模拟人类所能进行的任何计算过程。
图灵机的图形表示
图灵机思想的价值所在是因为它虽然结构简单,但却可以描述任何人类能够完成的逻辑推理和计算过程,换句话说,图灵机的计算能力是人类能够完成的所有计算的全集,只要一个问题是可判定的,它的计算过程可以被符号和算法所表达出来,它就可以使用图灵机来完成计算。当时很多学者都无法想象这么一台听起来跟打字机差不多的东西,会是一个能够承载人类所有可以完成的逻辑和运算计算模型,此前,“计算”能力是被视为与“思考”相类似的人类抽象能力,大家一时间很难接受“计算”可以被如此简单的模型所概括。
如果了解过可“计算性理论”(Computability Theory)这个学术分支历史的读者会知道,在图灵机被提出之前其实就已经有了能模拟人类所能进行的全部计算过程的模型被设计出来。例如图灵在硕士阶段的导师,普林斯顿大学的阿隆佐·邱奇(Alonzo Church,1903-1995)教授于1928年就提出的“Lambda演算”就是其中之一。但图灵机相比起其他计算模型的优势在于它极为直观易于理解,而且很容易通过机械或者电子技术来实现。因此,图灵机的价值被人们所发现后,迅速成为了计算机解决“如何计算”问题的基础,在计算理论上也成为了可计算性的对标物。当一个新的计算模型出现,人们会判定它是否能解决所有在算法上可计算的问题,如果是的话,它就被称为是图灵等价或者图灵完备的。今天,我们称某种程序设计语言是图灵完备的,意思也是所有可计算的算法都能够用这种语言来实现(如今天常见的C、C++、Java、JavaScript等都是图灵完备的,而HTML/CSS这些语言则不是图灵完备的)。由于笔者是个程序员,所以这里就再多写一句题外话,由于图灵机的结构简单性,不考虑编码效率和可读性的话,只需寥寥几个操作指令就能照着图灵机的定义实现出一款图灵完备的语言,制造出脑洞大开的效果,大家有兴趣的话可以搜索一下“BrainFuck”和“Whitespace”这两门语言看看。
人工智能的萌芽
在和图灵的交流中,香农很快就理解并接受了图灵机的概念,并对此非常感兴趣。因为他与图灵都看到了一个令人激动的前景,既然图灵机这样一个并不复杂的计算模型就可以抽象人类逻辑和计算能力,而逻辑和计算又是人类最具代表性的智能表现之一,那“思考”能力,也就是“智能”是否也可以被一个模型所承载抽象,并且被机器所实现呢?图灵机是否也可以扩展为概括所有智能活动的模型?如果图灵机不足以成为这种模型的话,是否有其他的抽象模型可以代替,成为人造智能的基石呢?
有必要再强调一下,当时是1943年,处于信息科学的萌芽期,连正经的通用电子计算机都还不曾出现的时代,并没有实际的图灵机和编程,图灵和香农所讨论的一切对智能的构想都停留在数学和哲学层面,而两位人工智能的先驱所讨论的这几个基础理论问题,在今天仍然是人工智能学界未能解决的问题,他们当时讨论的内容对计算机和人工智能的研究仍有很大启发意义。
当时他们的讨论主要是围绕图灵机能否作为智能的基础模型、如何令机械拥有智能展开的,要解决这些问题,首先要解决的就是要定义什么是“智能”。香农提出考虑机器智能问题时,应当把艺术、情感、音乐等方面的能力一并考虑进去,这很接近今天对多元智能理论中对智能的理解。而图灵则不认可,图灵认为智能既然是由物质(指人类大脑)所承载的,就应该是可由物理公式去推导,可以用数学的方式去描述的,不应该把这些文化方面的内容包含进去。据《图灵传》(“Alan Turing: The Enigma”)的记载,一次他们两个在讨论智能的定义时发生了争论,图灵反驳香农时是这么说的:“不!我对如何建造一颗无所不能的大脑完全不感兴趣,我只要一颗并不太聪明的大脑,和美国电报电话公司董事长的脑袋那样就差不多行了!”,如果这位躺枪的董事长先生(贝尔实验室是AT&T下辖的研究机构,董事长既是他们两个的老板)在场的话,大概不会同意图灵给智能所作的定义。
图灵(左)和香农(右)
对于机器如何实现智能这个问题,图灵提出了两条可能的发展路线:一种是基于建设“基础能力”的方法,通过编写越来越庞大完善的程序,使机器具备越来越多的能力,譬如可以与人下棋、可以分析股票、可以识别图形等等这样的能力,图灵认为这是完全可以做到的。但他更有兴趣的是基于“思维状态”来建造大脑。这种方法的指导信念是,人类大脑一定存在着某种内在机制来产生智能,因为并没有什么更高等的神秘力量在为人脑编程,所以一定存在着某种方法,可以使机器自动地学习,就像人类大脑一样。图灵进一步解释到:新生儿的大脑是不具备智能的,因此,找到人类大脑获得智能的途径,然后应用于机器上,可以实现一个可以自己学习成长,成为机器掌握任何领域技能的一揽子解决方案。
图灵在美国交流期间,他和香农并未能解决“如何定义智能”、“图灵机能否作为智能的承载模型”等问题,但是他们在贝尔实验室一系列关于智能的讨论,代表这个时期学者对“机器和智能”思考的萌芽,是人工智能从“科幻”走向“科学”踏出的第一步。图灵回到英国之后,他与香农仍然保持着联系,香农还在战后到英国回访过图灵,他们仍然为解决几个问题而不懈努力。在本章中,笔者将继续以图灵的工作为主线进行讲解,而香农的研究工作也间接地导致了人工智能史上另一个重要里程碑事件的发生,而这就是下一章的内容了。
图灵测试:何谓智能?
1945年到1947年期间,图灵从美国回到英国之后居住在伦敦的汉普顿区。这段时间内他在为“英国国家物理实验室”(National Physical Laboratory,NPL)工作,工作的具体内容是设计一款名为“自动计算引擎”(Automatic Computing Engine,ACE)的通用电子计算机。1946年2月,图灵发表了世界上详细论述带程序存储功能(Stored-Program)的计算机体系架构的最早论文之一。但是由于政府决策者的短视,ACE完成理论设计后,反而陷入了一连串研发电子计算机的工作是否值得现在就去投入的争论中,并未能立刻进入建造阶段。图灵因此感到心灰意冷,离开NPL回到大学校园(剑桥大学和曼切斯顿大学),专心研究机械与智能去了。
ACE电子计算机
关于ACE的历史,其实很值的详细书写一番,如果ACE当时立即启动建造,将很有可能和冯·诺依曼的“离散变量自动电子计算机”(Electronic Discrete Variable Automatic Computer,EDVAC)竞争“现代计算机的鼻祖”的头衔(当ACE建造工作重新启动之后,在1950年竣工,EDVAC则在1949年完成,两者完成时间仅差不到1年),也许今天的学校的计算机课本教授到体系架构时就不再称为冯·诺依曼架构了。图灵和冯·诺依曼(Von Neumann,1903-1957)都是数学和计算机科学领域的天才,他们虽然没有直接的合作,分别在两个国家独立研究,但对计算机体系架构的观点却出奇的一致,只是运气上冯·诺依曼要比图灵幸运得多。图灵关于ACE的工作和人工智能关系有限,我们就不再花费笔墨在这上面了。
由于英国政府的保密要求,回到剑桥后,图灵所做的关于机械智能的研究在当时并未公开发表(图灵的论文《智能机器》(“Intelligent Machinery”)写于1948年,直至1992年才在《艾伦·图灵选集》中发表)。直到1950年,图灵在《心灵》(“Mind”)杂志上发表了另一篇划时代的论文:《计算机器和智能》(“Computing Machinery and Intelligence”),笔者相信大部分读者都没有听说过这文章,但也敢肯定有很多人听说过“图灵测试(Turing Test)”,正是这篇文章提出了著名的“图灵测试”。可以说,也正是因为这篇论文对图灵研究工作的总结,使得后来图灵被世人冠以人工智能之父的荣耀。
1950年图灵在《心灵》杂志中发表《计算机器和智能》,图为《心灵》杂志的目录
我们先来介绍图灵测试,与当年和香农争论“智能该如何定义”这个问题时的思路不同,经过几年时间的探索,图灵已经意识到在当时的学术积累下强行定义智能将是适得其反的。因此,在《计算机器和智能》的开篇就直接说明了他不会正面地的明确定义何谓“智能”,而是先假定智能可以被机器所模拟,然后对机器是否拥有智能给出了一个侧面的判定途径:
“如果人类由于无法分辨一台机器是否具备与人类相似的智能,导致无法分辨与之对话的到底是人类还是机器,那即可认定机器存在智能”。
这个简单的机器对人类的“模仿游戏”便是现今举世闻名的图灵测试。图灵在提出图灵测试的时候,并未想到会对后世带来如此深远的影响。大概1998年互联网兴起开始,每隔一段时间就有企业或机构出来声称自己研制的机器人通过了图灵测试,其实这几乎都是商业操作和宣传的噱头,无一例外都是特定条件下,如“在5分钟或者20句的对话中,成功令若干个的受测者认为与他对话的机器是个13岁的孩子”这一类型的“通过测试”。而图灵所定义的图灵测试,更接近于一个思想实验,并未规定参加测试的机器要和人对话多长时间,要骗过受测者中多少人,参加测试的人类智力、年龄等应该在什么样的水平,机器应该模仿一个年龄多大的人类等等(论文中倒是列举了很多可能提的问题和计算机回答的场景来进行论述,但并未对测试加以任何判定的条件限制)。图灵测试中所指的人类,也更多是一个泛称,而非特定的某类人或某个人类个体。
迄今为止,没有任何机器能够通过真正意义上的图灵测试。有趣的是,因为机器在图灵测试上一次又一次的失败,人类基于机器通过这种测试的困难度,反而创造出图灵测试最广泛的应用场景,这种应用在网络上随处可见——图形验证码。验证码的英文单词“Captchac”其实就是 “通过图灵测试来完全自动地分辨出计算机和人类”这句话的首字母缩写(Completely Automated Public Turing test to tell Computers and Humans Apart)
智能与人类的界限
今天主流的人工智能研究中,直接以创造出能通过图灵测试的人造智能机械为目标的研究项目其实极为罕见的,这一方面原因是因为图灵测试的难度实在是太高,难以出成果;还有另一方面的原因是图灵测试所提出的目标,其实是已经超过了人类自身的需要了,好比人类要不断制造更好飞机的目的肯定是为了更快更舒适的旅行,而不是为了它飞的更像鸽子以至于能欺骗掉其他鸟类。
通过一个简单的集合关系,可以令我们以更严谨的方式来理解“人类所需的智能”和“能够模仿人类通过图灵测试的智能”这两个问题的差别。如图所示,我们定义了两个集合:“全部智能行为”和“全部人类行为”,以及两者的交集“属于人类需要范畴的智能行为”,并以此举例:
属于全部智能行为可以回答的问题:“围棋规则中执黑需要贴目多少才能确保公平?”
属于全部人类行为可以回答的问题:“周志明和周杰伦谁唱歌比较好听?”
属于人类范畴的智能行为可以回答的问题:“菠菜3元一斤买3斤需要多少钱?”
人类行为与智能行为的范围
显而易见,图灵测试所判定的“智能”是能够模拟全部人类行为的智能,但是全部人类行为的范围内并非都是“属于人类需要范畴的智能行为”,也并非所有人类行为都有让计算机代替人类去完成的必要,你没必要让计算机替你分辨出“榴莲到底是不是一种好吃水果”,觉得榴莲是否好吃这种问题也不会用来衡量回答者有没有智能或者作为判断智商的高低的依据,对吧?
今天学术界人工智能研究的主流是机器从事人类范畴的智能行为(当然,机器天生就可以完成一部分人类之外的智能行为,譬如速算,所以要研究的问题是机器还完成不了的人类范畴的智能行为)这部分内容,而笔者相信现在绝大部分人都很容易接受人工智能的研究定位在人类范畴的智能行为是合理的。但是当时的主流学者并不都这么认为,在1950年以及之后的一、二十年里,人们对机械实现智能的难度估计普遍都表现出极为乐观的态度,很多的投入是花费在“意识”(Consciousness)、“心智”(Mind)、“自我”(Self)这一类今天划归于强人工智能范畴的研究之中,以至于在20世纪80年代大家终于接受快速实现人工智能的愿望已不切实际这个现实后,出现了一系列关于人工智能前途的大讨论,如“技术奇异点”的讨论、“中文房间”实验、强弱人工智能之分等都是这个时期提出的。