第四章专家系统一、概述二、结构与工作原理三、设计方法四、评价五、开发工具六、VisualProlog语言第四章专家系统一、概述二、结构与工作原理三、设计方法四、评价五、开发工具六、VisualProlog语言为什么要评价专家系统一个专家系统在建立之后,必须经过相当长时间的运行检验,不断对知识库等部件进行改进,使系统日臻完善。专家系统的性能与效益,可通过对其评价做出评论。评价方法•秩事法:启发式地利用一组例子说明系统性能,并描述系统在哪些情况下工作良好。如评价医生的医术看其是否成功治愈疑难病症。•实验法:强调用实验来评价系统处理储存在数据库中问题事例时的性能。比较困难。例如,医学方面,不常见病例的实例收集等。评价专家系统的内容系统决定和建议的质量是否可靠而准确?所用推理方法的正确性更加重视专家解决问题时的推理机制!人机之间的对话质量能否自然对话?系统的效率花费时间是否过多?成本效益要做详细评价!第四章专家系统一、概述二、结构与工作原理三、设计方法四、评价五、开发工具六、VisualProlog语言•专家系统应用领域广泛,但每个系统一般只具有某个领域专家的知识,所以,在建造每个具体专家系统时,多数会从头开始,必然导致工作效率低下。•因此,研制一些比较通用的工具,来作为设计开发专家系统的辅助手段和环境,以提高开发效率、质量和自动化水平。•开发工具是一类程序设计系统,它是在70年代中期开始发展起来,迄今已有数以百计各式各样的专家系统开发工具,主要有:程序设计语言、骨架型系统(外壳)、支撑环境等•ES程序设计语言:一般分为AI专用语言、知识表示语言和通用型语言三大类。•1)面向人工智能的程序设计语言:如LISP、PROLOG等。特点:通用性强,与领域无关,用户能根据需要自由地设计系统。1程序设计语言Lisp语言•Lisp语言最早是在20世纪50年代末由麻省理工学院为研究人工智能而开发的。•Lisp语言的强大使它在其它方面诸如编写编辑命令和集成环境等显示其优势。而GNUEmacsLisp主要由Maclisp发展而来,该语言由MIT在20世纪60年代写成。它在某种程度上继承了CommonLisp,而CommonLisp在20世纪80年代成了一种标准。•Lisp代表LIStProcessing,即表处理,这种编程语言用来处理由括号(即“(”和“)”)构成的列表。2)知识表示语言即通用型知识表达语言,诸如产生式语言系统OPS5;基于框架理论的知识表示语言FRL;还有一些集中了多种编程方式的知识表示语言,如LOOPS——一种面向对象、数据、规则及其多知识表示的组合式语言。特点:不局限于任一特殊控制策略,广泛适用于一般问题;但受到语言结构自身设计限制。3)通用型语言:由于面向对象的知识表示方法特别适合于大型知识库系统的开发,被广泛应用于专家系统程序设计中。如java、VC++等,都已成为广泛使用的AI程序设计语言之一。•骨架型系统,由已有的成功专家系统演化而来的。它抽出了原系统中具体领域知识,保留原系统的知识库及推理机结构基本骨架,所以称为“外壳”。2骨架型系统•利用ES外壳作开发工具,只要将新的领域知识填充到ES中去,就可以生成新的专家系统。ES外壳的知识库结构及管理机制、推理机结构及控制机制、人机接口及辅助工具都可为新系统提供服务和支持。因此,使用这种工具开发效率高,当然限制也较多,故灵活性也差一些。•EMYCIN专家系统外壳•EMYCIN是由Stanford大学的VanMelle于1980年开发的一个ES外壳,是由MYCIN抽去原有的医学领域知识,保留外壳而形成的。采用产生式规则表达知识,目标驱动的反向推理控制策略,特别适用于诊断型ES的开发。•EMYCIN可提供MYCIN所有的辅助工具,如:⑴推理解释程序及可信度估算。⑵知识编辑程序及类似英语的简化会话语言。⑶知识库管理和维护手段。如一致性检查、跟踪、查错等。⑷系统测试实例。•EMYCIN一问世,就用于开发了一些有影响的专家系统,包括:1)PUFF--设计于1978年,是一个面向肺部疾病治疗的专家咨询系统,能基于肺功能检测数据提供诊断建议,共收集了60条产生式规则。2)HEADMED--设计于1978年,面向心理医药学的专家咨询系统,用于诊断精神病,并建议治疗药物,共收集了275条产生式规则。3)SACON--设计于1979年,面向机械结构分析的专家咨询系统,其通过提供咨询,指导结构工程师使用关于结构分析的大型程序MARC。MARC应用有限元分析技术去仿真物体的机械行为,SACON则建议适当的分析策略,去指导MARC的用户选择特定的输入数据、数学方法和材料特性。SACON共收集了160条产生式规则。4)ONCOCIN--设计于1981年,用于辅助医生管理患淋巴瘤癌症病人的化疗协议。5)CLOT--设计于1980年,用于诊断血液凝结系统的疾病,共收集了60多条产生式规则。6)DART--设计于1981年,用于诊断IBM计算机远程处理系统中出现的软件和硬件故障,共收集了190条产生式规则•KAS专家系统外壳•由PROSPECTOR系统抽去原有的地质勘探知识而形成的。它采用语义网络和产生式规则相结合的知识表达方式,以及启发式双向推理控制策略。适用于开发解释型的专家咨询系统。•KAS可提供的辅助工具,如:⑴知识编辑系统,用于知识获取、修改与扩充知识库,可直接操作和反馈修改结果。⑵推理解释系统。⑶用户问答系统。⑷英语分析器。EXPERT系统是由CASNET系统抽去原有医学领域知识而形成的。适用于诊断、分类的专家咨询系统的开发。它采用产生式规则表达知识,有如下三种形式:FF规则;FH规则和HH规则。•⑴FF规则:用于从已知的事实推知另一些事实的真值,从而可省去对后者的提问,被FF规则推导出来的事实只取逻辑值和“不知道”值。例如F(A,T)→F(B,F)•表示如果已知事实A为真,则事实B一定为假。⑵FH规则:用于指出事实与假设之间的逻辑关系,并用一个可信度指出肯定或否定一个假设有多大把握。例如F(A,0:50)&[2:F(B,T),F(C,T),F(D,F)]→H(E,0.8)它表示若第一个事实(A取值在0到50之间)成立,而后面三个事实(B为真,C为真,D为假)中有两个成立,则假设E成立的可能性为0.8。Hypothesis⑶HH规则:用于指出假设与假设之间的推理关系,EXPERT规定出现在规则左部的假设的确定性程度需用一个数值区间来指出。例如H(A,0.2:1)&H(B,0.1:1)→H(C,1)它表示如果对假设A有0.2到1的把握,并且对假设B有0.1到1的把握程度,则可得出结论C,其把握程度为100%。•支撑设施是指帮助进行程序设计的工具,它常被作为知识工程语言的一部分。•工具支撑环境是一个附带的软件包,以便使用户界面更友好,它包括四个典型组件:调试辅助工具输入输出设施解释设施知识库编辑器。3支撑环境•(1)调试辅助工具大多数程序设计语言和知识工程语言都包含有跟踪设施和断点程序包,跟踪使用户能跟踪或显示系统的操作,这通常是列出已激发的所有规则的名字或序号,或显示所有已调用的子程序。断点程序包使用户能预先告知程序在什么位置停止,这样用户能够在一些重复发生的错误之前中断程序,并检查数据库中的数据。所有的专家系统工具都应具有这些基本功能。•(2)输入输出设施不同的工具用不同的方法处理输入输出,有些工具提供运行时实现知识获取的功能,此时的工具机制本身使用户能够与运行的系统对话。例如EMYCIN能在运行时向用户索要它所需要而知识库中没有的信息,EXPERT不仅能询问这类信息,而且在请求输入信息时能提供菜单供用户选择。另外,在系统运行中,它们也允许用户主动输入一些信息。良好的输入输出能力将带给用户一个方便友善的界面。•(3)解释设施虽然所有的专家系统都具有向用户解释结论和推理过程的能力,但它们并非都能提供同一水平的解释软件支撑。解释机制常采用回溯推理,应具有以下的能力:(a)解释系统是如何到达一个特定状态的。(b)能处理假设推理,即系统能解释如果某一事实或规则略有不同将会推出什么结论。(c)能处理反事实推理,即系统能解释为什么未得到一个期望的结论。•(4)知识库编辑器专家系统工具都具有编辑知识库的机制。但大部分的工具在它们的支撑环境中还包括:(a)语法检查,即编辑器使用语法结构知识来帮助用户以正确的拼写和格式输入规则。(b)一致性检查,即检查输入的规则和数据是否与系统中已存在的知识矛盾。(c)自动薄记,记录用户对规则修改的相关信息。(d)知识抽取,帮助用户将新知识输入到系统中。第四章专家系统一、概述二、结构与工作原理三、设计方法四、评价五、开发工具六、VisualProlog语言VisualProlog语言•国际上研究和开发智能化应用的主流工具之一。•Prolog,ProgramminginLogic,第一个系统于1962年在法国马赛研制成功。•VisualProlog是Prolog开发中心推出的基于Windows环境的智能化、可视化集成开发环境;•具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能。基本语法规则程序结构搜索控制机制数据结构1基本语法规则VisualProlog是基于Horn子句的谓词逻辑系统子集,其程序只描述所解问题中的对象,以及对象间的某些已知事实、推理规则,事实--陈述了自然语言中对象间的已知关系,其一般描述形式为:关系(变元1,变元2,…,变元n)。Horn子句是一种事物及其相互关系推理的形式系统•例:下表给出了几个自然语言语句及其VisualProlog表达。自然语言陈述的事实VisualProlog表达的事实比尔喜欢狗。likes(bill,dog).玛丽喜欢蓝色衬衫。likes(mary,blueshirt).汤姆喜欢自行车。likes(tom,bike).•关系名(又称谓词)通常用小写字符串表示。•变元可以表现为:常量(数字、小写字符串、引号括起来的字符串)、变量(以大写字母开始的字符串)。•子句以“.”结束。•变元顺序大多数情况下是无序的,但在特定应用环境中若有次序约定,则应注意保持一致。例如:bites(dog,man)./*狗咬人*/bites(man,dog)(不合理)•VisualProlog描述从其他信息推断新信息的语法是规则。其一般描述形式为:规则头:-规则体.或关系(变元1,变元2,…,变元n):-关系(变元1,…,变元p),……,关系(变元1,…,变元q).规则头:若干条件为真则其为真的事实,结论;规则体:前提条件,它们必须为真才能使系统利用它们证明规则头为真•例:“约翰喜欢汽车,如果该汽车十分有趣”,用VisualProlog规则表示为:likes(john,Car):-fun(Car).这里,Car是一个可能取不同值的变量。PREDICATESlikes(symbol,symbol)CLAUSESlikes(ellen,tennis).likes(ellen,reading).likes(john,football).likes(john,computers).likes(tom,baseball).likes(eric,swimming).likes(eric,reading).likes(mark,tennis).likes(bill,Activity):-likes(tom,Activity).GOALlikes(bill,baseball).Yes2程序结构论域段(DOMAINS):用来指定程序中谓词参数的论域,这些论域可以是事先定义的标准内部论域,也可以是自定义的特殊论域。谓词段(PREDICATES):用户声明自定义谓词的部分,指定谓词的名称、参数以及参数的论域。子句段(CLAUSES):其中放置组成程序的所有事实和规则,构成了VisualProlog程序的知识库。目标段(GOAL):用来指定程序执行时要求解的问题。•例:下面给出描述有关人员及其所使用交通工具信息的完整VisualP