人类的创造力是和对逻辑惊人的尊敬联系在一起的,逻辑地(理性地)阐明理由的能力和智能密切相关、这在柏拉图的著作中讲得很清楚。数理逻辑是一门证明用一些抽象符号书写的语句正确性的方法的学科,对人类智能的研究又导致了数理逻辑的发展。在十九世纪,主要是想找一个通用的逻辑系统,使得它能证明在其他任何系统中可以证明的问题。

随着二十世纪三十年代哥德尔的不完备性定理及图林不可计算性定理的提出,这种探索工作就告结束了。哥德尔指出,给定任何一个功能足够强的、逻辑上一致的系统,人们总可以构造出一个在该系统内不能证明的真命题。图林给出了通用计算机模型的描述,并指出存在可以定义的但不能用计算机程序解决的问题。作为例子,他指出,不存在一个程序能决定其他的任一程序在执行时是否会进入无限循环(即停机问题——译者注)。这些结论表明总是存在逻辑以外的定理及机器以外的任务。一些哲学家则辩解道,人类智能是高级的,总有些人类技能,逻辑地或机械地模拟它是不可能的。

尽管像忽略内容的符号的纯操作那样,可以用机器来进行逻辑推导,但我们仍继续将逻辑和智能联系在一起。实际上,智能活动是可以定义的,是可靠的、机械化的,因此,制造思维的机器也就十分必要了。不理解人类创造生命、用逻辑解释智能的过程,人们就不可能完全赏识现代在机器智能、它的经常性的心理隐喻及偶然的玄想等方面的研究。

人工智能这一术语是1956年由斯坦福大学John McCarthy首先提出的,它是计算机科学中研究机器如何像人一样地行动的一个分支。几个与人工智能有关的技术已成为商品投入了市场,著名的有:图像 - 模式识别,语音识别,语音产生以及自动化学。然而这些技术的商用的成功版本没有开发符号操作,且它们是由不具有人工智能方面的专门技能的工程师设计出来的。然而,现在已有一门技术引起了很多人的注意,这就是专家系统。

专家系统是设计来模拟较窄领域的专家的问题求解行为的计算机系统。如,开药方,将化合物分类,构造计算机系统并给其标价,将图像中的模式分类,诊断设备的故障等。专家系统是使知识在很多方面都有一点用途的方法。

在数理逻辑中,系统由有限的公理及推理规则的集合组成。证明则是这样一个符号串序列,S1,S2,…,SP,其中每一个串Si,或者是一个公理或者是可利用推理规则从S1,S2,…,SP-1的一些子集中推导出来。专家系统则是逻辑系统受限后的形式,它试图计算表示问题求解步骤的串的序列,该序列被认为是求解的证明。推理规则的格式比较简单,它表示了问题求解中的通用模式:“if(如果)条件then(那么)结论。”

一个专家系统有三个主要部分:存储公理及推理规则的数据库,构造证明的算法,及用户接口。通常具有交互性图形的接口为用户提供表达查询及为系统提供信息的语言。在专家系统中,称专门术语、公理为“事实”,推理的规则为“规则”,数据库为“知识库”,数据库程序设计员为“知识工程师”,证明构造算法为“推理机”,证明构造为“推理”,求解的证明为“解释”。

许多公司现在已出售空白数据库的专家系统“外壳”,那么数据从哪里来呢?数据库是通过通称知识工程的反复试验过程建立起来的。通过和专家的广泛交谈,知识工程师试图的出规则及详细的事实的词语表达,并把这些信息编入数据库中,该过程包括频繁的系统测试及数据库的扩充,以覆盖以前没有考虑的领域。

虽然基于几百个规则的系统经常在两个月之内就能投入运行,但建立和测试专家系统需要花费很长时间(好几个月),产生几千个规则也是很正常的。规则的集合可能是不完备的、不一致的;系统的准确特性可能没有明确的说明,设计者可能也不能够可靠地断定它。因此,有时称设计专家系统的技术为启发式程序设计。

采用启发式程序设计及规则演算的这类系统没有包括所有模拟人类专门知识的系统。John Shore指出自动驾驶仪——求解飞机运动方程的控制系统——能更好地驾驶飞机,但它不是专家系统,而只是一个有经验的“飞行员”。

