第六篇
专家系统是如何实现的
(五)
清华大学计算机系 马少平
第五节
黑板模型
博士:就如同人类专家只是某个方面的专家一样,专家系统一般也是集中于某个方面的系统,否则会导致系统构造太复杂,以至于难于工作。比如维修专家系统,不会把汽车修理和家电维修构建在一起,应该是分门别类地构建,每个专家系统只专注于一件事情。即便如此系统也往往会比较复杂,比如构建一个汽车修理的专家系统,汽车有卡车、桥车等不同的种类,不同种类的汽车维修知识并不完全一样,即便是轿车,也有汽油车、柴油车、电动车和混合动力车等。如果把这些不同种类汽车的维修知识都集中放在一起肯定会造成麻烦,也会大大降低专家系统的求解效率,甚至可能会向客户提出一些可笑的问题,比如问一个电动车的客户是否已经加满了汽油。即便都是油车,柴油车要加柴油,汽油车要加汽油,汽油还有92号汽油和95号汽油等。另外,即便对于同一个型号的汽车,也是由多个部分组成,故障可能出现在发动机部分,也可能出现在变速箱部分等,也需要分门别类地组织不同部分的知识。所以知识需要分组,针对不同部分的维修知识组织在一起,也要分层次,有判断故障可能出现在什么部分的知识,也有判断具体是什么故障的知识。为此,一个专家系统要想高效、可靠地工作,就要分门别类地组织知识、使用知识,在适当的时候使用适当的知识,而不是眉毛胡子一把抓。这样就需要对知识以及推理过程中产生的结论进行组织以及管理,黑板模型就是针对这样的问题而提出来的。
小明:黑板模型是一种什么模型呢?
艾博士:小明,你玩过拼图游戏吧?把一堆零散的卡片拼接在一起,组成一个画。我们把游戏规则稍微修改一下,假设一个班级的学生分成几组,每组同学有一些卡片,已经拼接好的局部图片放在教室的黑板上,这些局部图片不一定是完全连接在一起的,可能分成几组,连接在一起的卡片为一组。每组同学都查看自己手上的卡片是否可以与黑板上的图拼接在一起,如果可以拼接就举手示意。教师作为监督者和调度者按照某种策略叫举手的同学到黑板前拼图,一次只能上来一个同学。不同组的同学不能相互交流,只能根据黑板上的局部图判断自己手上是否有可以拼接的卡片。图6.6给出了这种拼图游戏的示意图。
图6.6 拼图游戏
黑板模型就是受这种拼图游戏的启发提出来的。其中的学生表示知识,一组学生是一个知识源。知识源具有结构性和层次性,具有相同性质的知识源组合在一起,比如一个知识源是关于汽车发动机故障诊断的,一个知识源是关于变速箱故障诊断的。同时知识源也具有层次性,有些知识源是从汽车整体定位故障到汽车各个组成部分的,有些知识源是在组成部分内部定位具体故障的。黑板上的局部图表示数据,数据也分成若干组,也可能具有不同的层次,比如有些是描述汽车整体故障现象的,有些是描述汽车具体故障的。老师起到监督和控制的作用,在黑板模型中就是监督程序和调度程序。监督程序时刻监督着黑板上的数据,一旦发现某些知识可以被触发,就提交给调度程序,调度程序根据某种原则调度知识,触发相应的规则,并将规则得到的结果与黑板上已有的数据合并、整合在一起。这个过程中可能是添加新的数据,也可能是对某些数据进行修改,也可能是删除黑板上的某些数据,这些均由调度程序根据不同的知识进行操作。
一个黑板模型的基本结构如图6.7所示。这只是黑白模型的基本组成,还可以增加规划部分、日程表等组成部分。规划负责对要求解的问题进行规划,以便求解的更加合理和高效,日程表则是求解任务的计划表,规划结果存放在日程表中,调度程序按照日程表进行求解。
图6.7 黑板模型示意图
小明读书笔记
黑板模型用于组织和管理层次化的数据和知识。以汽车维修为例,有些知识是针对汽车整体的,有些知识是针对发动机的,有些知识是针对变速箱的,而发动机和变速箱又可以进一步划分为更小的部件。这样,知识和数据也可以按照汽车的不同组成部分划分为不同的层次,按层次对知识和数据进行管理。通过监督程序和调度程序,按照需要使用不同的知识和数据,提高专家系统求解问题的效率。
未完待续