把人的所思所想用符号、文字、音乐甚至建筑物等形式化的方式表达出来是人类拥有的独特能力。就像建筑师擅长用几何图形表达自己关于空间的构想,机器学习领域中也有一个源远流长的派别试图在机器中通过符号表达现实世界。这个流派便是以艾伦·纽厄尔(Allen Newell)和司马贺(Herbert A.Simon)为早期代表的符号学派。

    由于人的认知(cognition)能力自古以来就被认为与人类的智力或智慧密切相关,所以在人工智能这个概念还没出现之前,就已经有哲学家、心理学家、数学家等在研究人脑的认知过程或者推理过程的符号表达。受到这些符号学理论基础的启发,早期的人工智能也试图借助可进行符号操纵的模型解决问题,因此早期的人工智能又被称为符号型人工智能(Symbolic AI)。

4.1.1符号学派概述

    符号学派提倡实现人工智能的方式有两大阵营:一个阵营力图构建知识表达的通用模型;另一阵营则研究针对特定应用领域的模型。如果我们尝试对这两大阵营的方法进行归纳,可以得出该学派主要使用的方法有认知模拟(cognitive simulation)、基于逻辑的方法(logic-based approach)以及基于知识的方法(knowledge-based approach)三大类。

    认知模拟是试图使用人工智能来模仿构成人类智力、适应能力和创造能力的信息过程。纽厄尔和西蒙便是这个方向的代表人物。这种方式的“智能”主要体现在两个方面:表示(representation)与搜索(search)。表示是指通过符号的形式来描述现实世界中的逻辑和规则,使计算机可以理解和操作这些规则。纽厄尔和西蒙提出用问题空间(problem space)来实现规则的符号表示。问题空间是一个以符号结构(symbol structure)表示问题状态(包括初始状态和目标状态)的空间(图4.1.1)。搜索则是状态转移的过程,从直观上来理解,可以看作是试错的过程,或者是“猜测和检查”(guess and check)的过程。

    由于问题的解决方案(从初始状态到目标状态的路径)是整个问题空间或者规则集的子集,那么搜索算法的核心是如何让计算机自主高效地找到这些潜在的子集。同时,他们通过数学理论验证了搜索之所以可以呈现出“智能”的特征,是因为潜在的解决方案在规则集里的分布并不是随机的,即有很多信息的存在可以帮助更快地解决问题,它们会暗示解决方案的步骤。这种借助信息帮助和暗示,在问题空间中巧妙地寻找解决方案的过程被称为启发式搜索(heuristic search)。

1d35b4e766a7a88681d1dbf2925357f1.jpeg

