1.1 早期的专家系统
现代电子计算机诞生于20世纪40年代。在计算机诞生之初,人们就对智能系统的各种可能性充满了热切渴望,开始从各个方向研究如何让计算机像人一样进行推理、做出决策、解决问题。最初人们用计算机指令直接编码这些“思维”过程,对于每一种应用场景,都要编写特定的软件程序代码,或者实现为定制的硬件电路模块。这种方法其实至今仍然存在,比如,洗衣机能够自动完成加水、加洗衣液、转动洗衣桶、排水和脱水等一系列动作的组合,控制阀门和电机协调工作,以确保采用合适的水位和转速。这就是一种智能系统。这样的系统也能够对外部环境(比如水位检测器)做出反应,产生相应的动作(比如开关电机或者阀门)。然而,这种直接编码的系统,通常只适用于特定场景,切换到其他场景则需要编制全新的程序,所以不具有任何通用性。
人们希望能够将智能系统快速应用于不同领域。研究者发现,人的思维过程可以抽象为对知识进行逻辑推理,于是将一些共同的推理机制抽取出来,构建成通用的系统。这样,“专家系统”就出现了。
1965年研发的DENDRAL是最早的专家系统之一[1]。这个系统可以帮助化学家分析质谱仪的结果,推测有机物的分子结构。当时,美国航空航天局正在进行火星探测活动,无人航天器着陆火星后,会对土壤进行采样分析,考察火星上存在有机物乃至地外生命的可能性。研究人员希望将专家系统搭载在探测火星的航天器上,代替科学家分析火星表面物质。虽然当时并没有足够小型化的计算机来搭载专家系统,但并不妨碍火星探测活动成为发起DENDRAL项目的契机。化学家和计算机科学家合作完成了该项目,实现了一个可以根据质谱分析结果生成可能的有机分子结构的系统。这个系统具有里程碑意义,它是第一个真正实现了的专家系统。
受到DENDRAL系统的影响,专家系统开始应用于其他领域。比如,人们在20世纪70年代构建了用来分析细菌感染的MYCIN系统。系统会询问一系列问题来获得病患的症状信息,然后用600多条规则进行推理,得出导致症状的致病细菌种类,并且给出治疗建议。由于当时个人计算机还没有诞生,这个系统运行在大型计算机上。大型计算机是通过分时复用的方式支持多个用户同时使用的,有点像现在的多任务操作系统。终端用户可以通过美国国防部的ARPA网络访问大型计算机上的MYCIN系统。然而,由于伦理和医疗责任的问题,系统没有实际用于诊疗病人。MYCIN系统的重要影响是它采用了逆向推理,从可能的诊断结果出发,指导医生进行相关的化验或检查,以确认诊断结果。另外,系统引入了不确定因子,能够进行不确定性推理。
这些早期研究催生了各种专家系统。它们的共同特点是把人类专家的知识表示为规则。比如,在DENDRAL系统中,规则可以是“某个质谱分析信号表示可能存在某种分子结构A”,“结构A和结构B可以连接为结构C”,“结构A和结构D不能兼容共存”等。再如,MYCIN系统的规则可以是“某种症状表明可能是细菌A或者细菌B感染”,“检查细菌A感染需要进行某种C试验和D试验”等。
将规则和观察到的事实构成知识库后,专家系统就可以在此基础上进行逻辑推理,从而推导出新的知识,用于产生人们希望得到的解释或者决策。利用规则进行推理的过程可以抽象出来,成为通用推理引擎。构造一个新的专家系统不需要重新编写推理引擎,只需要编写新的规则。编写规则的人称为“知识工程师”,他们是领域专家和计算机之间的桥梁。比如,在DENDRAL系统中,他们从化学家那里得到有机物分子构成的规则,而在MYCIN系统中,他们从医生那里得到各种不同细菌感染的症状和治疗方案。规则通常描述为“如果……那么……”的形式,这种规则称作产生式规则。推理引擎利用规则在已知事实的基础上进行推理,这个过程类似于进行初等几何问题的证明。