Knowledge 复习内容

最后一次课复习内容:

        前面都讲的是知识表示和知识推理的内容,也就是人工智能里面的符号主义的学派(另一个是连接主义),把脑袋中存储的知识用符号表示,用什么符号呢?逻辑的形式化语言来表示,我们讲了两个逻辑,一个命题逻辑和一阶谓词逻辑,表式的范围是不一样,命题逻辑能够表达能力小一些。

        两套逻辑,讲课思路如图。每一种逻辑都会定义形式语言、定义形式语法,语言要定义清楚。任何一种编程语言,比如C等要定义清楚语法。这两种不同的逻辑表达逻辑不同,里面基本要素不同。

        命题逻辑中有两个基本要素:原子命题大写字母表示,太阳从东方升起,可以用P表示。还有各种连接词(5个)原子命题通过连接词可以连接成复杂的sentence,可以得到KB。对应的一阶谓词逻辑中,表达能力强,基本要素就扩充了引入了变量和常量,还有函数的概念,函数可以是k元的函数,k个object通过某种关系映射到另一个object上面。同时还有谓词的概念,可以理解是特殊的函数,自变量也可以是K元的,值只有2个,true或者false,相当于一个特殊的函数。还有全称量词和存在量词还有一个等于的符号,这些构成了基本要素。在命题逻辑中有原子命题,在一阶谓词中首先定义了原子senten,经过连接词构造成复杂sentence

        左侧那个是,任何逻辑都想说有了KB,可以从语义上蕴含新的知识,所以我们KB一个怎么蕴含一个新的sentence  a ,这个蕴含要给出一个形式的定义。这定义是什么呢?任意的一个模型,如果使得KB为真,都能使得a为真,那么我们说KB蕴含a。这个是一个基本的概念。但是,我们要分别去看,在命题逻辑怎么才能叫它的一个模型,在一阶谓词中怎么又可以称为它的一个模型。在命题逻辑里面,假设KB中有k个原子命题,那么我做一次真值指派,相当于我要把k个原子命题,每一个都赋值真假。在这样一个真值指派下,我们要检测蕴含的a是不是为真。他有多少种真值指派2^k个。在一阶谓词逻辑中,这个模型就比较复杂,所谓对它做一个解释。我们要KB中每一个object指派到现实生活的object,然后他的每一个predicate,在KB中就是一个符号,一串字母,要指到现实生活中关系上,我们做了这个指派之后,我们去检查,是不是这个模型使得KB为真,然后我们就可以使得a为真,这个指派与命题逻辑中真值指派完全不同,要指派object和具体哪一个关系。左侧一定要搞清蕴含的基本概念是什么,有了概念之后,我给你一堆KB,我就可以得到另一个集合,这里面每一个sentence,都是通过KB蕴含出来,相当于是sentence的新的集合

        右侧,而是语法上的推演,左侧叫entailment,右侧叫deduction,这两个是不一样的,那么在命题逻辑中,我们讲了三套形式推演的系统,第一个有11个规则,第二个是归结原理。第三个是mp规则。第三个并不适用于一般的KB,只适用于包含definite clause(每一个sen有且仅有一个正文字),我们才可以使用mp规则。那在一阶谓词逻辑中,我们只讲了两套规则generate Resolutiongenerate mp。一个是三套一个是两套。11条规则那套规则不考,其他的都会考。那么不管怎么说,我给一个套形式推演规则,我可以使用形式推演得到另外一个集合,用那些推演规则推出来的,右侧是推出来的,也是一个集合

        怎么评估这一套形式推演规则是不是好,怎么知道好?任意的形式推演规则都要证明完备性和可靠性,可靠性实际上,右侧集合是左侧的子集,完备性是左侧是右侧的子集。那么,我们在命题逻辑中,我们非常形式化的证明了归结原理和mp规则的完备性和可靠性,这个是重点。

        但是在一阶谓词中,我们没有去证明,因为比较复杂。具体讲,由于一阶谓词中,语言丰富,所以他的推演系统复杂一些,比如用归结原理,基本的步骤,要把一阶谓词中每一个sen都转换成合取范式的形式。与此同时,这个步骤其实有好几步,第一步要把里面用存在量词修饰的变量变成sigaone化,去掉存在量词。里面的每一个变量都是全称量词表示,就把全称去掉,这个情况下,再做各种语义上等价转换变成合取范式形式。然后做归结原理来证明。

        另外我们左侧有一个重要的知识往往要证明KB是否可以蕴含a?但是我们在讲课的时候,我证明这个东西不是直接证明,转换为一个等价的式子,证明KB implement a 这个sentence是不是永真的?这个他的一个等价形式,或者证明KB合取否的a是不是永假的?要把这个记住。

        在右侧,我们有了这个KB之后,我们特别是做了谓词逻辑之后,讲完谓词逻辑之后,我们用谓词逻辑就可以表示生活中知识,比如不到长城非好汉,到了长城就是好汉。可以用符号表达这些知识,这个过程就是一个知识表示的一个过程。有了知识表示,就可以做形式推演。

        最重要的,介绍了prolog这个语言,他的编程模式和C等不同。这个编程模式,KB写好,然后想要问啥就问一下,然后回答你的问题,求解的过程你是不知道的,求解的过程实际上是一个搜索的过程。Prolog中KB只能包含有且只有一个正文字的句子。因为一般的东西,归结过程复杂度非常高。而且为了效率考虑,有可能推出错的东西,有可能正确的推不出来。即便这样,还是有人再用。

        最后,我们要知道,虽然在命题和一阶谓词逻辑中均有自己形式推演系统,而且命题逻辑和一阶谓词逻辑中归结原理都是完备和可靠的,命题逻辑归结系统总是可能停机(找不到句子可以归结或者找到一个句子是空子句),但是在一阶谓词逻辑中可能不停机,可能永远归结下去。你不知道他将来能不能找到空子句。这就是引入了更多表达能力,系统上就会有缺陷。

发布了289 篇原创文章 · 获赞 163 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/Suyebiubiu/article/details/103427674
今日推荐