《人工智能教程(张仰森)》(一)

这本书其实是大四最后的一门选修课,但是由于当时学的较为匆忙,而且这也是一本很不错的教科书,再加上自己以后研究生也是类似的研究方向了,所以现在拿出来再读了一遍。这本书共分为两篇(原理篇和应用篇),共十章,380页左右。值得一提的是,本书的两个作者(张仰森和黄改娟)的名气不大,但是本书的参考文献中却多次引用了如陆汝钤院士、史忠植教授等的教材,所以被高校广泛作为教材使用。自己也有幸在所里和史忠植老师见过面,并互通过邮件。

下面对这本书进行一个总结和梳理。

一、绪论

        1. 人工智能的诞生及发展

1956年夏季,美国一群年轻学者汇聚在达特茅斯大学,举办了一场长达两个月的学术讨论会,这是人类历史上第一次人工智能研讨会,标志着人工智能学科的诞生。之后又介绍了每个年代人工智能领域的发展,值得一提的是John McCarthy发明了一种函数式的人工智能程序设计语言LISP,A.Comerauer提出了逻辑程序设计语言PROLOG。

        2.人工智能的定义

人工智能又可称为机器智能。首先谈了人类智能。记忆与思维能力是人脑最重要的功能,也是人类之所以有智能的根本原因所在。归纳与演绎能力是人类进行问题求解的两种推理方式。人工智能学科是计算机科学中涉及研究、设计和应用智能机器的一个分支。从实用观点看,人工智能是一门知识工程学,它以知识为对象,主要研究知识的获取、知识的表示方法和知识的使用(运用知识进行推理)。

        3.人工智能研究的方法及途径

首先谈了人工智能研究的各种学派及其理论。从研究途径上来看,主要分为三个观点:一是符号主义,又称逻辑主义或计算机学派,主张用计算机的方法进行研究,研究内容是基于逻辑的知识表示和推理机制,原理主要为物理符号系统假设和有限合理性原理,代表人物有A.Newell、H.A.Simon、J.McCarthy、N.J.Nilsson等, 现在仍是主流;二是联结主义,又称仿生学派,主张用仿生学的方法进行研究,通过研究人脑的工作模型,搞清楚人类智能的本质,研究方法是以网络连接为主的连接机制方法,属于非符号处理范畴,所研究的内容实际上就是神经网络,代表人物有J.L.McClelland等;三是行为主义,又称进化主义或控制论学派,主张用进化论的思想进行研究,其原理主要是通过控制论和机器学习的算法实现智能系统的逐步进化,目前有待进一步研究。

最后谈了实现人工智能的技术路线。有四个分别是:专用路线、通用路线、硬件路线和软件路线。

       4.人工智能的研究及应用领域

这里列举了十个领域,分别是:

1)问题求解。涉及问题表示空间的研究、搜索策略的研究和归约策略的研究。目前有带代表性的问题求解程序就是下棋程序。

2)机器学习。研究的目标有三个:人类学习过程的认知模型;通用学习算法;构造面向任务的专用学习系统方法。

3)专家系统。

4)模式识别。识别出给定物体所模仿的标本。主要研究视觉模式和听觉模式的识别。

5)自动定理证明。

6)自动程序设计。包括程序综合与程序正确性验证。

7)自然语言理解。主要包括:回答有关提问;摘要生成和文本释义;翻译。

8)机器人学。第一代是可再编程序控制机器人;第二代是自适应机器人,自身配有相应的感觉传感器;第三代是具有类似于人的智能的智能机器人。

9)人工神经网络。

10)智能检索。

二、知识表示方法

人工智能学科要研究的三个主要问题是:知识的获取、知识的表示和运用知识进行推理。

        1. 概述

首先介绍了知识、信息和数据。数据是记录信息的符号,是信息的载体和表示。信息是对数据的解释,是数据在特定场合下的具体含义。相同的数据在不同的环境下表示不同的含义,蕴含不同的信息。相同的信息也可以用不同的数据表示出来。一般把有关信息关联在一起所形成的信息结构成为知识。知识是用信息表达的,信息则是用数据表达的。

然后谈了知识的特性。知识具有:相对正确性;不确定性;可表示性;可利用性。

