1、专家系统原理与设计,专家系统原理与设计,1.专家系统的概念 2.专家系统的结构 3.专家系统设计与实现 4.专家系统开发工具与环境,1、 专家系统的概念,1 .1什么是专家系统亦称专家咨询系统,它是一种具有大量专门知识与经验的智能计算机系统,通常,主要指软件系统。它把专门领域中人类专家的知识和思考解决问题的方法、经验和诀窍组织整理且存储在计算机中,不但能模拟领域专家的思维过程,而且能让计算机宛如人类专家那样智能地解决实际问题。狭义地讲,专家系统就是人类专家智慧的拷贝,是人类专家的某种化身。广义地讲,专家系统也泛指那些具有“专家级”水平的知识系统,从总体上达到专家级水平。,1.2专家系统的特点
2、: 专家系统与人类专家比较具有以下一些特点: 1)专家系统是人类专家智能的模拟、延伸和扩展。 2)专家系统是专家可以信赖和利用的高水平智能助手和有效工具。 3)专家系统可具有一个或多个专家的知识和经验,具有专门知识的启发性,能以接近于人类专家的水平在特定领域工作,注重特定问题的求解。 4)专家系统能高效、准确、迅速地工作。 5)专家系统突破了时间和空间的限制,程序可永久保存并可复制。 6)专家系统能进行有效推理。 7)具有透明性,能以可理解的方式解释推理过程。 8)具有自学习能力,总结规律,扩充和完善系统自身。,同一般的计算机应用系统(如数值计算、数据处理系统等)相比,专家系统具有下列特点:
3、(1)从处理的问题性质看,专家系统善于解决那些不确定性的、非结构化的、没有算法解或虽有算法解但在现有的机器上无法实施的困难问题。 (2)从处理问题的方法看,专家系统则是靠知识和推理来解决问题(不像传统软件系统使用固定的算法来解决问题),所以,专家系统是基于知识的智能问题求解系统。,(3)从系统的结构来看,专家系统则强调知识与推理的分离,因而系统具有很好的灵活性和可扩充性。(4)专家系统一般还具有解释功能,即在运行过程中一方面能回答用户提出的问题,另一方面还能对最后的输出(结论)或处理问题的过程作出解释。(5)有些专家系统还具有“自学习”能力,即不断对自己的知识进行扩充、完善和提炼。这一点是传统
4、系统所无法比拟的。(6)专家系统不像人那样容易疲劳、遗忘,易受环境、情绪等的影响,它可始终如一地以专家级的高水平求解问题。,1.3知识的编程和传统的计算机编程的比较,项目 知识型编程 传统编程 内容 知识的定义、表示和使用 数据处理步骤的描述和使用 能力 超过程序员理解水平 与程序员理解水平相等 表现 与说明型为主 与过程型为主 模型 思考模型 处理模型 用途 对大知识库处理、问题求解 对大数据库进行处理 手法 符号处理 数值处理 运算 推理控制过程 重复计算过程 理解 容易 困难 扩充 容易 困难 解释 容易做到在运行中解释 不容易做到在运行中解释 处理 高度的集成处理 顺序的批处理 规则
5、启发式 算法式,1.4 专家系统的类型关于专家系统的分类,目前还无定论。仅从几个不同的侧面对此进行讨论。1.按用途分类按用途分类,专家系统可分为:诊断型、解释型、预测型、决策型、设计型、规划型、控制型、调度型等几种类型。 2.按输出结果分类按输出结果分类,专家系统可分为分析型和设计型。,3.按知识表示分类目前所用的知识表示形式有:产生式规则、一阶谓词逻辑、框架、语义网等。 4.按知识分类知识可分为确定性知识和不确定性知识,所以,按知识分类,专家系统又可分为精确推理型和不精确推理型(如,模糊专家系统)。5.按技术分类按采用的技术分类,专家系统可分为符号推理专家系统和神经网络专家系统。,6.按规模
6、分类按规模分类,可分为大型协同式专家系统和微专家系统。 7.按结构分类按结构分类可分为集中式和分布式,单机型和网络型(即网上专家系统)。,神经网络ES自动获取模块输入、组织并存储专家提供的学习实例、选定神经网络的结构、调用神经网络的学习算法,为知识库实现知识获取。当新的学习实例输入后,知识获取模块通过对新实例的学习,自动获得新的网络权值分布,从而更新了知识库。如图所示。,2.1 概念结构从概念来讲,一个专家系统应具有如图1所示的一般结构模式。其中知识库和推理机是两个最基本的模块。1.知识库(KnowledgeBase)所谓知识库,就是以某种表示形式存储于计算机中的知识的集合。知识库通常是以一个
7、个文件的形式存放于外部介质上,专家系统运行时将被调入内存。知识库中的知识一般包括专家知识、领域知识和元知识。,2、 专家系统的结构,图 1专家系统的概念结构,2.推理机(Inferense Engine)所谓推理机,就是实现(机器)推理的程序。这里的推理,是一个广义的概念,它既包括通常的逻辑推理,也包括基于产生式的操作。例如: AB A B,3.动态数据库动态数据库也称全局数据库、综合数据库、工作存储器、黑板等,它是存放初始证据事实、推理结果和控制信息的场所,或者说它是上述各种数据构成的集合。 4.人机界面这里的人机界面指的是最终用户与专家系统的交互界面。 5.解释模块解释程序模块专门负责向用
8、户解释专家系统的行为和结果。,6.知识库管理系统知识库管理系统是知识库的支撑软件。知识库管理系统对知识库的作用,类似于数据库管理系统对数据库的作用,其功能包括知识库的建立、删除、重组;知识的获取 (主要指录入和编辑)、维护、查询、更新;以及对知识的检查,包括一致性、冗余性和完整性检查等等。,图2 专家系统的理想结构,2.2 实际结构上面介绍的专家系统结构,是专家系统的概念模型,或者说是只强调知识和推理这一主要特征的专家系统结构。但专家系统终究仍是一种计算机应用系统。所以,它与其它应用系统一样是解决实际问题的。而实际问题往往是错综复杂的,比如,可能需要多次推理或多路推理或多层推理才能解决,而知识
9、库也可能是多块或多层的。,图3 专家系统的实际结构示例,图4 地质图件绘制智能辅助系统结构,2.3 网络与分布式结构在网络环境下,专家系统也可以设计成网络结构,如“客户机/服务器”(Client/Server)结构(如图5(a)所示),或浏览器/服务器(Browser/Server)结构(如图5(b)所示)。我们称后一种结构的专家系统为网上专家系统。分布式结构则是一种适合于分布式计算环境的专家系统。例如那些多学科、多专家联合作业,协同解题的大型专家系统,就可以设计成分布式结构。这类专家系统也就称为分布式专家系统。,图5 专家系统的客户(机)/服务器结构及浏览器/服务器结构,客户(机),Brow
10、ser,服务器,Web Server,Internet,3、专家系统设计与实现,3.1 ES设计的原则 根据ES的特点,在设计中应遵循下列原则: 专门任务。ES设计应面向专家知识和经验行之有效的场合,面向专业性的专门任务。 原型设计。采用“最小系统观点”进行系统原型设计,逐步修改、扩充和完善。 专家合作。领域专家与知识工程师相互合作,是知识获取成功的关键。 用户参与。用户参与ES的设计和开发,有助于人-机接口设计及系统的运行和评价。 辅助工具。采用ES开发工具进行辅助设计,借鉴已有系统经验,提高设计效率。,专家系统设计与实现的一般过程,建立专家系统的一般步骤,由图中可以看出,专家系统的开发有如
11、下特点:(1)知识获取与知识表示设计是一切工作的起点;(2)知识表示以及知识描述语言确定后,各项设计(图中并列的六个设计)可同时进行。还需说明的是:(1)对于一个实际的专家系统,在系统分析阶段就应该首先弄清楚:系统中哪里需要专家知识,专家知识的作用是什么?以及系统中各专家模块的输入是什么?处理是什么?输出又是什么?,(2)系统投入运行后,一般来说,其知识库还需不断扩充、更新、完善和优化。所以专家系统的开发更适合采用快速原型法。(3)对系统的评价主要看它解决问题是否达到专家水平。(4)上述的所谓“纯专家系统”就是一个实际专家系统中的专家模块部分。那么,对于系统其他部分的分析与设计,原则上讲,与一
12、般计算机应用系统完全一样,即可按软件工程规范和程序进行。,3.2 知识获取知识获取是建造专家系统的关键一步,也是较为困难的一步,被称为建造专家系统的“瓶颈”。知识获取大体有三种途径。1.人工获取人工获取,即计算机人员(或知识工程师)与领域专家合作,对有关领域知识和专家知识,进行挖掘、搜集、分析、综合、整理、归纳,然后以某种表示形式存入知识库。,2.半自动获取半自动获取,即利用某种专门的知识获取系统,采取提示、指导或问答的方式,帮助专家提取、归纳有关知识,并自动记入知识库。3.自动获取自动获取又可分为两种形式:一种是系统本身具有一种机制,使得系统在运行过程中能不断地总结经验,并修改和扩充自己的知
13、识库;另一种是开发专门的机器学习系统,让机器自动从实际问题中获取知识,并填充知识库。,3.3 知识表示与知识描述语言设计知识表示与知识描述语言设计是根据所获得知识的特点,选择或设计某种知识表示形式,并为这种表示形式设计相应的知识描述语言。所谓知识描述语言,就是知识的具体语法结构形式。所以,知识描述语言既要面向人、面向用户,又要面向知识表示、面向机器,还要面向推理、面向知识运用。这就要求知识描述语言既能为用户提供一种方便、易懂的外部知识表达形式,又能将这种外部表示转换成容易存储、管理、运用的内部形式。,3.4 知识库与知识库管理系统设计知识库是专家系统的核心。知识库的质量直接关系到整个系统的性能
14、和效率。因此,知识库涉及知识的组织与管理。知识的组织决定了知识库的结构,知识的管理包括知识库的建立、删除、重组及维护和知识的录入、查询、更新、优化等,还有知识的完整性、一致性、冗余性检查和安全保护等方面的工作。知识管理由知识库管理系统负责。,1.知识库设计知识库设计主要是设计知识库的结构,即知识的组织形式。专家系统(或知识工程)中所涉及的知识库,一般取层次结构或网状结构模式。这种结构模式是把知识按某种原则进行分类,然后分块分层组织存放,如按元知识、专家知识、领域知识等分层组织;而每一块和每一层还可以再分块分层。这样,整个知识库就呈树型或网状结构。例如,下图所示的就是一个医疗诊断知识库的层次结构
15、。,医疗诊断知识库层次结构,2.知识库管理系统设计知识库管理系统应包括知识一级和知识库一级的各种管理功能。1)知识操作功能设计知识操作功能包括知识的添加、删除、修改、查询和统计等。这些功能可采用两种方法来实现。一种方法就是利用屏幕窗口,通过人机对话方式实现知识的增、删、改、 查等;另一种方法就是用全屏幕编辑方式,让用户直接用键盘按知识描述语言的语法格式编辑知识。,2)知识检查功能设计知识检查包括知识的一致性、完整性、冗余性等检查。所谓知识的一致性,就是知识库中的知识必须是相容的,即无矛盾。例如,下面的两条规则r1:if P then Qr2:if P then Q就是矛盾的。那么,像这样的规则
16、就不能同时存在于一个知识库中。,所谓完整性,是指知识中的约束条件,称为完整性约束。例如,小王的身高x米,则必须满足:x3米;又如,弟弟今年x岁,哥哥今年y岁,则必须满足xy。否则就破坏了知识的完整性。所谓冗余性,就是重复、多余等。冗余性检查就是检查知识库中的知识是否存在冗余。也就是要求不能存在冗余。冗余的表现有重复、包含、环路等现象。例如,下面的三条规则:r1:if P then Qr2:if Q then Rr3:if P then R,3) 知识库操作设计知识库操作包括知识库(文件)的建立、删除、分解、合并等。这里着重要说明的是知识库的分解与合并。这两种功能类似于关系数据库的投影、选择和连
17、接操作,它们实现的是知识库的重组。我们说,知识库的重组也是可能甚至是必要的。因为随着系统的运行,可能会发现原先的知识组合不合理,因此就需要重新组合,这时就需要使用知识库的分解与合并功能。,3.5 推理机与解释功能设计1.从哪里着手 ;推理机是与知识库对应的专家系统的另一重要部件。推理机的推理是基于知识库中的知识进行的。所以,推理机就必须与知识库及其知识相适应、相配套。具体来讲,就是推理机必须与知识库的结构、层次以及其中知识的具体表示形式等相协调、相匹配。否则,推理机与知识库将无法接轨。因此,设计推理机时,首先得对知识库有所了解。,2. 还应考虑些什么对推理机本身而言,还要考虑推理的方式、方法和
18、控制策略等。例如,对于推理方式,是正向推理,还是反向推理或双向推理?是精确推理,还是不精确推理?是串行推理,还是并行推理?是单调推理,还是非单调推理?又如,对于推理方法,是用归结法,还是用自然演绎法?对于不精确推理采用什么样的推理模型?还有,对于搜索控制,是采用深度优先还是广度优先,对于冲突消解是依据优先数,还是可信度或程度(即隶属度)等等。,3. 算法设计与程序设计做了上述的分析以后,就可着手设计推理机的算法了。对于一个基于规则的系统来说,其推理机也就相当于产生式系统中的执行控制部件,所以其运行过程也就是产生系统的运行过程,因此,产生式系统所采用的算法,或者图搜索中所用的算法也就是这里的推理
19、机所用的算法。算法确定后,就可进行程序设计。至于推理机用何种程序语言实现,这个并无什么限制,如可以用传统的LISP或PROLOG语言,也用当前流行的C或C+语言。,4. 解释机制如何实现另外,在推理机的设计中还得考虑解释机制。因为专家系统一般要求要有解释功能。即在推理中要能回答用户“为什么”的问题,在推理结束后,要能回答“怎么样(得到结果)”的问题。从系统的结构上讲,一般是把解释作为一个独立的模块,但实际上解释功能也是与推理机密切相关的。因为要解释就必须对推理进行实时跟踪。,3.6 系统结构设计系统构成技术被称为人工智能的三大技术之一。所以,对一个专家系统来说,其体系结构就显得非常重要。虽然从
20、原理来讲,专家系统由知识库、推理机等部分组成,但由于受问题领域、系统规模、知识表示方法、知识库结构以及其他特殊性等诸多因素的影响,故专家系统的体系结构难以形成固定的模式。一般来讲,有诸如独立式(一个“纯”专家模块)、混合式(还有其他处理模块)、集中式、分布式、层次式以及“黑板模型”等。,3.7 人机界面设计人机界面对于一个实用专家系统(特别是咨询型知识系统)来说至关重要。一个专家系统一般有两个人机界面:一个是面向系统开发和维护者的;一个是面向最终使用者的。前一个界面由开发工具提供;后一个则是专家系统自身的一部分。由于图形用户界面(GUI)的广泛使用,所以目前专家系统的开发界面已达到相当高的水平
21、。而专家系统的使用界面相对还比较落后。这是因为,使用界面往往要涉及“人机对话”,如人对系统的询问、系统对人的回答,特别是系统对用户的解释。,4 专家系统开发工具与环境,4.1 专家系统开发工具专家系统(ES)工具有时也叫做ES外壳和ES环境,主要是研制样机的工具,通过抽调某个ES的知识库,就可从特殊的ES中抽出外壳来而成为ES工具。ES工具支持的功能包括:推理过程、数据存取、自然语言对话的界面(接口)、过程的界面、解释功能。,ES开发工具和环境可分为五种主要类型:程序设计语言、知识工程语言、辅助型工具、支持工具及开发环境,如图所示。专家系统建造方法可以分成以下三种: 利用计算机高级语言编写建造
22、ES; 利用计算机程序设计环境编写建造ES; 用计算机程序设计工具建造ES。,4.2专家系统语言型工具 4.2.1程序设计语言程序设计语言包括面向问题的语言和符号处理语言。面向问题的语言是为特定的问题类型而设计的,其主要代表有C、PASCAL、ADA等,它们在处理代数运算方面有很方便的特征;符号处理语言是为人工智能应用而设计的,它的主要代表有以LISP为代表的函数型语言,以Prolog为代表的逻辑型语言,以及C+、Java等为代表的面向对象语言。这些语言典型的特点是具有很强的递归功能,4.2.2 知识工程语言 骨架型知识工程语言 骨架型知识工程语言也称为专家系统外壳,它是由一些已经成熟的具体专
23、家系统演变来的。其演变方法是,抽去这些专家系统中的具体知识,保留它们的体系结构和推理机功能,再把领域专用的界面改为通用界面,这样,就可得到相应的专家系统外壳。当用它来建造专家系统时,只须把相应领域的专家知识用外壳规定的知识表示模式装入知识库,就可以快速地产生一个新的专家系统。ES外壳的典型代表有EMYCIN、KAS及EXPERT等 通用型知识工程语言通用型ES开发工具,是专门用于构造和调试ES的通用程序设计语言。它是完全重新设计的一类ES开发工具,不依赖于任何已有ES,不针对任何具体领域,能够处理不同问题领域和不同问题类型。它比骨架系统提供了更多的对数据存取和查找的控制,具有更大的灵活性和通用
24、性,但比较难于使用。,表 通用型知识工程语言,4.3专家系统设计工具 4.3.1辅助型工具ES辅助工具是ES开发工具中支撑环境的一部分,主要用于帮助建造高质量的知识库和调试ES,包括一些用来帮助获取知识、表达知识的程序,以及帮助知识工程师设计ES的程序。 1. 知识获取辅助工具如美国斯坦福大学开发的TEIRESIAS编辑器,能获得有效的良结构的专家领域知识,并加工、编辑到知识库中。,2.系统设计助手 ES的设计助手有以下三种类型: 设计辅助工具。它用来实现ES的辅助设计。例如,美国斯坦福大学用INTERLISP语言开发的AGE就是一例。它包括以下4个子系统: 设计子系统:指导用户使用组合规则的
25、预组合模型。 编辑子系统:辅助用户选用预制构件模块,装入领域知识和控制信息,建造知识库。 解释子系统:执行用户的程序,进行知识推理以求解问题,并提供查错手段,建造推理机。 跟踪子系统:进行全面的跟踪和测试的子系统。 归纳工具。它用来帮助开发者从大量的初始实例出发,归纳产生出规则或决策树。 辅助建造工具。它用来辅助建造ES。,4.3.2支持工具ES支持工具也称为ES支持环境或支持工具集。它们用来执行与ES建造工具的连接,帮助用户与ES对话,辅助程序的调试或作为它的一部分。 辅助调试工具。该工具提供相应的跟踪辅助功能、自动测试模块及中断设施等。跟踪辅助使用户能跟踪或显示系统的操作。自动测试模块用于
26、测试知识库,指出知识库的薄弱部分,选择修改对象。中断程序包使用户能预先告知程序在什么位置停止。 知识库编辑器。这是基于文本编辑的知识编辑工具。 输入/输出界面。此界面提供实时知识获取工具和多种不同输入/输出方式。有些工具提供运行时实现知识获取功能,此时工具机制本身使用户能够与运行的系统对话。 解释设施。这是用来向用户解释系统是如何得到某个特定结果的。,4.4 专家系统开发环境 1.定义: ES开发环境是以一种或多种工具和方法为核心,由若干计算机子程序或者模块组成的,为高效率开发ES而设计和实现的大型智能计算机软件系统,加上与之配套的各种辅助工具和界面环境的完整的集成,形成一种集成化ES开发工具包,用于解决特殊范围或层次的问题。 2.功能: 多种知识表示:至少提供两、三种以上知识表示。 多种不精确推理模型,最好还留有用户自定义接口。 多种知识获取手段:除了必需的知识编辑工具外,还应有自动知识获取即机器学习功能,以及知识求精手段。, 多样的辅助工具:包括数据库访问、电子表格、作图等工具。 多样的友好用户界面:包括开发界面和ES产品的用户界面,应该是多媒体的,并且有自然语言接口。 广泛的适应性:能满足多种应用领域的特殊需求,具有很好的通用性。,谢 谢 !,