人工智能第二章知识表示方法山东大学期末考试知识点复习Word文档格式.docx
《人工智能第二章知识表示方法山东大学期末考试知识点复习Word文档格式.docx》由会员分享,可在线阅读,更多相关《人工智能第二章知识表示方法山东大学期末考试知识点复习Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
④只有按①~③所得的公式才是命题公式。
所以,命题公式就是一个按照上述规则由原子命题、连接词及圆括号所组成的字符串。
在命题演算公式中,连接词的优先级别次序是~,∧,∨,→,←→
2.谓词逻辑
(1)谓词与个体
在谓词逻辑中,将原子命题分解为谓词与个体两部分。
谓词用于刻画个体的性质、状态或个体间的关系;
而个体则指可以独立存在的物体,可以是抽象的,也可以是具体的。
谓词的一般形式是
P(x1,x2,…,xn)
其中P是谓词,而x1,x2,…,xn是个体。
通常谓词用大写字母表示,个体用小写字母表示。
一个谓词可以与一个个体相关联,此种谓词称作一元谓词,它刻画了个体的性质。
一个谓词也可以与多个个体相关联,此种谓词称为多元谓词。
它刻画了个体间的“关系”。
个体可以是常量,也可以是变量,还可以是一个函数。
个体常数、变量和函数统称为项。
个体变元的取值范围称为个体域。
谓词中包含的个体数目称为谓词的元数,例如P(x)是一元谓词,P(x,y)是二元谓词,而P(x1,x2,…,xn)则是挖元谓词。
在谓词P(x1,x2,…,xn)中,若xi(i=1,2,…,n)都是个体常量、变元或函数,则称它为一阶谓词。
如果某个xi本身又是一个一阶谓词,则称它为二阶谓词,以此类推。
谓词和函数从形式上看很相似,其实它们有着本质的区别,是两个完全不同的概念。
谓词具有逻辑值“真”或“假”,而函数则是某个个体到另一个个体(按数学上的概念是自变量到因变量)之间的一个映射。
(2)谓词公式
谓词公式是用连接词、量词及圆括号将一些原子谓词连接起来的字符串。
连接词包括~、∨、∧、→、←→,其意义及运算优先级与命题逻辑中的相同。
量词包括全称量词(∀x)和存在量词(∃x),是用来刻画谓词与个体间的关系的。
全称量词(∀x)表示“对个体域中的所有(或任一个)个体x”,存在量词(∃x)表示“在个体域中存在个体x”。
(3)谓词逻辑表示知识的方法
用谓词公式表示知识的步骤:
①定义谓词及个体,确定每个谓词及个体的确切含义。
②根据所要表达的事物或概念,为每个谓词中的变元赋以特定的值。
③根据所要表达的知识的语义,用适当的连接符号将各个谓词连接起来,形成谓词公式。
1.3产生式表示法
1.产生式的基本形式
产生式通常用于表示具有因果关系的知识,其基本形式是
P→Q
或者
IFPTHENQ
其中,P是产生式的前提,用于指出该产生式是否可用的条件;
Q是一组结论或操作,用于指出前提P所指示的条件被满足时,应该得出的结论或应该执行的操作。
P和Q是可由逻辑运算符and、or或not组成的逻辑表达式。
2.产生式与谓词逻辑中蕴涵式的区别
蕴涵式是一个谓词公式,本身有真值,而产生式不是谓词公式,没有真值。
3.产生式系统
产生式系统一般由3个基本部分组成:
规则库、综合数据库和推理机。
它们之间的关系如图2.1所示。
(1)规则库
规则库就是用于描述某领域内知识的产生式集合,是图2.1产生式系统的基本结构某领域知识(规则)的存储器,其中的规则是以产生式形式表示的。
规则库中包含着将问题从初始状态转换成目标状态(或解状态)的那些变换规则。
规则库是产生系统的核心,是进行问题求解的基础,其中知识的完整性和一致性、知识表达的准确性和灵活性以及知识组织的合理性,都将对产生式系统的性能和运行效率产生直接影响。
(2)综合数据库
综合数据库又称为事实库,用于存放输入的事实、外部数据库输入的事实以及中间结果(事实)和最后结果的工作区。
当规则库中的某条产生式的前提可与综合数据库中的某些已知事实匹配时,该产生式就被激活,并把用它推出的结论放人综合数据库中,作为后面推理的已知事实。
显然,综合数据库的内容是在不断变化的,是动态的。
(3)推理机
推理机是一个或一组程序,用来控制和协调规则库与综合数据库的运行,包含了推理方式和控制策略。
控制策略的作用就是确定选用什么规则或如何应用规则。
通常从选择规则到执行操作分3步完成:
匹配、冲突解决和操作。
①匹配。
匹配就是将当前综合数据库中的事实与规则中的条件进行比较,如果相匹配,则这一规则称为匹配规则。
因为可能同时有几条规则的前提条件与事实相匹配,究竟选哪一条规则去执行呢?
这就是规则冲突解决。
通过冲突解决策略选中的在操作部分执行的规则称为启用规则。
②冲突解决。
冲突解决的策略有很多种,其中专一性排序、规则排序、规模排序和就近排序是比较常见的冲突解决策略。
·
专一性排序:
如果某一条规则条件部分规定的情况比另一规则条件部分规定的情况更有针对性,则这条规则有较高的优先级。
规则排序:
规则库中规则的编排顺序本身就表示规则的启用次序。
规模排序:
按规则条件部分的规模排列优先级,优先使用较多条件被满足的规则。
就近排序:
把最近使用的规则放在最优先的位置。
即那些最近经常被使用的规则的优先级较高。
这是一种人类解决冲突最常用的策略。
③操作。
操作就是执行规则的操作部分。
经过操作以后,当前的综合数据库将被修改,其他的规则有可能成为启用规则。
4.用产生式表示知识的方法
用产生式表示知识步骤:
①分析待表示问题中所涉及的对象、事件或操作及它们之间的逻辑关系。
②确定具有因果关系的对象、事件或操作。
③把那些表示原因的对象、事件或操作用谓词表示出来,并根据这些对象间的逻辑关系(and、or、not)组成产生式的前提P。
④把那些表示结果的对象、事件或操作用谓词表示出来,并根据这些对象间的逻辑关系(and、or、not)组成产生式的结论Q。
⑤将前提和结论组成产生式(P→Q)或(IFPTHENQ)。
1.4语义网络表示法
1.语义网络的概念及其结构
语义网络是通过概念及其语义关系来表示知识的一种网络图,它是一个带标注的有向图。
其中有向图的各节点用来表示各种概念、事物、属性、情况、动作、状态等,节点上的标注用来区分各节点所表示的不同对象,每个节点可以带有若干个属性,以表征其所代表的对象之特性;
弧是有方向、有标注的,方向用来体现节点间的主次关系,而其上的标注则表示被连接的两个节点间的某种语义联系或语义关系。
在语义网络中,节点还可以是一个语义子网络,所以,语义网络实质上可以是一种多层次的嵌套结构。
2.语义网络中常用的语义关系
语义网络的引入,主要是为了表示概念、事物、属性等及它们之间的语义关系。
语义关系的分析、提取、表示,是语义网络知识表示的关键。
常用的语义关系主要包括以下几种:
①类属关系:
体现了一种具体与抽象的层次分类。
其直观含义是“是一个(ISA)”、“是一种(AKO)”、“是一员(AMO)”等。
类属关系具有继承性,低层节点可继承高层节点的属性。
②部分与整体关系:
表示某一事物的部分与整体间的关系,或者说表示一种包含关系。
用Part-of表示,Part-of联系不具继承性。
③位置关系:
通常用Located表示事物间的位置关系,节点间属性不具继承性。
④占有关系:
通常用Have表示属性或事物的“占有”关系,节点间属性不具继承性。
⑤构成关系:
通常用Composed—of表示“构成”关系,是一种一对多联系,它所联系的节点间不具属性继承性。
⑥因果关系:
通常用If-then表示两个节点间的因果关系。
⑦逻辑关系:
包括合取(and)、析取(or)、非(not)等逻辑关系,以及逻辑关系中全称量词和存在量词。
3.用语义网络表示知识的方法
用语义网络表示知识的步骤如下:
①确定问题中的所有对象以及各对象的属性。
②分析并确定语义网络中所论对象间的关系。
③根据语义网络中所涉及的关系,对语义网络中的节点及弧进行整理,包括增加节点、弧和归并节点等,由以下七步组成:
a.在语义网络中,如果节点间的联系是ISA/AKO/AMO等类属关系,则下层节点对上层节点的属性具有继承性。
整理同一层节点的共同属性,并抽出这些属性,加入上层节点中,以免造成属性信息的冗余。
b.如果要表示的知识中含有因果关系,则设立情况节点,并从该节点引出多个弧将原因节点和结果节点连接起来。
c.如果要表示的知识中含有动作关系,则设立动作节点,分析动作的主体与客体,从动作节点引出多个弧,将主体与客体连接起来。
d.对于事件性知识的表示,可以设置一个事件节点,分析事件中所涉及的动作以及该动作的主体与客体。
从事件节点引出多条弧,将事件中所涉及的动作、事件的主体、事件的客体连接起来。
e.如果要表示的知识中含有逻辑组成关系,即含有“与”和“或”关系时,可在语义网络中设立“与”节点或“或”节点,并用弧将这些“与”“或”与其他节点联系起来,表达知识中的关系。
f.如果要表达的知识是含有全称量词的复杂问题,则应采用亨德里克(G.G.Hendrix)的网络分区技术,将该复杂问题分解成若干子问题,对每个子问题用一个简单的语义网络进行表示;
然后,再将这些简单的语义网络看作一个节点(称作超节点),并将多个超节点用弧线连接起来,就可构成一个含有全称量词的大的语义网络。
g.如果要表示的知识是规则性知识,则应分析问题中的条件和结果,并将它们作为语义网络中的两个节点,然后用有向弧将它们连接起来,该有向弧具有“如果……那么……”的含义。
④分析检查语义网络中是否还有要表示的知识中所涉及的所有对象,若有遗漏,则需补全。
并将各对象间的关系作为网络中各节点间的有向弧,连接形成语义网络。
⑤根据第①步的分析结果,为各对象标示属性。
4.语义网络表示下的推理过程
语义网络系统中的推理方法一般有两种:
一种是匹配;
另一种是继承。
(1)匹配推理
匹配推理的步骤:
①根据提出的待求解问题,构造一个局部网络或网络片段,其中有的节点或弧的标注是空的,表示有待求解的问题,称作未知处。
②根据这个局部网络或网络片段到知识库中寻找可匹配的语义网络,以便求得问题的解答。
当然,这种匹配不一定是完全匹配,而是某种近似匹配,具有不确定性,因此,需考虑匹配的程度,以解决不确定性匹配问题。
③问题的局部语义网络与知识库中的某语义网络片段相匹配时,则与未知处相匹配的事实就是问题的解。
(2)继承推理
继承推理的步骤:
①继承一般有值继承和过程继承两种。
值继承也可以称作属性继承,一般适用于语义联系ISA和AKO等之间的语义推理。
②过程继承又可以称为方法继承(这里的方法继承的概念借鉴于面向对象的程序设计),是表示语义网络中下层节点的某些属性值并不是从上层节点直接继承下来的,而是通过计算才能得到,但它的计算方法却是从上层节点继承下来的。
1.5框架表示法
1.框架的定义及组成
框架是一种描述所论对象属性的数据结构。
所论的对象可以是一个事物、一个事件或者一个概念。
一个框架由若干个“槽”组成,每个“槽”又可划分为若干个“侧面"
。
一个槽用于描述所论及对象的某一方面的属性,一个侧面用于描述相应属性的一个方面。
槽和侧面所具有的属性值分别称为槽值和侧面值。
槽值可以是逻辑型或数字型的,可以是程序、条件、默认值或是一个子框架。
一个框架可以由框架名、槽、侧面和值4部分组成。
框架一般可表示成如下格式:
框架名
<
槽名1>
侧面11>
值111>
…<
值11k1>
…
侧面1n1>
值1n11>
值1n1kn1>
槽名2>
侧面12>
值121>
值121l>
…
侧面1n2>
<
值1n21>
值1n21n2>
…
2.用框架表示知识的步骤
用框架表示知识的步骤如下:
(1)分析待表达知识中的对象及其属性,对框架中的槽进行合理设置。
(2)对各对象间的各种联系进行考察。
使用一些常用的或根据具体需要定义一些表达联系的槽名,来描述上下层框架间的联系(常用的槽名有ISA、AKO、Instance、Part-of,读者在使用框架系统表示知识时,也可以根据具体的需要,进行槽名的定义)。
(3)对各层对象的“槽”及“侧面”进行合理的组织安排,对由ISA、AKO和Instance等槽所联系的上下层框架,由于不同层次的框架间具有继承性,可将这些框架所表示的对象的共同属性抽取出来,放入到它们的上层框架(即父框架)中,以避免信息描述的重复。
3.框架表示下的推理方法
求解问题的匹配推理步骤如下:
(1)把待求解问题用一个框架表示出来,其中有的槽是空的,表示待求解的问题,称作未知处。
(2)通过与知识库中已有的框架进行匹配。
这种匹配是通过对相应的槽的槽名及槽值逐个进行比较实现的。
比较的结果可能不是完全匹配,如果两个框架的各对应槽没有矛盾或者满足预先规定的某些条件,就认为这两个框架可以匹配。
找出一个或几个可匹配的预选框架作为初步假设,在初步假设的引导下收集进一步的信息。
(3)使用一种评价方法对预选框架进行评价,以便决定是否接受它。
(4)若可接受,则与问题框架的未知处相匹配的事实就是问题的解。
1.6面向对象的表示法
1.面向对象的基本概念
在面向对象技术中,核心的概念是对象。
实际上,客观世界中的任何事物都可看作是一个对象。
所以,面向对象技术是源自客观世界、能更好表达客观事物的一门技术。
与对象相关的概念还有类、继承和封装等,它们都是面向对象技术中的基本概念,对于理解面向对象的思想及方法有重要作用。
类和对象是一个相对的概念。
类在概念上是一种抽象机制,它是对一组相似对象的抽象。
类由一组属性和一组操作组成,它描述了一组具有相同属性和操作的对象。
一个类拥有另一个类的全部属性和操作,这种拥有就是继承。
前者称为子类,后者称为父类,父类所具有的数据和操作可被子类继承。
封装是一种信息隐藏技术,是面向对象的主要特征,面向对象的许多优点都是靠这一手段而获得的,它使得对象的用户可以不了解对象行为实现的细节,只需用消息来访问对象,这样就可把精力用于系统一级的设计与实现上。
面向对象技术具有以下特点:
(1)模块性。
一个对象是可以独立存在的实体,其内部状态不直接受外界的影响,能够较为自由地为各个不同的软件系统使用,提高软件的复用率。
(2)继承性。
子类可继承父类的数据及操作,这样每个子类的数据一般分为两部分,一部分是从父类那里继承过来的共享数据,另一部分是本类中的私有数据。
(3)封装性。
对象是封装的数据及操作。
每个对象将自己的功能实现细节封装起来,使得用户不必知道其内部细节就可使用它,从而加快了软件开发的速度。
(4)多态性。
所谓多态是指一个名字可以有多种语义,可作多种解释。
例如,运算符“+”、“-”、“*”、“/"
既可做整数四则运算,也可做实数四则运算,但它们的执行代码却全然不同。
在面向对象系统中,对象封装了操作,恰恰是利用了重名操作,让各对象自己去根据实际情况执行,不会引起混乱。
(5)易维护性。
对象实现了抽象和封装,这就使错误具有局部性,不会传播,便于检测和修改。
2.表示知识的方法
用面向对象方法表示知识时,需要对类的构成形式进行描述。
不同的面向对象语言所提供的类的描述形式不同,下面给出一般的描述形式:
Class<
类名>
[:
父类名>
]
[<
类变量表>
Structure
对象的静态结构描述>
Method
关于对象的操作定义>
Restraint
限制条件>
END
其中,Class是类描述的开始标志;
是该类的名字,它是系统中该类的唯一标识;
是任选的,指出当前定义的类之父类,它可以缺省;
是一组变量名序列,该类中所有对象都共享这些变量,对该类对象来说它们是全局变量,当把这些变量实例化为一组具体的值时,就得到了该类中的一个具体对象,即一个实例;
Structure后面的<
用于描述该类对象的构成方式;
Method后面的<
用于定义对类元素可施行的各种操作,它既可以是一组规则,也可以是为实现相应操作所需执行的一段程序,在C++中则为成员函数调用;
Restraint后面的<
指出该类元素所应满足的限制条件,可用包含类变量的谓词构成,当它不出现时表示没有限制。
1.7状态空间表示法
1.问题状态空间的构成
状态空间表示法就是以“状态空间”的形式对问题进行表示。
“状态空间”的构成及定义如下。
(1)状态。
状态是描述问题求解过程中不同时刻状况的数据结构。
一般用一组变量的有序集合表示:
Q=(q0,q1,…,qn)
其中每个元素qi(i=0,1,2,…,n)为集合的分量,称为状态变量。
当给每一个分量以确定的值时,就得到了一个具体的状态。
(2)算符。
引起状态中某些分量发生变化,从而使问题由一个状态变为另一个状态的操作称为算符。
算符可分为走步、过程、规则、数学算子、运算符号或逻辑符号等。
例如,在产生式系统中,每一条产生式规则就是一个算符;
而在下棋程序中,一个算符就是一个走步。
(3)状态空间。
由表示一个问题的全部状态及一切可用算符构成的集合称为该问题的状态空间。
它一般由3部分构成:
问题的所有可能初始状态构成的集合S;
算符集合F;
目标状态集合G。
用一个三元组表示如下:
(S,F,G)
状态空间的图示形式称为状态空间图。
其中,节点表示状态;
有向边(弧)表示算符。
(4)问题的解。
从问题的初始状态集S出发,经过一系列的算符运算,到达目标状态。
初始状态到目标状态所用算符的序列就构成了问题的一个解。
2.用状态空间表示问题的步骤
(1)用状态空间方法表示问题时的步骤如下:
①定义状态的描述形式。
②用所定义的状态描述形式把问题的所有可能的状态都表示出来,并确定出问题的初始状态集合描述和目标状态集合描述。
③定义一组算符。
使得利用这组算符可把问题由一种状态转变为另一种状态。
(2)利用状态空间求解问题的过程如下:
问题的求解过程是一个不断把算符作用于状态的过程。
首先将适用的算符作用于初始状态,以产生新的状态;
然后再把一些适用的算符作用于新的状态;
这样继续下去,直到产生的状态为目标状态为止。
这时,就得到了问题的一个解,这个解是从初始状态到目标状态所用算符构成的序列。
知识表示是人工智能研究的主要问题之一,也是利用人工智能求解实际问题的必经之路。
本章,我们讨论了知识表示常用的6种方法,针对每一种方法,我们都讨论了它适于表示的知识种类,特别是讨论了表示知识的步骤和方法,使得知识表示的可操作性更强、更实用。