对于知识的分类

1)按作用范围划分,分为常识性知识和领域性知识。

2)按作用及表示划分,分为事实性知识(“...是...”、静态、共享)、规则性知识(“如果...则...”、动态、变化)、控制性知识、元知识。

3)按确定性划分,分为确定知识和不确定知识。

4)按人类的思维及认识方法划分,分为逻辑性知识和形象性知识。

最后介绍了知识的表示

1)陈述性知识表示主要用来描述事实性知识。是一种静态的描述方法。

2)过程性知识表述主要用来描述规则性知识和控制结构知识。是一种动态的描述方法。

        2. 一阶谓词逻辑表示法

它是最早应用于人工智能中的表示方法。

首先谈了知识的谓词逻辑表示法。对事实性知识通常由合取符号和析取符号连接,对规则性知识通常用蕴含符号连接。

然后谈了用谓词公式表示知识的步骤

1)定义谓词及个体。

2)变元赋值。

3)用符号连接谓词。

接下来是谓词公式表示知识的举例

最后是一阶谓词逻辑表示法的特点

1)自然性。

2)适宜于精确性知识的表示,而不适宜于不确定性知识的表示。

3)易实现。

4)与谓词逻辑表示法相对应的推理方法(归结推理方法或消解法)。

        3. 产生式表示法

首先谈了产生式可表示的知识种类及基本形式。适合于表示事实性知识和规则性知识。基本形式是P—>Q,或 IF P THEN Q,蕴含式是产生式的一个特殊情况,产生式不仅可以表示精确性知识,还能表示不精确的知识。并且蕴含式本身是一个谓词公式,有真值,而产生式则没有。

然后谈了知识的表示方法

1)确定性规则知识。P—>Q,或 IF P THEN Q。

2)不确定规则知识。P—>Q(置信度),或 IF P THEN Q(置信度)。

,    3)确定性事实性知识。一般用三元组表示:(对象,属性,值)或(关系,对象1,对象2)。其中对象就是语言变量。这种表示的机器内部实现就是一个表。

4)不确定性事实性知识。一般使用四元组表示:(对象,属性,值,可信度值)或(关系,对象1,对象2,可信度值)。

接下来谈了产生式系统的组成。一般由三部分组成:规则库(领域知识,专家系统的核心,规则以产生式形式表示)、综合数据库(输入的事实和产生的结果,动态的)、推理机(包含推理方式和控制策略)。通常从选择规则到执行操作分3步:匹配、冲突解决(专一性排序、规则排序、规模排序,就近排序)、操作。

还有产生式系统的推理方式

1)正向推理。又称数据驱动方式或自底向上的方式。从已知事实出发,通过规则库求得结论。

2)反向推理。又称目标驱动方式或自顶向下的方式。从目标(假设)出发,反向使用规则,求得已知事实。

3)双向推理。既自顶向下又自底向上的推理。

最后说了产生式表示法的特点

1)清晰性。

2)模块性。专家系统首选。

3)自然性。

  4. 语义网络表示法

首先谈了语义网络的概念及其结构。语义网络是通过概念及其语义关系来表示知识的一种网络图,它是一个带标注的有向图。一个最简单的语义网络可由如下的一个三元组表示:(节点1,弧,节点2),称为基本网元。语义网络实际上是一个多层次的嵌套结构。

然后谈了语义网络中常用的语义联系

1)类属关系。最主要的特征是属性的继承性。常用的类属关系有三种:AKO(”是一种“,类型)、AMO(”是一员“,成员)、ISA(“是一个”,实例)。

2)包含关系。又称聚类关系,一般不具有属性的继承性。常用的包含关系是Part-of(是一部分),如(两只手,Part-of,人体)。

3)占有关系。事物或属性之间的“具有关系”。常用的占有关系是Have,如(张三,Have,一支钢笔)。

4)时间关系。属性不具有继承性。常用的有三种:Before、After、During。

5)位置关系。属性不具有继承性。常用的有:Located-on(在上)、Located-at(“在”)、Located-under(在下)、Located-inside(在内)、Located-outside(在外)。

6)相近关系。常用的有两种:Similar-to(相似)、Near-to(相近)。

7)推论关系。

