第八章专家系统1.1 专家系统概述1.专家系统的定义专家系统是一种具有大量专门知识与经验的智能程序系统,它能运用某个领域一个或多个专家多年积累的经验和专门知识,模拟领域专家求解问题时的思维过程,以解决该领域中的各种复杂问题。
也就是说,专家系统具有3个方面的含义:(1)它是一种具有智能的程序系统。
和普通的程序系统不同,专家系统是一种能运用专家知识和经验进行推理的启发式程序系统。
(2)它必须包含有大量专家水平的领域知识,并能在运行过程中不断地对这些知识进行更新。
(3)它能应用人工智能技术模拟人类专家求解问题的推理过程,解决那些本来应该由领域专家才能解决的复杂问题。
2.专家系统的种类对专家系统的类型划分可以有多种不同的方法。
按照专家系统的特性及处理问题的类型,将专家系统分为以下10种类型。
·解释型·诊断型·设计型·预测型·规划型·监视型·控制型·调试型·教学型·修理型按照系统的体系结构,专家系统可分为4种类型:·集中式专家系统·分布式专家系统·神经网络专家系统·符号系统与神经网络相结合的专家系统3.专家系统的一般特点专家系统还具有以下一些共同特点:·启发性·透明性·灵活性·交互性·推理有效性·复杂性·实用性·知识的专门性·易推广性1.2 专家系统的基本结构一个最基本的专家系统应由6个部分组成,包括综合数据库及其管理系统、知识库及其管理系统、推理机、解释器、知识获取机构和人机接口等,它们之间的结构组织关系如图8.1所示。
1.数据库及其管理系统数据库又称综合数据库,用来存储有关领域问题的初始事实、问题描述以及系统推理过程中得到的种种中间状态或结果等,系统的目标结果也存于其中。
数据库相当于专家系统的工作存储器,其规模和结构可根据系统目的的不同而不同,在系统推理过程中,数据库的内容是动态变化的。
是专家系统不可缺少的重要组成部分。
2.知识库及其管理系统知识库是专家系统的知识存储器,用来存放被求解问题的相关领域内的原理性知识或一些相关的事实以及专家的经验性知识。
3.知识获取机构知识获取机构是专家系统中的一个重要部分,它负责系统的知识获取,由一组程序组成。
其基本任务是从知识工程师那里获得知识或从训练数据中自动获取知识,并把得到的知识送入知识库中,并确保知识的一致性及完整性。
4.推理机推理机是专家系统在解决问题时的思维推理核心,它是一组程序,用以模拟领域专家思维过程,以使整个专家系统能够以逻辑方式进行问题求解。
5.解释器解释器是人与机接口相连的部件,它负责对专家系统的行为进行解释,并通过人机接口界面提供给用户。
它实际也是一组程序,其主要功能是对系统的推理过程进行跟踪和记录,回答用户的提问,使用户能够了解推理的过程及所运用的知识和数据,并负责解释系统身的推理结果。
6.人机接口人机接口是专家系统的另一个关键组成部分,它是专家系统与外界进行通信与交互的桥梁,由一组程序与相应的硬件组成。
1.3 知识获取1.知识获取的任务满足领域问题求解的需求,一般包括知识抽取、表示、输入和检测等几项工作。
(1)知识抽取。
是指把蕴涵于多个知识源中的知识经过分析、识别、理解、遴选、归纳等处理后抽取出来,以便用于知识库的建立。
(2)知识的表示。
知识源中的知识通常是以自然语言、图形、表格等形式表示的,而专家系统中所涉及的知识库中的知识则是以计算机能够识别和运用的形式来表示的,因此,在建立知识库时,必须要将知识源中的知识转换为计算机能够识别或运用的形式。
(3)知识的输入。
把经过知识工程师从知识源获取的、以某种表示形式表示的知识经过在-计算机上编辑、编译送入知识库的过程。
要把知识输入计算机,目前一般有两条途径:一条是利用计算机系统附带的应用编辑软件;另一条是利用专门编制的人工智能知识编辑系统。
前者的优点是简单、方便,无须编制专门程序即可直接使用;后者的优点是针对性、实用性强,更符合知识输入的要求。
(4)知识的检测。
主要任务是保证知识库的一致性和完整性。
在建立知识库的过程中,抽取、表示以及输入的各个环节中,无论哪一步出现错误,都会直接影响知识库中知识的正确性,进而影响到专家系统的性能。
因此,对知识库检测的目的就是希望尽早发现和纠正可能出现的错误。
2.知识获取主要途径按照知识获取所使用的手段,可分为人工获取、半自动化获取和自动化获取三种。
(1)人工获取。
从领域专家那里获取知识时一般采用如下的技术步骤:·现场观察·问题讨论·问题描述·问题分析·建造原型系统·系统检查·系统验证(2)半自动化获取。
在人工知识获取的基础上增加了部分机器学习功能,使专家系统本身能够从大量的实例中归纳出某些知识。
以下的一些方法属于半自动化获取方法。
①智能知识编辑。
这是一个通过建立智能知识编辑器来实现知识获取的方法,让领域知识的专家通过智能知识编辑器直接与专家系统打交道,回答智能知识编辑器提出的问题,并由智能知识编辑器自动生成知识库。
②知识发现系统。
这是一种利用计算机辅助以获取知识的系统,是目前机器学习领域研究的主要内容。
(3)自动知识获取自动知识获取是指通过专家系统本身来获取知识,因此,系统应具备如下的功能。
①具有语音、文字、图像的识别功能。
为了实现知识的自动获取,要求系统应具有语音识别、文字识别及图像识别的功能。
②具有理解、分析、归纳的能力。
领域专家以语音或文字等提供的知识首先能够被系统识别,并在理解的基础上进行分析、归纳、提炼、综合,从中抽出专家系统所需要的知识并送入知识库。
③具有从自身运行过程中学习的能力。
投入使用后,专家系统本身不断总结经验,从运行中归纳产生出新的知识,纠正知识库中可能存在的问题,实现知识库的自我完善。
1.4 专家系统的设计与建造1.开发专家系统的基本要求(1)选择合适的应用领域及问题哪些领域适合开发专家系统,是开发专家系统首先要考虑的一个问题。
下面是选择专家系统应用领域时应遵循的一些原则。
①该应用领域是否有使用专家系统的需求。
②所涉及的领域问题是否适合用专家系统来解决。
③领域专家的经验是否易于获得。
(2)建造专家系统可行性①经济和技术可行性。
经济和技术可行性主要考虑建造专家系统所要付出的代价是否值得,所需技术是否完备。
以下几种情况是不合适的:(a)问题求解需要很大的物质或金钱代价。
(b)人类专家的知识被遗忘或在知识传递中被损失。
(c)领域专家的知识或经验非常少。
(d)在许多情况下必须人类专家亲临现场解决。
②操作可行性。
操作可行性是指当其他条件具备之后,能否付诸实施。
在专家系统建造时,领域问题的难度和系统规模要适中。
(3)领域专家的积极参与一般来说,与高水平领域专家相互合作而开发的专家系统,具有较好的性能,解决实际问题的能力也比较强,并且易于被别的同行专家和用户所认同。
(4)知识的可表达性如何准确地表述专家系统的知识,直接影响到专家系统中知识的符合率。
所谓符合率就是专家系统中形式化后的规则与专家所给规则完全符合的百分数。
因此,能否准确地表示领域专家的知识是极其重要的。
2.专家系统建造步骤专家系统是一种基于知识的问题求解系统,其设计与建造方法尚未形成规范,1977年费根鲍姆提出了“知识工程”的概念,期望专家系统的设计与建设过程能够实现工程化、规范化,随后有人提出了基于知识系统开发的知识工程生命周期的概念。
知识工程生命周期与软件工程生命周期相比,有较相似的地方,也有不同之处。
专家系统是一种基于知识的、面向领域的、具有专家级问题求解能力的复杂软件系统,不同系统的开发过程又有着各自不同的特殊性和侧重点。
因此,不同的专家系统开发人员对知识工程生命周期的划分也有不同的观点。
有人将知识工程生命期划分为:系统分析、需求说明、技术选定、数据设计、进程设计及物理设计6个阶段;也有人将知识工程生命期简单的划分为问题确定、概念化、形式化、实现和测试5个阶段。
这些划分方法虽然在基于知识的系统——专家系统的建设规范化方面发挥了一定的作用,但却无法解决专家系统建造过程中,知识获取及知识的形式化方面存在的瓶颈问题。
原型法是解决专家系统建造中知识获取瓶颈问题的一种较好方法,其基本思想是:首先建立一个能够反映用户主要需求和专家求解问题基本方法的系统原型,然后让用户和专家看一看未来系统在功能和求解能力上的概貌,以便让用户和专家对系统的功能和知识库提出修改要求。
然后将原型反复修改,最终建立符合用户要求、具有专家级求解能力的新系统。
基于原型法的专家系统开发过程一般由8个阶段构成:应用领域选择与可行性分析、需求分析、原型设计与开发、原型评价、最终系统设计、最终系统实现、系统测试与评价、系统维护。
如图8.2所示。
1.5 专家系统的评价对专家系统的评价并不是一件容易的事情。
如何评价一个专家系统目前尚无统一的标准。
下面结合国内外的一些研究文献,从评价方法、评价内容两个方面来讨论专家系统的评价问题。
1.专家系统的评价方法以下两种方法是在评价专家系统时常用的方法。
(1)“逸事”评价法。
这种方法是利用一些简单的、具有启发性的或能说明问题的一些典型例子来对系统的性能进行说明,证明系统在这些例子所具有的条件下工作性能良好。
(2)实验的方法。
该方法要求利用实验来评价专家系统在处理存储于数据库中的各种问题实例时,所表现出的性能。
在使用这种方法对系统进行评价时,必须制定一种严格的试验过程,以便把专家系统产生的解释与相应实例的实际解释进行比较。
2.评价内容对专家系统的评价内容主要包括以下几项:(1)知识库中知识是否完备。
(2)知识的表示方法与组织方法是否适当。
(3)系统的推理是否正确。
(4)系统的解释功能是否完全与合理。
(5)用户界面如何。
(6)系统的效率如何。
(7)系统的可维护性如何。
(8)系统的效益如何。
1.6 专家系统开发工具专家系统开发工具与环境,是人们为高效率开发专家系统而设计的一种高级程序系统或高级程序设计语言环境。
目前,常用的专家系统开发工具和环境可分为4种主要类型:语言型开发工具、骨架型开发工具、通用型开发工具、开发环境与辅助型开发工具。
1.语言型开发工具程序设计语言是开发专家系统的最常用和最基本的工具,包括通用程序设计语言和人工智能语言。
用于专家系统开发的通用程序设计语言的主要代表有C、C++、Pascal、ADA等;人工智能语言的主要代表有SMALLTALK、LISP和PROLOG。
SMALLTALK是面向对象型的语言,LISP为函数型语言,而PROLOG 则是逻辑型语言。