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