第三章 知识就是力量(第4页)
在地球上,一个悬在空中的物体会落地,它落到地面
时会停下来;而在太空里面,悬空物体则不会落地。
燃料耗尽的飞机会坠机。
坠机事故会让人丧生。
食用你不认识的蘑菇是危险行为。
红色水龙头往往通的是热水,蓝色的往往是冷水。
……
一个受过良好教育的人在生活中所认知的日常知识,在Cyc系统里面必须由人用特殊的语言明确地写下来,并且输入系统中。
莱纳特预估这个输入的工程需要至少200人经过多年的努力来实现,大部分的时间和人力都会消耗在手动知识录入上,即告诉Cyc我们的世界是怎样的,以及我们是怎么理解它的。莱纳特乐观地认为,用不了多久,Cyc就可以实现自我学习。一个以莱纳特设想的方式自主教育、自我学习的系统,就意味着通用人工智能的设想成为现实。这就是说,莱纳特假设通用人工智能的问题主要是知识储备问题,它可以通过一个合适的基于知识的系统来解决。Cyc假设是一场豪赌,高风险、高收益,如果被证明成功,它就能改变整个世界。
科研界,包括科研投资的悖论之一就是,有时候,宏伟的目标会掩盖其荒谬的本质。事实上,正是某些研究机构不遗余力地支持和鼓励那些雄心勃勃的、步子迈得太超前的科研者,而摒弃了一些安全但是进度缓慢的研究。也许Cyc就是这样一个案例。不管怎么说,1984年,Cyc工程从得克萨斯州奥斯汀市的微电子和计算机联合会那里获取了资金,项目启动了。
当然,它失败了。
首要的问题在于,以前从来没人试图将人类所有的基础常识组织汇编,你到底该从哪里开始?第一步,你得定义将使用到的所有词汇,还有各种术语,它们之间是怎么关联的。定义基本术语和概念,并围绕它们组织整个知识体系,被称为本体工程。而Cyc的本体工程面临的挑战,比此前所有的其他项目都庞大得多。很快,莱纳特和他的同事就发现,他们关于如何构建Cyc的知识体系,以及如何获取知识的想法都太过天真和粗糙。并且,随着项目的推进,时不时还得推翻重来。
尽管经历各种挫折,在项目实施10年后莱纳特仍然保持乐观。1994年4月,他的乐观预期引起了斯坦福大学计算机科学教授沃恩·普拉特[41](VaughanPratt)的注意。普拉特是一名颇有威望的计算理论专家,习惯用精准而严谨的数学语言来思考计算机的本质。普拉特对一次Cyc的展示会颇感兴趣,他要求现场观看一次程序演示。莱纳特同意了。
1994年4月15日,普拉特见到了Cyc项目的演示。演示从一些很简单的例子开始,展示了Cyc系统看似不够亮眼但真正富有技术含量的成就——识别出数据库中需要Cyc运用推理能力才能识别的细节差别。真是一个良好的开端。然后莱纳特开始演示一些扩展能力,让Cyc识别出用自然语言编写的需求,按照需求检索图片。“放松的某人”的查询结果是三个穿着沙滩服的男人拿着冲浪板的照片——Cyc正确地将冲浪板、冲浪和放松联系起来。普拉特简略书写了一下Cyc推理到这个环节的推理链,它需要运用近20条规则,其中某些规则在我们看来可能挺奇怪的——“所有哺乳动物都是脊椎动物”是完成这个推理链所用到的规则之一(普拉特看到的Cyc版本有50多万条规则)。
到目前为止进展得不错,不过,普拉特想了解Cyc最核心的特征之一:它对世界的实际认知。然后,普拉特询问Cyc是否知道面包是食物。主机将问题翻译成Cyc使用的规则语言。“是的,”Cyc回答说。“那么,Cyc认为面包是一种饮料吗?”普拉特问道。这次Cyc卡住了。他们试图明确地告诉它面包不是饮料。普拉特在报告里写道:“在稍加调整之后,我们放弃了这个问题。”他们继续进行演示,Cyc似乎知道各种活动会导致死亡,但并不知道饥饿也是死亡的一个原因。事实上,Cyc似乎没有“饿死”这个概念。普拉特继续询问有关行星、天空和汽车的问题,但很快就发现,Cyc的知识储备十分粗略和难以捉摸。例如,它不知道天空是蓝色的,也不知道汽车通常有四个轮子。
在观看过莱纳特的演示以后,普拉特拿出了准备好的,包含100多个问题的清单,他希望这些问题能够探索Cyc到底对这个世界的常识了解多少,理解到何种程度。例如:
如果汤姆比迪克高3英寸[6],迪克比哈里高2英寸,那
么汤姆比哈里高多少?
两兄弟可以彼此都比对方更高吗?
陆地和海洋哪个更湿?
汽车能向后开吗?飞机能向后飞吗?
人没有空气能活多久?
这些都是关于这个世界最基础的常识性问题,但Cyc不能对此做出有意义的回答。普拉特回顾了自己的经历,对Cyc项目提出了谨慎的批评。他推测,或许Cyc已经朝着通用人工智能的目标跨出了一步,取得了一定进展,但问题在于,很难弄清楚这个进展有多大,因为Cyc的知识体系非常零碎,分布得相当不均匀。
从某种意义上说,Cyc项目是领先于时代的。Cyc项目开始30年以后,谷歌发布了知识图谱,这是一个庞大的知识库,知识图谱里面汇集了大量关于实体世界的信息(地点、人物、电影、书籍、重大事件等),这些信息被用来丰富谷歌搜索引擎的查找结果。当你使用谷歌搜索引擎时,你所查找的东西通常会涉及一些实体的名称或者其他术语之类。举个例子,如果你搜索“麦当娜”,简单的网络搜索结果会返回包含“麦当娜”这个关键词的网页。但是,如果搜索引擎知道麦当娜是一名流行歌手,以及她的全名是麦当娜·路易斯·西科尼(MadonnaLouisee),就会返回一些更有价值的东西。所以,你在谷歌上搜索“麦当娜”就会发现,你的搜索结果包含了这位歌手的一系列信息,这些信息会回答人们有关她的常见问题(比如出生年月、孩子状况、最受欢迎的专辑等)。Cyc和谷歌知识图谱最关键的区别在于,知识图谱中的知识并非手工编码的,而是自动从维基百科等网页中提取出来的。到2017年,据称维基百科包含700亿条名词,涉及大约5亿个实体。当然,知识图谱并没有以通用人工智能为目标,目前也不清楚它涉及了多少基于知识系统的至关重要的世界观推理。不过,不管怎么说,我认为,知识图谱多多少少还是携带了Cyc的基因。
然而,不管我们回顾历史时如何尽力客观评价Cyc项目,可悲的事实总是无法改变。Cyc项目在人工智能发展史中之所以留下浓墨重彩的一笔,源于它是一个人工智能被过度炒作的极端案例,它完全辜负了人们寄予的不切实际的厚望。莱纳特的名字也被编入了计算机科学的民间笑料里。有个笑话说,“微莱纳特”应该作为一个科学计量单位,用来衡量某件事情的虚假程度。为什么要在莱纳特前面加上“微”?因为你找不到比一个“整莱纳特”更虚假的东西了。
破灭出现
就像许多理论上很美好的人工智能一样,基于知识的人工智能被证明实际应用非常有限。这种方式在一些我们认为荒谬琐碎的推理任务中,也遇到了困难。考虑一下常识推理任务,下面的场景给出一个典型例子[42]:
乍一看,这个问题在逻辑上应该很容易理解。看上去跟我们之前讨论的逻辑三段论没什么差别——我们的人工智能系统存在知识“如果x是一只鸟,那么x会飞”,那么,给出“x是一只鸟”的信息,它理所当然能推理出“x能飞”的结论。好吧,到目前为止没有任何问题。但我们现在得知,翠迪是一只企鹅,接下来会发生什么呢?我们需要撤销之前得出的“翠迪会飞”的结论。问题来了,逻辑无法处理这样的问题。在逻辑上,增加更多的信息永远不会消除你之前得到的任何结论。但是增加的信息(即“翠迪是一只企鹅”)确确实实使我们需要撤销之前的结论(即“翠迪会飞”)。
常识推理还有另外一个问题,在我们遇到矛盾的时候就会凸显。以下是文献中的标准示例[43]:
贵格会教徒是和平主义者;
共和党人不是和平主义者;
尼克松是一名共和党人,也是一名和平主义者。
试着从逻辑上解释上述文字,你就会陷入理解困境,因为最终我们会得出结论:尼克松既是和平主义者,又不是和平主义者——这是一个矛盾。在这样的矛盾面前,逻辑完全失效:它不能应对这样的场景,也无法告知我们任何有意义的结论。然而,矛盾是我们每天都会遇见的现实。我们被告知纳税是有益处的,我们也被告知纳税是一种损失;我们被告知葡萄酒有益,我们也被告知葡萄酒有害;等等。矛盾在生活中无处不在。问题在于,我们试图用逻辑去处理它不该处理的领域——在数学中,如果遇见矛盾,就意味着你犯了错。
这些问题看似微不足道,但在20世纪80年代末,它们是基于知识的人工智能研究最主要的挑战,吸引了该领域最聪明的一群人,但从来没得到过真正意义上的解决。
事实证明,构建和部署专家系统比最初想象的困难得多。最主要的难题是后来被称为知识获取的问题,简单地说,就是如何从人类专家那里提取知识并以规则形式编码。人类专家通常也很难表达他们所拥有的专业知识——他们擅长处理某种事情并不意味着他们可以讲清楚实际上是怎么做到的。另外,专家们也并非那么渴望分享自己的专业知识。毕竟,如果你的公司能够用程序来代替你工作,他们还要你干什么?何况人工智能会取代人类的担忧一直存在。
到了20世纪80年代末,专家系统的繁荣已经结束。基于知识的系统技术倒不能说是失败了,毕竟许多成功的专家系统也在这一时期内建立起来,此后也逐步有更多的专家系统出现。但是,看样子,又一次证明,人工智能的实际产出没有达到被鼓吹炒作的高度。