1、2018/11/25,1,Part I 人工智能语言 Part II 专家系统,2018/11/25,2,Part I 人工智能语言,由于人工智能研究的问题的特点和解决问题的方法的特殊性,为了能方便而有效地建立人工智能系统,需要发展专门的人工智能语言。,2018/11/25,3,人工智能语言,一般来说,人工智能语言应具备如下特点: 要有符号处理能力(即非数值处理能力); 适合于结构化程序设计,编程容易;要有递归功能和回溯功能; 要有人机交互能力; 适合于推理; 要有把过程与说明式数据结构混合起来的能力,又要有辨别数据、确定控制的模式匹配机制。,2018/11/25,4,人工智能语言,在人工智能
2、手册中介绍了七种人工智能语言:LISP,PLANNER,CINNIVER,QLISP,POP2,SAIL,FUZZY。近百种人工智能语言中,只有LISP和后起之秀Prolog是人工智能研究和应用中占重要地位的两种人工智能程序设计语言。虽然国内外对这两种AI语言曾有争议,褒贬不一,但LISP和PROLOG的重要性是都不可否认的。,2018/11/25,5,人工智能语言,函数型语言LISP和逻辑型语言PROLOG都适合作符号处理,都适合于结构化程序设计(LISP提供了函数定义,prolog提供了谓词定义),都具有递归功能(prolog还具有自动回溯功能),都具有人机交互能力(prolog还特别适合
3、于推理),也都具有把过程与说明式数据结构混合起来的能力以及辨别数据、确定控制的模式匹配机制(LISP将程序与数据均表示为表,因此可以把程序作为数据处理,也可将数据当作程序来执行。Prolog用一致的数据结构“项(term)”来构造数据和程序,事实、规则和询问的表现形式都为Horn子句,执行时作统一的操作匹配。LISP的匹配函数、prolog的合一运算自动匹配、自动搜索都具有很强的模式匹配机制。)因此可以说LISP和prolog是两种较为典型的人工智能语言。,2018/11/25,6,人工智能语言,谈到LISP和PROLOG两种AI语言的重要性,我们还可以从美国AI界的权威学者、麻省理工学院教授
4、P.H.Winston(温斯顿)所说的一段话来体会。,2018/11/25,7,人工智能语言,概括地说,计算机语言的发展正是一个从HOW型低级语言向WHAT型高级语言进化的过程.在HOW型语言中,程序编制者必须详细说明运算是怎样(HOW)一步一步进行的;而在WHAT型语言中,程序编制者只需简单说明要做的事情是什么(WHAT) 。 现代的LISP语言是这些语言的佼佼者,因为采用Common Lisp格式的Lisp具有非凡的表现力,但是如何做某件事情仍然是有待于Lisp程序编制者来表达的东西.相反,Prolog是一种明显地冲破了HOW型语言陈规的语言, 它鼓励程序编制者去描述情况和问题,而不是那些
5、用来解决问题的详细步骤。”,2018/11/25,8,LISP语言,1、BackGround1959年,麦卡锡基于阿隆索.邱奇(Alonzo Church)的-演算和西蒙、纽厄尔首创的“表结构“,开发了著名的LISP语言(LISt Processing language or LISt Processor),成为人工智能界第一个最广泛流行的语言。,2018/11/25,9,LISP语言,2、LISP语言的特点a、计算用的是符号表达式而不是数; b、具有表处理能力,即用链表形式表示所有的数据; c、控制结构基于函数的复合,以形成更复杂的函数; d、用递归作为描述问题和过程的方法; e、用LISP
6、语言书写的EVAL函数既可作为LISP语言的解 释程序,又可以作为语言本身的形式定义; f、程序本身也同所有其他数据一样用表结构形式表示。,2018/11/25,10,LISP语言,2、LISP的符号表达式符号:以字母开头不含规定的特殊字符的字符串,相当于其他语言中的变量。原子:LISP中不可再分割的对象,如数、符号、空表。表:若干个数或符号用括号括起来就构成一个表,表中的元素用空格分开,没有元素的表称为空表,用( )或者nil表示。符号表达式:原子和表的统称。,2018/11/25,11,LISP语言,LISP的符号表达式采用前缀表示形式,即表中第一个元素是函数符号名,其余的元素是这个函数要
7、求的运算或处理的元素。例如:(setq y (* 2 3 4 ) ),2018/11/25,12,LISP语言,3、LISP语言的基本函数 (1)数值运算函数 (2)求值与赋值函数 (3)表处理函数 (4)逻辑函数 (5)条件函数 (6)自定义函数与无名函数,2018/11/25,13,LISP语言,(1)数值运算函数 a、算术运算函数:+ - * / 1+ 1- 等(setq a 10)(/ a 2 2) b、超越函数:exp expt log sqrt abs signum c、数的逻辑运算函数:logior logxor logand lognot (lognot 12) ?,2018/
8、11/25,14,LISP语言,2018/11/25,15,LISP语言,(2)求值与赋值函数 a、禁止求值函数 quote (quote (a b c)(setq x (a b c)(setq x (a b c) b、赋值函数 setq c、求值函数(values (* 2 3) (+ 4 5) ),2018/11/25,16,LISP语言,2018/11/25,17,LISP语言,(3)表处理函数:LISP的基本数据结构是表,LISP语言最擅长的也是表。 a、取表部分内容的函数car函数:取表的第一个元素(car (a b c) acdr函数:取表中去除第一个元素的余下表(cdr (a b
9、 c) (b c)car和cdr的连续作用(car (cdr (cdr (cdr (a b c d e f ) 可表示为 (cadddr (a b c d e f ),Max=4,2018/11/25,18,LISP语言,2018/11/25,19,LISP语言,b、构造表的函数,2018/11/25,20,LISP语言,c、其他表函数,2018/11/25,21,LISP语言,4、逻辑函数:只能返回真t或假nil数据类型判断函数,2018/11/25,22,LISP语言,数的比较函数 = = = /= 等值函数 equal(equal ( ) nil ) t(equal (a b c) (a
10、 b d) nil 逻辑运算函数and or not,2018/11/25,23,LISP语言,5、条件函数 if 函数(if test then else) 返回:else or nilwhen函数:(when test form* ) unless函数(unless test form* ),2018/11/25,24,LISP语言,condition函数,2018/11/25,25,LISP语言,6、自定义函数与无名函数 自定义函数,2018/11/25,26,LISP语言,6、自定义函数与无名函数 无名函数,2018/11/25,27,LISP语言,7、迭代与递归,2018/11/25
11、,28,LISP语言,do函数,2018/11/25,29,LISP语言,do函数,2018/11/25,30,LISP语言,(2)非结构化迭代,2018/11/25,31,LISP语言,2018/11/25,32,Prolog,Prolog语言最早是由法国马赛大学的Colmerauer和他的研究小组于1972年研制成功。 Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。 尽管Prolog语言有许多版本,但它们的核心部分都是一样的。Prolog的基本语
12、句仅有三种,即事实、规则和目标三种类型的语句,且都用谓词表示,因而程序逻辑性强,文法简捷,清晰易懂。另一方面,Prolog是陈述性语言,一旦给它提交必要的事实和规则之后,Prolog就使用内部的演绎推理机制自动求解程序给定的目标,而不需要在程序中列出详细的求解步骤。,2018/11/25,33,Prolog,Prolog语言接近于自然语言,文法简捷,逻辑性强,易写易读,便于学习和使用,易于正确性证明,具有一阶逻辑的推理能力,因而被应用于人工智能多个研究领域中。 Prolog语言具有下面的特点: (1)在Prolog程序中,仅含有事实、规则及询问语句,强调的是它们之间的逻辑关系,不要求给出求解问
13、题的步骤,因而Prolog被看作是一种描述性的语言。 (2)Prolog语言具有自动实现搜索、模型匹配及回溯的功能,从而实现了自动逻辑推理。 (3)Prolog的数据和程序结构统一。 (4)递归是Prolog的一个重要特征,它反映在程序及数据结构中。由于这一特征,使得Prolog可把一个大的数据结构作为一个小的程序处理。,2018/11/25,34,Prolog,、事实 事实用来说明一个问题中已知的对象和它们之间的关系。在Prolog程序中,事实由谓词名及用括号括起来的一个或几个对象组成。谓词和对象可由用户自己定义。 例如,谓词likes(bill,book). 是一个名为like的关系,表示
14、对象bill和book之间有喜欢的关系。,2018/11/25,35,Prolog,、规则 规则由几个互相有依赖性的简单句(谓词)组成,用来描述事实之间的依赖关系。从形式上看,规则由左边表示结论的后件谓词和右边表示条件的前提谓词组成。 例如,规则 bird(X):-animal(X),has(X,feather). 表示凡是动物并且有羽毛,那么它就是鸟。,2018/11/25,36,Prolog,、目标(问题) 把事实和规则写进Prolog程序中后,就可以向Prolog询问有关问题的答案,询问的问题就是程序运行的目标。目标的结构与事实或规则相同,可以是一个简单的谓词,也可以是多个谓词的组合。目
15、标分内、外两种,内部目标写在程序中,外部目标在程序运行时由用户手工键入。 例如问题 ?-student(john). 表示“john是学生吗?”,2018/11/25,37,Prolog,Prolog程序的简单例子 例1 谁是john的朋友? predicates /*谓词段,对要用的谓词名和参数进行说明*/ likes(symbol, symbol) friend(symbol, symbol) clauses /*子句段,存放所有的事实和规则*/ likes(bell,sports). /*前4行是事实*/ likes(mary,music). likes(mary,sports). li
16、kes(jane,smith). friend(john,X):-likes(X,sports),likes(X,music). /*本行是规则*/ 当上述事实与规则输入计算机后,运行该程序,用户就可以进行询问,如输入目标: friend(john,X) 即询问john的朋友是谁,这时计算机的运行结果为: X=mary (mary是john的朋友) 1 Solution (得到了一个结果),2018/11/25,38,Prolog,例2 汉诺塔问题: 该问题可以采用递归法思想来求解,其源程序为: predicates /*谓词段*/ hanoi(integer) move(integer,sy
17、mbol,symbol,symbol) inform(symbol,symbol). clauses /*子句段*/ hanoi(N):-move(N,a,b,c). move(1,A,_,C):-inform(A,C),!. move(N,A,B,C):-N1=N-1,move(N1,A,C,B), inform(A,C),move(N1,B,A,C). inform(Loc1,Loc2):-nl,write(“移动1个盘子从柱“ ,Loc1,“到柱“,Loc2). goal /*目标段,问移动3个盘子的方法*/ hanoi(3).,2018/11/25,39,Prolog,Prolog语言
18、最早是由法国马赛大学的Colmerauer和他的研究小组于1972年研制成功。早期的Prolog版本都是解释型的,自1986年美国Borland公司推出编译型Prolog,即Turbo Prolog以后,Prolog便很快在PC机上流行起来。后来又经历了PDC PROLOG、Visual Prolog不同版本的发展。并行的逻辑语言也于80年代初开始研制,其中比较著名的有PARLOG、Concurrent PROLOG等。,2018/11/25,40,Prolog,1、Turbo Prolog 由美国Prolog开发中心(Prolog Development Center, PDC)1986年开
19、发成功、Borland公司对外发行,其1.0,2.0,2.1版本取名为Turbo Prolog,主要在IBM PC系列计算机,MS-DOS环境下运行。,2018/11/25,41,Prolog,2、PDC Prolog 1990年后,PDC推出新的版本,更名为PDC Prolog 3.0,3.2,它把运行环境扩展到OS/2操作系统,并且向全世界发行。 速度快。编译及运行速度都很快,产生的代码非常紧凑。 用户可以用它研究Prolog的内部机制,并创建自己的专用编程语言、推理机、专家系统外壳或程序接口。 提供了与其他语言(如C、Pascal、Fortran等)的接口。,2018/11/25,42,
20、Prolog,3、Visual Prolog Visual Prolog是基于Prolog语言的可视化集成开发环境,是PDC推出的基于Windows环境的智能化编程工具。目前,Visual Prolog在美国、西欧、日本、加拿大、澳大利亚等国家和地区十分流行,是国际上研究和开发智能化应用的主流工具之一。,2018/11/25,43,PartII 专家系统,1、定义专家系统(ES, Expert System)是一种模拟人类专家解决领域问题的计算机程序系统。,2018/11/25,44,专家系统,2、专家系统的类型 1)解释型 6)预测型 2)诊断型 7)规划型 3)调试型 8)设计型 4)维修
21、型 9)监测型 5)教育型 10)控制型,2018/11/25,45,专家系统,3、专家系统的一般特点(1)知识的汇集 (2)启发性推理 (3)推理和解释的透明性(how&why) (4)知识的更新,2018/11/25,46,专家系统,4、专家系统的结构,人机接口,解释器,知识库,推理机,全局数据库,2018/11/25,47,4、建造专家系统的步骤 (1)认识阶段 (2)概念化阶段 (3)形式化阶段 (4)实现阶段 (5)测试阶段,2018/11/25,48,认 识,测 试,概念化,形式化,实现,专家系统开发过程的瀑布模型,2018/11/25,49,专家系统实例,动物识别系统 这是一个用
22、以识别虎、金钱豹等七种动物的小型专家系统。系统结构1、主控模块2、创建知识库模块3、建立数据库模块4、推理机5、解释机构,2018/11/25,50,创建知识库模块用于知识获取,建立知识库,并且把各条知识用链连接起来,形成“知识库规则链表”。此外,它还对包含最终结论的规则进行检测,做上标志。建立数据库模块用于把用户提供的已知事实以及推理中推出的新事实放入数据库中,并分别形成“已知事实链表”和“结论事实链表”。,专家系统实例,2018/11/25,51,专家系统实例,推理机:用于实现推理,推理中凡是被选中参加推理的规则形成“已使用规则链表”。解释机构:用于回答用户的问题,它将根据“已使用规则链表
23、”进行解释。推理过程:采用正向推理和反向推理。,2018/11/25,52,知识库与推理机,领域专家解决领域问题的能力主要体现在两个方面: 1、专家拥有大量的知识。 2、专家具有选择知识来解决问题的能力。知识库是专家系统中必不可少的组成部分,是基于知识的推理的基础和核心,2018/11/25,53,知识库与推理机,1、产生式规则与规则库的存储 产生式规则的存储结构一条产生式规则的前件或后件可能是有限个事实或结论的合取式的析取。 例如:规则R为:(F1F2 F3)(F4 F5) H1 H2,2018/11/25,54,知识库与推理机,规则R等价变换为: R11: F1F2 F3 H1 R12:
24、F4 F5 H1 R21: F1F2 F3 H2 R22: F4 F5 H2 a.允许有前件不同但后件相同的规则。 b.后件相同时,它们的前件没有包含关系。,2018/11/25,55,知识库与推理机,可以用一个与/或图表示产生式的规则的事实和结论之间的与或关系。,F1,F5,F4,F2,F3,H2,H1,2018/11/25,56,知识库与推理机,产生式规则与传统程序设计语言中的条件语言的区别: 1、自含性a.产生式规则仅仅描述了规则前件与后件的静态关系。b.一条产生式规则不能直接调用另一条规则。 2、非顺序传递,2018/11/25,57,知识库与推理机,LISP中产生式规则的存储形式:表
25、(规则名(if (条件1) (条件2) (条件n) )(then (结论1) (结论2) (结论m) ) ),2018/11/25,58,知识库与推理机,2、规则库的存储结构:分层结构的表若规则库有N条规则,则规则库表就有N个顶层元素,每个顶层元素是一个规则子表,每个规则子表有3个元素,分别是规则名,规则前件和规则后件。,2018/11/25,59,知识库与推理机,规则库的例子,2018/11/25,60,知识库与推理机,2018/11/25,61,知识库与推理机,动物识别专家系统规则库与/或图,2018/11/25,62,知识库与推理机,3、推理机及其实现a.正向推理b.反向推理,2018/
26、11/25,63,知识库与推理机,正向推理过程:根据在综合数据库中给出的已知事实,正向使用规则,即把规则的前件同当前数据库的内容进行匹配来选取可用规则,若多条规则可用,则按冲突消解策略从中选择一条规则执行,将执行规则的结论添加到综合数据库中,直至问题求解或没有可用规则。,2018/11/25,64,知识库与推理机,2018/11/25,65,知识库与推理机,反向推理过程:根据在综合数据库中给出的假设,反向使用规则,即把规则的后件同当前数据库的内容进行匹配来选取可用规则,若有多条规则可用,则按冲突消解策略从中选择一条规则,将该规则的前件添加到综合数据库中,直至问题求解或没有可用规则。,2018/
27、11/25,66,知识库与推理机,2018/11/25,67,知识库与推理机,正向推理机用LISP语言编制的产生式系统中的综合数据库的存储结构也是一个表,我们用facts作为综合数据库表的名称。我们首先给出正向推理机需要调用的几个函数的定义,最后给出实现的正向推理机,2018/11/25,68,知识库与推理机,2018/11/25,69,知识库与推理机,2018/11/25,70,知识库与推理机,2018/11/25,71,知识库与推理机,2018/11/25,72,知识库与推理机,2018/11/25,73,知识库与推理机,2018/11/25,74,知识库与推理机,2018/11/25,7
28、5,知识库与推理机,2018/11/25,76,知识库与推理机,反向推理机,2018/11/25,77,知识库与推理机,Try-rule和Try-rule+的对比,2018/11/25,78,知识库与推理机,2018/11/25,79,知识库与推理机,2018/11/25,80,知识库与推理机,2018/11/25,81,一、知识库与推理机,2018/11/25,82,一、知识库与推理机,2018/11/25,83,一、知识库与推理机,2018/11/25,84,一、知识库与推理机,2018/11/25,85,一、知识库与推理机,2018/11/25,86,解释机制与解释器,1、解释的方法:
29、预置文本与路径跟踪法把问题的解释预先用自然语言或其他易于理解的形式写好,插入程序段或相应的数据库中。,2018/11/25,87,解释机制与解释器,策略解释法策略解释法向用户解释的是与问题求解策略有关的策略和方法,从策略的抽象表示及其策略使用过程中产生关于问题求解的策略解释。如NEOMYCIN,它使用元规则表示策略知识,并与领域知识分离。,2018/11/25,88,解释机制与解释器, 自动程序员方法在设计专家系统中,对领域知识进行描述的同时,把自动程序员程序模块嵌入其中,通过自动程序员把描述性领域知识转化成可执行的程序,并产生有关程序行为的合理性说明,从而向用户提供一个非常有力的解释机制。,
30、2018/11/25,89,解释机制与解释器, 自动程序员方法,2018/11/25,90,解释机制与解释器,解释型专家系统 1985年,Neches等人在XPLAIN系统的研究基础上,提出了一种新的专家系统设计模式,即解释型专家系统(Explanable Expert System)。其基本思想是把专家系统的设计与解释机智的设计进行全盘考虑,从而能给出更合理的解释方案。,2018/11/25,91,解释机制与解释器,解释型专家系统,2018/11/25,92,解释机制与解释器,2、解释器及其实现我们给出一个基于LISP语言实现的产生式系统的一个解释器,这个解释器的解释机制采用路径跟踪方法,可
31、向用户提供Why解释和How解释。而路径跟踪法需要把推理过程中使用过的规则自动记录下来,才能向用户提供解释。所以我们需要重新定义推理机中的有关函数。,2018/11/25,93,解释机制与解释器,2018/11/25,94,解释机制与解释器,2018/11/25,95,解释机制与解释器,2018/11/25,96,解释机制与解释器,How解释,2018/11/25,97,解释机制与解释器,Why解释,2018/11/25,98,专家系统工具,1、概述80年代以来,专家系统工具不断涌现。EMYCIN:PUFF, SACON, CLOT, HEAMED, DART, BLUEBOX, OPS:R1
32、,2018/11/25,99,专家系统工具,2、专家系统工具分类专家系统工具按其功能主要分为两类,一类是用于生成专家系统的工具,称为生成工具;另一类用于改善专家系统性能的工具,称为辅助工具。(1)系统生成工具系统生成工具主要帮助知识工程师构造专家系统中的推理机和知识库结构。,2018/11/25,100,专家系统工具, 程序设计语言LISP PROLOG C PASCAL 骨架系统EMYCIN MYCIN 知识工程语言OPS: Official Production SystemKEE: Knowledge Engineering EnvironmentROSIE: Rule-Oriented
33、 System for Implementing ExpertiseCLIPS: C Language Integrated Production SystemART: Automatic Reasoning Tool,2018/11/25,101,专家系统工具, 专家系统开发环境专家系统开发环境是以一种或多种工具和方法为核心,加上与之配套的各种辅助工具和界面环境的完整的集成系统。目前,有些知识工程语言系统已经发展成这样的集成系统,集成系统中有一组预先定义的称为组件的程序模块,每个组件实现一种人工智能技术。如美国Inference公司于1993年推出的ART*Enterprise。,2018/
34、11/25,102,分布式专家系统,分布式专家系统DES ( Distributed Expert System)是具有分布处理特征的专家系统。它是把一个大规模的专家系统的功能分解为若干个任务程序分配到多个处理机上并行工作,以缩短专家系统问题求解的时间。,2018/11/25,103,分布式专家系统,为了设计和实现一个分布式专家系统,主要需要考虑以下的问题。 1、功能分布和知识分布功能分布:注意粒度R/C知识分布:注意冗余,2018/11/25,104,分布式专家系统,2、驱动方式系统中各任务模块以什么方式来驱动是分布式专家系统设计中需要研究的一个问题。常见的驱动方式有以下几种: (1)控制驱
35、动根据问题求解过程的需要,当需要某个任务模块工作时,就直接将控制转到它,或将它作为一个过程直接调用它,使它立即工作。,2018/11/25,105,分布式专家系统,(2) 数据驱动任何一个任务模块只要当它所需的所有输入数据已经具备后即可自行启动工作,然后,把输出结果送到各自应该送去的模块。各模块可以并行处理,提高推理效率。,2018/11/25,106,分布式专家系统,(3) 要求驱动要求驱动也称为目标驱动,当一个任务模块的输出被其他任务模块需要时才被启动执行。要求驱动是一种自顶向下的驱动方式,从最顶层的目标开始,为了驱动一个目标工作可能先驱动若干个子目标,为了驱动各个子目标,可能又要分别驱动
36、一些子子目标,如此层层驱动下去。,2018/11/25,107,分布式专家系统,(4) 事件驱动所谓事件驱动方式是当且仅当模块的相应事件集合中的所有事件都已发生,才能驱动该模块开始工作。由于可以把一个模块的输入数据齐备和该模块的输出被其他模块需要都定义为这个模块的事件,因此,事件驱动是把数据驱动和要求驱动均包含在内的一种更广义的驱动方式。,2018/11/25,108,协同式专家系统,一个专家系统是应用于某个专业领域对某一类问题求解,因此,单个专家系统的应用有较大的局限性。协同式专家系统CES (Cooperative Expert System)是能综合若干个相近领域或一个领域的多个方面的分
37、专家系统,互相协作共同解决一个更广领域中的问题的专家系统。它也被称为“群专家系统”,2018/11/25,109,协同式专家系统,协同式专家系统更强调的是各分专家系统之间的协同合作,而不是更看重处理的分布和知识的分布。协同式专家系统旨在研究分散的、松偶合的一组知识处理实体协同进行问题求解的方法。这种知识实体称为智能体(Agent),2018/11/25,110,协同式专家系统,为了设计和实现一个协同式专家系统,主要需要考虑以下问题。 1、协同方法 (1)多智能体规划(Multi-agents Planning) (2)功能化有效协同(Functionally Effective Coopera
38、tive Approach) (3)谈判方法(Negotiation),2018/11/25,111,协同式专家系统,2、知识的组织与分布知识可以分为静态知识和动态知识两种。静态知识是指系统开始运行时加载到各智能体中的知识;动态知识是指在问题求解过程中在智能体之间进行传送的知识。静态知识是各智能体的个性知识,动态知识是支持多智能体协同工作所需要的知识。,2018/11/25,112,协同式专家系统,3、裁决方法 (1) 是非问题裁决a、表决法b、加权平均法 (2) 评分问题的裁决方法a、加权平均法b、取中数法,2018/11/25,113,协同式专家系统,(3) 互补问题的裁决方法若多个智能体的任务是互补的,即各自解决求解问题的一个部分,那么,多个局部解的综合就是全局解。,2018/11/25,114,协同式专家系统,4、系统结构 (1) 主从式 (2) 层次式 (3) 同僚式 (4) 广播式 (5) 网络式,2018/11/25,115,协同式专家系统,5、契约网/合同网模型,