《基于产生式规则的机器.ppt》由会员分享,可在线阅读,更多相关《基于产生式规则的机器.ppt(56页珍藏版)》请在三一办公上搜索。
1、第 6 章 基于产生式规则的机器推理,6.1 产生式规则 6.2 产生式系统习题六,6.1 产 生 式 规 则,6.1.1 产生式规则 产生式(Production)一词,首先是由美国数学家波斯特(E.Post)提出来的。波斯特根据替换规则提出了一种称为波斯特机的计算模型,模型中的每一条规则当时被称为一个产生式。后来,这一术语几经修改扩充,被用到许多领域。例如,形式语言中的文法规则就称为产生式。产生式也称为产生式规则,或简称规则。,产生式的一般形式为,前件后件,其中,前件就是前提,后件是结论或动作,前件和后件可以是由逻辑运算符AND、OR、NOT组成的表达式。产生式规则的语义是:如果前提满足,
2、则可得结论或者执行相应的动作,即后件由前件来触发。所以,前件是规则的执行条件,后件是规则体。,例如,下面就是几个产生式规则:(1)如果银行存款利率下调,那么股票价格上涨。(2)如果炉温超过上限,则立即关闭风门。(3)如果键盘突然失灵,且屏幕上出现怪字符,则是病毒发作。(4)如果胶卷感光度为200,光线条件为晴天,目标距离不超过5米,则快门速度取250,光圈大小取f16。,可以看出,产生式与逻辑蕴含式非常相似。是的,逻辑蕴含式就是产生式,但它只是一种产生式。除逻辑蕴含式外,产生式还包括各种操作、规则、变换、算子、函数等等。比如上例中的(2)是一个产生式,但并不是一个逻辑蕴含式。概括来讲,产生式描
3、述了事物之间的一种对应关系(包括因果关系和蕴含关系),其外延十分广泛。例如,图搜索中的状态转换规则和问题变换规则就都是产生式规则。另外还有程序设计语言的文法规则、逻辑中的逻辑蕴含式和等价式、数学中的微分和积分公式、化学中分子结构式的分解变换规则等等,也都是产生式规则;甚至体育比赛中的规则、国家的法律条文、单位的规章制度等等,也都可以表示成产生式规则。,基于产生式规则的推理模式 由产生式的涵义可知,利用产生式规则可以实现有前提条件的指令性操作,也可以实现逻辑推理。实现操作的方法是当测试到一条规则的前提条件满足时,就执行其后部的动作。这称为规则被触发或点燃。利用产生式规则实现逻辑推理的方法是当有事
4、实能与某规则的前提匹配(即规则的前提成立)时,就得到该规则后部的结论(即结论也成立)。,实际上,这种基于产生式规则的逻辑推理模式,就是逻辑上所说的假言推理(对常量规则而言)和三段论推理(对变量规则而言),即:,这里的大前提就是一个产生式规则,小前提就是证据事实。其实,我们也可以把上面的有前提条件的操作和逻辑推理统称为推理。那么,上面的式子也就是基于产生式规则的一般推理模式。这就是说,产生式系统中的推理是更广义的推理。,6.2 产 生 式 系 统,6.2.1系统结构产生式系统由三部分组成:产生式规则库、推理机和动态数据库,其结构如图61所示。产生式规则库亦称产生式规则集,由领域规则组成,在机器中
5、以某种动态数据结构进行组织。一个产生式规则集中的规则,按其逻辑关系,一般可形成一个称为推理网络的结构图。推理机亦称控制执行机构,它是一个程序模块,负责产生式规则的前提条件测试或匹配,规则的调度与选取,规则体的解释和执行。即推理机实施推理,并对推理进行控制,它也就是规则的解释程序。,图 6-1 产生式系统的结构,6.2.2运行过程 产生式系统运行时,除了需要规则库以外,还需要有初始事实(或数据)和目标条件。目标条件是系统正常结束的条件,也是系统的求解目标。产生式系统启动后,推理机就开始推理,按所给的目标进行问题求解。推理机的一次推理过程可如图 6-2所示。,图 6-2 推理机的一次推理过程,一个
6、实际的产生式系统,其目标条件一般不会只经一步推理就可满足,往往要经过多步推理才能满足或者证明问题无解。所以,产生式系统的运行过程,就是推理机不断运用规则库中的规则,作用于动态数据库,不断进行推理并不断检测目标条件是否满足的过程。当推理到某一步,目标条件被满足,则推理成功,于是系统运行结束;或者再无规则可用,但目标条件仍未满足,则推理失败,当然系统也运行结束。,由上所述,产生式系统的运行过程也就是从初始事实出发,寻求到达目标条件的通路的过程。所以,产生式系统的运行过程也是一个搜索的过程。但一般把产生式系统的整个运行过程也称为推理。那么,一个产生式系统启动后,从哪儿开始推理?下面我们就回答这个问题
7、。,6.2.3控制策略与常用算法 产生式系统的推理可分为正向推理和反向推理两种基本方式。简单来讲,正向推理就是从初始事实数据出发,正向使用规则进行推理(即用规则前提与动态数据库中的事实匹配,或用动态数据库中的数据测试规则的前提条件,然后产生结论或执行动作),朝目标方向前进;反向推理就是从目标出发,反向使用规则进行推理(即用规则结论与目标匹配,又产生新的目标,然后对新目标再作同样的处理),朝初始事实或数据方向前进。下面我们给出产生式系统正向推理和反向推理的常用算法:,1.正向推理 正向推理算法一:步1 将初始事实/数据置入动态数据库。步2 用动态数据库中的事实/数据,匹配/测试目标条件,若目标条
8、件满足,则推理成功,结束。步3 用规则库中各规则的前提匹配动态数据库中的事实/数据,将匹配成功的规则组成待用规则集。步4 若待用规则集为空,则运行失败,退出。步5 将待用规则集中各规则的结论加入动态数据库,或者执行其动作,转步2。,可以看出,随着推理的进行,动态数据库的内容或者状态在不断变化。如果我们把动态数据库的每一个状态作为一个节点的话,则上述推理过程也就是一个从初始状态(初始事实/数据)到目标状态(目标条件)的状态图搜索过程。如果我们把动态数据库中每一个事实/数据作为一个节点的话,则上述推理过程就是一个“反向”(即自底向上)与或树搜索过程。,图 6-3 正向推理的动态数据库,例6.1动物
9、分类问题的产生式系统描述及其求解。设由下列动物识别规则组成一个规则库,推理机采用上述正向推理算法,建立一个产生式系统。该产生式系统就是一个小型动物分类知识库系统。规则集:r1:若某动物有奶,则它是哺乳动物。r2:若某动物有毛发,则它是哺乳动物。r3:若某动物有羽毛,则它是鸟。r4:若某动物会飞且生蛋,则它是鸟。,r5:若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。r6:若某动物是哺乳动物且吃肉,则它是食肉动物。r7:若某动物是哺乳动物且有蹄,则它是有蹄动物。r8:若某动物是有蹄动物且反刍食物,则它是偶蹄动物。r9:若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。r10:若某动
10、物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。,r11:若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。r12:若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。r13:若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。r14:若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。r15:若某动物是鸟且善飞且不怕风浪,则它是海燕。,图 6-4 规则集形成的部分推理网络,再给出初始事实:f1:某动物有毛发。f2:吃肉。f3:黄褐色。f4:有黑色条纹。目标条件为:该动物是什么?易见,该系统的运行结果为:该动物是老虎。其推理树如图 6-5所示。,图 6-5 关于“老虎”的正向推
11、理树,2.反向推理反向推理算法:步1 将初始事实/数据置入动态数据库,将目标条件置入目标链。步2 若目标链为空,则推理成功,结束。步3 取出目标链中第一个目标,用动态数据库中的事实/数据同其匹配,若匹配成功,转步2。,步4 用规则集中的各规则的结论同该目标匹配,若匹配成功,则将第一个匹配成功且未用过的规则的前提作为新的目标,并取代原来的父目标而加入目标链,转步3。步5 若该目标是初始目标,则推理失败,退出。步6 将该目标的父目标移回目标链,取代该目标及其兄弟目标,转步3。,例6.2对于例6.1中的产生式系统,改为反向推理算法,则得到图 6-6所示的推理树。,图 6-6 关于“老虎”的反向推理树
12、,可以看出,与正向推理不同,这次的推理树是从上而下扩展而成的,而且推理过程中还发生过回溯。反向推理也称为后向推理、反向链、目标驱动的推理等。从上面的两个算法可以看出,正向推理是自底向上的综合过程,而反向推理则是自顶向下的分析过程。除了正向推理和反向推理外,产生式系统还可进行双向推理。双向推理就是同时从初始数据和目标条件出发进行推理,如果在中间某处相遇,则推理搜索成功。,3.冲突消解策略 上述正向推理算法中,对所有匹配成功的规则都同时触发启用。所以,它实现的搜索是穷举式的树式盲目搜索。下面我们给出一个正向推理的启发式线式搜索算法。正向推理算法二:步1 将初始事实/数据置入动态数据库。步2 用动态
13、数据库中的事实/数据,匹配/测试目标条件,若目标条件满足,则推理成功,结束。,步3 用规则库中各规则的前提匹配动态数据库中的事实/数据,将匹配成功的规则组成待用规则集。步4 若待用规则集为空,则运行失败,退出。步5 用某种策略,从待用规则集中选取一条规则,将其结论加入动态数据库,或者执行其动作,撤消待用规则集,转步2。,可以看出,该算法与前面的算法仅在步5有所差别。但它已是不可回溯的线式搜索了。该算法的启发性表现在“用某种策略,从待用规则集中选取一条规则”。这种选取策略,也称为“冲突消解”策略。因为这时可用规则集中的规则都可触发执行,但只取其中之一,因而就产生了冲突或竞争。所以,冲突消解策略对
14、正向推理有重要意义。常用的冲突消解策略有:优先级法(优先级高者优先)、可信度法(可信度高者优先)、代价法(代价低者优先)及自然顺序法等。当然,要使用优先级法、可信度法、代价法等策略时,须事先给规则设定相关的参数,即优先级、可信度、代价等。,可以看出,上述的两个推理算法的“启发”性就体现在冲突消解策略中。如果再采用优先级、可信度、代价等冲突消解策略,则就是启发式搜索;但如果采用自然顺序法,则就是一种盲目碰撞搜索。产生式系统的推理方式、搜索策略及冲突消解策略等,一般统称为推理控制策略,或简称控制策略。一个产生式系统的控制策略就体现在推理机的算法描述中。,6.2.4程序实现1.产生式规则的程序语言实
15、现 上面我们对产生式的讨论,只是用自然语言进行描述并仅在概念层次上进行阐述,而并未涉及它的具体结构和程序语言实现问题。现在讨论产生式规则的程序语言实现问题。首先,讨论产生式规则的结构问题。一般来讲,产生式规则的前提和结论部分可以是一个复杂的逻辑表达式,但为了使表达简单规范,且便于推理,在实践中人们往往把规则的前提部分作成形如 条件1 AND 条件2 AND AND 条件n,或 条件1 OR 条件2 OR OR 条件m的形式(其中的条件可以带否定词);把规则结论部分作成形如 断言1/动作1 AND 断言2/动作2 AND AND 断言k/动作k或 断言1/动作1 OR 断言2/动作2 OR OR
16、 断言k/动作k的形式,或者进一步简化成 断言/动作即仅有一项的形式。,由于含OR关系的规则也可以分解为几个不含OR关系的规则,所以,产生式规则也可仅取下面的一种形式:,条件1 AND 条件2 AND AND 条件n断言/动作,即前件是若干与关系的条件,后件仅有一个断言或动作。,对规则作进一步细化。其条件、断言和动作都应该是陈述句。所以,它们可以用n元谓词(或子句)形式表示,或者用n元组的形式表示,如“对象-属性-值”三元组,“属性-值”二元组,或仅有“值”(符号、字符串或数值)的一元组等,而且谓词和元组中的项可以是常量、变量或复合项。当然,对于条件还可以用通常的关系式表示。如果规则解释程序(
17、即推理机)不能直接支持上述的谓词或元组表示形式,那么,可用通常的记录、数组、结构、函数等数据结构来实现规则中的条件和断言,用通常的赋值式、运算式、函数、过程等形式实现规则中的动作。,至于规则的语言表示是否一定要有“IF-THEN”,或者“AND”、“OR”等连接符,这倒不一定。但原则是,在程序执行时必须能体现出规则前提和结论的对应关系,必须能体现出前提和结论中的逻辑关系。例如,我们完全可以用一个二元组,(前件,后件),表示一个产生式规则。,上面我们给出了产生式规则在程序中的具体表示方法。但必须指出的是,产生式规则的程序语言形式与规则的解释程序(即推理机)密切相关。就是说,规则的解释程序与规则的
18、语言形式必须是相符的、一致的。所以,一般不能单方面地孤立地谈论规则的语言表示形式,而要与解释程序统一考虑。这样,就有两种情况:一种是先确定规则的语言表示形式,再根据规则形式设计规则解释程序(推理机);另一种是对已有的解释程序(推理机),设计规则表示形式(当然只能采用推理机所约定的规则形式)。,例如,在PROLOG程序中要表示产生式规则,至少有两种形式:(1)用PROLOG的规则表示产生式规则。(2)用PROLOG的事实表示产生式规则。对这两种表示,对应的推理机是不一样的。若用方法(1),则一般就不必编写显式的推理机程序,因为对于这种形式的规则,PROLOG语言的翻译程序就是它的推理机。但若用方
19、法(2),则就必须用PROLOG语言编写显式的推理机程序。,例6.3把6.2节例6.1中给出的产生式规则用PROLOG的规则可表示如下:animal_is(老虎):-it_is(食肉动物),fact(黄褐色),fact(有黑色条纹).it_is(食肉动物):-it_is1(哺乳动物),fact(有爪),fact(有犬齿),fact(目盯前方).,it_is(食肉动物):-it_is1(哺乳动物),fact(吃肉).it_is1(哺乳动物):-fact(有奶).it_is1(哺乳动物):-fact(有毛发).对于这种规则表示形式,可以不用再编写推理机程序,而可直接利用PROLOG自身的推理机,进
20、行推理。例如,当再给出如下的事实:fact(黄褐色).fact(有黑色条纹).fact(吃肉).fact(有奶).,和目标:animal_is(Y).则程序运行后的结果就是:Y老虎但如果把上面的规则表示成如下的形式:rule(食肉动物,黄褐色,有黑色条纹,老虎).rule(哺乳动物,有爪,有犬齿,目盯前方,食肉动物).rule(哺乳动物,吃肉,食肉动物).rule(有奶,哺乳动物).rule(有毛发,哺乳动物).则就需要用PROLOG语言编写一个推理机程序。否则,无法实施基于上述规则的推理。,还需说明的是,并非凡是用PROLOG规则表示的产生式规则,都可直接使用PROLOG的推理机。例如,ru
21、le(X,Y):-Y=X+1.这是一个含变量的规则,其中X为前提,Y是结论。也就是说,在推理时是把rule(X,Y)作为规则使用的。显然,对于这种形式的规则,仍然需要重新编写推理机。,2.规则库的程序实现 规则库的程序实现分为内存和外存两个方面。在内存中规则库可用链表实现,在外存则就是以规则为基本单位的数据文件。但若用PROLOG程序,对于用PROLOG的规则表示的产生式规则,规则库就是程序的一部分;对于PROLOG事实表示的规则,则规则库在内存就是动态数据库,在外存就是数据库文件。还需说明的是,对于规则库实际上还需配一个管理程序,即知识库管理系统,专门负责规则及规则库的各项管理工作。知识库管
22、理系统的设计也与规则的表示形式密切相关。,3.动态数据库的程序实现 动态数据库由推理时所需的初始事实数据、推理的中间结果、最后结果以及其他控制或辅助信息组成。这些事实数据的具体表示方法与上面所述的规则条件与结论的语言表示方法基本一样,区别就是动态数据库中的事实数据中不能含有变量。动态数据库在内存可由(若干)链表实现并组成。在PROLOG程序中实现动态数据库,则可不必编写链表程序,而利用PROLOG提供的动态数据库直接实现。,4.推理机的程序实现 推理机的程序实现,除了依据某一控制策略和算法编程外,一般来说,程序中还应具有模式匹配与变量的替换合一机制。因为模式匹配是推理的第一步,同时规则中一般都
23、含有变量,而变量的匹配必须有替换合一机制的支持。当然,要实现合一,就要用合一算法。那么,前面归结推理中的合一算法,对产生式系统也是适用的(如果不是谓词公式合一,则需稍作修改)。,上面我们全面介绍了产生式系统的程序实现方法。最后值得一提的是,由上所述可以看到:PROLOG的规则恰好能直接表示产生式规则,PROLOG的事实也恰好能表示产生式系统中的事实,PROLOG的动态数据库也刚好可用来实现产生式系统的动态数据库,程序中的目标也就是产生式系统的运行目标,PROLOG的翻译程序本身就是一个推理机。这就是说,PROLOG语言本身恰好就是一个产生式系统框架或实现工具。于是,若用PROLOG实现产生式系
24、统,则程序员仅需把问题域中的产生式规则用PROLOG的规则表示,把推理所需证据事实用PROLOG的数据库谓词表示,再给出推理目标即可。,最后需指出的是,除了PROLOG语言外,LISP语言也是描述产生式规则,实现产生式系统的常用语言。另外,还有几种产生式系统的专用语言,如OPS5、CLIPS等,都是专门的产生式系统语言。用这些语言建立产生式系统,不必编写推理机程序,只需按语言的规则语法建立规则库,再给出初始事实和推理目标即可。,产生式系统与问题求解 分析前面给出的两个正向推理算法,可以看出,它们只能用于解决逻辑推理性问题。那么,如何用正向推理来求解规划性问题呢?如果要用正向推理求解规划性问题,
25、则上述算法中至少还需增加以下功能:(1)记录动态数据库状态变化的历史,这就需要增设一个CLOSED表。(2)若要回溯,则还需保存与每个动态数据库状态对应的可用规则集。因为动态数据库状态与可用规则集实际是一一对应的。当回溯到上一个动态数据库状态(节点)后,需从其可用规则集中重新选取一条规则。,(3)要进行树式搜索,还需设置一个OPEN表,以进行新生动态数据库的状态保存和当前动态数据库状态的切换。(4)还要考虑一条规则是否只允许执行一次。若是,则要对已执行了的规则进行标记。但这样以来,产生式系统的推理算法就与第 3 章的图搜索算法相差无几了。下面我们再将产生式系统与图搜索(含状态图搜索和与或图搜索
26、)中的有关概念作一对比(如表 6.1所示)。,表6.1 产生式系统与图搜索对比,可以看出,二者几乎是一回事。要说差别的话,图搜索主要着眼于搜索算法,描述了问题求解的方法,而产生式系统则主要着眼于知识,并给出了实施这种方法的一种计算机程序系统的结构模式。这样,问题求解、图搜索和产生式系统三者的关系是:问题求解是目的,图搜索是方法,产生式系统是形式。既然基于产生式系统的推理就是图搜索,那么,前面关于图搜索的各种策略,对于产生式系统也仍然适用。,还需指出的是,在图搜索技术中,与或图的搜索,一般都是从初始节点出发,进行“自顶向下”地搜索。这种搜索用产生式系统实现,一般用反向推理实现。但同样的问题,产生
27、式系统也可用正向推理实现,即进行“自下而上”地搜索。这就是说,产生式系统能实施功能更强的搜索。这大概是产生式系统与前面介绍的图搜索的一个差别吧。有些文献中,把“自下而上”进行推理搜索,且目标的到达与规则的触发次序无关的产生式系统称为可交换的产生式系统;而把“自上而下”进行推理搜索,且搜索的是与或树的产生式系统称为可分解的产生式系统。,由上述产生式系统与图搜索的关系可见,产生式系统完全可以作为图搜索问题求解的一种通用模型。考虑到三种遗传操作和归结原理也都是产生式规则,所以基于遗传算法的问题求解系统和基于归结原理的证明或求解系统实际上也都是产生式系统。不过,这是两种特殊的产生式系统,或者说,它们是
28、产生式系统的变形(前者含有三条产生式规则,后者仅含有一条产生式规则)。这样,产生式系统实际上就几乎成了人工智能问题求解系统的通用模型。,习 题 六,1.你对产生式规则作为一个知识表示形式是如何看待和理解的?2.产生式规则与逻辑蕴含式以及PROLOG中的规则是何关系?3.试举几个产生式的实例,并用PROLOG语言表示之。4.考虑图搜索中的各种搜索策略在产生式系统中应如何实现。,5.若要用产生式系统求解诸如走迷宫、八数码等路径问题,那么,请问本章中给出的正向推理和反向推理算法能否适用?若不适用,则应对其作何修改?6.试将本章给出的正向推理和反向推理算法用PROLOG语言或C语言编程,实现一个推理机
29、。7.猴子摘香蕉问题。一个房间里,天花板上挂一串香蕉。房间里有一只猴子,还有一只可被猴子推移的箱子,而且,当猴子登上箱子时刚好能摘到香蕉。设猴子在房间的A处,箱子在B处,香蕉在C处。问:猴子如何行动可以摘取香蕉?试用产生式系统描述该问题,并用PROLOG语言编程实现,求出猴子摘香蕉的行动序列。,8.利用第6题的结果(即推理机),选择一个实际问题,如走迷宫问题、交通路线问题、八数码问题、梵塔问题、农夫过河问题、旅行商问题、八皇后问题、机器人行动规划问题等规划性问题,或者动物分类、植物分类、疾病诊断、故障诊断等推理决策性问题,找出其中的产生式规则,组成规则库,并给出初始事实数据和目标条件,建立一个小型产生式系统,并上机运行之。,