8)因果关系。适用于规则性知识。常用的有If-then。

9)组成关系。属性不具有继承性。常用的有:Composed-of。

10)属性关系。常用的有:IS。如(老张,IS,40)。

接下来是语义网络表示知识的方法

1)事实性知识的表示。注意的是由于属性具有继承性,所以在下层概念中只列出它独有的属性即可。

2)情况和动作的表示。允许用一个节点表示,如情况节点、动作节点、事件节点。

3)逻辑关系的表示。通过增加合取节点和析取节点来表示合取和析取关系。对存在量词可以直接用“是一种”、“是一个”来表示。对全称量词可采用网络分区技术,要求F指向的子空间所有非全称变量的节点都应该是全称变量的节点的函数,否则听该放在子空间外面。(没法贴图好抽象啊= =)。

4)规则性知识的表示。

还有是语义网络表示知识的步骤

1)确定问题中的所有对象及各对象的属性。

2)分析并确定语义网络中对象间的关系。

3)根据语义网络中所涉及的关系,对语义网络中的节点和弧进行整理。

4)分析检查对象是否有遗漏,并将各对象见的关系作为网络中各节点的有向弧。

5)根据第一步的分析结果,为各对象标示属性。

然后给出了语义网络表示知识举例

给出了语义网络表示下的推理过程。对应的求解系统由两部分构成:一是知识库,二是推理机。推理方法有两种:一是匹配,二是继承(又分为值继承和过程继承)。

最后说明了语义网络表示法的特点

1)结构性。

2)自然性。

3)联想性。

4)非严格性。

        5. 框架表示法

首先介绍了框架理论。框架理论将框架视为知识的单位,将一组有关的框架联结起来便形成框架系统。系统中不同框架可以有共同加点,系统的行为由系统内框架的变化来体现。推理过程是由框架间的协调来完成的。

然后谈到了框架的定义及组成。框架是一种描述索伦对象属性的数据结构。一个框架由若干个“槽”组成,每个“槽”又可划分为若干个“侧面”。槽和侧面所具有的属性值分别称为槽值和侧面值。一个框架可以由框架名、槽、侧面和值组成。如:

框架名:<计算机主机>

主机品牌:联想1+1

生产厂商:北京联想集团公司

CPU:         品牌:Intel

型号:奔腾三

内存:          品牌:现代

型号:SDRAM

容量:128M

接下来谈了用框架表示知识的步骤

1)分析待表达知识中的对象及其属性,对框架中的槽进行合理设置。

2)对各对象间的各种联系进行考察。使用一些常用的或根据具体需要定义一些表达联系的槽名,来描述上下层框架间的联系。一些常用的槽名(系统预定义槽名)有:ISA槽(抽象概念的类属关系)、AKO槽(具体的类属关系)、Instance槽(AKO的逆关系)、Part-of槽(部分与全体的关系)。

3)对各层对象的槽及侧面进行合理的组织安排,避免信息描述的重复。

下面是用框架表示知识的举例

还有框架表示下的推理方法。与语义网络表示法类似,求解系统也是由知识库和推理机组成。推理方法也是遵循匹配和继承的原则。需要注意的是,由于继承性,两个框架的比较往往牵扯到他们的上层框架,所以这增加了匹配的复杂性。

最后又谈到了框架表示法的特点

1)结构性。

2)继承性。

3)自然性。

不足是不善于表达过程性的知识,因此常与产生式表示法合起来使用。

        6. 面向对象的表示法

首先谈了面向对象的基本概念。谈了对象、类、继承和封装的概念,然后又提到了面向对象技术的特点。

1)模块性。

2)继承性。

3)封装性。

4)多态性。

5)易维护性。

最后又谈了表示知识的方法

Class<类名>[:<父类名>]

[<类变量表>]

Structure

<对象的静态结构描述>

Method

<关于对象的操作定义>

Restraint

<限制条件>

END

        7. 脚本表示法

首先谈了脚本的定义与组成。脚本是一个用来描写人类某种活动的时间序列,是表达人们已经陈规的事件序列的知识。通常一个脚本由以下基本分构成:进入条件、角色、道具、场景、结果。并给出了最著名的餐厅脚本的例子。然后又提出了11中行为原语,分别是:

