实验目的:
1.熟悉产生式的特点,基本结构和设计思想
2.掌握基于规则推理的基本过程和方法
3.学会用高级程序设计语言开发基于规则的动物识别系统
实验要求:
1.根据动物识别系统的规则建立合理的数据结构或数据库来表示知识。
2.利用所选开发语言来建立推理过程。
3.利用控制台或者图形界面给出合理的交互接口,实现基本演示功能。
4.提交实验报告和源程序,总结实验结论和经验教训。
实验原理:
1.基于规则产生式系统结构:
基于规则的产生式系统一般由规则库(知识库)、综合数据库和推理引擎(推理机)三部分组成,规则库中它的基本组成框架如下图1所示。
知识库由谓词演算事实和有关讨论主题的规则构成,综合库又称为上下文,用来暂时存储推理过程中的结论和数据。推理机是用规则进行推理的过程和行为。知识采集系统是领域专家把相关领域的知识表示成一定的形式,并输入到知识库中。解释系统通过用户输入的条件来分析被系统执行的推理结构,并将专家知识以易理解的方式并把知识解释给用户。
图1 规则产生式系统的基本结构
2. 简单动物识别产生式系统结构:
⑴ 知识库 ANIMAL的知识库非常小,仅仅包含16条规则(一
般说来,一个产生式系统的知识库应包含≥几百条规则);
⑵ 解空间很小,仅仅包含8个解,或8个最高假设(在一个特定
的动物园里,共有虎、豹、长颈鹿、斑马、鸵鸟、企鹅和信天
翁、八哥等8种动物);
⑶ 初始事实集合很小,仅仅包含21个事实,如图中的F1至F21;
⑷ 数据(即事实、证据、断言),知识(即浅层知识,规则)和推
理都是精确的,即确定性的;
⑸ 知识库。
实验步骤和过程:
1.研习教材P33-P34(产生式的结构)和P47-50(确定性推理方法详解)相关内容,熟悉基本的理论和思想方法。
2.理解原有程序的基本结构,并在其基础上搭建自己的推理过程,实现基于规则的动物识别系统。
思考题:
考虑实际情况,系统中那些地方需要改进。比如规则数目的增多,规则之间复杂的关系等,证据知识的不确定性等,发现你的问题(至少包括两个问题),并在实验报告中写出响应的解决方法。
备注知识:
1.动物识别系统包括16条规则下所示:如
r1 毛发 哺乳动物
r2 奶 哺乳动物
r3 羽毛 鸟
r4 会飞|下蛋 鸟
r5 吃肉 食肉动物
r6 犬齿|爪|眼睛盯着前方 食肉动物
r7 哺乳动物|蹄 有蹄类动物
r8 哺乳动物|反刍 有蹄类动物
r9 哺乳动物|食肉动物|黄褐色|暗斑点 金钱豹
r10 哺乳动物|食肉动物|黄褐色|黑色条纹 虎
r11 有蹄类动物|长脖子|长腿|暗斑点 长颈鹿
r12 有蹄类动物|黑条纹 斑马
r13 鸟|不会飞|长脖子|长腿|黑白色 鸵鸟
r14 鸟|不会飞|游泳|黑白色 企鹅
r15 鸟|善飞 信天翁
2.正向推理过程分析:
下面以一个具体的动物识别产生式系统模型来说明其原理。
初始事实集:
动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄
要求解的问题是判断满足该事实集的是何种动物?
推理过程:
1。首先从规则库取出第一条规则 r1,将r1中的前提部分与初始事实集中的事实相比较, 匹配失败;于是继续取第二条规则再试,匹配成功!将此规则的结论部分作为新事实加入到 综合数据库的初始事实集中。于是初始事实集变为:
该动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄、是哺乳动物。
2。接着依次取 r3、r4、r5、r6 与初始事实集匹配、均不成功,当执行到 r7 时再次获得匹配,于是事实集中以增加一条事实:
该动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄、是哺乳动物、是有蹄类动物。
5.此后,当搜索到 r11 时又一次匹配成功,事实集变为:
该动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄、是哺乳动物、是有蹄类动物、该动 物是长颈鹿。于是得到最终结论---该动物是长颈鹿。
上述问题的求解过程是一个不断地从规则库中选取可用规则与综合数据库中的已知事实进行匹 配的过程,规则的每一次匹配都会使综合数据库增加新的内容,并朝着问题的解决前进了一 步。这就是一个推理过程。
3.逆向推理过程分析:
初始事实集:
动物身上有暗斑点、有长脖子、有长腿、有奶、有蹄
要求解的问题是判断满足该事实集的是何种动物?
推理过程:
1。我们假设这个动物是长颈鹿的话 ,为了检验这个假设,根据规则r11,要求这个动物是长脖子,长腿,暗斑点且是有蹄类动物。
2。这时数据库中已经有了长脖子,长腿,暗斑点事实,为此我们还要验证“动物是有蹄类动物”,根据规则r8要求动物反刍,且是哺乳动物,而事实库中没有反刍,根据规则r7要求动物有蹄,且是哺乳动物,事实中动物有蹄。为此我们要验证动物是哺乳动物
6.我们要验证动物是哺乳动物,根据规则r2知道,要求动物有奶,事实中动物有奶,此时
各个子目标都是已知事实,所以逆向推理成功。
上述问题的求解过程是从目标的(作为假设)状态出发,朝着出事状态前进,逆向适用规则的一种方法。