分享

《用Prolog建专家系统》学习笔记(1)

 战神之家 2017-12-24

2009年,打算把主要精力放在AI的学习和开发上。主攻的方向,一是专家系统,二是智能游戏。

专家系统的开发工具,准备选用GNU Prolog, CLIPS, PyCLIPS, EreSye。

其实,这4个工具分属2类语言,第一个是逻辑编程的Prolog,其他3个是函数编程的LISP。

它们都是比较冷门的语言工具。LISP类的那3个比较陌生,还需努力学习掌握。

对Prolog比较熟悉,所以首先用它主刀。

开发出实用的专家系统,不是件容易事。总的要求有3条,一是熟练掌运编程工具,二是熟悉专家系统的结构和建造方法,三是充分具备应用专业领域的知识、经验和技能。现在要解决的主要问题是熟悉专家系统的结构和建造方法。

前些天,从CSDN找到了一本e书,《用Prolog建专家系统》(Building Expert Systems in Prolog)。308页的书,翻看了十分之一,觉得挺受用,想把那些值得记住的东西写下来,加深印象。

Just go!

一、专家系统的基本概念

专家系统是计算机应用程序,它以非常规算法的方式,即专门的知识和技能,处理解决特定的实际问题。例如,专家系统用于诊断人类疾病或者判查机器故障,下棋,编制财务计划、作出财务决策,配置计算机硬件,监控实时系统,审定保险理赔,以及从事本应由人类专家做的许多其他工作。

专家系统包括许多重要部件和为各种人员服务的接口,如图1.1所示:



● 知识库(Knowledge base)- 通常以IF THEN 规则表示说明的专门知识和技能;

● 黑板(Working storage)- 有关正在处理的问题的数据;

● 推理机(Inference engine)- 系统的核心代码,处理黑板中的数据;

● 用户界面(User interface)- 用于控制用户与系统的会话。

与专家系统设计相关的人员:

● 专家(Domain expert)- 其专业领域,是系统要处理解决的实际问题所在领域;

● 知识工程师(Knowledge engineer)- 负责把专家的知识,翻译成系统可用的说明性信息;

● 用户(User)- 以咨询方式获得专家建议的系统使用人。

特殊的专家系统,也有用自造的外壳建设的。此时,存在着关键人员:

● 系统工程师(System engineer)- 负责建造用户界面、设计知识库、实现推理机。

如果项目规模不太大,知识工程师和系统工程师可由一人担任。自造外壳的专家系统,知识库结构设计和领域知识的编码翻译,是紧密相关的。知识库的结构对知识的编码,有重大影响。

建造专家系统的一个主要瓶颈,是知识的工程处理。把专业知识和技能编码翻译成说明式的规则形式,是件困难乏味的工作。自造外壳的主要好处,是设计出的知识库能够符合知识工程处理的需求。

知识库的设计目标,是缩小知识表达的语义差别。语义差别,是指知识的自然表示与程序表示的不同。例如,数学公式的日常表示,不同于它在汇编语言和FORTRAN语言中的表示。

建造专家系统的主要瓶颈,是建设知识库。这是因为需要最大限度地缩小专家知识的表示与其在知识库中的表示之间的语义差别。自造外壳的专家系统,实现的知识库结构可以最大限度接近专家掌握的知识结构。

专家系统功能特征:

● 目标驱动推理或者后向链推理 - 一种推理技术,反复运用IF-THEN规则,把总目标分解成多个子目标,方便证明;

● 对付不确定性 - 系统能用不精确的规则和数据进行推理;

● 数据驱动推理或者前向链推理 - 一种推理技术,运用IF-THEN规则,从初始数据推断问题答案;

● 数据表示 - 系统中与特定问题相关的数据的保存和访问方式;

● 用户界面 - 创建易用系统的代码部分;

● 解释说明 - 系统在做出咨询建议时,对推理过程的说明解释。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多