1)INGEST:把某物放入体内。

2)PROPEL:对某一对象施加外力。

3)GRASP:行为主体控制某一对象。

4)EXPEL:把某物排出体外。

5)PTRANS:某一物理对象物理位置的变化。

6)MOVE:行为主体移动自己身体的某一部位。

7)ATRANS:某种抽象关系的转移。

8)MTRANS:信息的转移。

9)MBUILD:由已有信息形成新信息。

10)SPEAK:发出声音。

11)ATTEND:用某个感觉器官获取信息。

接下来谈了用脚本表示知识的步骤

并给出了用脚本表示知识举例

还有脚本表示下的推理方法。脚本表示法对事实或事件的描述结果为一个因果链,可解决的问题是:对事件发生结果的预测,探寻事件之间的关系。求解系统一般也包括知识库和推理机。基于脚本的推理方法实际上就是一种匹配推理方法。

最后又谈论了脚本表示法的特点。

1)自然性。

2)结构性。

不足是不太适合用来表达各种各样的知识,目前主要用在自然语言处理领域的篇章理解方面。

        8. 过程表示法

首先谈到了知识的过程表示法。过程规则式表示法时过程表示法的一种典型的实现形式,一般由4个部分组成:激发条件、演绎操作、状态转换和返回。

1)激发条件。启动该知识应满足的条件。一般由推理方向和调用模式两部分组成。

2)演绎操作。是一个过程中依次被执行的那些动作。

3)状态转换。指过程被执行中,用来完成对综合数据库的增删改操作,分别用INSERT、DELETE和MODIFY操作符实现。

4)返回。将控制权返回到调用该过程规则的上一级中。

如:

BR(Father  ?z  ?y)

GOAL(Brother  ?x  y)

GOAL(Father     z    x)

INSERT(Father  z  y)

RETURN

然后给出了过程表示的问题求解举例

最后提到了过程表示法的特点

优点是:1)表示效率高。2)推理控制容易实现。

缺点是:1)知识库不易维护。2)适用的表示范围较窄。

        9. 状态空间表示法

是用来表示问题及其搜索过程的一种方法。它是人工智能中最基本的形式化方法。

首先谈了问题状态空间的构成

1)状态。描述问题求解过程中不同时刻状况的数据结构。Q=(q0,q1,.....  ,qn),其中qi为状态变量。

2)算符。引起状态中某些分量发生变化,从而使问题由一个状态变为另一个状态的操作。

3)状态空间。一般由三元组表示:(S,F,G),其中S为问题的所有可能初识状态构成的集合,F为算符集合,G为目标状态集合。状态空间的图示形式成为状态空间图。其中,节点表示状态,有向弧表示算符。

4)问题的解。

然后又谈了用状态空间表示问题的步骤

1)定义状态的描述形式。

2)表示出所有可能状态,并确定问题的初始状态集合和目标状态集合。

3)定义一组算符。

最后是用状态空间求解问题的过程。用二阶Hanoi塔问题做例子描述了状态空间表示法。

        10. 与/或树表示法

通常用于比较复杂的问题求解。把一个复杂问题分解或变换为一个本原问题的过程称为归约。

首先谈了问题的分解与等价变换。问题的分解可以看做子问题解的“与”,问题的等价变换可以看做新问题的“或”。

然后是问题归约的与/或树表示

1)与树。有向边之间有小弧线。

2)或树。有向边不用小弧线连接。

3)与或树。根节点对应着待求解的原始问题。

4)端节点与终止节点。

5)可解节点与不可解节点。

6)解树。在解树中一定包含初始节点。

接下来是用与/或树表示问题的步骤

最后是与/或树表示举例。同样是三阶Hanoi问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-31 21:03:57

《人工智能教程(张仰森)》(一)的相关文章

《三层理论篇》一

一.联系生活: 先从我们的生活场景说起,我们要吃烧烤,一种情况是在路边,有人摆摊,我们要完东西之后就在这看着等着烤好了,然后拿着开始吃,第二种情况是我们到一个小店只要坐下来有人过来问你想吃什么,你说完之后过会就会有人把你要的东西送过来(这两种场景估计大家都有过哈) 两种场景的烤肉过程: 我们生活中的这种烤肉现象就对应这我们系统的开发的两种方式,二层和三层(多层). 路边烤肉一个人什么都干,总有忙不过来出错的时候,当他积累到一定的钱之后可能就会去开店,这样就能满足更多的顾客. 从路边烤肉到开店的过

