Knowledge 6一阶谓词逻辑的UI和EI和proposotionalization命题化问题

目录

1.写在前面

2.instantiation中UI 和EI的概念

3.如何利用Instantiation在knowlegebase中做proposotionalization(命题化)事情

 

1.写在前面

        我们了解了一阶谓词逻辑的基本概念,接下来我们看一下,在一阶谓词逻辑中如何做inference,我们先介绍两个概念,UI和EI,这两个都是instantiation,就是把一个变数,替换成一个常数的技巧。一个是针对Universal quantify,另一个是针对existence quantity。

2.instantiation中UI 和EI的概念

        假设a是某个句子,前面有全称量词for all。我们就可以用一个常数constant  g替换掉全称量词v。因为是针对所有的,那么我们换成任意一个肯定都是可以的。下面右侧的例子,我们可以做同样的事情,把v替换成k,差别就是K不可以在KB之中。我们待会儿会讲这个是为什么?

        下面例子,第一个:任何贪婪的国王是邪恶的,我们x可以替换成任何的东西,因为他针对的是任意的。第二个例子讲了存在一个人,但是我们不能随便替换,因为人是不同的,所以我们用一个常数C1替换,并且这个C1常数不能是kB中的已知任何东西。不然就是知道是谁了,之后我们可能会知道C1是小明或者小红。skolem constant这个词指的是用过了C1,下次替换存在量词的时候也不可以使用C1这个常量了,即使KB中没有。

        UI中,可以替换任意次数,是等价的,但是在EI中只能apply一次,因为EI是至少一次,但是我们也不知道是一次还是多次,所以当apply超过一次的时候,也是比较危险的。我们在替换一次之后,一般就把exitence拿掉,免得系统会继续给我们做替换。而且在EI中KB的概念和之前也不太一样,我们在替换一次之后,就相当于把替换词放到了KB中(并不在),后面会推演出真正的constant。这种我们称为inferentially equivalent推理上等价,并不是logical equivalent逻辑上等价。

3.如何利用Instantiation在knowlegebase中做proposotionalization(命题化)事情

        我们假设KB已知,我们知道所有贪婪的国王都是evil邪恶的,首先因为我们知道这里面的世界只有John跟Richard,这两个constant,所以我们有一种方法就是把上面这种变数x,用UI把它可能的全部替换掉。那我们现在全部换掉。你就把所有的,这一句话换John,再带入Richard换一次,剩下的都不用动,所以我们现在得到一个比之前大一点的KB,这KB已经完全就没有quantifier了,也没有唯一的一个那个universal。所以被我们称为propositionalized命题化。就是原本的first order logic的KB ,我们把它换成了一个propositional logic的KB。

        一旦换成这KB以后那当然接下来就很简单,就是follow我们上一讲所讲到的inference的方法,你可以用resolution,那如果整个符合horn clause的话,你可以把它利用forward  chaining或backward  chaining的方式来做

        我们刚才有讲过你用UI的话,新的KB是一个logic  equivalent的KB,那如果你EI  换掉的话,它虽然不是logic  equivalent,但是在inference上是equivalent的,所以我们称为inferential equivalent。也就是说原来如果某一个sentence被原来的KB entail的话,那就等价于它会被新的KB entail。这两件事情是equivalent,所以我们原来first-order logic所要证的东西,我们用现在propositionalized之后所要证的东西是一样的,如果原来的KB不能证,那propositionalize之后当然也不能证,但是因为原来就不能证,所以就没有差别

        好消息就是你能证的东西,if and only if原来的能证明,接下来是坏消息,就是我们刚才替换成一个很简单,因为我们全是解释整个世界就只有John跟Richard两个同学,你换两次就搞定了。但是有些时候当你有function的时候呢,你可能没办法换完,因为你没办法把所有的all possible way换完。譬如说我们眼下有个function father(),叫father,那father这个function当然就是return,就是你input一个object,它output一个object,因为你有function,你的ground term有无穷多个,你的ground term目前已经知道john,但是你因为有function,所以你的世界知道John的father,并且可以重复得到,这样的世界包含了john、john的father和爸爸的爸爸等。一直下去。你这样的话你无穷一直做下去,我们没有办法把所有的all possible way搞定

        接下来的好消息就是1930年的时候已经被证明了,如果一个sentence被原来的first-order logic KB entail的话,那基本上它被 entail by finite subset,也就是说虽然propositionalized这个first-order  logic的KB有无穷多种,你propositionalized以后会无穷大,就是你可以替换下去。但是你不需要知道整个无穷大,你只要在finite的一个有限的子集合的里面就可以得到propositionalized  KB有能力去entail这个sentence。就是这两个KB不一样,finite的subset的propositionalized  KB跟原来的first-order KB不一样,原来的first-order logic KB比较强,比较大一点。但是,你只要把它展开到一个地步,你就可以证明你想要证明的事情。

        基本这样的东西很简单,我们可以做类似Iterate  deepening的事情,我们先展一层嘛,第一次替换我就把John替换进去,然后看看这个能不能证出我想证的,不行的话你就把father of john替换进去,如果还不行,就替换两次,John的爸爸的爸爸,那再不行再替换三次。就这样一直做下去,那d从0一直到无穷大

        也就是说只要你要证的东西是被原来的FOL KB entail的话,那我这个回圈下去,迟早到某一个值,譬如说可能100万,200万,但是我迟早会说我给你的alpha是正确的,这是1930年证明出来的东西。

        那来再讲坏消息坏消息是就是如果原句是被原来的FOL  KB entail,那如果没有呢,就是你要证明的东西是原来的FOL的KB不能证出来的,那这个回圈就会一直重复下去。从0一直到无穷大,过100万,过1000万,还是证不出来就一直展下去,那展到无穷大都证不完。虽然这算是个坏消息,但其实Turing和Church基本上是证明了,证明出来FOL的entailment这个problem本身是semidecidable(半决定),如果修过计算理论complexity,serie之类的课程的同学大家知道semidecidable的意思。也就说这个问题如果是个yes no question,如果这个问题是yes的话,我可以在finite有限的时间,跟你回答yes,但是你如果本来答案是no的话我没办法决定它是no,我没办法肯定它是no。这个是semidecidable。也就是说这个我们刚刚讲虽然看似是个坏消息,但是实际上,任何一个方法都没办法做到。不管你是否用propositionalize,FOL entailment本身它就semidecidable。所以你不管换任何方法都没办法。

        这一页意思就是说我们刚刚把一个FOL的KB去做propositionalize,中间翻来翻去讲了几次,但是原则上就是说,它可以做到一定的地步,你如果用这种方法,从0一直往下冲,可以做到一定的地步,原来sentence如果是可以被证出来,你迟早会在有限时间内证出来。如果你原来sentence是无法被证出来的话,这个会跑个回圈,但是任何一个方法都一样。

        从效率上看,一个sentence,我们需要将每一个未知的位置(K个),放上我们的变量(N个),整体就会有n^k个指派。然后你有P个sentence,所以是n乘上p的k次方。如果K稍微大一点的话这样的演算法基本上我们很难实现,有时候在讲计算理论的时候,会讲polynomial多项式的算是比较易处理,但是现实世界,一般演算法如果在n3方或n4方以上的算法,我们会认为是很没效率的。也就是说,propositionalize虽然可以做到我们想做到的事,但是它没效率。

 

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

猜你喜欢

转载自blog.csdn.net/Suyebiubiu/article/details/103464174