第六篇 专家系统是如何实现的 (一)
清华大学计算机系 马少平
第一节:什么是专家系统
明白了小明的来意之后,艾博士解释说:这样的系统在人工智能中叫做专家系统,是人工智能研究的一个重要方向,在人工智能历史上起到过举足轻重的作用,人工智能技术应用于解决实际问题,就是从专家系统开始的。
小明:什么是专家系统呢?
艾博士:在人工智能发展初期,由于对实现人工智能的难度估计不足,人工智能的研究很快就陷入了困境。在总结经验教训时,研究者逐渐认识到知识的重要性。一个专家之所以是专家,之所以能求解本领域的问题,重要的是具有该领域的专门知识。如果将专家的知识总结出来,并以计算机可以使用的形式表示出来,那么计算机不就可以像专家那样利用这些知识求解问题了吗?这就是专家系统的由来。
小明:专家系统原来是这么来的。
艾博士:在这样的思想指导下,1965年,斯坦福大学的费根鲍姆教授和化学家勒德贝格教授合作,研发了世界上第一个专家系统DENDRAL,用于帮助化学家判断某待定物质的分子结构。之后,费根鲍姆教授领导的小组又研制了著名的专家系统MYCIN,该系统可以帮助医生对住院的血液感染患者进行诊断和选用抗菌素类药物进行治疗。可以说MYCIN确定了专家系统的基本结构,为后来的专家系统研究奠定了基础。XCON是最早投入实际使用的专家系统,是由R1专家系统发展而来,该系统可以按照用户的需求,帮助DEC公司为其生成的VAX型计算机系统自动选择组件。
我也曾经多年从事专家系统的研究工作,先后研制过火车编组站专家系统、货物轮船积载系统、雷达故障诊断专家系统和市场报告自动生成专家系统等,并在一些企业得到了应用。
小明:专家系统都有哪些特点呢?
艾博士:专家系统研究的先驱、图灵奖获得者费根鲍姆教授将专家系统定义为:一种智能的计算机程序,它运用知识和推理来解决只有专家才能解决的复杂问题。这里的知识和问题,都均属于同一个特定领域。
从该定义可以看出,首先专家系统是一个计算机程序,但又不同于一般的计算机程序,专家系统以知识库和推理机为核心,可以处理非确定性问题,不追求问题的最佳解,利用知识得到一个满意解是系统的求解目标。专家系统强调知识库与包括推理机在内的其他子系统的分离,一般来说知识库是与领域强相关的,而推理机等子系统具有一定的通用性。
一个专家系统的基本结构如图6.1所示。
小明:请艾博士具体解释一下这个专家系统的基本结构,各个组成部分都是什么含义。
艾博士:我们先简单介绍一下这个基本结构,让大家对专家系统有一个基本了解,后面还会结合具体内容做详细说明。
知识库用于存储求解问题所需要的领域知识和事实等,知识一般以如下形式的规则表示:
IF <前提> THEN <结论>
表示当<前提>被满足时,可以得到<结论>。例如:
IF 阴天 and 湿度大 THEN 下雨
这里的“阴天且湿度大”就是前提,“下雨”就是结论,表示“如果阴天且湿度大,则会下雨”这样一条知识。
当然这是一条确定性的规则,实际问题中规则往往不是确定性的,而是具有一定的非确定性,关于非确定性的规则表示问题,我们将在后面叙述。
规则的<结论>可以是类似上例中的“下雨”这样的结果,也可能是一个“动作”,例如:
IF 下雨 THEN 带上雨伞
表示的是“如果下雨了出门要带上雨伞”。
也可能是其他的类型,比如删除某个数据、替换某个数据等。比如一个老年人健康护理专家系统,早上的时候可能记录的是老人没有吃药,一旦老人吃药后,就要从记录中删除“没有吃药”这条信息,并增加“已吃药”信息。
推理机是一个执行机构,它负责对知识库中的知识进行解释,利用知识进行推理,相当于人的大脑。例如:假设知识以规则的形式表示,推理机会根据某种策略,对知识库中的规则进行检测,选择一个<前提>可以满足的规则,得到该规则的<结论>,并根据<结论>的不同类型执行不同的操作。
动态数据库是一个工作存储区,用于存放初始已知条件、已知事实和推理过程中得到的中间结果,以及最终结果等。知识库中的知识在推理过程中所用到的数据以及得到的结果,均存放在动态数据库中。
人机交互界面是系统与用户的交互接口,系统在运行过程中需要用户输入的数据,用户通过该交互接口输入到系统中,系统需要显示给用户的信息通过该交互接口显示给用户。
讲解到这里艾博士问小明:小明如果去看医生,你会信任医生的诊断结果吗?为什么信任他?
小明回答说:首先医生是看病的专家,对于医生的诊断结果我还是比较信任的,但是也会向医生提出一些问题,请医生解释说明。
艾博士:对,医生不仅会诊断你有什么病,还会向你解释为什么得的是这种病,病人之所以会信任医生的诊断结果,与医生的解释是分不开的。所以具有解释能力也是专家系统的重要特征。解释器是专家系统特有的负责解释的模块,也是与一般的计算机软件系统的区别之一。在专家系统与用户的交互过程中,如果用户有需要系统解释的内容,专家系统通过解释器对用户进行解释。解释一般分为Why解释和How解释两种,Why解释回答“为什么”这样的解释,How解释回答“如何得到的”这样的解释。例如,在一个医疗专家系统中,系统给出让病人验血的建议,如果病人想知道为什么让自己去验血,用户只要通过交互接口输入Why,则系统会根据推理过程,给出为什么会让病人去验血,让用户明白验血的意义。如果专家系统最终诊断病人患有某种疾病,病人想了解专家系统是如何得出这个结果的,只要通过交互接口输入How,则专家系统会根据推理过程,对用户做出解释,根据什么症状判断用户患有的是这种疾病。这样可以让用户对专家系统的推理结果有所了解,而不是盲目信任。“可解释”是专家系统中非常重要的组成部分。现在很多数据驱动的人工智能系统,大多是黑箱模型,对结果缺乏可解释性,可解释性也是目前人工智能领域一个重要的研究课题。
听艾博士这样讲解后小明点点头说:具有解释能力确实是专家系统的重要特征,不能盲目信任专家系统的结论,必须给出合理的解释才可以获得信任。
知识获取模块是专家系统与知识工程师的交互接口,知识工程师通过知识获取模块将整理的领域知识加入到知识库中,也通过知识获取模块对知识进行管理和维护。专家系统主要是依靠人工整理获取知识。
小明:那么专家系统是怎样一个工作流程呢?
艾博士:专家系统一般都是某个领域的专用系统,即便是医疗领域的专家系统,也会像医生看病一样,划分为几个专科,每个专科看专门的疾病。比如我国曾经建造过一个“关幼波肝病诊疗程序”的专家系统,就是根据著名肝病诊疗专家关幼波大夫的经验建造的一个专家系统。
对于一个已经建造好的专家系统,因应用领域的不同其工作流程可能会有一些差别,一个基本流程是这样的:
用户根据自己的需要选定一个专家系统,输入一些基本情况,比如以看病为例,可能要先告知自己身体哪里不舒服,有哪些症状等,专家系统会根据用户提供的基本信息做出一些判断,询问用户一些更详细的问题,或者让用户做些必要的检查,经过几轮交互之后,最终专家系统会给出一个结果,确诊是什么疾病,给出治疗方案。如果在这个过程中用户有哪些疑问,均可以通过解释器与系统做交互,得到专家系统的解答。其他的应用场景也是类似的过程。
小明:这个流程确实跟我们看病过程差不多。
艾博士:是这样的,专家系统就是某种程度上对人类专家的模仿。前面咱们两个关于识别动物的那个对话过程,就是一个典型的专家系统工作流程,你完全可以把我当作一个动物识别专家系统看待。
小明:谢谢艾博士的耐心解答,对专家系统有了初步的认识。
艾博士:下面我们详细地介绍每个部分的具体实现方法,由于有很多不同的实现方法,我们选择一些相对简单又有代表性的方法加以介绍。