第六篇
专家系统是如何实现的
(七)
清华大学计算机系 马少平
第七节
专家系统工具
小明:通过您的介绍对专家系统有了一些了解,如果我想建造一个专家系统,具体应该如何实现呢?有什么工具可以使用吗?
艾博士:早期的专家系统是用通用的程序设计语言实现的,像早期著名的专家系统DENDRAL、MYCIN等都是用LISP语言实现的。由于LISP语言的特点,曾经长期占据人工智能程序设计的主导地位,也被称作人工智能程序设计语言。PROLOG语言因其具有一定的自动推理能力也曾经被广泛关注,用于建造专家系统等人工智能系统。也有用FORTRAN、C语言等建造专家系统的。由于专家系统的复杂性,虽然可以用通用程序设计语言构建专家系统,但是存在费事费力、不容易修改等问题。
专家系统的一个特点是知识库与系统其他部分的分离,知识库是与求解的问题领域密切相关的,而推理机等则与具体领域独立,具有通用性。为此,人们就开发了一些专家系统工具,用于快速建造专家系统。
借助之前开发好的专家系统,将描述领域知识的规则等从原系统中“挖掉”,只保留其知识表示方法和与领域无关的推理机等部分,就得到了一个专家系统工具,这样的工具称为骨架型工具,因为它保留了原有系统的主要架构和知识表示方法。
最早的专家系统工具EMYCIN(Empty MYCIN)就是一个典型的骨架型专家系统工具,从其名称就可以看出,它是来自于著名的专家系统MYCIN。EMYCIN的适用对象是那些需要提供基本情况数据,并能提供解释和分析的咨询系统,尤其适合于诊断这一类演绎问题。这类问题有一个共同的特点是输入数据比较多,其可能的解空间是事先可列举的。
在EMYCN中,采用的是逆向深度优先的控制策略,它提供了专门的规则语言来表示领域知识,基本的规则形式是
(IF <前提> THEN <行为> [ELSE <行为>])
当规则前提为真时,该规则将前提与一个行为结合起来,否则与另一个行为结合起来,并且可以用一个-1到+1之间的数字来表示在该前提下行为的可信程度,也就是规则的置信度。如一条判断细菌类别的规则可表示如下:
PREMISE:[$AND (SAME CNTXT SITE BLOOD)
(NOTDEFINITE CNTXT IDENT)
(SAME CNTXT STAIN GRAMNEG)
(SAME CNTXT MORPH ROD)
(SAME CNNTXT BURN T)]
ACTION:(CONCLUDE CNTXT IDENT PSEUDOMONAS TALLY 0.4)
其含意如下:
如果 培养物的部位是血液
细菌的类别不确定
细菌的染色是革蓝氏阴性
细菌的外形是杆状
病人被严重地烧伤
那么 以不太充分的证据(可信程度0.4)说明细菌的类别是假单菌。
小明:这些内容看起来有些复杂。
艾博士:主要是涉及到很多医疗诊断知识,大概了解其含义就可以了,这条规则选自MYCIN的知识库。
在EMYCIN中,还提供了良好的用户接口,当用户对系统的某个提问感到不解时,可以通过Why命令向系统询问为什么会提出这样的问题,并且对于系统所作出的结论,可以通过How命令向系统询问它是如何得出这个结论的。这一点对于诊断系统是极为重要的,用户可以避免盲目地按照系统所提供的策略去执行。
此外,EMYCIN还提供了很有价值的跟踪及调试程序,并附有一个测试例子库,这些特征为用户开发系统提供了极大的帮助。
骨架型专家系统工具具有使用起来简单方便的特点,只需将具体的领域知识,按照工具规定的格式表达出来就可以了,可以有效提高专家系统的构建效率,但是灵活性不够,除了知识库以外,使用者很难改变系统其他的任何东西。这是骨架型专家系统工具存在的不足之处。
另一种专家系统工具是语言型工具,提供给用户的是构建专家系统需要的基本机制,除了知识库以外,使用者还可以使用系统提供的基本机制,根据需要构建具体的推理机等,使用起来更加灵活方便,使用范围也更广泛。著名的OPS5就是这样的工具系统,它以产生式系统为基础,综合了通用的控制和表示机制,为用户提供建立专家系统所需要的基本功能。在OPS5中,预先没有设定任何符号的含义以及符号之间的关系,所有符号的含义以及他们的关系,均可以由用户定义,其推理机制、控制策略也作为一种知识对待,用户可以通过规则的形式影响推理过程。这样做的好处是构建系统更加灵活方便,但也增加了构建专家系统的难度,但是比起直接用程序设计语言从头构建专家系统要方便的多。
OPS5通过如下的循环执行其操作:
(1)匹配。确定哪些规定满足前提。
(2)冲突消解。选出一个满足前提的规则,若没有一个满足前提的规则则停止执行。
(3)执行。执行选定的规则的动作部分。
(4)循环。转向第一步。
这只是一个简单的控制结构轮廓,具体的求解策略,取决于用户使用OPS5定义的产生式系统本身。
在OPS5中,有一个称为工作存储器的综合数据库,它是由一组不变的符号结构组成的,如为了表示“名字叫H2SO4的物质是无色的并且属于酸性”,则可以写为
(MATERIAL 'NAME H2SO4 'COLOR COLORLESS 'CLASS ACID)
OPS5中的规则可以表示领域知识,也可以表示控制知识,其规则的一般形式为:
(P <规则名> <前提> → <结果>)
例如,一条用于协调整体行动的规则可以如下表示,其具体含义在右边的分号后面加以说明,分号及其后面的文字属于注释。
(P COORDINATE-A ;如果有一个目标
(GOAL
'NAME COORDINATE ;协调系统的任务
'STATUS ACTIVE ;处于激活状态
-(TASK-ORDER)) ;还没有选定顺序
→
(MAKE GOAL ;则制造子目标
'NAME ORDER-TASKS ;确定要求的顺序
'STATUS ACTIVE) ;使其为激活状态
(MODIFY1 ;并修改协调目标
'STATUS PENDING)) ;改变其状态为挂起
小明:这个比前面的EMYCIN看起来更复杂了。
艾博士:OPS5确实更复杂一些,只要能通过分号后面的注释部分,大概了解就可以了。
OPS5提供了一个常规的交互式程序设计环境,很类似于一个典型的LISP系统,它允许用户跟踪或中断程序的运行来检查系统运行状态,或在运行中改变系统等。为了在建立一些较大的系统时调试上的方便,OPS5允许通过规则名调用相应的函数,以便检查某个应该被调用的规则为什么没有被调用,并可以通过命令函数来查看数据库中的某些指定元素,当系统进入不正确的状态时,用户可以让系统后退一步,以便查找出何处出错,如果是因不正确的规则引起的,可以在对规则进行修改后,接着继续运行。
OPS5是用LISP语言实现的,后来为了提高系统的运行速度,又推出了C语言版OPS83。
艾博士最后总结说:前面我们简单介绍了两种典型的专家系统工具,EMYCIN属于骨架型专家系统工具,OPS5属于语言型专家系统工具,两种工具各有特点。骨架型工具的优点是使用方便,但不足是通用性不够,使用起来不够灵活。语言型工具则刚好相反,使用起来要复杂一些,但是更加灵活,具有一定的通用性。功能上的通用性与使用上的方便性是一对矛盾,语言型工具为维护其广泛的应用范围,不得不考虑众多的开发专家系统中可能会遇到的各种问题,因而使用起来比较困难,用户不易掌握,对于具体领域知识的表示也比骨架型工具困难一些,而且在与用户的对话方面和对结果的解释方面也往往不如骨架型工具。
小明读书笔记
为了更方便地构建专家系统,研发了一些专家系统构建工具。常用的专家系统构建工具分为两种类型。一种是骨架型工具,由成熟的专家系统,“挖掉”其与具体任务相关的部分,保留其推理机制和知识表示方法而得到。EMYCIN就是一个典型的骨架型工具,由专家系统MYCIN得到。这类专家系统工具的特点是简单易用,只需要按照要求提供相关任务的知识就可以了,不足是缺乏灵活性。一种是语言型工具,提供给用户的是构建专家系统需要的基本机制,除了知识库以外,使用者还可以使用系统提供的基本机制,根据需要构建具体的推理机等。特点是使用灵活,使用范围广,不足是使用起来比较复杂,对使用者要求比较高。OPS5是一个典型的语言型工具。
未完待续