实验1:产生式系统实验
一、实验目的
通过本节的学习,你将掌握产生式系统的定义、性质、原理、方法特点和实践操作,你将对产生式系统有一个大概的了解,这为您以后继续学习人工智能导论奠定了基础,也提升了利用产生式系统解决问题的能力!
二、实验设备与器件
PC机、
三、实验内容
本节将学习产生式的介绍、产生式系统的相关知识、产生式系统——动物识别系统的原理和产生式表示法的特点,最后使用产生式方法完成一个动物识别系统实验。
1943年,美国数学家波斯特(E. Post)首先提出“产生式”。
1972年,纽厄尔和西蒙在研究人类的认知模型中开发了基于规则的产生式系统。
产生式通常用于表示事实、规则以及它们的不确定性度量,适合于表示事实性知识和规则性知识。
任务描述
本关任务:编写一个使用产生式方法识别动物的系统。
相关知识
为了完成本关任务,你需要掌握:
产生式;
产生式系统;
产生式系统——动物识别系统;
产生式表示法的特点。
产生式
1943年,美国数学家波斯特(E. Post)首先提出“产生式”。
1972年,纽厄尔和西蒙在研究人类的认知模型中开发了基于规则的产生式系统。
产生式通常用于表示事实、规则以及它们的不确定性度量,适合于表示事实性知识和规则性知识。
确定性规则知识的产生式表示
基本形式:
IFPTHENQ
或者:
P→Q
例如:
r4:IF 动物会飞 AND 会下蛋 THEN 该动物是鸟
确定性规则知识的产生式表示
基本形式:
IFPTHENQ(置信度)
或者:
P→Q(置信度)
例如:IF 发烧 THEN 感冒(0.6)
确定性事实性知识的产生式表示
三元组表示:(对象,属性,值)
或者:(关系,对象1,对象2)
例:
老李年龄是 40 岁:(Li,age,40)
老李和老王是朋友:(friend,Li,Wang)
不确定性事实性知识的产生式表示
四元组表示:(对象,属性,值,置信度)
或者: (关系,对象1,对象2,置信度)
例:
老李年龄很可能是 40 岁:(Li,ageg,40,0.8)
老李和老王不大可能是朋友:(friend,Li,Wang,0.1)
产生式与谓词逻辑中的蕴含式的区别:
(1)除逻辑蕴含外,产生式还包括各种操作、规则、变换、算子、函数等。例如,“如果炉温超过上限,则立即关闭风门”是一个产生式,但不是蕴含式。
(2)蕴含式只能表示精确知识,而产生式不仅可以表示精确的知识,还可以表示不精确知识。蕴含式的匹配总要求是精确的。产生式匹配可以是精确的,也可以是不精确的,只要按某种算法求出的相似度落在预先指定的范围内就认为是可匹配的。
产生式的形式描述及语义——巴科斯范式BNF(backus normal form)
<产生式>::=<前提> <结论>
<前 提>::=<简单条件>|<复合条件>
<结 论>::=<事实>|<操作>
<复合条件>::=<简单条件>AND<简单条件>[AND<简单条件>…
|<简单条件>OR<简单条件>[OR<简单条件>…
<操 作>::=<操作名>[(<变元>,…)]
符号“::=”表示“定义为”;符号“|”表示“或者是”;符号“[ ]”表示“可缺省”。
产生式系统
规则库: 用于描述相应领域内知识的产生式集合。
综合数据库(事实库、上下文、黑板等):一个用于存放问题求解过程中各种当前信息的数据结构。
控制系统(推理机构):由一组程序组成,负责整个产生式系统的运行,实现对问题的求解。
图一 产生式系统的基本结构
控制系统做以下几项工作:
(1)从规则库中选择与综合数据库中的已知事实进行匹配。
(2)匹配成功的规则可能不止一条,进行冲突消解。
(3)执行某一规则时,如果其右部是一个或多个结论,则把这些结论加入到综合数据库中:如果其右部是一个或多个操作,则执行这些操作。
(4)对于不确定性知识,在执行每一条规则时还要按一定的算法计算结论的不确定性。
(5)检查综合数据库中是否包含了最终结论,决定是否停止系统的运行。
产生式系统——动物识别系统
例如:动物识别系统——识别 虎、金钱豹、长颈鹿、鸵鸟、信天翁、斑马、企鹅等七种动物的产生式系统。
图二 七种动物图
规则库:
r1: IF 该动物有毛发 THEN 该动物是哺乳动物
r2: IF 该动物有奶 THEN 该动物是哺乳动物
r3: IF 该动物有羽毛 THEN 该动物是鸟
r4: IF 该动物会飞 AND 会下蛋 THEN 该动物是鸟
r5: IF 该动物吃肉 THEN 该动物是食肉动物
r6: IF 该动物有犬齿 AND 有爪 AND 眼盯前方 THEN 该动物是食肉动物
r7: IF 该动物是哺乳动物 AND 有蹄 THEN 该动物是有蹄类动物
r8: IF 该动物是哺乳动物 AND 是反刍动物 THEN 该动物是有蹄类动物
r9: IF 该动物是哺乳动物 AND 是食肉动物 AND 是黄褐色 AND 身上有暗斑点 THEN 该动物是金钱豹
r10:IF 该动物是哺乳动物 AND 是食肉动物 AND 是黄褐色 AND 身上有黑色条纹 THEN 该动物是虎
r11:IF 该动物是有蹄类动物 AND 有长脖子 AND 有长腿 AND 身上有暗斑点 THEN 该动物是长颈鹿
r12:IF 该动物有蹄类动物 AND 身上有黑色条纹 THEN 该动物是斑马
r13:IF 该动物是鸟 AND 有长脖子 AND 有长腿 AND 不会飞 AND 有黑白二色 THEN 该动物是鸵鸟
r14:IF 该动物是鸟 AND 会游泳 AND 不会飞 AND 有黑白二色 THEN 该动物是企鹅
r15:IF 该动物是鸟 AND 善飞 THEN 该动物是信天翁
设已知初始事实存放在综合数据库中:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄
推理机构的工作过程 :
(1)从规则库中取出 r1,检查其前提是否可与综合数据库中的已知事实匹配。匹配失败则 r1 不能被用于推理。然后取 r2 进行同样的工作。匹配成功则r2被执行。
综合数据库 :
该动物身上有:暗斑点,长脖子,长腿,奶,蹄,哺乳动物
(2)分别用 r3,r4,r5,r6 综合数据库中的已知事实进行匹配,均不成功。 r7 匹配成功,执行 r7 。
综合数据库:
该动物身上有:暗斑点,长脖子,长腿,奶,蹄,哺乳动物,有蹄类动物
(3)r11 匹配成功,并推出 “该动物是长颈鹿”。
图三 识别长颈鹿
产生式表示法的特点
产生式表示法的优点
(1)自然性
(2)模块性
(3)有效性
(4)清晰性
产生式表示法的缺点
(1)效率不高
(2)不能表达结构性知识
适合产生式表示的知识
(1)领域知识间关系不密切,不存在结构关系。
(2)经验性及不确定性的知识,且相关领域中对这些知识没有严格、统一的理论。
(3)领域问题的求解过程可被表示为一系列相对独立的操作,且每个操作可被表示为一条或多条产生式规则。
编程要求
根据提示,在右侧编辑器补充代码,完成产生式系统——动物识别系统的操作,最后达到输入动物特征,输出动物类型的结果。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
2
10
0
预期输出:
输入对应条件前面的数字:
*******************************************************
*1:有毛发 2:产奶 3:有羽毛 4:不会飞 5:会下蛋 *
*6:吃肉 7:有犬齿 8:有爪 9:眼盯前方 10:有蹄 *
*11:反刍 12:黄褐色 13:有斑点 14:有黑色条纹 15:长脖 *
*16:长腿 17:会飞 18:会游泳 19:黑白二色 20:善飞 *
*21:哺乳类 22:鸟类 23:食肉类 24:蹄类 *
*******************************************************
*******************当输入数字0时!程序结束***************
请输入:1
请输入:2
请输入:10
请输入:0
前提条件为:
有毛发 产奶 有蹄
推理过程如下:
有毛发->哺乳类
有蹄,哺乳类->蹄类