人工智能研究人员常把专家系统分成浅型及深型两大类。浅型的系统是为追求速度而设计的。在其有限的数据库中,存储的事实比规则多,结论的证明通常比较短,大多数结论只是数据库中信息的简单推理。当将它应用到没有测试过的问题时,其效果常常是比较差的。这方面的例子有利用包箱启发式规则产生产生式调度的系统及回答技术信息的电子询问的系统。

深型系统则利用嵌套在模型中的第一原则从它们的域中的现象模型中推导结论。结论的证明通常是较长的,一些结论对一些观察者来说就不那么显然了。例如,Dendral系统,当给该系统输入光谱数据时,它就用球棒式的原子模型产生化合物的示意图。其它有名的系统有定性的物理程序,它决定物理系统特性的状态。这些程序可以从观察中返回(回溯)并产生一个有关初始条件的假设;也能从初始条件出发向前走,并通过产生有关可能违背哪些组成的假设,解释预见的与观察到的最终状态之间的差异。

浅型与深型系统之间的区别并不是很明显的,甚至是不重要的。从第一原则中推导结论的系统可能产生较长的证明,但多长才算是深型的证明呢?每一个系统都可能产生一个对一些观察者来说是不显然的结论,但哪些观察者对深型系统感到惊奇呢?模型是解释大量数据的规则的小集合,但多少数据和规则结合起来算是深型的?

系统不一定是深型的才有用,一个著名的专家系统是Mycin,它的规则表示某一疾病有哪些症状。通过回答有关症状的问题,Mycin引导用户诊断并开出药方,Mycin达到其结论的过程类似于医生和病人交谈和分析数据。Mycin不是一个深型的系统,因为它的知识是经验性的,且不是从疾病症状或疗法的模型中推导出来的。

每一个专家系统,浅型的或者深型的,可能都用知识表示的三种方法之一来表示知识。这里对这些系统作一简单小结。

第一种是逻辑程序设计的系统。它用数理逻辑直接地表示证明模型,例如,在PROLOG语言(PROLOG是一种逻辑程序设计语言——译者)中,规则被表示成q:-P1,…,Pn,其含义是“如果谓词P1,…,Pn都为真,则谓词q也为真”。谓词是对于它的变量的某些值为真的公式;例如当x是y的父母时,PAREN(x,y)为真。事实用右端为空来表示;如,Alice是Bob的父母,可写成:“PARENT(Alice,Bob):—”。传递规则允许我们替代一对规则

Q:—P1,…,Pn

S:—Q,r1,…,rm

有新规则:

S:—P1,…,Pn,r1,…,rm

通称消解的归约(化简)模式是为了找到给定条件的最终结论的prolog推理算法的基础,实际上,消解原理要比上面描述过的功能强得多,不要求在第一个规则左端的Q与在第二个规则右端的Q完全相同,只要能通过一些变量的替代使它们相同就可以了。例如PROLOG消解可以将。

PARENT(x,Bob):—MOTHER(x,Bob)

GRANDP(Alice,z):—PARENT(Alice,y),

PARENT(y,z)

归约成:

GRANDP(Alice,z):—MOTHER(Alice,Bob),

PARENT(Bob,z)

在指定了x=Alice及y=Bob后,通过寻找匹配成分使两个谓词相同的过程称为统一。每一步的消解,PROLOG总是记录下使谓词为真的可能值。它不仅能用“是”或者“不是”回答查询,而且能报告是哪些变量值使得答案为“是”。

第二种系统是基于规则的系统,它的数据库被构造成规则集合的层次结构,每一个规则集由一系列前面定义过的条件一结论规则组成。推导用户给定的初始条件的结论通常有两种策略。一是向前链接,自左而右通过追踪规则进行推导,直到找到给定条件的最终结论。另一是向后链接,通过自右而左地追踪规则进行推导,直到找到有关给定条件的假设的基本前提;在这过程中,丢弃那些与给定条件冲突的假设。哪一种方法比较快取决于问题本身。如果许多数据都是可用的,那么从几个可能的假设出发采用后者通常比较快。如果存在许多可能的假设(如医学诊断)而用前者从有限的初始数据出发则比较好些。通过允许规则的推论来命名能找到更合适的规则集合可以对合适的规则的搜索受到限制。