《三层理论篇》二

四.三层之间的联系 依赖:三层之间的关系 数据访问层的类:直接访问数据库,实现对基本记录的增删改查操作. 业务逻辑层的类:用相关的数据访问类,实现用户所需功能. 界面层:部署控件后,调用业务逻辑层的类,实现功能. 图解: 实体类:层之间的数据传输对象 为什么选择实体类作为三层之间的传输对象?  ORM(对象关系映射) Object Relational Mapping,简称ORM,是为了解决面向对象的类,与关系数据库的表之间,存在的不匹配的现象,通过使用描述对象和关系之间映射的元数据,在程序中的

三层学习------理论篇

学校放假了,刚回家的孩子就像个客人被父母招待着.在放假的前几天里,你尽管开口,想吃啥爸妈都会满足你,不过好景可不长!在我家,厨房是老妈的地盘,买菜.做饭.洗碗刷锅,一个人全包了.而在饭店吃饭呢,吃饭的人多了,顾客点的饭菜种类各不相同.前前后后,一个人忙乎,哪里顾得过来,所以饭店就有了分工.前台服务员负责将顾客点的菜上报给厨师和:厨师根据上报的菜单做菜:采购员负责柴米油盐酱醋茶.这样,大家各司其职,井井有条. 我们在家中吃饭比较简单,没有具体的分工.饭店就是一个复杂庞大的系统了,需要合理规划,分工

三层架构-------理论篇

概念: 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想. 各层概念 1.表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 2.业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 3.数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添.删除.修改.查找等. 注:应用三层离不开另一个重要的类:实体类,

三层结构——理论篇

为什么要分层? 1.开发人员可以只关注整个结构中的其中某一层:2.可以很容易的用新的实现来替换原有层次的实现:3.可以降低层与层之间的依赖:4.有利于标准化:5.利于各层逻辑的复用.6..方便团队分工 分层: 将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想. 1. 表现层 位于最外层(最上层),离用户最近.用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面.它是系统的UI部分,负责使用者与整个

三层架构理论篇

对于三层架构的理论阐述,我将从三个大的方面去讨论:what.why和how,说白了也就是以三层架构为中心,去了解什么是三层,为什么用三层以及怎么用三层这个三个问题.OK,废话不多说,进入正题. 什么是三层架构?(What) 通常多层结构的划分方式有两种:分别是物理和逻辑.物理上的三层结构是指将整个应用系统分为显示层.业务层和数据层,并且这三个层面上的实体都是硬件,比如显示层就是客户机器,业务层通常是应用程序服务器,而数据层就是数据库服务器了. 今天我们讨论的主要是逻辑上的三层架构,是在软件设计时

【SSH2(理论篇)】--Struts2配置详解

上篇博客讨论了SSH2框架模型,在开发过程中发现SSH2的开发模型其实类似于经典的三层模式,在每一层中分别添加了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置,数据持久层则采用的是Hibernate,开发模式简单易懂,接下来将会分别从三层着手讨论每一层的运行内容. 一.Struts体系简介 struts,是Apache软件基金会(ASF)赞助的一个开源项目,它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-V

【机器学习】Logistic Regression 的前世今生(理论篇)

Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了以下这篇微博: 我在看到这篇微博的时候大为触动,由于,如果是rickjin来面试我.我想我会死的非常慘,由于他问的问题我基本都回答不上来.

Logistic Regression 的前世今生(理论篇)

[机器学习]Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了下面这篇微博: 我在看到这篇微博的时候大为触动,因为,如果是rickjin来面试我,我想我会死的很惨,因为他问的问题我基本都回答不上

三层理论

什么是三层,是说的像房屋那样的三层么?当然不是啦,我这里要给大家说的三层是软件体系架构设计中的一种分层方式. 三层架构:通常意义上的三层架构就是整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的就是为了"高内聚,低耦合"的思想. 三层概念简介: 1.显示层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 2.业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 3.数据访问层(