- 本文对基于规则的专家系统进行简介,举例专家系统的结构类似 MYCIN 系统,同时串联介绍专家系统的各种思想。需要注意的是,本文所述仅是专家系统的一种实现途径,其依赖规则进行知识表示和推理,另外还有基于语义网络、框架、谓词逻辑、脚本等等其他知识表示和推理方法的专家系统
- 参考:专家系统是如何实现的
1. 基本结构 & 基本工作流程
- 专家系统(Expert System, ES)是在某一特定领域中,能够像人类专家一样解决复杂问题的计算机软件系统。它能够有效地运用专家多年积累的经验和专业知识,通过模拟专家的思维过程,解决需要专家才能解决的问题。专家系统需要通过一定的知识获取方法,将专家知识保存在知识库中,然后运用推理机,结合人机交互接口进行工作。
- 专家系统的基本结构如下所示
-
知识库:包含由知识工程师提供的大量先验领域知识,通常以规则形式构成,形如
IF <前提> THEN <结论>
。其中 <前提> 和 <结论> 都是事实命题,可以形式化表示为三元组表达式(<名称> <属性> <值>)
。特别地,<名称> 字段可以用 “same” 和 “notsame” 表示 “一致” 或 “不一致”,例如:IF (天气 类别 阴天) 且 (天气 湿度 高) THEN (天气 类别 下雨);
IF (天气 类别 下雨) THEN (行李 包含 雨伞)
IF (same 羽毛 有) THEN (动物 类别 鸟类)
IF (same 类别 鸟类) and (notsame 飞翔 会) and (same 游泳 会) and (same 颜色 黑白) THEN (动物 是 企鹅) -
推理机:一个执行机构,它能够对知识库的知识进行解释(符号->语义),并利用知识进行推理
-
动态数据库:一个工作存储区,用于存放初始已知条件、已知事实、推理过程中得到的中间结果以及最终结果等
-
人机交互界面:系统与用户的交互接口,系统运行过程中,用户通过该交互接口向系统输入数据,系统通过该交互接口对用户显示信息
-
解释器:在专家系统和用户的交互过程中,当用户对系统输出存在疑问时,专家系统可以通过解释器向用户进行解释。解释一般分为 Why 和 How 两种,前者对系统向用户提问的原因进行解释,后者对系统得到结论的推理途径进行解释
-
知识获取模块:专家系统与知识工程师的交互接口,知识工程师通过知识获取模块将整理的领域知识加入到知识库中,也通过知识获取模块对知识库进行管理和维护
-
- 专家系统的基本工作模式包括推理模式和解释模式两种
- 推理模式下如左图所示,用户通过人机交互界面向系统输入数据,推理机借助知识库对这些数据进行分析、推理、提出假设并向用户提问,请求新的输入数据来验证假设。以上人机交互过程会迭代重复多次,直到推理机得出最终结果,在此过程中,用户的原始输入和产生的中间结果都会记录在动态数据库中,以支持推理机的推理过程
- 解释模式如右图所示,交互过程中,用户可以随时通过人机交互界面要求系统进行解释,解释器会根据动态数据库中存储的历史交互信息向用户给出 Why 解释或 How 解释
2. 推理方法
- 专家系统的推理方法分为两类
- 正向推理:从已知条件出发,正向地使用规则向目标进行推理,是一种数据驱动的推理
- 逆向推理:从目标出发,首先假设结论成立,再逆向运用规则推出必须成立的前提,若发现所有必要前提都已知成立,则推理命题为真,是一种目标驱动的推理
- 双向推理:同时使用正向和逆向推理
- 设有如下规则 r1、r2、r3,已知 A、B、D 成立,求证 F 成立
r 1 : IF A and B THEN C r 2 : IF C and D THEN E r 3 : IF E THEN F \begin{aligned} &r1: \quad \text{IF A and B THEN C}\\ &r2: \quad \text{IF C and D THEN E}\\ &r3: \quad \text{IF E THEN F}\\ \end{aligned} r1:IF A and B THEN Cr2:IF C and D THEN Er3:IF E THEN F 正向推理过程如下图所示
逆向推理过程如下图所示
- 冲突消解:指在推理过程中,当有多个规则的前提同时成立时,如何选择规则。常见的冲突消解方法有
- 按顺序执行
- 更多前提条件被满足的规则优先执行
- 距离目标更 ”近“ 的规则被优先执行(以目标的直接前提为结论的规则最先执行)
- 按规则的优先级执行
- 考虑一个典型的设备参数设计场景,可以采用混合正向推理和逆向推理的双向推理方法:首次交互时,专家系统基于用户输入的场景和初步要求进行正向推理,得到初步参数方案设计;此后,针对初步设计中缺失但用户所需的额外参数,进一步通过逆向推理方法进行补充。特别地,整个推理过程中,若数据库中缺乏必要前提的相关规则或事实知识,则向用户发出提问请求加以补充。
示例如下:
- 用户:(需求 类型 红外热像仪);(需求 用途 野外电力设备巡检)
- 专家系统:(? 探测距离)
- 用户:(需求 探测距离 500米)
- 专家系统:(设计 分辨率 640x480像素) ;(设计 视场角 10度)
- 用户:(? 波长范围)
- 专家系统:(? 灵敏度)
- 用户:(需求 灵敏度 ≤50mK))
- 专家系统:(设计 波长范围8-14微米)
- 用户:(How 波长范围8-14微米)
- 专家系统:[Rule 15]:IF (same 探测距离 ≤500米) and (same 视场角 ≤15度) and (same 灵敏度 ≤75mk) THEN (传感器 波长范围8-14微米)
注意到
- 为了消解自然语言的复杂性和模糊性,专家系统通常使用类程序化的形式语言进行人机交互。
- 第4行的初步参数设计通过正向推理方法得到
- 第8行的补充设计通过逆向推理方法得到
- 第10行专家系统利用解释器对设计方案进行了How解释
3. 专家系统的分类
3.1 确定性推理
- 基于规则推理(Rule Base Reasoning,RBR)的方法是将专家所掌握的现有知识和经验, 通过一定的方法转化为规则, 适用推理解进行启发式推理。根据明确的前提条件,得到明确的结果。
以动物的分类为例,规则可以设计为
- IF(有毛发 or 能产乳)and((有爪子 and 有利齿 and 前视)or 吃肉)and 黄褐色 and 黑色条纹,THEN 老虎
- IF(有羽毛 or 能飞 and 生蛋))and 不会飞 and 游水 and 黑白色,THEN 企鹅
- 通常使用逆向推理规则,首先假设用户问题为真,然后根据规则判断所有前提是否成立,若知识库中不包含判断前提是否成立的必要信息,则由推理机向用户发起提问。基于规则的专家系统的工作流程如下图所示
- 基于规则的专家系统是最早期的一种专家系统
- 优点:推理过程比较明确,只要规则正确结论就比较准确,简单实用,应用广泛
- 缺点:规则构造严重依赖专家的经验积累,经验如果不准确则结果也不准确;没有自学习能力,更新迭代需要专家经验的不断积累
3.2 非确定性推理
- 现实中遇到的问题多数为非确定性问题,比如对于规则 IF 阴天 THEN 下雨,判断阴天的标准是模糊的,而且即使阴天也不一定下雨。导致非确定性的因素包含随机性、自然语言的模糊性、不完全性、多因素组合等。因此,有必要对事实和推理结果引入不确定性度量,以进行非确定性推理
- 置信度方法(Certainty Factor, CF)是一种常用的非确定性推理方法,最早由专家系统 MYCIN 提出,后在 EMYCIN 系统中得到进一步改进。为实现非确定性的推理,CF 方法将置信度概念引入到推理过程的各个环节中,具体设计如下:
- 事实的表示:用 CF(A) 表示事实 A 为真的置信度,是一个取值范围在 [-1,1] 的浮点数
- 当 CF(A) = 1 时,表示 A 肯定为真
- 当 CF(A) = -1 时,表示A为真的置信度为 -1,也就是 A 肯定为假
- CF(A) > 0 表示 A 以一定的置信度为真
- CF(A) < 0 表示 A 为真的置信度为负,即其为假的置信度为 -CF(A)
- CF(A) = 0 表示对 A 一无所知。一般当 CF(A) 取值为一个绝对值较小的区间时,即认为系统不包含任何 A 的相关信息
- 规则的表示:引入置信度后,推理结果中也要包含置信度,此时规则表示为 IF A THEN B CF(B, A),可以理解为
- 表示当 A 成立时,即 CF(A)>0 时,结论 B 成立
- CF(B,A) 是规则的置信度,又称为规则的强度,取值范围为 [-1,1]
- 当 A 一定为真,即 CF(A) = 1 时,CF(B, A) = CF(B) 退化为结论 B 为真的置信度
- 逻辑运算:在普通与或非逻辑运算的基础上,置信度方法的逻辑运算扩展了对置信度的计算
- CF(A and B) = min {CF(A), CF(B)}
- CF(A or B) = max {CF(A), CF(B)}
- CF(not A) = -CF(A)
- 规则运算:对于规则 IF A THEN B CF(B, A),结论 B 的置信度如下计算
- CF(B) = max {0, CF(A)} x CF(B, A)
- 以规则 IF 阴天 and 湿度大THEN 下雨 0.8 为例进行计算,设 C F ( 阴天) = 0.5 \mathrm{CF}(\text { 阴天) }=0.5 CF( 阴天) =0.5, C F ( 湿度大) = 0.6 \mathrm{CF}(\text { 湿度大) }=0.6 CF( 湿度大) =0.6,则
C F ( 阴天 and 湿度大 ) = min ( C F ( 阴天 ) , C F ( 湿度大 ) ) = min ( 0.5 , 0.6 ) = 0.5 C F ( 下雨 ) = max ( 0 , C F ( 阴天 and 湿度大 ) ) × 0.8 = max ( 0 , 0.5 ) × 0.8 = 0.4 \begin{array}{l} \mathrm{CF}(\text { 阴天 and 湿度大 })=\min (\mathrm{CF}(\text { 阴天 }), \mathrm{CF}(\text { 湿度大 })) =\min (0.5,0.6)=0.5 \\ \mathrm{CF}( 下雨 )=\max (0, \mathrm{CF}( \text { 阴天 } \text {and} \text { 湿度大 } )) \times 0.8 =\max (0,0.5) \times 0.8=0.4 \end{array} CF( 阴天 and 湿度大 )=min(CF( 阴天 ),CF( 湿度大 ))=min(0.5,0.6)=0.5CF(下雨)=max(0,CF( 阴天 and 湿度大 ))×0.8=max(0,0.5)×0.8=0.4
- 规则合成:当多个规则支持相同的结论时,从每个规则得到结论的置信度不同,需要合成以确定 CF(B)。具体而言,设:
IF A1 THEN B CF(B,A1) = > CF1(B) IF A2 THEN B CF(B,A2) = > CF2(B) \begin{aligned} \text{IF A1 THEN B CF(B,A1)} \quad => \quad \text{CF1(B)} \\ \text{IF A2 THEN B CF(B,A2)} \quad =>\quad \text{CF2(B)} \end{aligned} IF A1 THEN B CF(B,A1)=>CF1(B)IF A2 THEN B CF(B,A2)=>CF2(B) 在 MYCIN 系统中,置信度合成方法为
C F ( B ) = { C F 1 ( B ) + C F 2 ( B ) − C F 1 ( B ) × C F 2 ( B ) , 当 CF1(B)、CF2(B)均大于 0 时 C F 1 ( B ) + C F 2 ( B ) + C F 1 ( B ) × C F 2 ( B ) , 当 CF1(B)、CF2(B)均小于 0 时 C F 1 ( B ) + C F 2 ( B ) , 其他 \mathrm{CF}(\mathrm{~B})=\left\{\begin{array}{ll} \mathrm{CF} 1(\mathrm{~B})+\mathrm{CF2} (\mathrm{B})-\mathrm{CF} 1(\mathrm{B}) \times \mathrm{CF} 2(\mathrm{~B}), & \text { 当 CF1(B)、CF2(B)均大于 } 0 \text { 时 } \\ \mathrm{CF} 1(\mathrm{~B})+\mathrm{CF2}(\mathrm{B})+\mathrm{CF} 1(\mathrm{B}) \times \mathrm{CF} 2(\mathrm{~B}), & \text { 当 CF1(B)、CF2(B)均小于 } 0 \text { 时 } \\ \mathrm{CF1}(\mathrm{~B})+\mathrm{CF2} (\mathrm{~B}), & \text { 其他 } \end{array}\right. CF( B)=⎩ ⎨ ⎧CF1( B)+CF2(B)−CF1(B)×CF2( B),CF1( B)+CF2(B)+CF1(B)×CF2( B),CF1( B)+CF2( B), 当 CF1(B)、CF2(B)均大于 0 时 当 CF1(B)、CF2(B)均小于 0 时 其他
当需要合成的规则数量大于2时,可以通过两两运算来合成置信度,但以上方法的结果会受到合成顺序影响,不满足交换律,且置信度符号相反时合成结果趋向 0,不够合理。为此,EMYCIN 系统中对置信度合成方法优化为
C F ( B ) = { C F 1 ( B ) + C F 2 ( B ) − C F 1 ( B ) × C F 2 ( B ) , 当 CF1(B)、CF2(B)均大于 0 时 C F 1 ( B ) + C F 2 ( B ) + C F 1 ( B ) × C F 2 ( B ) , 当 CF1(B)、CF2(B)均小于 0 时 C F 1 ( B ) + C F 2 (B) 1 − min ( ∣ C F 1 ∣ , ∣ C F 2 ∣ ) , 其他 \mathrm{CF}(\mathrm{~B})=\left\{\begin{array}{ll} \mathrm{CF} 1(\mathrm{~B})+\mathrm{CF2} (\mathrm{B})-\mathrm{CF} 1(\mathrm{B}) \times \mathrm{CF} 2(\mathrm{~B}), & \text { 当 CF1(B)、CF2(B)均大于 } 0 \text { 时 } \\ \mathrm{CF} 1(\mathrm{~B})+\mathrm{CF2}(\mathrm{B})+\mathrm{CF} 1(\mathrm{B}) \times \mathrm{CF} 2(\mathrm{~B}), & \text { 当 CF1(B)、CF2(B)均小于 } 0 \text { 时 } \\ \frac{\mathrm{CF} 1(\mathrm{~B})+\mathrm{CF} 2 \text { (B) }}{1-\min (|C F 1|,|C F 2|)}, & \text { 其他 } \end{array}\right. CF( B)=⎩ ⎨ ⎧CF1( B)+CF2(B)−CF1(B)×CF2( B),CF1( B)+CF2(B)+CF1(B)×CF2( B),1−min(∣CF1∣,∣CF2∣)CF1( B)+CF2 (B) , 当 CF1(B)、CF2(B)均大于 0 时 当 CF1(B)、CF2(B)均小于 0 时 其他
- 事实的表示:用 CF(A) 表示事实 A 为真的置信度,是一个取值范围在 [-1,1] 的浮点数
- 置信度方法具有基于概率论的理论支撑,其中置信度可等价定义为信任度量和不信任度量之间的差值。实际使用时,通常直接由专家给出 CF 值,而不通过概率进行计算
4. 黑板模型
- 专家系统使用知识库和动态数据库支持推理机进行推理,需要对其中的层次性知识数据进行管理。黑板模型是一种典型的对知识进行结构化组织和管理的模型,最早在1970年代由卡内基梅隆大学开发的HEARSAY-II系统中提出,在专家系统中被广泛采用
- 黑板模型的基本思想是通过一个共享的工作空间(即“黑板”)来协同解决复杂问题,如下图所示,其主要组成部分包括:
- 知识源(Knowledge Sources, KS):每个知识源是一个独立的专家模块,包含特定领域的知识和技能。知识源之间相互独立,不直接通信。
- 黑板(Blackboard):一个全局共享的工作空间,存储问题的当前状态和中间结果。所有知识源都可以读取和修改黑板上的信息。
- 控制机制(Control Mechanism):负责监控黑板上的状态,并根据某种策略选择和激活合适的知识源来处理当前问题。
- 黑板模型的工作流程如下:
- 当一个问题被提出时,初始数据会记录在黑板上
- 各知识源通过“观察”黑板,寻找可以应用其知识的机会
- 当某个知识源发现黑板上的信息足以支持进一步求解时,它会执行相应的操作,并将结果记录在黑板上
- 新增的信息可能会触发其他知识源的进一步操作
- 这一过程不断重复,直到问题得到解决
- 黑板模型使用模块化设计,知识源可以独立开发和维护,便于系统扩展和更新。多个不同的知识源独立工作,并通过黑板进行协同,适合处理复杂和动态变化的问题,在解决大型复杂问题时非常有效,特别是在需要多学科、多专家协同工作的场景中