第三种是基于框架的系统。这种系统集中了规则中涉及的对象的描述层次。一类对象或个别对象的描述被称为是一个框架,关系“是……的例子”则将框架组织成一定的层次。因此,在诊断计算机故障的系统中,称为“第3个微处理机”的框架可能是框架“微处理机”的直接下属。这里规则被用来描述框架之间的功能关系,对象的性质可以通过将它放在不必直接用规则集合表示的框架的层次中而推导出来。这种规则的简单性是以框架目录及推理算法的复杂性换来的。

专家系统的限制因素是什么?最重要的是它的可靠性。专家系统被数据库中的信息及输入这些数据的过程性质所局限着。它不能报告数据库中隐含着的结论,通过反复试验过程得出知识、把它编成程序并测试它,可能产生不一致且不完备的数据库;因此,专家系统可能在想不到的时候出现重要的知识空隙。更重要的是,专家系统不可能有完备的、清楚的功能说明,它们的设计者也不可能预料它们在没有被测试的情况下的特性。如果不仔细地构造出模块,那么大的数据库的修改及维护是相当困难的。

专家系统已经受到了严厉的批评,David Parnas认为启发式开发的软件与由准确的说明开发的软件相比,其可靠性在本质上就比较差。他断言要得到一个解决问题的可靠程序,必须研究问题本身,而不是解决的方法。例如,为了区别图形中的对象,必须研究对象及摄影过程的特征;如果找规则,那就不可能找到可靠的程序。专家可能也不清楚他为什么这样做,而和他交谈的工程师可能并不总是询问正确的问题。

John Shore提醒我们,测试不是找出程序中错误的可靠方法,因为它只能揭示存在错误,但不能指出错误不存在,测试对大多数软件来说又是不适合的。这种情况对专家系统来说又更糟一些。按照Shore的观点,用反复试验方法进行程序设计将会设计出一个不可靠、不能作为自治系统的专家系统来。但他确实认为专家系统是由人控制的、有用的“智能助手”。

—些人工智能研究人员则认为完备的测试对专家系统来说是没有意义的。这些系统所模仿的也是一些自身并不完美的人类专家。人们不可能希望医生准确地诊断每一个疾病,因此也就不能要求专家系统做得更好些。他们进一步阐述到,对大程序进行数学证明也是没有意义的,因为不可能断言说明是否完备或准确。我认为我们能且也经常地制造克服人类缺陷的机器。我进而认为在制造决策过程中所依赖的机器时,我们应该采用各种可用的方法,以使机器能可靠地完成其功能。因此不完美的、明确的说明比反复试验更可能制造出可靠的机器。

虽然用反复试验方法开发出来的专家系统不可靠,但原则上没有理由说用了不同的程序设计方法专家系统就不会和其他软件一样可靠。专家系统毕竟还是计算机程序,强功能的逻辑语言,规则,及框架允许快速地将演绎过程编制成程序。像其他的软件一样,规则可以被构成模块的集合,模块可以组织成层次结构,明确的说明的演算可以被开发,证明规则满足说明的方法可以被设计出来。

准确地说明人类处理过程是一种幻想,然而有希望。至今最成功的专家系统是用来诊断故障的系统,它基于可理解的诊断过程模型。规则被组织成相应于诊断过程中的决策点的模块的层次结构,有关模型的完备性及一致性可以给出来,我们的愿望是能够定义其他的问题求解过程的模型并可同样地为它们的专家系统所使用。

专家系统并没有什么魔法,图林命题告诉我们,任何机械过程都可以用计算机程序设计出来。如果我们知道发现过程的过程,我们就能为它编程;但如果我们一点也不知道,我们就没有办法了。耶鲁大学的Alan Perlis说过,“人工智能中真正的工作是我们知道如何做的事情的自动化,而不是我们将可能知道如何做的事情的自动化。”人工智能不能替代真正的智能。

[American Scientist,74期1卷1986年]

___________________

* Peter J. Denning是美国国家航天局Ames研究中心高级计算机科学研究所所长。