人工智能技术导论第6章知识表示课件.ppt
63页第第6章章 知识表示知识表示 第第6章章 知识表示知识表示 6.1 知识及其表示知识及其表示 6.2 框框 架架6.3 语义网络语义网络6.4 面向对象知识表示面向对象知识表示第6章 知识表示 6.1 知识及其表示 第第6章章 知识表示知识表示 6.1 知识及其表示知识及其表示 6.1.1 知识的概念 “知识”是我们熟悉的名词但究竟什么是知识呢?我们认为,知识就是人们对客观事物(包括自然的和人造的)及其规律的认识,知识还包括人们利用客观规律解决实际问题的方法和策略等 6.1 知识及其表示 6.1.1 知识的概念第第6章章 知识表示知识表示 对客观事物及其规律的认识,包括对事物的现象、本质、属性、状态、关系、联系和运动等的认识,即对客观事物的原理的认识利用客观规律解决实际问题的方法和策略,包括解决问题的步骤、操作、规则、过程、技术、技巧等具体的微观性方法;也包括诸如战术、战略、计谋、策略等宏观性方法所以,就内容而言,知识可分为(客观)原理性知识和(主观)方法性知识两大类 就形式而言,知识可分为显式的和隐式的。
对客观事物及其规律的认识,包括对事物第第6章章 知识表示知识表示 人工智能技术导论第6章知识表示课件第第6章章 知识表示知识表示 人工智能技术导论第6章知识表示课件第第6章章 知识表示知识表示 6.1.3 知识表示的语言实现 上面谈的知识表示,仅是指知识的逻辑结构或形式那么,要把这些外部的逻辑形式转化为机器的内部形式,还需要程序语言的支持原则上讲,一般的通用程序设计语言都可实现上述的大部分表示方法但使用专用的面向某一知识表示的语言更为方便和有效因此,几乎每一种知识表示方法都有其相应的专用实现语言例如,支持谓词逻辑的语言有PROLOG和LISP,专门支持产生式的语言有OPS5,专门支持框架的语言有FRL,支持面向对象表示的语言有Smalltalk、C++和Java等,支持神经网络表示的语言有AXON 6.1.3 知识表示的语言实现第第6章章 知识表示知识表示 6.2 框框 架架 6.2.1 框架的概念 顾名思义,框架就是一种结构,一种模式,其一般形式是: <框架名> <槽名1><槽值1>| <侧面名11><侧面值111,侧面值112,…> <侧面名12><侧面值121,侧面值122,…>6.2 框 架 6.2.1 框架的概念第第6章章 知识表示知识表示 <槽名2><槽值2>|<侧面名21><侧面值211,侧面值212,…> <侧面名22><侧面值221,侧面值222,…> …<槽名k><槽值k>| <侧面名k1><侧面值k11,侧面值k12,…> <侧面名k2><侧面值k21,侧面值k22,…> <槽名2><槽值2>|<侧面名21><侧面值211,侧面值第第6章章 知识表示知识表示 即一个框架一般有若干个槽,一个槽有一个槽值或者有若干个侧面,而一个侧面又有若干个侧面值。
其中槽值和侧面值可以是数值、字符串、布尔值,也可以是一个动作或过程,甚至还可以是另一个框架的名字 即一个框架一般有若干个槽,一个槽有一第第6章章 知识表示知识表示 例6.1 下面是一个描述“教师”的框架:框架名:<教师>类属:<知识分子>工作:范围:(教学,科研)缺省:教学性别:(男,女)学历:(中师,高师)类型:(<小学教师>,<中学教师>,<大学教师>)例6.1 下面是一个描述“教师”的框架:第第6章章 知识表示知识表示 可以看出,这个框架的名字为“教师”,它含有5个槽,槽名分别是“类属”、“工作”、“性别”、“学历”和“类型”这些槽名的右面就是其值,如“<知识分子>”、“男”、“女”、“高师”、“中师”等等其中“<知识分子>”又是一个框架名,“范围”、“缺省”就是侧面名,其后是侧面值,如:“教学”、“科研”等另外,用<>括的槽值也是框架名 可以看出,这个框架的名字为“教师”第第6章章 知识表示知识表示 例6.2 下面是一个描述“大学教师”的框架:框架名:<大学教师>类属:<教师>学历:(学士,硕士,博士)专业:<学科专业>职称:(助教,讲师,副教授,教授)外语:语种:范围:(英,法,日,俄,德,…) 缺省:英水平:(优,良,中,差)缺省:良例6.2 下面是一个描述“大学教师”的框架:第第6章章 知识表示知识表示 例6.3 下面是描述一个具体教师的框架:框架名:<教师-1>类属:<大学教师>姓名:李明性别:男年龄:25职业:教师职称:助教专业:计算机应用例6.3 下面是描述一个具体教师的框架:第第6章章 知识表示知识表示 部门:计算机系软件教研室工作:参加工作时间:1995年8月工龄:当前年份-参加工作年份工资:<工资单>部门:计算机系软件教研室第第6章章 知识表示知识表示 比较例6.2和例6.3中的框架,可以看出,前者描述的是一个概念,后者描述的则是一个具体的事物。
二者的关系是,后者是前者的一个实例因此,后者一般称为前者的实例框架这就是说,这两个框架之间存在一种层次关系一般称前者为上位框架(或父框架),后者为下位框架(或子框架)当然,上位和下位是相对而言的例如“大学教师”虽然是“教师-1”的上位框架,但它却是“教师”框架的下位框架,而“教师”又是“知识分子”的下位框架 比较例6.2和例6.3中的框架,可以第第6章章 知识表示知识表示 6.2.2 框架的表达能力 由框架的形式可以看出,框架适合表达结构性的知识所以,概念、对象等知识最适于用框架表示其实,框架的槽就是对象的属性或状态,槽值就是属性值或状态值不仅如此,框架还可以表示行为(动作),所以,有些过程性事件或情节也可用框架网络来表示 6.2.2 框架的表达能力第第6章章 知识表示知识表示 例6.4 下面是关于房间的框架:框架名:<房间>墙数x1: 缺省:x1=4 条件:x1>0窗数x2: 缺省:x2=2 条件:x2≥0门数x3: 缺省:x3=1 条件:x3>0例6.4 下面是关于房间的框架:第第6章章 知识表示知识表示 前墙:(墙框架(w1,d1))后墙:(墙框架(w2,d2))左墙:(墙框架(w3,d3))右墙:(墙框架(w4,d4))天花板:<天花板框架>地板:<地板框架>门:<门框架>窗:<窗框架>条件:w1+w2+w3+w4=x2d1+d2+d3+d4=x3类型:(<办公室>,<教室>,<会客室>,<卧室>,<厨房>,<仓库>,…)前墙:(墙框架(w1,d1))第第6章章 知识表示知识表示 例6.5 机器人纠纷问题的框架描述如图6-1所示。
图6―1 机器人纠纷问题 例6.5 机器人纠纷问题的框架描述如图6-1所第第6章章 知识表示知识表示 还需指出的是,产生式规则也可用框架表示 例如,产生式 如果头痛且发烧,则患感冒 用框架表示可为: 框架名:<诊断1> 前提:条件1:头痛 条件2:发烧 结论:患感冒 还需指出的是,产生式规则也可用框第第6章章 知识表示知识表示 6.2.3 基于框架的推理 基于框架的推理方法是继承所谓继承,就是子框架可以拥有其父框架的槽及其槽值实现继承的操作有匹配、搜索和填槽 匹配就是问题框架同知识库中的框架的模式匹配所谓问题框架,就是要求解某个问题时,先把问题用一个框架表示出来,然后与知识库中的已有框架进行匹配如果匹配成功,就可获得有关信息搜索就是沿着框架间的纵向和横向联系,在框架网络中进行查找搜索的目的是为了获得有关信息。
6.2.3 基于框架的推理第第6章章 知识表示知识表示 6.2.4 框架的程序语言实现 有一种名为FRL(Frame Representation Language)的程序设计语言,就是专门基于框架的程序设计语言用它就可以方便地实现框架知识表示不过,用PROLOG也可方便地实现框架表示用PROLOG实现框架表示,一般采用含结构或表的谓词来实现因为框架实际上就是树,而PROLOG的结构也是树,表又是特殊的结构,它的元素个数和层数都不限定,可动态变化,因此,更适于表示一般的框架 6.2.4 框架的程序语言实现第第6章章 知识表示知识表示 例如,前面的“教师”框架用PROLOG可表示如下: frame(name("教师"), kind--of("<知识分子>"), work(scope("教学","科研"),default("教学")), sex("男","女"), reco--of--f--s("中师","高师"), type(“<小学教师>”,“<中学教师>”,“<大学教师>”)). 如果要给出框架的一个通用表示形式,则下面的表示方式可供参考。
例如,前面的“教师”框架用PROLOG可表示如下: 第第6章章 知识表示知识表示 frame(name("教师"),body([st("类属",[st("<知识分子>",[])]),st("工作",[st("范围",[st("教学",[]),=st("科研",[])]),st("缺省",[st("教学",[])])]),st("性别",[st("男",[]),st("女",[])]),st("学历",[st("中师",[]),st("高师",[])]),st("类型",[st("<小学教师>",[]),st("<中学教师>",[]),=st("<大学教师>"[])])])) frame(name("教师"),第第6章章 知识表示知识表示 这是一个PROLOG的“事实”,其谓词及领域说明如下: domains name=name(string) body=body(subtree list) subtreelist=subtree* subtree=st(string,subtreelist)database frame(name,body) 其中的subtreelist是递归定义的。
按此定义所有框架都取统一的表示形式这是一个PROLOG的“事实”,其谓词及领域说明如下: 第第6章章 知识表示知识表示 6.3 语义网络语义网络 6.3.1 语义网络的概念 语义网络是由节点和边(也称有向弧)组成的一种有向图其中节点表示事物、对象、概念、行为、性质、状态等;有向边表示节点之间的某种联系或关系例如图6―2就是一个语义网络其中,边上的标记就是边的语义6.3 语义网络 6.3.1 语义网络的概念第第6章章 知识表示知识表示 图6―2 苹果的语义网络 图6―2 苹果的语义网络 第第6章章 知识表示知识表示 语义网络的概念最先是由Quillian提出来的,他于1968年在他的博士论文中,把语义网络作为人类联想记忆的一个显式心理模型所以,语义网络也称联想网络 现在,语义网络的理论已经有了长足的发展有人把它划分为五个级别:执行级、逻辑级、认识论级、概念级和语言学级并分为七种类型: 语义网络的概念最先是由Quilli第第6章章 知识表示知识表示 (1)命题语义网(包括分块联想网络); (2)数据语义网:以数据为中心的语义网络; (3)语言语义网:用于自然语言的分析和理解; (4)结构语义网:描述客观事物的结构,常见于模式识别和机器学习等领域; (5)分类语义网:描述抽象概念及其层次; (6)推理语义网:是一种命题网,但它已在某种程度上规范化,更适于推理; (7)框架语义网:与框架相结合的语义网。
(1)命题语义网(包括分块联想网络);第第6章章 知识表示知识表示 6.3.2 语义网络的表达能力 由语义网络的结构特点可以看出,语义网络不仅可以表示事物的属性、状态、行为等,而且更适合于表示事物之间的关系和联系而表示一个事物的层次、状态、行为的语义网络,也可以看作是该事物与其属性、状态或行为的一种关系 6.3.2 语义网络的表达能力第第6章章 知识表示知识表示 如图6―3所示的语义网络,就表示了专家系统这个事物(的内涵),同时也可以看作是表示了专家系统与“智能系统”、“专家知识”、“专家思维”及“困难问题”这几个事物之间的关系或联系所以,抽象地说,语义网络可表示事物之间的关系因此,关系(或联系)型的知识和能化为关系型的知识都可以用语义网络来表示下面我们就给出常见的几种 如图6―3所示的语义网络,就表示了专第第6章章 知识表示知识表示 1.实例关系 实例关系表示类与其实例(个体)之间的关系这是最常见的一种语义关系例如,“小华是一个大学生”就可表示为图6―4。
其中,关系“是一个”一般标识为“is-a”,或ISA 1.实例关系第第6章章 知识表示知识表示 图6―3 专家系统的语义网络 智能系统专家思维专家知识困难问题专家系统是一种能解决具有能模拟图6―3 专家系统的语义网络 智能系统专家思维专家知识困难问第第6章章 知识表示知识表示 图6―4 表示实例关系的语义网络 小华大学生是一个图6―4 表示实例关系的语义网络 小华大学生是一个第第6章章 知识表示知识表示 2.分类(或从属、泛化)关系 分类关系是指事物间的类属关系,图6―5就是一个描述分类关系的语义网络在图6―5中,下层概念节点除了可继承、细化、补充上层概念节点的属性外,还出现了变异的情况:鸟是鸵鸟的上层概念节点,其属性是“有羽毛”、“会飞”,但鸵鸟的属性只是继承了“有羽毛”这一属性,而把鸟的“会飞”变异为“不会飞”其中,关系“是一种”一般标识为“akindof”或AKO 2.分类(或从属、泛化)关系第第6章章 知识表示知识表示 图6―5 表示分类关系的语义网络 图6―5 表示分类关系的语义网络 第第6章章 知识表示知识表示 3.组装关系 如果下层概念是上层概念的一个方面或者一部分,则称它们的关系是组装关系。
例如图6―6所示的语义网络就是一种聚集关系其中,关系“一部分”一般标识为“apartof” 3.组装关系第第6章章 知识表示知识表示 桌子桌腿桌面一部分一部分图6―6 表示组装关系的语义网络 桌子桌腿桌面一部分一部分图6―6 表示组装关系的语义网络 第第6章章 知识表示知识表示 4.属性关系 属性关系表示对象的属性及其属性值例如,图6―7表示simon是一个人,男性,40岁,职业是教师 5.集合与成员关系 意思是“是……的成员”,它表示成员(或元素)与集合之间的关系例如,“张三是计算机学会会员”可表示为图6―8其中,关系“是成员”一般标识为“a-member-of” 4.属性关系第第6章章 知识表示知识表示 图6―7 表示属性关系的语义网络 图6―7 表示属性关系的语义网络 第第6章章 知识表示知识表示 图6―8 表示集合—成员关系的语义网络 张三计算机学会是成员图6―8 表示集合—成员关系的语义网络 张三计算机学会是成第第6章章 知识表示知识表示 6.逻辑关系 如果一个概念可由另一个概念推出,两个概念间存在因果关系,则称它们之间是逻辑关系。
图6―9所示的语义网络就是一个逻辑关系 6.逻辑关系第第6章章 知识表示知识表示 图6―9 表示逻辑关系的语义网络 雨天外出ANDOR带雨披带雨伞则图6―9 表示逻辑关系的语义网络 雨天外出ANDOR带雨披第第6章章 知识表示知识表示 7.方位关系 在描述一个事物时,经常需要指出它发生的时间、位置,或者指出它的组成、形状等等,此时可用相应的方位关系语义网络表示例如事实: 张宏是石油学院的一名助教; 石油学院位于西安市电子二路; 张宏今年25岁 可用图6―10所示的语义网络表示 7.方位关系第第6章章 知识表示知识表示 图6―10 表示方位关系的语义网络 电子2路石油学院张宏助教西安市区25岁味道工作在职务属于年龄图6―10 表示方位关系的语义网络 电子2路石油学院张宏助第第6章章 知识表示知识表示 8.所属关系 所属关系表示“具有”的意思。
例如“狗有尾巴”可表示为图6―11 图6―11 表示所属关系的语义网络 狗尾巴have 8.所属关系图6―11 表示所属关第第6章章 知识表示知识表示 语义网络中的语义关系是多种多样的,一般根据实际关系定义如常见的还有before、after、at等表示时间次序关系和located-on、located-under等表示位置关系进一步,还可对带有全称量词和存在量词的谓词公式的语义加以表示 由上所述可以看出,语义网络实际上是一种复合的二元关系图网络中的一条边就是一个二元关系,而整个网络可以看作是由这些二元关系拼接而成 语义网络中的语义关系是多种多样的,一第第6章章 知识表示知识表示 上面我们是从关系角度考察语义网的表达力的下面我们从语句角度来考察语义网 例如,对于如下的语句(或事件): 小王送给小李一本书 用语义网络可表示为图6―12,其中S代表整个语句这种表示被称为是自然语言语句的深层结构表示。
语义网络也能表示用谓词公式表示的形式语言语句例如: x(student(x)∧read(x,三国演义)) 即“某个学生读过《三国演义》”,其语义网络表示为图6―13 上面我们是从关系角度考察语义网的第第6章章 知识表示知识表示 图6―12 语句(事件)的语义网络 送书小王小李书giverrecipientSobject图6―12 语句(事件)的语义网络 送书小王小李书giv第第6章章 知识表示知识表示 图6―13 谓词公式的语义网络 图6―13 谓词公式的语义网络 第第6章章 知识表示知识表示 图6―14 分块语义网络 图6―14 分块语义网络 第第6章章 知识表示知识表示 6.3.3 基于语义网络的推理 基于语义网络的推理也是继承继承也是通过匹配、搜索实现的问题求解时,首先根据待求问题的要求构造一个网络片断,然后在知识库中查找可与之匹配的语义网络,当网络片断中的询问部分与知识库中的某网络结构匹配时,则与询问处匹配的事实,就是问题的解。
6.3.3 基于语义网络的推理第第6章章 知识表示知识表示 图6―15 语义网络片段 苹果x富士 特点AKO图6―15 语义网络片段 苹果x富士 特点AKO第第6章章 知识表示知识表示 6.3.4 语义网络的程序语言实现 由 于 语 义 网 络 是 一 个 二 元 关 系 图 , 所 以 用PROLOG可方便地实现语义网络知识表示 例如,图6―1所示的语义网络用PROLOG可表示如下: a--kind--of("苹果","水果"). taste("苹果","甜"). a--kind--of("富士","苹果"). intro--from("富士","日本"). is--a("日本","亚洲国家"). 6.3.4 语义网络的程序语言实现第第6章章 知识表示知识表示 a--kind--of("秦冠","苹果"). produ--in("秦冠","陕西"). is--located--at("陕西","中国西部"). a--part--of("中国西部","中国"). ……… 也可以表示为 arc(a--kind--of,"苹果","水果"). arc(taste,"苹果","甜"). arc(a--kind--of,"富士","苹果"). arc(intro--from,"富士","日本"). arc(is--a,"日本","亚洲国家"). a--kind--of("秦冠","苹果"). 第第6章章 知识表示知识表示 arc(a--kind--of,"秦冠","苹果"). arc(produ--in,"秦冠","陕西"). arc(is--located--at,"陕西","中国西部"). arc(a--part--of,"中国西部","中国"). ……… 当然,我们也可以将一个网络或网络片段组织在一个事实中。
例如: net1( a--kind--of(“苹果”,“水果”), taste(“苹果”,“甜”), a--kind--of(“秦冠”,“苹果”), produ--in("秦冠","陕西")). arc(a--kind--of,"秦冠","苹果"). 第第6章章 知识表示知识表示 6.4 面向对象知识表示面向对象知识表示 近年来,面向对象技术蓬勃兴起在知识表示领域则出现了面向对象的知识表示方法 面向对象技术中的核心概念是对象和类对象可以泛指一切事物,类则是一类对象的抽象模型反之,一个对象是其所属类的实例通常,在面向对象的程序设计语言中,只给出类的定义,其对象由类生成 6.4 面向对象知识表示 近年来第第6章章 知识表示知识表示 类的定义中就说明了所辖对象的共同特征(属性、状态等)和行为特征用变量表示,行为则是作用于这些特征和作用于对象的一组操作,如函数、过程等这些操作一般称为方法这样,一个类将其对象所具有的共同特征和操作组织在一起,统一进行定义,以供全体对象共享即当给类中的特征变量赋予一组值时,则这组值连同类中的方法,就构成了一个具体的对象。
类的定义中就说明了所辖对象的共同特第第6章章 知识表示知识表示 例6.6 下面是面向对象程序设计语言C++中一个雇员类和经理类的定义 class Employee { privite: char*Name; int Age; int Salary;= public: Employee(char*name,int age,int salary); ~Employee(); 例6.6 下面是面向对象程序设第第6章章 知识表示知识表示 };Employee∷Employee(char*name,int age,int salary){Name=newchar[strlen(name)];strcpy(Name,name);Age=age;Salary=salary;= }= Employee∷~Employee() {Delete Name;= }Void Employee∷Change(int age,int salary){};第第6章章 知识表示知识表示 Age=age;Salary=salary;}Void Employee∷Retire(){if(Age>60)Delete this;}以上是雇员类的定义,用此定义就可生成一个雇员类的实例,即雇员对象。
例如下面的语句 Employeee1("李明",30) Age=age;第第6章章 知识表示知识表示 就生成一个名为李明,年龄为30岁的雇员下面是经理类的定义 Class Manager:public Employee{Int Level;public:Manager(char*name,int age,int salary,int level);~Manager();Void Change Level(int n);}; 就生成一个名为李明,年龄为30岁的雇员第第6章章 知识表示知识表示 由于经理类是雇员类的一个子类,所以,经理类就继承了雇员类的全部属性和行为这两个类之间也就构成了一种层次关系 一般认为,面向对象知识表示是最结构化的知识表示方法面向对象知识表示很类似于框架,知识可以使用类按一定层次形式来组织由于面向对象知识表示还具有封装特性,从而使知识更加模块化所以,用面向对象方法表示的知识相当结构化和模块化,而且容易理解和管理因此,这种方法特别适合于大型知识库的开发和维护 由于经理类是雇员类的一个子类,所以,。





