SELinux详解(带完整中文标签)
SELinux详解(带完整中文标签),不错的介绍selinux的文档第5章:"类型增强策略ˆε在这·章中,我们描述了所有核心策咯语言规则和编写类型增强策略的指令。类型增强是 SELinux最重要的访问控制特性,第6章:"角色和用户"。在这一章中,我们描述」 seLinux基于角色的访问控制杋制,以及策略语言中的角色和用户如何支持类型增强策。第7章:"约東″。在这一章中,我们描述∫ sELinux策略语言的约束特性,即在支持强制策咯类型的策咯内提供约束。第8章:"多级安仝"。在这一章中,我们描述了除核心强制访问控制之外的,允许非强制的多级安全访问控制的策咯语言特性。第9章:"条件策略″。在这一章中,我们描述了策眳语言旳増强,使我们可以在类型增强策略中应用布尔表达式,布尔表达式的值在生产系统上,在运行过程中可以被改变第10章:"对象标记″。在这一章中,我们结束了对簧略语言的描述,同时描述了如何标记对象,以及如何在 seLinux增强的访问控制支持下管理那些标记第三部分:"创建和编写 seLinux安仝策略"。在这最后一部分中,我们向你展示如何使用策略语言,同时描写了建立安仝策略的方法,以及如何管理一个 SELinux系统和调试SELinuX策略模块。第11章:"最早的样例箦略″。在这一章中,我们描述了样例篑略,它是一个创建 sELinuX箎略的方法(源文件,构建工具和示范等),自从美国国家安全局(NSA)释放出最初的样例策略以来,已经经过多年的发展和改进。第12章:ˆ参考策略″。在这一章中,我们描述了一个新的创建 seLinuX策略的方法,它提供了所有样例策略的特性。最近发布的 Fedora core5就是使用参考策略作为它的策略基础的。第13章:"管理 SELinux系统"。在这一章中,我们描述了 SELinux如何影响 Linux系统的管理的。第14章:"编写策略模块"。在这最后一章中,我们利用在木书中学到的所有知识总结成一个向导式的指南,指导如何为样例策略和参考策略编写策略模块。附录。木书结尾包括了儿个附加的参考资料的附录附录A:"获取 SELinⅹ样例策略″。提供了关于如何获取本书中描述过的样例策略源文件的说明。附录B:"参与和额外信息"。列出了关于 seLinux的额外信息源,以及如何参与 seLinux的开发。附录C:"对象类参考"。提供了个详绀的关于 SELinux内核对象类和关联的许可的字典附录D:" seLinux命令和实用程序″。提供」一些实用程序和第三方工只,帮助开发SELinuX策略和管理 SELinux系统。如何使用这本书很少有人翻来覆去地阅读一本技术书籍。大多数人都只想理解某个特定的知识点或开始探索一下新技术。尽管反复阅读确实是可取的,这里我们也给出一和备选的方法。透彻阅读并理解第一部分的内容(第1-3章)。这一部分提供了必要的背景知识和概念,对深入理解 SELinux是很有帮助的。特别要仔细阅读和理解第2章。你可能想撇去第二部分(第4-10章)的内容,这一部分主要讲解了 seLinux策略语言。对大多数人而言,这一部分的内容确实显得太深入了,特别是对于初次接触 SELinux的人更是如此。因此,你可以跳过第4章和第10章,但要仔细阅读第5章。这些章节覆盖了几乎所有 seLinux策略语言元紊,在编写策略时就会使用到。最后,阅读第三部分的所有章节(第11-14章),描述了你感兴趣的问题。阅读这些章节时使用第二部分作参考。侧边栏,注意,警告和提示贯穿本书,我们广泛使用了侧边栏和注解以提供附加的信息或强调某个项目,也包括了大量的警告和提示。下面是它们在本书中的约定。侧边栏:我们使用侧边栏主要出于两个目的。首先,使用它描述在章节主体内容中没有直接涉及到附加信息。例如:我们使用侧边栏列出不同 SeLinux版本之间的差异或深入描述读者感兴趣的某个特定的概念。在第二部分中,我们使用侧边栏来描述所有 seLinux策略语言语句的完整语法。这些语法侧边栏为大量策略语言元素提供了快速参考注意:我们伩用注意为某个特定知识点提供了附加的强调。通常注意是非常短的附加说明警告:警告与注意的使用类似,只是它更着重强调或指出需要额外小心提示:为如何执行一个给定的功能提供快速提示和建议,或使某事交得容易的技巧。排版约定所有技术书籍都必须使用某种排版约定,以便于与读者更好地沟通。我们使用斜体宁表示定义概念时的一个关键概念(通常是首次使用时定义),同时也使用斜体字表示强调。对于着重强调的地方,我们使用粗体字对所有 SELinux策略语言元素( allow),用户命令(ps,ls)或你输入的内谷或你在电脑显示屏上看到的内容使用固定宽度的字体。对于显小命令及其输出的长清单,我们使用 Bourne shell标准提小符#( root shell)和$(普通用户shel1)。用户输入使用粗体加固定宽度字体。例如:Is -lz /etc/selinux/W---yroct rcotsystem u: object_r: selinux_config_tconfig彐rwxr-xr-roctrcotsystem u: object r: selinux con=ig tstrictdrwxr-xr-xroct rcotsystcm u: object r: selinux con=ig ttargeted谈论到斥函数或系统调用时,我们约定使用·对空括号,如 execve(,对策略带有参数的宏也使用这个约定,如 domain auto trans(。当参考Linx命令或函数的帮助手册时,对命令或函数使用斜体字,并用括弧将手册小节括起来。如make(1), execve(2)。从哪里获取 SELinuxSELinux在多个 Linux发行版中受到支持,包括 Red Hat Enterprise linux, Red hatFedora core, Gentoo和 Debian。 Fedora core已经成为 SELinux社区测试和集成大部分创新技术的主要平台。 Red Hat Enterprise linux版本4(RHEL4)是第一个完全支持 SeLinux的大型商业发行版。我们在本书中描述的所有内容都与RHEL4和其他发行版有关。我们选择 Fedora core4(FC4)作为本书的基础,它是REI4之后释放出来的一个 FedoraCore版本。我们描述的所有内容都可以在FCA系统上重现。在我们花了八个月编写此书期间,FC4在不断发展、测试、发布。当我们写完此书时 Fedora Core5(FC5)刚刚发布。FC5集成了许多 SELinux新的特性,FC5的特性可能暗示了RIEL5将会更新的内容。实际上,我们在本书中标注了FC4中没有FC5中的新特性和功能。同样,我们也标了FC4中有但RHEL4中没有的特性如果你是一个企业用户或开发人员,你很可能正在使用RHE4或计划使用RHEL5。目前我们使用RHEL4开发我们的个业应用产品。如果你是一名 seLinux的开发人员或早期使用者,你可能正在使用某 Fedora ceυre版木或某些其他发行版。无论你是哪种情况,木书都将会向你提供大量的关于如何使用 SELinuX和开发 SELinux策略的信息。如何取得本书中的样例策略贯穿本书,我们给出了大量的 SElinux策略样例。这些样例基于 Red hat发布 FedoraCore4附带的 strict策略。我们在第1l章详细地介绍了这个策略。C4默认使用的是 target策略,而不是 strict策略,因此你必须用更多的步骤来获得我们样例使用的基础策略。在第三部分中,我们扩大了视野,涵盖了其但类型的策略。在附录A中,我们提供了如何获得本书使用到的样例策略源文件的说明。目录第一部分: SELinux摘要1第1章.背景11.1.软件失效的必然性11.2.操作系统访问控制安全的进展22.1.引用监视程序原理21.2.2.任意访问控制的问题31.2.3.强制访问控制的起源31.2.4.更好的强制访问控制41.2.5. sELinux的发展51.3.小结6练习6第2章:概念12.1.类型强制的安全上下文12.1.1.对比 SELinux和标准 Linux22.1.2.安全上下文22.2.类型强制访问控制32.2.1.类型强制示例42.2.2.域转变的问题52.2.3.标准 Linux安全中的 setuid程序62.2.4.域转变72.2.5.默认域转变: type transition指令2.3.角色92.4. SELinux中的多层安全102.5.精通 SELinux特性112.5.1.重游 passwd示例122.5.2精读策略文件122.6.小结13练习14第3章.架构13.1.内核架构13.1.1.LSM框架13.1.2. SELinuX LSM模块23.2.用户空间客体管理器43.2.1.用户空间客体管理器的内核支持43.2.2.策略服务器架构53.3. SELinux策略语言63.3.1.本地 SELinux策略语言编译器63.3.2.单个策略中的源策咯模块83.3.3.载入式策略模块83.3.4.构建和安装单策略83.4.小结10练习10第部分: SELinux策略语言1第4章.客体类别和许可14.1. seLinux中客体类别的用途14.2.在 SELinux策略中定义客体类别24.2.1.声明客体类别24.2.2.声明并连接客体类别许可34.3.有效的客体类别54.3.1.与文件相关的客体类别54.3.2.与网终有关的客体类别74.3.3. system V IPC客体类别84.3.4.其它杂类客体类别84.4.客体类别许可示例94.4.1.文件客体类别许可94.4.2.进程客体类别许可115.使用Apol研究客体类别144.6.小结16练习16第5章-类型强制15.1.类型强制15.2.类型、属性和别名25.2.1.类型声明25.2.2.类型和属性35.2.3.关联类型和属性45.2.4.别名55.3.访问向量规则65.3.1.通用AV规则语法75.3.2.允许( allow)规则115.3.3审核( audit)规则1l5.3.4. neverallow规则135.4.类型规则145.4.1.通用类型规则语法155.4.2类型转换规则165.4.3.类型改变规则185.5.用Apol研究类型强制规则195.6.小结21练习22第6章.角色和用户16.1. SELinux中基于角色的访问控制16.1.1. SELinux中RBAC概述26.1.2.用角色管理用户权限36.1.3.客体安全上下文中的用户和角色46.2.角色和角色语句46.2.1.角色声明语句46.2.2.角色a11w规则56.2.3.角色转换规则56.2.4.角色控制语句66.3.用户和用户语句76.3.1.声明用户及其关联的角色76.3.2.将 Linux用户映射到 SELinuX用户86.4.用Apol分析角色和用户86.5.小结10练习11第7章.约東17.1.近距离查看访问决定算法7.2.约束语句27.3.标记转换约束57.4.小结8练习8第8章.多层安全8.1.多层安全约束8.2.开启了MLS后的安全上下文18.2.1.安全级别定义28.2.2MLS对安全上下文的扩展48.3.MS约束58.3.1. mlsconstrain语句58.3.2. mlsvalidatetrans语句88.4.MS的其它作用108.5.小结11练习11第9章.条件策略19.1.条件策略概述19.2.布尔变量29.2.1.布尔变量定义29.2.2.在运行系统中关联布尔变量29.2.3.对布尔值的永久性改变9.3.条件语句69.3.1.条件表达式和规则列表69.3.2.条件语句限制99.3.2.1.支持的语句99.3.2.2.嵌套条件话句109.4.使用Apol检查布尔和条件策略109.5.小结14练习14第10章.客体标记110.1.客体标记简介110.2.与文件有关的客体标记210.2.1.扩展属性的文件系统( fs use xattr)410.2.1.1.扩展属性文件系统的标记行为510.2.1.2.在扩展属性文件系统中管理安全上卜文(文件上卜文)610.2.2.基于任务的文件系统( fs use task)710.2.3.基于转换的文件系统( fs use trans)710.2.4.普通安全上下文标记( genesco)810.2.4.1. gencon语句绀粒度标记810.2.4.2.使用 gentscon语句标记传统文件系统1010.3.网终和套接字客体标记1010.3.1.网络接口标记( netifcon)10.3.2.网络节点标记( nodecon)1110.3.3.网络端口标记( porton)1210.3.4.套接字标记1310. 1. System V IPC 1110.5.其它客体标记1410.5.1. capability客体标记1510.5.2. process客体标记1510.5.3. system和 security客体标记1510.6.初始安全标识符1510.7.使用Apo1研究客体标记1710.8.小结18练习19第三部分:创建和编写 SELinux安全策略1第11章.原始示例策略111.1.管理构建过程的方法111.2. strict小例策略211.2.1.策略源文件结构概述311.2.1.1.客体类别和许可定义411.2.1.2.域类型和策略规则411.2.1.3.独立的资源类型511.2.1.4.其它顶层文件和目录511.2.1.5.安全上下文标记611.2.1.6.应用程序配冒文件711.2.2.分析示例策略模块711.2.2.1.定义类型和域911.2.2.2.指定域转换规则1011.2.2.3.条件策略小例1111.2.2.4.ping命令的网络和其它访问1111.2.2.5.审核规则1211.2.2.6.文件安全上下文标记1211.2.3. strict小例策略构建选项12
- 2020-12-05下载
- 积分:1
专家系统原理与编程 pdf
专家系统原理与编程 学习专家系统clips必备China pus coM第1章专家系统导论1.1概述本章是对专家系统的一个概略介纽,主要介绍专家系统的堪本原理。在本章中,将讨论专家系统的伏缺点,描述专家系统应用的适宜领域,并讨论专家系统与其他编程方法的关系。1.2专家系统的定义解决仼何冋趣的第步是先划定解决问题的范围或领域( Domai)。不论是在传统编程领域还是在人工智能领域这一点都是相同的。然而,出于以前对人工智能感到神秘的缘故,人们往往相这样一种过时的说法:“所谓人工智能问题就是该问题辶没有解决”。另外一种流行的定义则是“人工智能就是使计算机行动起来像人们在电影中所作的一样”。在20世纪70代,当人工伻能仍处在研究阶段时,这种想法就已经广为人知了。但是,今天人T智能已解决了许多现实问题,并且已应用到商业领域。尽管经典的人工智能问题,如:自然言理解、语音和祧觉识别等仍未解决,但如果限制问题的范闱则可能会找到一个有效的解决方法。例如,如果限定句子形式为主、谓、宾,那么建立简单的自然语言系统就不会很困难。目前,这类系统在为众多软件产品如数据库系统和电子表格系统竺提供友好的用户界上做得很成功。实际上,当今流行的一些电脑游戏软件在语法分析方面就显示出惊人的理解能力。人L智能有许多备受关注的领域,如图1-1所示。专家系统( Expert system)就是对传统人L智能问题口智能程序设计的一个非常成功近似解决方法。专家系统早期先导人工智能者之,斯坦福大学的 Edward Feigenbaum教授,把专家系统定义为“一种智杌器人视能的计算机程序,它运用知识和推理来解决只有专家才能解决的复杂可题”( Feigenbaum82)。也就是说,专家系统自然言是一种模拟( Emulate)专家决策能力的计算机系统,模拟词表明专家系统要在所有方面都做得象专家一样。嗅拟比模仿更进一步,模仿只要求在某些方面做理舵人工神经得像真正的事物一样。系统虽然我们仍未找到一和通压的解决专家系统问题的方法,然而专家系统在其受限制的领域里散得很成功。今人,上如所有图1-1人工智能的一些领域书籍、期刊、会议和产品所表明的那样,专家系统在商业、医学、科学以及工程等领域已得到了广泛的应用专家系统原理与编程Chinaepef-coM专家系统是人工智能的一个分支,它大量利用专业知识以解决只有专家 (Expert)才能解决的问题。专家是个在特定领域里具有专门知识( Expertise)的人。亦即,专家具有不为大多数人所知或所灲用的专门技能。专家能够解决大多数人所不能解决或是不能高效地(而不是低劣地)解决的问题。当专家系统在20世纪70年代最初发展起来时,专家系统特指包含专家知识。然而“专家系统”这一术语在今天适用于任何应用专家系统技术的系统。专家系统技术包括专的专家紊统话言、程序和为了辅助专家系统开发和执行而设计的硬件专家系统中的知识可以是专门知识或是从书籍、杂志和有学问的人中获得的知识。专家系统、基于知识的系统( Knowledge- based systen)或基于知识的专家系统( Knowledge- based expertsystem),这些术语经常同义地使用。多数人使用“专家系统”这一术语仅仅是因为它较短即使在他们的专家系统中可能仅有一般的知识而没有专门知识。图1-2描述了一个基于知识的专家系统的基本概念。用户提供事实或其他信息给专家系统,相应地收到专家建议或专门知识。专家系统内部包括两个主要部分知识库和推理机。知识库包含有为知识序事实推理札( Inference engine)所使用而得用出结论的知识。这些结论是专家系统对用户询问的响应。专门知识摊机基丁知识的系统还被设计成为专家的智能助手。由于开发上的优专家系统势,这些智能助于是用专家系统技匈1-2专家系统功能的基概念术来设计的。随着知识的越来越多,智能助于越来越像一位专家。囚此开发智能助于将会成灲改讠一个专家系统过程中的里程碑。此外,还可以通过加快解决问题的速度来空出专家的更多时间。智能家教是人T智能的另一个新烛用。与原米的计算机辅导系统不同,新的系统可提供上下文有关的指导 aratan9la)与通用问题求解技术方面的知识不同,专家知识是指特定问题域( Problem domain)方面的知识。特定问题域是专家能成功解决闻题的领域,例如医学、经济、科学或者工程学等等。正如人类专家一样,专家系统是针对某一个问题域的。比如,你通常不会期望一个棋手具有医学方面的专门知识。在一个问题域的专门知识个会自动地转向另一个可题域解决特定问题的专家知识称为专家的知识域( Knowledge domain)。例如,诊断传染疾病的内科专家系统会有许多关于传染疾病症状方面的知识在这种情沈卜,知识域是医学,包括疾病、症状和洽疗方法等方面的知识。图1-3说明了问题域和知识域之间的问题坟关系。图中知识域完全包括在问题域之内,知识域之外的部分是个对问题没有任何知识的区域。个内科专家系统一般不具有医学的其他分支的知识,例如外科或小儿科。尽管内科专家系统关于传柒病知识域的知识与·个人类专家相当,但如果没有使用其他领域的知识编程,那么专家系统就不知道其他领域的任何知识专家系统在它所具有的知识中推导或推理( Inference)图!-3问题域利知识域的的方式与人类专家推圆解决问题的方式是一样的。良个可能关系第1章专家系统导论给出一些事件,然后推理出结论。比女,如果你爱人已经一个月没有跟你说话了,你会推断他(或她)没有什么事值得说,然而,这只是几表1-1对投术的不同观点个可能推断肀的一个。虽然对专家系统我们已具备了很多新的技人术,但仍有许多东西要学。表1-1总结了在管理者我能用它做什么?项工程技术中参与者的不同观点。在表中,技技术人员我怎样才能把它做得最好研究者我如何去护展它?术人员可以是下程师或软件设计者,T程技术消费者它如何帮助我可以是硬件或是软件。无论解决什么难题,这它值得这样费神和开销吗?些问趣都得回答,否则这一技术就不能成功地它的可靠性如何?被使用。像其他任何工具一样,专家系统有其适宜或不适宜的应用领域,随着对专家系统的不断实,我们会发掘出这些应用领域1.3专家系统的优点专家系统有许多吸引人的特行:·适应性强。专家知识在任何计算机硬件上都是可利厍的,实际上,专家系统是专家知识的集成体。成本低。提供给用户的专家知识成本非常低危险性低。专家系统可用于那些可能对人有害的环璄。持久性。专家知识是持久的,不像专家那样会退休,或者死亡,专家系统的知识会无限持续。·复合专家知认。复合专家知识可以做到在白天或晩上的仁何时候同时和挟续地解决某问题。由儿个专家复合起来的知识,其水平可能会超过个单独的专家( Harmon85)可靠性强。专家系统可増强王确决策旳信心,这是通过冋专家提供一饣辅助观点而得到的;此外,专家系统还可协调多个专家的不同意见。不过,如果专家系统是由某一个专家编程设计的,那这个方法就不能奏效。如果专家没育犯错误的话,专家系统应该始终与专家意见一致。但是,如果专家很累或有压力就可能会犯错误。解释、说明。专家系统能明确、详细地解释导出结论的推理过程。一个人可能会太厌烦、不忑意或是没有能力去这样做,但明确、详细的解释有利于得出正确的决策响应快。迅速或实时的响应对某些应用来讲是必要的。依靠所使用的软件或l伫,专家系统可以比专家反应得更迅速或更有效。某些突发的情况需要响应得比专家更迅速,因此实时的专家系统是一个好的选择(Hugh88; Ennis86始终稳定、理智和完整的响应·在实时和突发情况下,专家可能由于压力或疲艻而能高效坦解决问题,这一点是至关重要的。·智能家教。专家系统可以作为一个智能家教,让学生运作实例程序,解释系统的推理。·智能效据厍。专家系统能以智能的方式来存取一个数据库( Kerschbery86;Schu88)开发专家系统的过稈也众有一个间接的益处,山于专家知识必须以精确的形式输入到计算杋中,所以知识要被明确地了解而不是被隐含于专家的脑海肀。这样,就必须对知识进行正确性、致忙和完整性检査,这就提高了知识的质量14专家系统的基本概念专家系统的知识可以用多种方式摧述——它可以表示成规则和对象形式。描述知识的一个专家系统原理与编程Chinaepuf.com常用方法是用IF.TEN型的规则(Rule),例如IF红灯亮THEN停止如果红灴亮这一事件出现,就与模式“红灯亮”相匹配,规则得到满灶,执行“停止”为。虽然这是一个非常简单的例子,仨许多重要的专家系统都是迸过规则来表达专家知识而建立的。实际上,丌发专家系统的这种基于知识的方法已经完全取代了50-~-60年代早期人L智能的方法,那时人们致力于使用高效的不依靠知识的推坦技术。某些专家系统工,如 CLIPS允许使用对象( Object,规则可以与对象及事件匹配,而对象则可以独立于规则而揀作。当今,人们已建立了各种各样基于知识的专家系统。包含成千上万规贝的大型系统如数据设各公司的 XCON/R1系统,在如何配置计算机系统方山已胜过单个人类专家( McDermott84)许多针对专门任务的小型系统也有几条规则,虽然这些小型系统的运作可能达不到专家的水平,但它们也充分利用了专家系统技术米处理那些知识密集型任务。对这些小玊系统而言,其知识主要来源于书、期刊或其他公共资料。与此相反,一个典型的专家系统主要依赖于没有写下的知识,这主要通过知识工程师( Knowledge engineer)长期地与人类专家进行接触而获得。建立一个专家系统的过程称为知识工程( Knowledge engineering),这个过程由个知识工程师来完成( Michie73)。知认工程师从专家或其他来源获取知识并把它们編码到专家系中图1-4描述了开发专家系统的一般步骤。首先知识工程师通过与专家进行对话而获取专家知识,这个阶段与传统程序设计中系统设计人员与用户讨论系统需求相关似。然后知识工程师将知识编码到知识库中,随后专家评估系统并返叫意见绔知识工程师,这个过程一宣循环,直到系统的性能为专家所满意为止。对丁采用了基于知识技术的应用而言,基亍知识的系统这·衣述是个较好的术语。然而正如人工智能这一术语一样,现今人涉及到专家系统和知识系统,即便是知识未达到专家水平,人们也往往使用专家系统这一术语般而言,专家系统设计不同于传统的程序设计,其问题通常没有算法去求解,而是依靠推理来获得一个合理的解决方法。在没有任何可利片的算法帮助我们获得最佳方法时,一个合理的方法就是最灯的。因为专家系统依赖于推理,它必须能够解释这个人类专家过程,所以它的推理过程是可以殓查的。鮮释机(Explanation facility)是复东专家系统的一个必要部分,实际上,对话复杂的解释机可设计为允诈用户深入探究“ What if”类或者假设的推理( Hypothetical reasoning)问题,甚至可允许用户把自然语言翻译为规则。知识工程师有些专家系统允许系统通过规则归纳( Rule induction)从例子中学丬规则。在归纳吋,系统从数据表中生成规则。把专家知识整理成规则并非易事,特别是当专家幻明确地衣达识还未被系统化时。在一个专家系统中,专家知识可能会存在不·致性、模糊性、重复性或其他问题,除非可专家系统以形式地表示知识,否则这些问题都难以解决。的知识库人类专家也知道自己知识的层限性,当问题达到他们」的未知界限( Limits of ignorance)时,他们会给建议打上一定折扣。如果专家系统没有专门设计来解决不确定图14专家系统的开发CaiNeepub.com第1章专家系统导论3性问题,那久即使亡们处理的数据不精确、不完整,专家系统也会以同样的确信来给出建议。专家系统的建议与专家的建议·样,在其不知晓的范围内其合炟性应降低现今亡多专家系统的一个不足是缺乏囚果知识( Causal knowledge),也就是说专家系统并不能真正地坦解系统中隐含的原因和结果。用基于经验和启发性的浅( Shallow)知识来设计专家系统比用基于对象的基本结构、功能和行为的深(Dep)知识要谷易得多。例如,设计一个针对头痛开阿斯匹林药方的专家系统比议汁一个关于人体所有基本的生物化学、生理学、动物学和神经医学等幻识的专家系统容易得多。一个人体机能模型的程序设计T作量非常之大,即使是成功了,由于要处理全部的信息,系统的响应时间也可能会很慢。启发性知识( Heuristic knowledge)是“浅”知识的一种类型,它个能侏证月同样的算法能取得成功。启发性知识是一和从实践中获得的经验性知识,它对问题的求解可起帮助作用,但不能保证一定有效。不过,在许多领域,如医学和工程上,启发性知识对问趣的求解起着重要的作用。即使知道一个确切的解决方沄,但由于费用或时间的限制,使得该方法不能实际应用。启发性知识能够提供有价佰的捷径,可以减少时间和花费。专家系统另一个不足是它的知识受限于系统的知识域。专家系统不能絛人那样,通过类比 Analogy)来推广知识以获得新的求解问题的方法。虽然通过规则的归纳,专家系绕可以获得少许新的知识。创建一个专家系统的常用方法,即知识工程师访问专家、设计原型、测试,然后再重复,这个过程是一件既费时、又费精力的事情。实际上,把人类知识转化到专家系统这问题是如此的重要,以致于人们称它为知识获取瓶颈( Kno wledge acquisition bottleneck)。这是一ˆ描述性的术语,囚为如同瓶颈控制液体流入瓶子一样,知识获取的瓶颈控制着专家系统的创建尽管有些局限性,但专家系统仍成功解决了现实世煚的许多问題,这些问题是常规的程序设计方沄学所不能解决的,尤其是那些需要处理不确定或不完仝信息的。重要的一点是解这种新技术的优点和局限性,只有这样才能够使之得到恰些地运用1.5专家系统的特点专家系统的设计具有以下一些特点高性能。系统能以此领域里专家的同等或更高水平响应,也就是说系统所给建议的质量必须很高·适当的响应时间。系统必须能在合理的时间内工作,时间与专家得出一个结论所需的时间杆当或更好。与专家一个小时的时间相比,需要一年才得出一个结论的专家系统是不会太有价值的。特别是必须在一特定时间间隔內作出响应的实时系统口,时间限制( Time constraint就显得史为苛刻·好的可靠性。专家系统必须可靠,且不易崩溃,否则就不能使用·可理解性。在执行过程中,系统能解释推理步骤,使之易于理解。专家系统不是一个推出不可思议答案的黑盒子,而是应该貝冇解群能力,其触释的方式应与专家解释他们推理的方式一样。山于以下几个原因,这个特征非常重要。原因之一是人的生命和财产可能会依靠专家系统的回答。由于危害的巨大潜在性,专家系统必须能够以专家解释如何得出某结论的方式来证明它的结论是止确的。因此,解释为人提供了一个可理解的推理检测。第二个原因出现在专家系统的发展阶段,这一阶段是让解释机证实知识已经被正确地获取并止被系统确地使用。这在调试中是很重要的,因为知识可能公被不止确地带入或者由J知6台家原阻与编程识工程师和专家间的误解而不正确。一个好你解释机允许专家和知识工程师证实知识正确性。而且由亍传统专家系统创建的方法,该∵个程序并哩解它的作将会很困难。另外一个错误源也许是没有预想到专家系统里的相互影响,这些相互影响可以通过运行测试实例来检测到,这些测试实例按照系统必须遵循的推理方法来运行。正如后而将要详红地讨论一样,复合规则可以提供一个系统推埋的环境。专家系统中的执行沇不是按頂序的,因此你仅仅一行行地阅读代码,是不能明白系统是如何工作的。也就是说,规则进入系统的次序并不必一定是宀们被执行的次序。专家系统就像一个规则狐立于知识处理机的并行程序。灵活性。专家系统可能有大量的知识,因此具有一个增力、修改和删除知识的高效机制是十分重要的。基于规则的系统得以普及的一个原因就是由于规则的高效和嫫块化存储视系统而定,一个解释机可以简单也可以复杂。在基于规则的系统中,一个筲兰的解释机可以显小使最近规刈待以执行的所有事实。而在史为复杂的系统中可能按照如下方式来做:列出又持和反对某个假设的原因。假设是将要被证玥的日标,例如,在一个医疗诊断专家系统中“病人有破伤风感染”就是一个假设。在一个现实问题中可以有复合假设,正如个病人可以同吋有人和病样。个假设也叫以被看作是·个事实,其确性仍存在嶷惑,需要被证实。列出所有可解释观测证据的假设。解释假设的所有推断结果。例如,假设病人确实有破伤风,由丁感染作用,就应该有发烧的迹象。如果后来观察到此症状,就会増强此儇改玊确的可信度:如果没有发现北症状,就会削弱假设的可信度·如果假设是止确的,给出将发生事件的个预测( Prognosis)·提供需要用户进一步信息的问题的依据。这些问惡可以用来指导推理链朝着可能的诊断路径前进。在大多数现实问题中,探究所有的可能性花费太大或者需要太长的时间,且要提供特定的方法引导正确搜索。例如,对一个抱怨咽唉痛的病人,考虑一下进行所有内科检查所需的花费及所用的时间。提供程序所用知识正确旳依据。例如,如果程序断言“病人有破伤风感染”这一假设是对的,用户可以要求解释,程序必须给出得到这一结论的依据是基于下面规则:如果病人进行血液检测,其破伤风是阼性,那么病人就惡冇破伤风。此时用户可要求程序提供此规则正确的依据,则稈序可向用户说明:血液检测为阳性是患有疚病的证椐。在这个实例屮,程序实际上在引月一个关于规则的知识——元规则( Metarule)。某些程序,如Mea- DENDRAL,山经使用了元规川来推理( Buchanan78)。假设通过知认而让实,知认通过正确的根据( Warrantυ来证实。根实质上是一个解释专家系统推理说明的元解释。在基于規则的系统屮,知识可以很容易地增加( (Incrementally),也就是说,知识库可以随着规则的添加而逐步增加,从而使得系统的性能和辶預性得到持续地检査。如果规则设计得妤,那么规则间的相工影响作用就会非常小或没有,从而消除那些难以预料的负作用。知识的这种逐步增加可以快速原型化( Rapid prototyping),以致知识T程师可很快地演示专家系统的T作模式。这是个重要的特征,因为它可保持专家和管坦者对项乍的兴趣。快速原型化还可迅速暴露出专家知识或系统中的缺陷、不一致性或错误,从而使之能够立即得到纠正。1.6专家系统技术的发展人工驽能有许多分支,包括语音、视觉、机器人、自然语言理解和学习以及专家系统。专Chinaepus.com第1章专家系统导论家系统的理论基础涉及到诸多学科,其一个主要理论基础是认知科学 Cognitive science)。认知就是仞究人类如何处埋信总,换饣话说,就是杌究人如何思考,尤其是如何解决问题如果我们想要计算机模拟专家,那么对认知旳研究是非常重要的。通常,即使问题是由专家解决的,他们也不能解释白己是如何解决问题的。在一个基于精确知识的专家系统中,如果不能解释闩题是如何解决的,则把知识译成代码是不可能的。在这种情况下,唯一的可行方法是设计通过自学习来模拟专家的程序。这些程序建立在归纳和人工神经系统的基础之上,我们将在后面讨论1.6.1人类问题求解与产生式专家系统技术的发展有着广阔的背景,表1-2总结了现代专家系统的一些重要发展。只要可能,项目的开始∏期都会给出,诈多项日都延续了几仨以上。在本章和其他章里都较详细地分析了这些发展。对所有早期系统而言,一本最好的参考书是三卷本的人L智能三册KHandbook of ArTificial Intelligence, Feigenbaum 81y衣1-2专家系统历史的一些重要事仁1943Post产生式规则: McCulloch和PiU神经元模型1954控制规则执行的Ⅵ arkov算法1956Dartmouth会议:逻辑学家;启发性搜索;创立“AI"”术语Rosenblatt出感知机; GPS(General Problem Solver,通用问题求解器)(丶 ewell shaw和 Sinon)1958人工智能语言Lisp( McCarthy)1962Rosen blat于感知的神经动力原理1965自动定理训明的归结方法( Robinson)模樹对象的模糊推逻辑(:adeh开始建立 DENDRAL,第一个专家系统( Feigenbaum、 Buchanan等1968话义网,联想记忆嘆型( Quillian)MACSYMA数学专家系统( Martin和 Moses)PROLOG(Colmerauer, Roussell1971语音识别 HEARSAY I人类问题求解通用规则( Newell和 Simon)1973MYCIN医疗诊断专玄系統( Shortliffe等)山此产生的 GLIDON,即智能豕裂( Clancey)TEIRESIAS,概念解释机( Davis)EMYCIN,第一个外壳( Van melle、 Shortliffe和 Buchanan)HEARSAY II,多协作专家的黑板模型框架知识表示 Minsky)1976AM( Artificial mathematician.人T数学家),数学概念的创造性发现( Lenat)不确定性推理的 Dempster-Sher证据珪论开始建立矿产探测的 PROSPECTOR专家系统(Duda,Ha等)1977XCON/R使用的OPS专家系统外壳(orgy)1978始建立 XCON/R1,阳置DC计算机系统( McDermott.DHC)Mea- DENDRAL,元规则,规则归纳( buichellall1979快速模式匹配的Rete算法( Forgy)人工智能开始商业化Inference公司成立(1985年发行ART专家系统L具)和LMI推出Lisp机982SMP数学专家系统: Hopfield神经网络;开发智能计算机的日木第五代语言项日1983KE专家系统工具( Intellicorp)1985CLIPS专家系统⊥具(NASA)专家系统原理与编程C的aCM在20世纪50年代后期及60代初,人们编写了大量的以通用间题求解为标的程序。其中最著名的是通用问题求解器,在 Newell和 Simon编写的不朽著作——《人类问题求解》( HumanProblem solving)里描述( Newel12)Newell和mon证明的最重要结果之一是大部分的人类问题求解或认知( Cognition),可以用IF…THEN类型的产生式规则( Production rule)表达。例如,“如果”看起来将要下雨,“那么”带上一把冋伞,或者“如果”你的爱人心情不好,“那么”不要显得很高兴。与一个小的、模玦化的知识集相对应的规则称为一块( Chunk),块以松散的形式连接、组织,并与內关的知识有联系,其原理之一是所有的人类记忆都以块的形式组织。下面是用一条规则表示一个知识块的例子工F汽玄运转个了并且油罐是空的THRN加油Newell)和 Simon用规则表示知识并显示了如何用规则推里。认知心埋学家已经使用规则作为模型来解彩人类信息处理,其基木思想是感官的接收对大脑产生刺激,刺激引发出适当的长期记忆(Long- term memory)规则并成恰当的响应,长期记忆是我们的知识贮存处。例如,我们都有如下的规则TP有火焰N有火灾⊥上有烟雾N可能有火灾工F有报警TN可能有火灾可以看到后两个规则在表述上不是完全肯定,火可能已经灭了,但空中可能仍有烟雾。同样,报警声并不证明就有火灾,因为可能是一个虚假的报警信号。看到火焰、嗅到烟雾或听到报警卢的刺激会诱发出这些或相似的规则。长期记忆包拒许多形如IF…THEN(如果……那么)简单结构的规则。实际上一个技艺高超的棋师可能通晓50000或更多的关于棋的模式的知识块。与长期记忆相反,短期记忆( Shortterm memory)是在解决问题过程中用来暂时存储知识的。尽管长期记忆能够容纳成千上万甚至更多的块,然而正工作着的记忆的容量是惊人地小—4~7块。试着在脑海中浮现几个数字就是一个简单的例子,人多数人一次仅可以浮现4~7个数字,但他们能记住的远不4~7位数字,只不过这些数字是贮存在长期记忆中种埋论假设短期记忆表示那些可以同时活跃的数据块,并把人类问题的解决当作脑海中这些已激汘块的传播。最后那个块被激活的強度如此之大以致产生出一个有意识的想象,你就对自己说:“哦……茉些东西在燃烧。”人类问题求解的另个必要元素是认知处理机( Cognitive processor),它尽力去发觉那些将被适当刺激激江的规则。但并不是任何规则都可激江,例如,你不会每次听到汽笛声就想到给油罐充油。只有与刺激相匹配的规刈会被激发。如果很多规刈同时被激发,认知处理机必须处理冲突来决定哪一个规则有最髙优先权,这个规则将会被执行。例如,如果以下炳个规刈是激发态的:TF有火灾THEN离开TF我的衣服着火了TFN扑灭火那么具有最高优先权的那条规则冷会执行。对现代专家系统来说,推理机貮相当于认知处理机Newell和 Simon把人类问题求解的模型归纳为:长期记忆(规则)、短期记忆(工作内存)和认知处理器(推理机),这三者是现代基于观则的专家系统的基础。
- 2020-06-03下载
- 积分:1