图4.1.1一个简单任务的问题空间

    节点表示不同的状态,边则承载了从一个状态转移到另一个状态相关的规则或知识基于认知模拟的研究成果是早期人工智能舞台上的主角。它作为“第一个人工智能程序”的逻辑理论家(Logic Theorist),与其后被发明的通用问题求解器(General Problem Solver,GPS)、生产系统(production system)模型和认知框架(cognitive architecture)—Soar都是基于认知模拟的产物。建筑师们在认知模拟方法的指导下,也进行了早期人工智能与建筑学结合的探索。在第2章第3节中所谈论到的建筑机器、亚历山大早期研究的分解合成理论和斯特尼与吉普斯提出的智能架构,均采用了符号学派中认知模拟思想,具体来说是把启发法应用到建筑学中。

    但基于搜索的机制面临一个重大问题——组合爆炸(combination explosion),即搜索过程中的某一个状态到达下一个状态有太多选择,以致每一步与下一步之间构成了指数式增长的组合状态。这在当时计算机内存非常有限的年代,是一个致命的难题。所以启发式算法的其中一个重要研究方向是用一些技术手段去控制产生潜在方案的过程,避免组合的指数式增长。

    同时期,符号学派的又一代表人物约翰·麦卡锡(John McCarthy)认为智能系统应该是基于逻辑推理的形式化模型,而不是作为人类心理过程(即前述“猜测和检查”的过程)的启发式规则的模拟器来设计,于是他试图引入基于逻辑(logic-based)的人工智能方法。

    麦卡锡留意到,在人类的常识推理过程中,行为的一个小改变不会引起整个逻辑体系的大改动。例如从人类常识来说,馒头是可食用的,但当我们拿起一个馒头发现其有异味,会决定不吃该馒头。这种孤例并不会颠覆我们关于“馒头可以食用”这个基本常识。在我们的逻辑体系中,只是简单地把它与“有异味的食物不宜食用”这样的常识联系起来或者在原来常识的基础上加入“无异味”这样的限制条件。这在人类的语言逻辑体系里看似十分简单自然的过程,在实现人工智能系统的考虑上,却是一个经典的难题。因为在那个时代设计和实现一个信息系统主要是通过指令式编程 (imperative programming)的范式,即程序员需要把一个程序定义成一系列明确的指令,以供计算机按指令操作。这种方式导致很多时候一个小改动会引起程序上的连锁式改动,是一个庞大繁琐的工程。

    因此麦卡锡的切入点在人工智能程序语言上,他希望在人工智能中使用符号进行逻辑运算去解决常识问题,于是有了LISP²编程语言的发明。基于这种更灵活、更通用的编程语言,麦卡锡实现了一个只需要给定预期结果的性质它就能产生得到这个结果的方案的智能程序,从而实现了指令式编程向声明式编程(declarative programming)的范式转移,即程序员仅需要告知计算机问题的目标,让计算机“自主”地去达到此目标,奠定了用计算机实现逻辑推理的基础。除了LISP语言,Prolog语言也是基于逻辑方法的应用成果之一。

    符号学派的第三种,即基于知识(knowledge-based)实现人工智能的方法是20世纪80年代人工智能领域的焦点,这是因为在之前研究认知模拟、自动推理等方法的过程中,人们逐渐发现知识也是人类智力的重要方面。在很多案例中,如果没有先验知识作为基础,纯粹使用推理可以解决的问题非常有限。这也是为什么专业人士可以更好地解决专业相关问题的原因,除了他们被训练针对某个领域或学科拥有良好的逻辑思维能力,也由于他们在脑中已经储存了大量专业相关的知识,例如:医生的脑海中就存在大量关于如何判断一位病患是否患有流感的知识。

    基于知识的方法有很多种,包括基于规则(rule-based)、结构化 (structural)、基于案例(case-based)、基于模型(model-based)和数学语言学(mathematical linguistics)等。总的来说,这些方法的目的在于如何把人类知识抽象成机器能理解的表示,使得知识可以在机器中存储、处理以及被应用于推理。我们将会在接下来的一节中详细介绍基于知识的系统的一个典型且重要的应用——专家系统及其在建筑和城市领域的应用。

4.1.2专家系统及其在建筑领域的应用探索

    专家系统(expert system),一个基于知识的系统²(knowledge-based systems),是一种集成了20世纪80年代前诸多人工智能技术的综合性系统,相对有效地解决了先验知识与自动推理结合的难题。专家系统的出现成就了几乎整个人工智能发展的第二次小高潮。

    具体来说,专家系统是一种人工智能程序,可以仿效特定领域专业人士的知识和决策能力。它使用源自专家知识的逻辑规则来回答问题或解决有关特定知识领域的问题。更形象地说,它是一种智能知识取向系统,通过操纵知识存储体,以便模仿人类专家的推理经验和判断,而人类可以根据专家系统所提出的建议做出更好的决策。同时,专家系统可以根据用户所提供的其他信息做出合理的假设,以便能处理部分不完整的信息。此外,它也在适应知识中的不确定性方面有一些改进,针对某些情景和案例,可以从这些不确定、不完整的信息中寻找用户问题的最终解决办法。因此,专家系统可以表现为一种具有“涌现性”(emergence)的结果,即该结果并非完全是被预先编程好的。

    专家系统将自己专注在一个特定专业的领域中(从而避免了处理常识性知识问题),并且它们的简单设计使得程序构建起来相对容易,也便于在程序到位后进行修改或优化。专家系统可以简洁地描述为由三大部件,即知识库(Knowledge Base)、推理机(Inference Engine)及用户界面(User Interface)组成(图4.1.2)。

361cdbc8418c177c0d382dc6efa33352.png