人工智能原理_教学课件_修春波_第4章 专_家_系_统.pptx
《人工智能原理_教学课件_修春波_第4章 专_家_系_统.pptx》由会员分享,可在线阅读,更多相关《人工智能原理_教学课件_修春波_第4章 专_家_系_统.pptx(90页珍藏版)》请在冰豆网上搜索。
第4章专家系统主编修春波第4章专家系统4.1专家系统的概述4.2专家系统的结构4.3专家系统的设计原则与开发过程4.4专家系统评价4.5专家系统开发工具4.6Prolog语言4.1专家系统的概述4.1.1专家系统的概念与特点4.1.2专家系统和传统程序的区别4.1.1专家系统的概念与特点专家系统一般具有如下一些基本特点:
1.具有专家知识及推理能力2.具有灵活性3.具有透明性1.具有专家知识及推理能力专家系统要能像人类专家那样工作,一方面要具有专家级的知识,另一方面还必须具有利用专家知识进行推理、判断和决策的能力,从而解决复杂困难问题。
2.具有灵活性专家系统的体系结构通常采用知识库与推理机相分离的构造原则,它们彼此独立又有联系。
这样既可以在系统运行时能根据具体问题的不同,分别选取合适的知识构成不同的求解序列,实现对问题的求解,又可以在对一方进行修改时不致影响到另一方。
3.具有透明性为了提高用户对系统的可信程度,专家系统一般都设置了解释机构,用于向用户解释它的行为动机,以及得出某些答案的推理过程和依据,使用户能比较清楚地了解系统处理问题的过程及使用的知识和方法。
4.1.2专家系统和传统程序的区别与传统程序相比,专家系统的可维护性好,易于修改和扩充;更加适合处理模糊性、经验性的问题;能解释结论的过程。
与人类专家相比,专家系统可以帮助人类专家更系统地总结经验知识,并对这些知识进行推广与完善。
4.2专家系统的结构1.知识库2.推理机3.综合数据库4.人机接口5.解释机构6.知识获取机构1.知识库知识库(KnowledgeBase)是专家系统的核心部件之一,它主要的功能是存储和管理专家系统中的知识。
它包括两种类型的知识:
一类是相关领域中定义、事实、理论等收录在学术著作中的事实性的数据;一类是专家在长期实践中的实践经验,具有启发性。
在知识库中,这两类知识都必须以一定的规范形式表示。
2.推理机推理机(ReasoningMachine)是专家系统的思维机构,是专家系统的核心部件之一。
推理机的任务是模拟领域专家的思维过程,根据知识库中的知识,按一定的推理方法和控制策略进行推理,直到推理出问题的结论。
3.综合数据库综合数据库(GlobalDatabase)又称全局数据库、工作存储器、黑板。
它用于存放专家系统工作过程中所需要求解问题的初始数据、推理过程中的中间结果及最终结果等信息的集合。
4.人机接口人机接口(Interface)是系统和用户间的桥梁,用户通过人机接口输入必要的数据、提出问题、获得推理结果及系统的解释;系统通过人机接口要求用户回答系统的询问,回答用户的提问。
解释机构(Expositor)的功能是向用户解释专家系统的行为,包括解释“系统怎样得出这一结论”、“系统为什么提出这样的问题”等需要向用户解释的问题。
为用户了解推理过程及系统维护提供方便,体现了系统透明性。
5.解释机构6.知识获取机构知识获取机构是实现专家系统将专业领域的知识与经验转化为计算机可利用的形式,并送入知识库的功能模块。
它同时也具有修改、更新知识库的功能,维护知识库的完整性与一致性。
4.3专家系统的设计原则与开发过程专家系统是复杂的计算机软件系统,它的开发即要遵守软件工程的基本原则,又要考虑到基于知识的特殊性,与一般软件系统的设计有重要的区别。
4.3.1专家系统的设计原则4.3.2专家系统的开发过程4.3.1专家系统的设计原则1.确定求解问题的领域2.获取完备的知识3.知识库与推理机分离4.设计合适的知识表示模式5.模拟领域专家思维过程求解问题6.建立友好的人机交互环境7.渐增式的开发策略1.确定求解问题的领域专家系统是针对某一问题领域的,因此在设计专家系统之前首先要确定所面向的问题领域。
问题领域如果太小会使求解问题能力较弱;如果太大又使知识库过于庞大而不能保证知识的质量,从而影响系统的效率,难以维护管理。
2.获取完备的知识知识是专家系统的基础,它是建立高效、可靠专家系统的前提条件。
完备的知识是指知识的数量满足求解问题的需要,并保证知识的一致性与完整性等。
3.知识库与推理机分离知识库和推理机分离是专家系统的一个重要特点,可方便实现知识库的维护与管理。
另外,由于推理机可灵活设计,便于控制,所以在推理机修改时不会影响知识库。
4.设计合适的知识表示模式知识在专家系统中以一定的形式来表示,不同领域的问题都有各自的特点,应该用相应的表示模式表示该领域知识。
所以,在选择设计知识表示模式时应该充分考虑领域问题的特点,使它能充分表示知识。
5.模拟领域专家思维过程求解问题专家系统的特点之一就是能模拟专家推理复杂的问题,在设计专家系统时,要模拟专家的思维方法,像专家那样学习知识、利用知识和经验、通过思维判断,求解问题。
6.建立友好的人机交互环境人机接口是专家系统与用户交流的媒介,因此为了让设计的专家系统能被用户接受,充分发挥它的作用,产生效益,就要在设计专家系统时,充分了解用户的实际情况、知识水平,建立适合用户,方便使用的友好交互环境。
7.渐增式的开发策略专家系统是一个复杂的程序系统,建立过程需要较长的时间,一方面是因为系统本身复杂需要设计知识库、数据库、推理机、解释机等模块,工作量大;另一方面,所设计的知识表示模式及推理机不一定完全符合领域问题的实际情况,需要一边建立一边验证、一边修正,所以专家系统的开发与评价是并行的,以便及时发现问题、及时修正;还有参加设计的专家人员结构层次不同、专业不同,合作需要一定时间。
4.3.2专家系统的开发过程1.需求分析2.系统设计3.知识获取4.编程与调试5.原型测试6.修正与扩充7.系统包装及总调1.需求分析需求分析是指知识工程师和领域专家合作对领域问题进行调查研究,确定专家系统的目标和任务,进行可行性分析,调查的主要内容有:
专家系统的目标和任务;用户对系统功能、性能的需求;领域专家求解问题的模式;专家系统将要面向用户的情况;专家系统开发的软硬件环境;专家系统的开发时间及进度要求等。
2.系统设计系统设计阶段完成的任务包括:
确定专家系统的类型、体系结构;确定知识的表示模式及知识库的结构;确定总体的求解策略;确定与用户的接口方式;选择系统的软硬件及开发工具。
3.知识获取这一阶段的主要任务是:
获取专家处理问题的方法与思路,获得专家经验知识;查阅资料,获得领域知识;对知识进行分析、比较、归纳与整理,找出知识间的内在联系及规律;把整理出来的知识用系统设计过程中的知识表示模式表示出来。
4.编程与调试按系统设计所确定的功能模块进行程序设计,并且对各功能模块进行调试,同时也要对各功能模块进行联合调试,检查程序设计中是否有错误。
经过编程与调试之后,形成专家系统的原型。
测试时使用典型实例,这些实例的结果已知,而且要选择有代表性的实例,使系统各主要部分及各应用区间能被充分的测试到。
测试的内容应该包括:
可靠性、知识的一致性、工作效率、解决问题能力等。
5.原型测试6.修正与扩充7.系统包装及总调测试后,发现问题并及时的修正,比如说求解问题的方法是否合适;知识的表示形式是否合理等。
无论是哪个环节出现问题,都要进行修正。
所以在设计专家系统之初,要经过认真细致的前期准备工作,尽量减少修正过程。
另外,除了修正问题外,还要根据测试结果对系统进行扩充,使各环节功能进一步完善。
要根据用户的需求,设计友好的人机界面,对系统进行总调,生成各类说明文件或使用说明等相关文件。
4.4专家系统评价首先,评价知识的完备性及其表示方法的适当性。
其次,评价求解问题的质量及系统效率。
另外,系统的可维护性、系统研制时间、效益等也是系统评价的指标。
4.5专家系统开发工具4.5.1骨架型开发工具4.5.2语言型开发工具4.5.3构造辅助工具4.5.4支撑环境4.5.1骨架型开发工具骨架型开发工具属于专用开发工具,因其程序的主要骨架是固定的,除了规则以外,用户不可改变任何东西,因而骨架型工具只能应用于与原有系统非常相近的领域,只能用来解决与原系统相类似的问题。
4.5.2语言型开发工具语言型工具中一个较典型的例子是OPS5,它以产生式系统为基础,综合了通用的控制和表示机制,向用户提供建立专家系统所需要的基本功能。
4.5.3构造辅助工具它包括以下个子系统:
)设计子系统)编辑子系统)解释子系统)跟踪子系统TEIRESIAS系统具有下列功能:
1)知识获取2)知识库调试3)推理指导4)系统维护5)运行监控4.5.4支撑环境1.调试辅助工具2.输入输出设施3.解释设施4.知识库编辑器1.调试辅助工具大多数程序设计语言和知识工程语言都包含有跟踪设施和断点程序包,跟踪使用户能跟踪或显示系统的操作,这通常是列出已激发的所有规则的名字或序号,或显示所有已调用的子程序。
2.输入输出设施输入输出设施在系统运行时可通过人机对话获取有关信息。
传统的选单方式缺乏智能性。
一般专家系统需用智能询问的方式,即在运行过程中由系统主动地、有针对性地提出问题或做出解释。
3.解释设施解释机制常采用回溯推理,应具有以下的能力:
(1)解释系统是如何到达一个特定状态的。
(2)能处理假设推理,即系统能解释如果某一事实或规则略有不同将会推出什么结论。
(3)能处理反事实推理,即系统能解释为什么未得到一个期望的结论。
4.知识库编辑器是为用户或知识工程师提供的一种修改知识库的工具,包括专家系统在调试和运行过程中,需要提供对知识库进行增、删、改的手段和记录有关修改与被修改的知识信息;常用的语法检查工具,用以解释和纠正语法错误的规则;还有,用以检查输入规则的语义,去发现它们是否同系统中已有的知识发生冲突的检查工具,当发生冲突时,编辑程序就要解释什么引起了冲突。
4.6Prolog语言4.6.1Prolog语言的特点4.6.2基本Prolog的程序结构4.6.3Prolog程序的运行机理4.6.4TurboProlog程序结构4.6.5TurboProlog的数据与表达式4.6.6VisualProlog介绍4.6.7PIE:
Prolog的推理机4.6.1Prolog语言的特点1.TurboProlog与PDCProlog2.VisualProlog4.6.2基本Prolog的程序结构Prolog语言结构十分简单,只有三种语句结构,分别称为事实、规则和问题。
1.事实(fact)2.规则(rule)3.问题(question)1.事实(fact)格式:
谓词名().功能:
一般表示对象的属性、状态或多个对象间的关系等。
例如:
student(张三).likes(李四,音乐).就是Prolog中的两个合法事实。
分别表示“张三是学生”和“李四喜欢音乐”。
作为特殊情形,一个事实也可以只有谓词名。
例如:
abc.repeat.2.规则(rule)格式:
谓词名():
-谓词名(),谓词名().功能:
一般表示对象间的因果关系、蕴含关系或对应关系。
例如:
friend(赵六,X):
-likes(X,阅读),likes(X,音乐).表示“如果X爱好阅读,并且X爱好音乐,则X是赵六的朋友”。
再比如:
grandfather(X,Y):
-father(X,Z),father(Z,Y).表示“如果X是Z的父亲并且Z又是Y的父亲,则X是Y的祖父”。
作为特殊情形,规则中的谓词也可以只有谓词名而无参量。
例如:
run:
-path(a,X),write(X=,X),nl,fail.3.问题(question)格式格式:
?
-谓词名(),谓词名().功能功能:
表示用户的询问,即程序运行的目标。
例如:
?
-student(张三).表示“张三是学生吗?
”。
3.问题(question)【例4-1】likes(张三,运动).likes(李四,音乐).likes(李四,运动).likes(王五,旅游).friend(赵六,X):
-likes(X,阅读),likes(X,音乐).friend(赵六,X):
-likes(X,运动),likes(X,音乐).?
-friend(赵六,Y).3.问题(question)本例中前四句是四个事实,第五、六句是两条规则,第七句是问题(目标)。
本例中的问题也可以是:
?
-likes(张三,X).或?
-likes(李四,音乐).或?
-friend(X,Y).或?
-likes(李四,运动),likes(张三,音乐),friend(赵六,X).对于不同的问题,程序运行的结果一般是不一样的。
4.6.3Prolog程序的运行机理Prolog程序的运行是从目标出发,并不断进行匹配合一、归结,有时还要回溯,直到目标被完全满足或不能满足时为止。
下面引入几个概念。
自由变量与自由变量与约束变量约束变量匹配合一匹配合一4.6.3Prolog程序的运行机理
(1)如果两个都是常量,则必须完全相同。
(2)如果两个都是约束变量,则两个约束值必须相同。
(3)如果其中一个是常量,一个是约束变量,则约束值与常量必须相同。
(4)至少有一个是自由变量。
4.6.3Prolog程序的运行机理【例4-2】prel(ob1,ob2,Z).prel(ob1,X,Y).只有当变量X被约束为“ob2”,且X,Y的约束值相同或者至少有一个是自由变量时,它们才是匹配合一的。
合一操作是Prolog的一个特有机制。
4.6.3Prolog程序的运行机理回溯:
回溯:
对于多个子目标的情况,当某一个子目标找不到能与之匹配合一的谓词时,如果该子目标前面存在一个已经满足的子目标,则撤消已经满足的子目标有关变量的约束值,使其重新满足。
成功后,再继续满足原子目标。
回溯也是Prolog的一个重要机制。
4.6.3Prolog程序的运行机理下面,我们通过例4-2给出的程序分析其运行过程,以说明Prolog的运行机理。
likes(张三,运动).
(1)likes(李四,音乐).
(2)likes(李四,运动).(3)likes(王五,旅游).(4)friend(赵六,X):
-likes(X,阅读),likes(X,音乐).(5)friend(赵六,X):
-likes(X,运动),likes(X,音乐).(6)?
-friend(赵六,Y).4.6.3Prolog程序的运行机理likes(X,阅读),likes(X,音乐).的求解。
这实际是经归结,规则头部被消去,而目标子句变为?
-likes(X,阅读),likes(X,音乐).4.6.3Prolog程序的运行机理现在依次对子目标likes(X,阅读)和likes(X,音乐).求解,如果能够找到同时满足这两个子目标的X值,则由匹配合一的概念可知,此时的X取值就是Y的值,即问题的答案。
子目标的求解过程,与主目标完全一样,也是从头对程序进行扫描,不断进行测试和匹配合一等,直到匹配成功或扫描完整个程序为止。
这时,系统从该目标刚才的匹配语句处(即第五句)向下继续扫描程序中的子句,试图重新使原目标匹配,结果发现第六条语句的左部,即规则:
4.6.3Prolog程序的运行机理friend(赵六,X):
-likes(X,运动),likes(X,音乐).由于程序中不存在事实likes(张三,音乐),所以该目标的求解失败。
于是,系统就放弃这个子目标,并使变量X恢复为自由变量,然后回溯到第一个子目标,重新对它进行求解。
由于系统已经记住了刚才已同第一子目标谓词匹配过的事实的位置,所以重新求解时,便从下一个事实开始测试。
易见,当测试到程序中第三个事实时,第一个子目标便求解成功,且变量X被约束为“李四”。
这样,第二个子目标也就变成了:
4.6.3Prolog程序的运行机理likes(李四,音乐).再对它进行求解。
这次很快成功。
由于两个子目标都求解成功,所以,原目标friend(赵六,Y)也成功,且变量Y被约束为李四(由Y与X的合一关系)。
于是,系统回答:
Y=李四,程序运行结束。
4.6.4TurboProlog程序结构/*/constantsdomainsdatabasepredicatesgoalclauses4.6.4TurboProlog程序结构一个TurboProlog程序不一定要包括上述所有段,但一个程序至少要有predicates段和clauses段。
领域段(domains)用于说明程序谓词中所有参量的领域。
谓词段(predicates)字句段(clauses)目标段(goal)。
存放在目标段中的目标,称为内部目标内部目标,在程序运行时临时给出目标,称为外部目标外部目标。
4.6.5TurboProlog的数据与表达式1.领域2.常量与变量3.算术表达式4.关系表达式5.输入与输出6.表处理与递归7.回溯控制1.领域TurboProlog谓词中各个项的取值范围被称作领域。
TurboProlog包括整数(integer)、实数(real)、字符(char)、字符串(string)和符号(symbol)等五种标准领域,还有结构、表和文件等三种复合域。
结构也称复合对象,它是TurboProlog谓词中的一种特殊的项。
结构的一般形式为:
函数名(参量表)复合对象可表达树形数据结构。
1.领域例如:
likes(tom,sprots(football,basketball,table_tennis).其中sprots(football,basketball,table_tennis)就是一个结构,即复合对象。
复合对象在程序中的说明,需分层进行,直至标准领域:
domainsname=symbol/*symbol为标准领域*/sy=symbol/*symbol为标准领域*/sp=sports(sy,sy,sy)predicateslikes(name,sp)或:
1.领域domainssp=sports(symbol,symbol,symbol)predicateslikes(symbol,sp)表的一般形式是:
x1,x2,.,xn其中xi(I=1,2,3n)为Prolog的项,一般要求同一个表的元素属于同一领域。
不含任何元素的表称为空表,记为。
例:
1,2,3apple,orange,banana,grape,cane1.领域表的说明方法是在其组成元素的说明符后加一个星号*。
例如:
domainslists=string*predicatespl(lists)就说明谓词pl中的项lists是一个由串string组成的表。
2.常量与变量TurboProlog的常量和变量有整数、实数、字符、串、符号、结构、表和文件这八种数据类型。
变量名由大写字母开头的字母、数字和下划线序列构成,或者只有一个下划线。
只有一个下划线的变量称为无名变量。
3.算术表达式TurboProlog提供了五种最基本的算术运算:
加、减、乘、除和取模,相应运算符号为+、-、*、/、mod.这五种运算的顺序为:
*、/、mod为同一级,+、-为同一级,前者优先于后者。
同级从左到右按顺序运算,括号优先。
算术表达式的形式与数学中的形式基本一样。
例如:
X+Y*ZA*B-C/DUmodV4.关系表达式TurboProlog提供了六种常用的关系运算:
,=,TurboProlog的关系表达式例:
X+1=YXY而如果按TurboProlog形式来表示,则上面的两个例子为:
=(X+1,Y)和(X,Y)例如:
p(X,Y,Z):
-Z=X+Y当变量XYZ全部被实例化时,“=“就是比较符。
对于问题4.关系表达式goalp(3,5,8).机器回答:
yes而对于goalp(3,5,7).机器回答:
no但当X,Y被实例化,而Z未被实例化时,“=”就是约束符。
goalp(3,5,Z).机器回答:
Z=8这时,机器使Z实例化为X+Y的结果。
5.输入与输出
(1)readln(X)
(2)readint(X)(3)readreal(X)(4)readchar(X)5.输入与输出(5)write(X1,X2,.Xn)例如:
write(computer,PROLOG,Y,1992)(6)nl换行谓词write(name),nl,write(age)与write(anme,n,age)的效果完全一样。
6.表处理与递归表是Prolog中一种非常有用的数据结构。
表的表述能力很强,数字中的序列、集合,通常语言中的数组、记录等均可用表来表示。
表还有一个重要特点,就是它可以分为头和尾两部分。
表头是表中的第一个元素,而表尾是表中的除第一个元素外的其余元素按原来顺序组成的表。
6.表处理与递归6.表处理与递归7.回溯控制1)若将“!
”插在子句体内作为一个子目标,它总是立即成功;2)若“!
”位于子句体的最后,则它就阻止它所在子句的头谓词的所有子句的回溯访问,而让回溯跳过该头谓词,去访问前一个子目标:
3)若“!
”位于其他位置,则当其后发生回溯且回溯到“!
”处时,就在此处失败,并且“!
”还使它所在的子句的头谓词整个失败,即迫使系统直接回溯到该头谓词的前一个子目标。
7.回溯控制对于例1目标:
r(Y).可有一个解Y=b对于例2目标:
r(Y).却无解。
7.回溯控制【例4-3】abcde有向图Predicatesroad(symbol,synbol)path(symbol,symbol)Clausesroad(a,b).road(a,c).road(b,d).road(c,d).road(d,e).road(b,e).path(X,Y):
-raod(X,Y).path(X,Y):
-road(X,Z),path(Z,Y).7.回溯控制例如当给出目标:
path(a,c).系统将回答:
yes。
但当给目标:
path(e,a).时,系统则回答:
no如果给出目标:
run.且在程序中增加子句:
run:
-path(a,X),write(“X=”,X),nl,fail.run.运行结果:
X=bX=cX=dX=eX=dX=eX=e7.回溯控制【例4-4】求阶乘程序,程序中使用了递归。
/*求阶乘程序*/domainsn,f=integerpredicatesfactorial(n,f)goalreadint(I),factorial(I,F),write(I,”!
=”,F).clausesfactorial(1,1).factorial(N,Res):
-N0,N1=N-1,factorial(N1,FacN1),Res=N*FacN1.程序运行时,从键盘上输入一个整数,屏幕上将显示其阶乘数。
7.回溯控制【例4-5】输出1到10的整数,程序中使用了递归。
predicatescount(integer).clausescount(11):
-write(Thatsallfolks!
),!
.count(Number):
-write(Number),nl,NextNumber=Number+1,count(Nextnumber).goalcount
(1).7.回溯控制本例中,由于程序的目标是count
(1),所以程序开始运行时用count
(1)调用这个谓词,它会先写出1,接着加1得到2,然后它用count
(2)调用自己,写出2,又加1得到3,直到调用count(11),会与规则count(11):
-write(Thatsallfolks!
),!
.匹配成功,由于截断的作用,回溯停止,程序运行结束。
4.6.6VisualProlog介绍工程内容设置窗口工程树生成代码后的工程树创建counter类4.6.7PIE:
Prolog的推理机PIE是VisualProlog中的一个例子,在使用之前需要安装它。
如果还没有安装,请按下面的步骤进行安装:
1在Windows的开始菜单中选择安装(StartVisualProlog7.2SetupExamples)。
2启动VisualProlog。
3可以在安装的Examples文件夹中找到PIE工程,在IDE中打开这个工程并编译后产生pie.exe文件。
找到pie.exe文件执双击执行,打开如图4-8所示的推理机界面。
PIE(Prolog推理机)界面新建文件后的PIE