第一章达特茅斯会议:人工智能的源起
一说起人工智能的起源,公认是1956年的达特茅斯会议。殊不知还有个前戏,1955年,美国西部计算机联合大会(Western Joint Computer Conference)在洛杉矶召开,会中还套了个小会:学习机讨论会(Session on Learning Machine)。讨论会的参加者中有两个人参加了第二年的达特茅斯会议,他们是塞弗里奇(Oliver Selfridge)和纽厄尔(Allen Newell)。
会议6位重要参与者:麦卡锡、明斯基、赛弗里奇(《控制论》作者维纳的学生)、香农(《信息论》作者)、纽厄尔(与麦卡锡同龄,其导师是冯诺依曼的合作伙伴)、司马贺(纽厄尔老师)
麦卡锡给这个第二年的活动起了个当时看来别出心裁的名字:人工智能夏季研讨会(Summer Research Project on Artificial Intelligence)。普遍的误解是“人工智能”这个词是麦卡锡想出来的,其实不是。麦老晚年回忆也承认这个词最早是从别人那里听来的,但记不清是谁了。
“人工智能”这个词真正被共同体广泛认可是在十年后的 1965 年,在加州大学伯克利分校的欧陆派哲学家德雷弗斯(Hubert Dreyfus)发表了“炼金术与人工智能”一文之后。
司马贺1957年曾预言十年内计算机下棋会击败人。1968年麦卡锡和象棋大师列维(David Levy)打赌说十年内下棋程序会战胜列维,最后赔了列维两千块。乐观的预言总会给对手留下把柄:德雷弗斯后来每年都拿此事嘲讽AI,说计算机下下跳棋还行,下象棋连十岁的孩子都干不过。这便宜话一直说到1997年,IBM 的下棋程序“深蓝”击败了卡斯帕罗夫。
第二章自动定理证明兴衰纪
数学哲学有三大派:逻辑主义、形式主义以及直觉主义。
自动定理证明起源于逻辑,初衷就是把逻辑演算自动化。
1957年夏季,在塔尔斯基的号召下,一个逻辑学家的大聚会在康奈尔大学举行,会上数学家亚伯拉罕·罗宾逊(Abraham Robinson,数学和逻辑领域有好几个罗宾逊,且互有关联)指出,埃尔布朗(Herbrand)定理可以把一阶逻辑的问题转化为命题逻辑。这激发了大家寻求统一高效的定理证明的实现方法。
芝加哥大学的实验物理学家费米在曼哈顿计划的早期负责核反应堆。战后,美国以费米实验室为基础建立了第一个美国国家实验室阿贡(Argonne),隶属于美国能源部。阿贡国家实验室的一个分部是应用数学和科学计算,阿贡定理证明小组就在这个分部。阿贡小组对机器定理证明的贡献是决定性的和全方位的。罗宾逊就是在阿贡工作时提出了归结原理。阿贡为归结原理的实现提供了一整套生态环境。
自动定理证明依靠的工具是计算机,正是计算模糊了理性和经验的边界。可以登高一步说:计算是知识演化的基础,计算也是知识民主化的工具。
有些领域,一开始就把百分之八十的容易问题都解决了,而后就一直很难,进展很慢,少有突破。人工智能就是这样,定理证明尤其如此。
自动定理证明的衰落
维特根斯坦曾有言:“逻辑似乎处于一切科学的底部——因为逻辑的研究探索一切事物的本质。”但数学家不觉得他们非得趴在逻辑学家的背上。自动定理证明的状况与此相关,数学家没觉得这玩意儿有用,人工智能的两派人马都不待见。再过几年,可能就没什么人能教“自动定理证明”的课了。
数学是人类智力的最高端。不明就里的哲学家对数学说三道四是令人最不能忍受的。
第三章从专家系统到知识图谱
费根鲍姆1964年在斯坦福大学高等行为科学研究中心的一次会上见到了李德伯格,对科学哲学的共同爱好促成了他们漫长而富有成效的合作。那时李德伯格的研究方向是太空生命探测,更具体地说就是用质谱仪分析火星上采集来的数据,看火星上有无可能存在生命。费根鲍姆的兴趣则是机器归纳法,用现在的话说就是机器学习。他们俩,一个有数据,一个搞工具,一拍即合。
第一个专家系统DENDRAL——
DENDRAL输入的是质谱仪的数据,输出是给定物质的化学结构。费根鲍姆和他的学生捕捉翟若适和他的学生的化学分析知识,把知识提炼成规则。这个专家系统有时做得比翟若适的学生还准。
专家系统MYCIN,一个针对细菌感染的诊断系统。MYCIN的处方准确率是 69%,当时专科医生的准确率是 80%,但 MYCIN 的成绩已经优于非本专业的医生。
纽厄尔,作为外人,却认为MYCIN才是专家系统的鼻祖,因为MYCIN首创了后来作为专家系统要素的产生式规则:不精确推理。DENDRAL的初衷则是从专家采集来的数据做机器归纳,或者说机器学习。
最早的知识图谱——
在日本五代机项目带来的狂潮中,美国政府决定联合多家高技术企业在得克萨斯大学奥斯汀分校所在地建立微电子与计算机技术公司(MCC,Micro electronics and Computer Technology Corporation)以抗衡日本。当雷纳特来到MCC时,他已经有了一个新的想法:把人类的常识编码,建成知识库。这个新项目叫Cyc,这三个字母取自英文单词“百科全书”(encyclopedia)。这其实就是最早的知识图谱。雷纳特坚定地支持他老师费根鲍姆的知识原则(Knowledge Principle):一个系统之所以能展示高级的智能理解和行为,主要是因为在所从事的领域所表现出来的特定知识:概念、事实、表示、方法、比喻以及启发。雷纳特甚至说:“智能就是一千万条规则。”
谷歌和知识图谱
在维基百科的同时,还有个Freebase。维基百科的受众是人,而Freebase则强调机器可读。2016年维基百科达到 1000 万篇文章,其中英文版达到 500 万篇文章,而 Freebase 有 4000 万个实体表示。Freebase 的背后是一家名叫 Metaweb 的创业公司,创始人之一是希利斯(Danny Hillis)。2010 年Metaweb 被谷歌收购,谷歌给它起了个响亮的名字“知识图谱”。2016 年谷歌对 Freebase 停止更新,把所有数据捐给维基数据(Wikidata)。
第四章计算机的教训
1978年,当时的计算机工业按照电路工艺划分计算机的发展:第一代计算机是电子管,第二代是晶体管,第三代是集成电路,第四代是超大规模集成电路(VLSI)。
三年后的1981年,以元冈达为首的委员会认真提交了一份长达89页的报告,他们认为第五代计算机不应再以硬件工艺为划分,更应看重体系结构和软件。
英国人沃伦(David Warren)1982年在 AI Magazine 上发表的论文分析了渕一博为什么选择了Prolog:在五代机的所有应用中,Prolog能覆盖的面最广。五代机的终极目标是知识信息处理,在当时的语境下特指专家系统和自然语言理解。那时的自然语言理解还是规则为王的时代。Prolog很明显比 LISP更适合这些应用。而且在小规模数据的基准测试中,Prolog 作为数据库查询语言甚至不输关系代数。当然,Prolog不是美国人发明的,这也是一个重要因素,这让日本人更有机会掌控并占据领先地位。
计算机科学的进步主要是由两件事驱动的:机器太慢;写程序太慢。在任何时间点,在半导体技术的约束下,提高机器速度的唯一办法是并行处理。Prolog 是高级语言,表达效率肯定要比过程语言更高。于是,如何并发地执行Prolog在五代机项目一开始就是重要的研究课题。
美国与日本的第五代机竞争
日本的五代机项目为美国敲响了警钟。1982年美国政府决定成立MCC(Microelectronics and Computer Consortium),作为对日本五代机项目的回应。
五代机的衰落
五代机的衰落在1988年就已露出端倪。1981年的第一次五代机会议的会议录只有 280 多页,其中还包括 89 页的元冈达报告。而 1988 年的五代机会议录有 1300 页三大卷。但从会议录中可以看出,五代机已经成了大杂烩,失去了聚焦点,给人感觉五代机不会在任何相关领域取得突破性进展,而同时八杆子打不着的领域也拼命向五代机靠拢。就像当下人工智能领域的创业,一些和人工智能毫无瓜葛的社会闲杂人员一夜间都成了AI 专家,拿到 VC 的钱之后再想干啥。
五代机没有能证明它能干传统机不能干的活,在典型的应用中,五代机也没比传统机快多少。
第五章神经网络简史
自图灵提出“机器与智能”起,就一直有两派观点:一派认为实现人工智能必须用逻辑和符号系统,这一派看问题是自顶向下的;还有一派认为通过仿造大脑可以达到人工智能,这一派是自底向上的,他们认为如果能造一台机器,模拟大脑中的神经网络,这台机器就有智能了。
模拟神经网络的原创文章发表于1943年,两位作者都是传奇人物:麦卡洛克(Warren McCulloch)和皮茨(Walter Pitts)。
神经网络研究的后一个大突破是在1957年。康奈尔大学的实验心理学家罗森布拉特(Frank Rosenblatt)在一台 IBM-704 计算机上模拟实现了一种他发明的叫作“感知机”(Perceptron)的神经网络模型。这个模型可以完成一些简单的视觉处理任务。这在当时引起了轰动。
明斯基和佩珀特证明了单层神经网络不能解决XOR(异或)问题。异或是一个基本逻辑问题,如果连这个问题都解决不了,那神经网络的计算能力实在有限。其实罗森布拉特也已猜到“感知机”可能存在限制,特别是在“符号处理”方面,并以他神经心理学家的经验指出,某些大脑受到伤害的人也不能处理符号。但“感知机”的缺陷被明斯基以一种敌意的方式呈现出来,当时对罗森布拉特是个致命打击。原来的政府资助机构也逐渐停止对神经网络研究的支持。
神经网络在20世纪80年代的复兴归功于物理学家霍普菲尔德(John Hopfield)。1982 年,那时在加州理工学院担任生物物理教授的霍普菲尔德,提出了一种新的神经网络,可以解决一大类模式识别问题,还可以给出一类组合优化问题的近似解。这种神经网络模型后来被称为霍普菲尔德网络。
1993年,美国电气电子工程师学会 IEEE开始出版《神经网络会刊》,为该领域的高质量文章提供出版渠道。美国国防部、海军和能源部等也加大资助力度。神经网络一下子成了显学。
神经网络在20世纪80年代的光芒被后来的互联网掩盖了。但这几年,恰恰又是互联网产生的海量数据给了神经网络更大的机会。而人工智能领域最火的词儿就是“深度学习”。神经网络由一层一层的神经元构成。层数越多,就越深,所谓深度学习就是用很多层神经元构成的神经网络达到机器学习的功能。
辛顿是深度学习的先驱,他和学生在2006年发表的两篇文章开辟了这个新领域,其中登在《科学》上的那篇提出了降维和逐层预训练的方法,使得深度网络的实用化成为可能。
2012年,时任斯坦福大学人工智能实验室主任的吴恩达和谷歌合作建造了一个当时最大的神经网络,这是谷歌神秘的X实验室的一个计划。网络上一度疯传的谷歌猫脸识别就是用的这个参数多达十七亿的神经网络。后来,吴恩达在斯坦福大学又搞了个更大的神经网络,参数高达一百一十二亿。
第六章计算机下棋简史:机定胜人,人定胜天
跳棋——
下棋一直就是人类智能的挑战,自然也成了人工智能的标志之一。二战没结束时,图灵就研究计算机下棋,他1947年编了第一个下棋程序,可惜那时计算机的时间(简称“机时”)很宝贵,轮不到他上机。
1951年,图灵的朋友斯特拉切(Christopher Strachey)在曼彻斯特 Mark-1上写了第一款跳棋程序。图灵在1952年曾与之对弈一局,轻松取胜。1956年 IBM 的塞缪尔(Arthur Samuel,人工智能里程碑达特茅斯会议的参加者之一)写了第二个跳棋程序,这款程序的特点是自学习,这也是最早的机器学习程序之一,后来不断改进,曾经赢过盲人跳棋大师。
舍佛团队继续精研跳棋理论和实践,直到2007年,他们证明对于跳棋,只要对弈双方不犯错,最终都是和棋,而Chinook已经可以不犯错。他们的结果发表在2007年 9 月的《科学》杂志上,自此跳棋这一页就算翻过去了。舍佛的兴趣遂转向德州扑克和围棋。
计算机下棋——
第一个可以走完全局的下棋程序是IBM的工程师伯恩斯坦(Alex Bernstein)1958 年在一台 IBM 704 上做的。
1966年,美苏的对抗也扩展到计算机下棋。苏联科学院的理论与实验物理研究所(ITEP)也在本所研制的一台 M20 计算机上开发了一款下棋程序,他们要和斯坦福大学的Kotok-McCarthy程序一决高下。从 1966 年 11 月 22 日开始,直到 1967 年 3 月 10 日止,他们通过电报的方式走了四局。最后苏联 3:1 战胜美国。
20世纪 80年代,机器之间的比赛此起彼伏,但机器和人之间仍然有着不可逾越的鸿沟。1980 年,天才弗雷德金(Edward Fredkin)专为计算机下棋建立了弗雷德金奖金,奖有三等,头等奖是 10 万美元,奖给第一款能赢现任世界冠军的下棋机器。
象棋:深蓝——
IBM的外号叫 Big Blue,于是新的项目 1996 年被命名为“深蓝”(Deep Blue)。1996 年 ACM 年会的闭幕节目是“深蓝”对决卡斯帕罗夫,六局棋。“深蓝”旗开得胜,第一局就赢了老卡,最后还是老卡 4:2 赢得决赛。但此时老卡对“深蓝”刮目相看,他说机器对手不光有洞见,而且有几步简直像“上帝下的”。
1997年 5月 11 日,老卡认输,“深蓝”成了第一位战胜当时世界冠军的机器。在“深蓝”赢了卡斯帕罗夫之后,职业棋手并没有因此而改行,他们反而更多地依赖计算机来训练。
围棋:AlphaGo——
谷歌的AlphaGo首次引用了强化学习(Reinforcement Learning),使得机器和自己对弈学习。
第七章自然语言处理
乔治敦实验要早于达特茅斯会议,这也从另一个角度证明了达特茅斯会议更多是“人工智能”这个词儿流行的源头,而不是这门学科的起点。
1966年 11月,ALPAC 发布了《语言与机器》报告,称机器翻译比人翻译要慢,更不准确,而且成本更高(估算比人要贵两倍)。结论是机器翻译在可预见的未来没法实用,应该立即停止对机器翻译的资助,转而支持一些更基础的、辅助性的研究,如电子字典等。这个报告第一次提出了“计算语言学”的概念。
乔姆斯基之于语言学和认知科学,就像图灵之于计算机科学。乔姆斯基认为,所有的语言(人工或自然)都有与此类似的句法结构,并进一步指出语言的结构是内在的,而不是通过经验习得的(acquired)。
对话机器人的起源——ELIZA、PARRY
魏森鲍姆(Joseph Weizenbaum):1960年,他得了数学硕士学位后就进了工业界,在通用电气的工作经历把他引到了刚刚诞生的计算机行业。他最显赫的成就就是对话程序ELIZA。现在对话程序有一个更流行且形象的词儿“聊天机器人”(chatbot或 chatterbot),但根儿都在 ELIZA。
科尔比感兴趣的问题正好和魏森鲍姆相反:怎么样构造一个能聊天的病人,一方面可以培训心理医生,另一方面理解病人的征兆。他的成果在1972 年变成了计算机程序PARRY。
随着ELIZA在媒体上的成功,魏森鲍姆和科尔比渐行渐远。ELIZA的广泛影响力最终把魏森鲍姆变成技术的异教徒。当大家在争论机器能不能最终超越人类时,他指出这不是“能不能”的问题,而是“该不该”的问题。他意识到了技术的可怕,此后的研究方向转变成计算机技术所带来的社会责任和道德问题。
机器人手臂——
当时真正建立一个机器人手臂,还有一定难度,于是维诺格拉德利用显示器展示了一个虚拟的积木世界。SHRDLU 为这个积木世界建立了模型,例如每个积木块的性质,长宽高、颜色、形状等,以及什么积木块可以搭在什么积木块的上面。人可以通过简单的自然语言,命令一个机器手对这个积木世界进行虚拟操作。例如拿起一个特定的积木块把它摞在另一个积木块上。当机器吃不准人的命令时,可以向人发问。
SHRDLU要远比 ELIZA复杂,学术意义也更加深刻。SHRDLU 把当时很多 AI 技术整合到一起,除了自然语言理解外,还有规划(Planning)和知识表示。
神经机器翻译——
2016年,谷歌发布神经机器翻译(Google Neural Machine Translation,简称 GNMT)系统,再次大幅提高机器翻译的水平。和谷歌更早期的基于短语的机器翻译(Phrase-Based Machine Translation,简称 PBMT)不同,神经翻译的基本单位是句子。谷歌使用了循环神经网络RNN 做序列到序列(Sequence to Sequence)的学习,硬件设备是谷歌自己的 TensorFlow 平台。
2017年,Facebook进一步提高了翻译效率。他们用自己擅长的卷积神经网络CNN,进行序列到序列的学习。Facebook号称,英文-德文和英文-法文翻译的基准测试表明,他们的结果在准确度上不输谷歌,而在计算速度上则可以比谷歌的RNN有一个数量级的提升。
语义的问题大致可分两类,一类体现在人和世界的互动。还有一类体现在人和人的交流。魏森鲍姆的ELIZA就属这类。
问答系统的组成——
大体上说,问答系统有三个必备的组成部分,第一部分是问题理解,第二部分是知识查询,第三部分是答案生成。这三个部分相辅相成,第一部分和第三部分是自然语言处理的工作。
语音输入——
在谷歌和Facebook在机器翻译取得长足进展之前,语音输入率先获得突破,2011年微软邓力团队在语音识别上的成功是深度学习的标志性事件之一。苹果、谷歌和微软都推出实用产品。中国企业科大讯飞的语音输入的应用技术也渐趋成熟。
乔姆斯基对人工智能的批评的核心在于“可解释性”。AlphaGo 不能解释自己下棋的路数,算不算会下棋呢?也可以反过来说,只有解释了,人类才能从中得到洞见,学习知识。
第八章向自然学习:从遗传算法到强化学习
遗传编程——
霍兰德的学生寇扎(John Koza)在1987年给出了一个思路,并把它命名为“遗传编程”(Genetic Programming)。
强化学习——
强化学习的理论基础之一是马尔科夫决策过程。强化学习就是Agent根据经验改变策略以期达到长期最大奖赏的过程。
强化学习的另一个理论基础是动态规划。
在计算能力的约束下,强化学习的环境不宜太复杂。萌芽期的强化学习的例子都是游戏,如贝尔曼的“老虎机”和塞缪尔(Samuel)的跳棋。游戏的环境相对容易定义,在棋类比赛中,环境就是对手和规则。强化学习被用来下围棋不是偶然的。
第九章哲学家和人工智能
休伯特·德雷弗斯:1964年夏季他再次到兰德公司工作,写出了那篇广为流传的“炼金术与人工智能”。这篇文章一开始只是攻击纽厄尔和司马贺的观点,后来内容逐渐被扩充,攻击的范围也扩大,终于成为一本书,书名是《计算机不能干什么》,变成了对人工智能的全面批评。
德雷弗斯能够如此长久地混迹人工智能的江湖,有两个原因:其一,人工智能内部一直就是两大派不和,而且派中有派,很少有过学科的发展像人工智能这样起伏跌宕,苍蝇不叮无缝的蛋;其二,相当一批人工智能工作者有哲学情怀。
“中文屋”实验——
所谓“中文屋”思想实验是这样的:假设有个只懂英文不懂中文的人(塞尔的第一人称“我”)被锁在一个房间里,屋里只给“我”留了一本手册或一个计算机程序,这个手册或程序教“我”在收到中文信息时如何用中文应对。屋外的人用中文问问题,屋里的“我”依靠程序用中文回答问题,沟通方式是递纸条。塞尔的问题是:假设屋外的人不能区分屋里的人是不是母语为中文,那么屋里的“我”是不是就算懂中文?塞尔自己认为“我”不懂中文。很明显,这个场景源自图灵测试,只不过图灵测试的环境是英文,而中文屋里既有中文又有英文。
彭罗斯曾经这样谈到机器的情感和道德:如果你买一台计算机,它是有情感的,那么我们就有道德问题,因为计算机的意愿可能被违反,并可能会被当作奴隶。我们首先必须说道德是一个社会问题,也就是说当一个社会只有一个个体(无论是人还是计算机)时,是不存在道德问题的。
第十章人是机器吗?——人工智能的计算理论基础
如果我们把“智能”当作人类特有的性质,那么“人是机器吗”这个问题就等价于“机器有智能吗”。
怎样才算是高效率算法呢?一般的看法是,运行时间和空间随着问题规模扩大而变得很大的就不是高效的算法。
在可计算性上超越图灵机的装置叫“超计算”。
BSS模型的主要用途是为数值计算中的算法分析提供理论基础。
最早提出通用量子计算模型的是以色列出生的英国人多依奇,他1985年在《皇家学会会刊》发表文章首创通用量子图灵机模型,为量子计算提供了理论基础。他进一步提出丘奇-图灵-多依奇原理(ChurchTuring-Deutsch Principle):任何物理过程都可以被通用计算装置(量子计算机)所模拟。
第十一章智能的进化
强人工智能是说机器会全面达到人的智能,强人工智能有时也会和“通用人工智能”(Artificial General Intelligence)同义;而弱人工智能是说机器会在某些方面达到人的智能——AlphaGo就是弱人工智能的代表。