文章来源:赛先生微信公众号
前一段有“深度学习教父”之称的 Geoffrey Hinton 预测在十年内将出现“具有常识”的计算机系统。此言一出,“常识”顿时在媒体上成了个高频词,还有名人为此预测的成败公开打赌。在这一片热闹之中,却很少有人解释一下“常识”究竟是什么,以及为什么拥有常识比击败围棋高手还难。也许这本身就是常识,因此无需解释?且待我们细细看来。
“弱方法”和“强方法”
主流人工智能研究的目标是“解决那些只有人能解决的问题”。在早期,研究者致力于发现和总结那些可以用于解决各种问题的通用技术,如状态空间搜索和符号逻辑推理等等。但这些技术只获得了有限的成功,而越来越多的人认识到并没有什么“包治百病”的妙方。不管你多聪明,没有相关领域里的专门知识也是解决不了多少问题的。在上世纪八十年代,“知识就是力量”的口号被一些研究者重新喊出来了,而“基于知识的系统”、“专家系统”、“知识工程”等概念也流行起来。当时的普遍看法是:仅靠通用技术的问题求解方法只能解决简单问题,因此是“弱方法”,而依据专门知识的方法才能解决复杂问题,是“强方法”(见参考材料[1])。请注意,这与目前称专用智能系统为“弱人工智能”,通用智能系统为“强人工智能”的说法恰好相反。
我早年曾做过一年多“知识工程师”。每做一个新项目,我们就会到客户那里去仔细分析相关行业的决策过程(我去过电话公司、保险公司、银行、投资公司),然后把有关专业知识整理后存进一个“专家知识库”,以使得这个系统能根据这些知识对各个具体问题提出解决方案。在不同的应用领域中,此类专业知识是非常不同的,但我们开发的专家系统对这些知识的处理技术是不变的,基本上是基于数理逻辑的推理以及状态空间搜索。这种系统的成败的确主要取决于专家知识是否能被知识工程师们有效地表达成计算机所能利用的形式。
在互联网浪潮的推动下,出现了另一类相关的计算机技术,包括“语义网”(semantic web)、“本体论”(ontology)、“知识图谱”(knowledge graph)等等。尽管细节和重点不同,但这些工作都致力于把人类知识表示成计算机程序能直接使用的形式,其中的“知识”包括常识,也包括专业性知识。
目前这种对于领域知识的依赖也体现在很多机器学习算法对“大数据”的依赖之中。数据不够,再强的学习算法也是“难为无米之炊”的。在很多情况下,只要数据够了,用哪个算法差别都不大。这就是“数据为王”这个说法的根据,其实和“知识就是力量”异曲同工。
总而言之,智能系统需要知识来解决复杂的问题,这是大部分人工智能工作者的共识。以 Rodney Brooks 为代表的“行为主义学派”挑战过这个观点,试图用和外部环境的相互作用来代替基于知识的推理,但他们的成功仅限于扫地机器人等相对简单的系统。
人工智能和“常识”
人工智能对于“常识”(common sense)的需求主要是在对推理系统的研究中出现的,其中有两个不同的研究课题,“常识知识库”和“常识推理”。
在开发专家系统时,一个常见的问题就是专家所提供的知识不足以推出所需的结论,而中间所缺乏的是“常识”,就是平常人际交流时无需说出的那些人人知道的事情。在计算机不能自动获取这种知识的情况下,有必要把有关事实存进一个“常识知识库”里面。这个知识库和前述“专家知识库”相比有两个主要不同点:首先,这个库是通用的,不用为每个应用系统建一个;其次,这个库要比专家知识库大好几个数量级,因为“常识”实在是太多了。
挑战这个难题的最著名的努力当属 Douglas Lenat 所领导的 Cyc 项目(“Cyc”取自“encyclopedia”,即“百科全书”)。自1984年开始,他们一个几十人的团队致力于把百科知识表示成符号逻辑命题,并让计算机据此进行推理。比如说“树木是植物”在 Cyc 中表示成“(#$genls #$Tree-ThePlant #$Plant)”。三十多年后,这项工程仍远未完成,但已有的成果已开始被用于各种实际问题的解决。
麻省理工学院的 OMCS(Open Mind Common Sense)和 Cyc 有着类似的目标,但采取了“众包”的办法(crowdsourcing,尽管当时还没有这个词)。他们建了个网站,鼓励世界各地的志愿者贡献诸如“天是蓝的”、“鸟会飞”、“桌子有四条腿”之类的知识。这些知识以自然语言的形式被提供,然后加工成系统能使用的形式。这么做自然比 Cyc 成本低多了,但知识的可靠性、完整性、系统性都不好保证,而且自然语言处理本身就不容易。这类项目还有几个,但进展都低于主持者的预期。
即使一个常识知识库已经被建起来了,用这种知识进行推理也不是个简单的任务。这里的主要问题是“常识”并不具有数学知识或科学知识的严格可靠性,而往往只是“大致”、“通常”、“一般来说”是对的,因而面临“例外”的挑战。比如在对话中说话人提到一只鸟,听话人会自然以为它能飞,尽管这种推论可能是错的(如它是企鹅、幼鸟、伤鸟等等)。为了处理这种“常识推理”,人工智能的奠基人之一 John McCarthy 倡导了对“非单调逻辑”的研究。在使用这种逻辑的推理系统中,系统信念总量不是“单调增长”的知识累积,而是有增有减,因为新知识(如“此鸟是只企鹅”)可能导致对旧信念(如“此鸟能飞”)的否定或修正。在信念冲突发生时,修正的范围不是显而易见的,因为信念间通常有复杂的依赖和蕴涵关系。目前的非单调推理系统只是在有限的领域获得了应用。
深度学习和“常识”
前面的介绍说明“常识”在人工智能研究中远非新问题,而且以往的工作也有一定的成果,尽管离“计算机已经有常识”还差很远。在这个课题上,前面的工作都是由“逻辑学派”做的,而这次 Hinton 说的当然是深度学习可以实现这个目标。他的根据是什么呢?毕竟这对深度学习是个新课题。
由于 Hinton 并没有展开谈,下面只能是我的推测了。基于深度学习已经展现的力量,它带给这个领域的新思路大概不外乎是“从已有材料中学习常识”。和传统的知识库构建方式比较,这里的新意主要是两点:一是直接利用已有材料,尤其是互联网上的文本和多媒体信息;二是用这些材料训练神经元网络,而非把知识表示为命题或语句集合。
和利用手工方式(不论是用符号语言还是自然语言)构建常识知识库相比,直接利用网上信息显然是成本低而效率高。和八十年代的情况不同,现在大概所有常识性知识都能在网上找到。如果考虑到能从图片、影片、语音中抽取出来的知识就更是如此了。这些知识目前没能被计算机所充分使用,是因为“理解”这个问题尚未被解决。比如说,自然语言处理技术就没达到能让机器能通过阅读获取知识的地步。
深度神经元网络已成功地建立了大量图片和其内容描述之间的对应关系,而这类关系也可被看成是属于常识。照此看来,深度学习能让计算机获得常识似乎是其已有成果的自然拓展。深度学习在自然语言理解上的办法和它处理图片和语音的办法相似,即通过反复训练把输入材料压缩编码为网络参数,也就是所谓“词语向量”(word vectors)和“思想向量”(thought vectors)。说这些向量表征了常识,是指它们可被用来完成某些查询或推理任务,比如判断两段词语的语义相似程度。
“常识”中的麻烦
但“让计算机有常识”可远不仅意味着存储和检索海量知识,其中的困难大概还远没有得到充分认识。
首先要问的是“谁的常识?”这个问题很少被讨论,因为答案似乎显而易见——当然是人的常识。但“人类常识”不是一个有明确定义的范畴,而某个信念是否属于常识可能是有争议的。比如说“太阳东升西落”和“地球围绕太阳转”哪个是常识?“新年是在冬季”只在北半球是对的,那还算常识吗?在辩论双方都指责对方“缺乏常识”或“违背常识”的时候,谁有资格做裁判?
就算我们可以就“人类常识”的范围和内容达成共识或妥协,它和“机器常识”的关系仍是个问题。一个智能系统的知识应当来自其经验,包括得自感觉-运动的直接经验和得自系统间通讯的间接经验。即使一个人工智能系统具有和人相似的认知功能,它的经验也不会和人的经验达到同等的类似程度。就算是人形机器人,它的躯体和感觉-运动器官也不会和人完全一样。在通讯的过程中,一个人工智能同样不可能得到和人一样的社会经验,因为人们不会把它当人来对待。
因为环境的相似性和人机通讯的同化效用,一个人工智能系统的经验当然和人类经验会有相当程度的共同性和对应性,但差异仍会非常大。这和系统的智能水平无关。如果两个智力相当的人是在非常不同的自然和社会环境中长大的,那他们获得的“常识”一定是非常不同的。古龙的《绝代双骄》和马克·吐温的《王子与贫儿》讲的都是这种故事。
我们当然可能把人类常识灌输给一个人工智能系统,而利用其强大的记忆和处理能力构造一个包罗万象的知识库。但如果这些知识既不能指导这个系统的行为,又不能根据这个系统的经验被修正,那这个知识库对这个系统就没有意义,尽管它可能对某些旁观者有意义。这正是塞尔的“中文屋”思想实验所批评的情形。一个通用人工智能系统的世界观一定是和人的不完全一样的,否则它就不是真的有智能,而只是人类的应声虫。但另一方面,让智能机器发展它们自己的“常识”会为我们对它们的理解和控制带来挑战,如我在《人工智能危险吗?》中所讨论的。
深度学习的研究现在仍是聚焦于系统输入-输出之间的数学关系,而极少仔细分析更大范围内的认知和哲学问题。殊不知这些问题是不会随着技术进步而水到渠成地迎刃而解的。把常识简单地处理成输入-输出关系的一个缺点就是不利于使这些关系本身成为思考的对象,而这也是“联结主义”逊于“符号主义”的要点之一。神经元网络另一个技术上的问题是“词语向量”和“思想向量”这类办法在学习知识时是针对一个特定任务的,而常识需要有通用性才行。所谓“迁移学习”(transfer learning)正是针对这一点的,但能走多远还很难说。
纳思和“常识”
我在前面的若干短文中(如《你这是什么逻辑?》)已经介绍了我设计的“纳思”。作为一个通用人工智能系统,纳思自然要处理常识。在这里我只介绍基本想法,而请对细节有兴趣的读者看我的学术著述,如参考材料[2]和我主页上的相关论文。
纳思的设计是不依赖于具体领域的,但其对具体问题的解决能力很大程度上取决于系统当时所具有的相关知识。用我在《人工智能迷途:计算机的高技能等于高智能吗?》中引入的区分来说,纳思的“智能”是通用的和先天植入的,体现为“元知识”;而其“技能”是专用的和后天习得的,体现为“领域知识”。常识是后者中那些和其它系统共享,但并未体系化的部分。由于这种知识没有明确边界,也无需特别处理,因此纳思并没有一个特别的“常识推理”机制。和其它领域知识(个人知识或理论知识)相同,常识来自纳思的直接或间接经验,并始终在被组织和修改的过程中。
由于纳思的知识由符号语言表示成概念关系,而且可以循某种逻辑进行推理和修正,它和前面提到的常识知识库和非单调逻辑都有相似之处。但纳思的所有知识都是可以被系统经验所修正的,而这就和以往的(公理化)推理系统不同了。纳思和神经元网络的相似之处体现在对学习的倚重和对不确定性的包容,但纳思中的知识是表示成一个概念网络,因此在技术细节上和思想向量非常不一样。
通过人机交流,人类知识会成为纳思信念的一部分,但不会是全部,而它也会根据自己的经验对有关知识的适用程度进行评估,并决定是否依此行事。因为纳思的信念可以成为它的思维对象,系统可以在一定程度上区分人类教给它的知识和它自己总结出的知识。这就像我们可以了解他人的信念,但并不需要完全接受这些信念。
总而言之,我认为目前计算机已经可以表示和使用人类的某些常识了,而且这方面的能力会越来越强。由于人工智能系统从自己经验中总结出来的知识和人类常识不会完全一样,协调二者的关系仍会是一个重大课题。(本文图片来自网络)
参考资料
[1] George F。 Luger, Artificial Intelligence, 6th edition, Addison Wesley, 2009
[2] Pei Wang, Rigid Flexibility: The Logic of Intelligence, Springer, 2006