第四章 AI确定性推理技术oommtt.docx
《第四章 AI确定性推理技术oommtt.docx》由会员分享,可在线阅读,更多相关《第四章 AI确定性推理技术oommtt.docx(27页珍藏版)》请在冰豆网上搜索。
第四章AI确定性推理技术oommtt
第四章确定性推理
北京师范大学信息科学与技术学院
樊亚春
确定性推理
推理概述
命题逻辑
谓词逻辑
自然演绎推理
归结推理方法
归结过程中的控制策略
推理概述
推理的基本概念
推理:
是指从已知事实出发,运用已经掌握的知识,推导出其中蕴含的事实性结论或者归纳出某些新的结论的过程。
推理中的知识:
与求解问题相关的初始证据
在推理过程中得到的中间结论
推理系统:
推理机,综合数据库和知识库
综合数据库:
存放用于推理的事实和证据
知识库:
存放用于进行推理所必需的知识
推理的方法及其分类:
1.按照推理的逻辑基础分类
可分为演绎推理、归纳推理和默认推理。
(1)演绎推理
演绎推理是从已知的一般性知识出发,推理出适合于某种个别情况的结论的过程。
它是一种由一般到个别的推理方法。
推理概述
(2)归纳推理
归纳推理是从大量特殊事例出发,归纳出一般性结论的推理过程,是一种由个别到一般的推理方法。
基本思想是:
首先从已知事实中猜测出一个结论,然后对这个结论的正确性加以证明确认,数学归纳法就是归纳推理的一种典型例子。
推理概述
(3)默认推理
默认推理又称缺省推理,是在知识不完全的情况下假设某些条件已经具备所进行的推理。
也就是说,在进行推理时,如果对某些证据不能证明其不成立的情况下,先假设它是成立的,并将它作为推理的依据进行推理,但在推理过程中,当由于新知识的加入或由于所推出的中间结论与已有知识发生矛盾时,就说明前面的有关证据的假设是不正确,这时就要撤消原来的假设以及由此假设所推出的所有结论,重新按新情况进行推理
推理概述
2.按所用知识的确定性分类
按推理时所用知识的确定性来划分,推理可分为确定性推理、不确定性推理。
3.按推理过程的单调性
按照推理过程中所推出的结论是否单调地增加,或者说按照推理过程所得到的结论是否越来越接近最终目标来分类,推理可分为单调推理与非单调推理。
推理概述
推理的控制策略
智能系统的推理过程其实就是问题求解的过程,它不仅依赖于所用的推理方法,同时也依赖于推理的控制策略。
推理方向
冲突消解策略
搜索策略
推理方向-正向推理
定义
正向推理是一种从已知事实出发、正向使用推理规则的推理方式,也称为数据驱动推理或者前向链推理。
正向推理过程可用如下算法描述
把用户提供的初始证据放入综合数据库
检查综合数据库中是否包含了问题的解,若已包含,则求解结束并成功退出;否则,执行下一步。
检查知识库中是否有可用的知识,若有则形成当前可用的知识集合,执行下一步;否则转5
按照某种冲突消解策略,从当前的知识集合中选出一条知识进行推理,并将推出的新事实加入到综合数据库中,然后转2
询问用户是否可以进一步补充事实,若可以补充,则将补充的事实加入到综合数据库中,然后转3;否则无解,失败退出。
推理方向-逆向推理
定义:
逆向推理是以某个假设目标为出发点,反向使用推理规则的推理方式,也称为目标驱动推理或者逆向链推理。
逆向推理过程的算法描述
将问题的初始证据和要求证的目标分别放入综合数据库和假设集合
从假设集合中选出一个假设,检查该假设是否在综合数据库中。
若在,则假设成立。
此时若假设集合为空,则成功退出;否则仍然执行2,若假设不在数据库中,则执行下一步。
检查该假设是否可由知识库中的某个知识导出。
若不能由某个知识导出,则询问用户该假设是否为可由用户证实的原始事实。
若是,则该假设成立,并将其放入到综合数据库中,再重新寻找新的假设;若不是,则转5。
若能由某个知识导出,则执行下一步
将知识库中所有与假设相匹配的知识组成一个匹配知识集。
检查可用知识集合是否为空,若空则失败推出,否则执行下一步;
按照冲突消解策略从可用知识集合中取出一个知识,继续执行下一步。
将该知识的前提中的每一个子条件都作为新的假设放入假设集合,转2。
命题逻辑
命题逻辑与谓词逻辑是最先应用于人工智能的两种逻辑。
谓词逻辑是在命题逻辑的基础上发展起来的,命题逻辑可看做是谓词逻辑的一种特殊形式。
命题:
能够分辨真假的语句称作命题。
原子命题:
一个语句如果不能再进一步分解成更简单的语句,并且又是一个命题,则称此命题为原子命题。
原子命题是命题中最基本的单位。
我们一般用P、Q、R、…大写拉丁字母表示命题,而命题的真与假分别用“T”与“F”表示。
用大写英文字母表示的命题既可以是一个特定的命题,也可以是一个抽象的命题。
前者称为命题常量,后者称为命题变量。
对于命题变量而言,只有把确定的命题代入后,它才可能有明确的逻辑值(T或F)。
命题逻辑
命题公式:
1.连接词
~:
称为“非”或“否定”。
∨:
称为“析取”。
∧:
称为“合取”。
→:
称为“条件”或者“蕴含”。
«:
称为“双条件”。
P«Q表示“P当且仅当Q”。
命题逻辑真值表
命题逻辑
2.命题公式
以下面的递归形式给出命题公式的定义:
(1)原子命题是命题公式。
(2)A是命题公式,则~A也是命题公式。
(3)若A和B都是命题公式,则A∧B、A∨B、
A→B、A«B
(4)只有按
(1)—(3)所得的公式才是命题公式。
命题逻辑
命题公式的缺点:
无法把所描述的客观事物的结构和逻辑特征反映出来
不能把不同事物的共同特征反映出来
P:
“张三是李四的老师”;仅用字母P看不出张三和李四之间的师生关系。
为了克服命题逻辑的局限性,引入了下面的谓词逻辑
命题逻辑
谓词公式:
1.连接词
~,∨,∧,→,«
2.量词
为刻画谓词与个体间的关系,引入了两个量词:
全称量词("x),和存在量词($x)。
3.谓词演算公式
定义谓词演算中,由单个谓词构成的不含任何连接词的公式,叫做原子谓词公式。
谓词逻辑
17
由原子公式的定义出发,可定义谓词演算的合式公式。
合适公式的递归定义:
(1)原子谓词公式是合适公式。
(2)若A为合适公式,则~A也是一个合适公式。
(3)若A和B都是合适公式,则(A∧B),(A∨B),(A=>B)也都是合适公式。
(4)若A是合适公式,x为A中的自由变元,则("x)A,($x)A都是合适公式。
(5)只有按上述规则
(1)至(4)求得的那些公式,才是合适公式。
谓词逻辑
谓词公式的永真性和可满足性
1.谓词公式的解释
定义设D为谓词公式P的个体域,若对P中的个体常量、函数和谓词按照如下规定赋值:
(1)为每个个体常量指派D中的一个元素;
(2)为每个n元函数指派一个从Dn到D的映射,其中
Dn={(x1,x2,…,xn)|x1,x2,…,xnÎD}
(3)为每个n元谓词指派一个从Dn到{F,T}的映射;
则称这些指派为公式P在D上的一个解释。
谓词逻辑
例设个体域D={1,2},求公式A=("x)(P(x)→Q(f(x),b))在D上的某一个解释,并指出在此解释下公式A的真值。
(p99)
谓词逻辑
2.谓词公式的永真性
定义如果谓词公式P,对个体域D上的任何一个解释都取得真值T,则称P在D上是永真的;如果P在每个非空个体域上均永真,则称P永真。
定义如果谓词公式P对于个体域D上的所有解释都取得假值F,则称P在D上是永假的;如果P在每个非空个体域上均永假,则称P永假。
谓词公式的永假性又称为不可满足性或不相容性。
谓词逻辑
3.谓词公式的可满足性
定义对于谓词公式P,如果至少存在一个解释使得公式P在此解释下的真值为T,则称公式P是可满足的。
按照定义,对谓词公式P,如果不存在任何解释,使得P的取值为T,则称公式P是不可满足的。
所以,谓词公式P永假与不可满足是等价的。
若P永假,则也可称P是不可满足的。
谓词逻辑
谓词公式的等价性与永真蕴含
定义设P与Q是两个谓词公式,D是它们共同的个体域。
若对D上的任何一个解释,P与Q的取值都相同,则公式P和Q在域D上是等价的。
如果D是任意个体域,则称P和Q是等价的,记作PÛQ。
谓词逻辑
23
常用的等价式:
交换律
P∨Q<=>Q∨P;
PΛQ<=>QΛP;
结合律
(P∨Q)∨R<=>P∨(Q∨R);
(PΛQ)ΛR<=>PΛ(QΛR);
分配律
P∨(QΛR)<=>(P∨Q)Λ(P∨R);
PΛ(Q∨R)<=>(PΛQ)∨(PΛR);
谓词逻辑
24
狄·摩根定理
~(P∨Q)<=>~PΛ~Q;
~(PΛQ)<=>~P∨~Q;
否定之否定
~(~P)<=>P;
吸收律
P∨(PΛQ)<=>P;
PΛ(P∨Q)<=>P;
补余律
P∨~P<=>T;
PΛ~P<=>F;
谓词逻辑
25
逆否律
P→Q<=>~P→~Q;
连接词化归律
P->Q<=>~P∨Q;
P<->Q<=>(P->Q)Λ(Q->P);
P<->Q<=>(PΛQ)∨(~PΛ~Q);
量词转换律
~($x)P(x)<=>("x)[~P(x)];
~("x)P(x)<=>($x)[~P(x)];
量词分配律
("x)[P(x)ΛQ(x)]<=>("x)P(x)Λ("x)Q(x);
("x)[P(x)∨Q(x)]<=>("x)P(x)∨("x)Q(x);
谓词逻辑
谓词公式的永真蕴含
定义对于谓词公式P和Q,如果P→Q永真,则称P永真蕴含Q,且称Q为P的逻辑结论,称P为Q的前提,记作P=>Q。
谓词逻辑
27
常用的永真蕴含式:
化简式
PΛQ=>Q;
PΛQ=>P;
附加式
P=>P∨Q;
Q=>P∨Q;
析取三段论
~P,P∨Q=>Q;
假言推理
P,P->Q=>Q;
谓词逻辑
28
拒取式
~Q,P->Q=>~P;
假言三段论
P->Q,Q->R=>P->R;
二难推论
P∨Q,P->R,Q->R=>R;
全称固化
("x)P(x)=>P(y);
存在固化
($x)P(x)=>P(y);
谓词逻辑
谓词逻辑中还有如下一些推理规则:
(1)P规则:
在推理的任何步骤上都可引入前提。
(2)T规则:
推理时,如果前面步骤中有一个或多个永真蕴含公式S,则可把S引入推理过程中。
(3)CP规则:
如果能从R和前提集合中推出S来,则可从前提集合推出R→S来。
(4)反证法:
P=>Q,当且仅当P∧~QÛF,即Q为P的逻辑结论,当且仅当P∧~Q是不可满足的。
推广之,可得如下定理。
定理Q为P1,P2,…,Pn的逻辑结论,当且仅当
(P1∧P2∧…∧Pn)∧~Q是不可满足的。
谓词逻辑
置换与合一
1.置换
定义置换是形如{t1/x1,t2/x2,…,tn/xn}的一个有限集。
其中xi是变量,ti是不同于xi的项(常量,变量,函数),且xi¹xj(I¹j),i,j=1,2,…,n。
谓词逻辑
例如,{a/x,b/y,f(x)/z},{f(z)/x,y/z}都是置换。
不含任何元素的置换称为空置换,以ℇ表示。
置换乘法
置换乘法作用是将两个置换合成为一个置换。
定义假设q={t1/x1,t2/x2,…,tn/xn}
l={u1/y1,u2/y2,…,um/ym}
是两个置换,则它们的乘积是一个新置换,其作用于公式E时,相当于先q后λ对E的作用。
谓词逻辑
2.合一
定义设有公式集{E1,E2,…,En}和置换θ,使
E1θ=E2θ=…=Enθ
便称E1,E2,…,En是可合一的,且θ称为合一置换。
定义若E1,E2,…,En有合一置换σ,且对E1,E2,…,En的任一置换都存在一个置换λ,使得θ=σ·λ,则称σ是E1,E2,…,En的最一般合一置换,记为mgu。
谓词逻辑
例E1=Q(a,y),E2=Q(z,f(b))
E1和E2是可合一的,其合一置换是
={a/z.f(b)/y}
并且它也是E1和E2的最一般合一置换mgu。
谓词逻辑
自然演绎推理
自然演绎推理的概念
自然演绎推理是指从一组已知为真的事实出发,直接运用命题逻辑或谓词逻辑中的推理规则推出结论的过程。
利用演绎推理解决问题
在利用自然演绎推理方法求解问题时,一定要注意避免两种类型的错误:
肯定后件的错误和否定前件的错误。
自然演绎推理
肯定后件的错误是指当P→Q为真时,希望通过肯定后件Q为真来推出前件P为真。
这显然是错误的推理逻辑,因为当P→Q及Q为真时,前件P既可能为真,也可能为假。
否定前件的错误是指当P→Q为真时,希望通过否定前件P来推出后件Q为假。
这也是不允许的,因为当P→Q及P为假时,后件Q既可能为真,也可能为假。
自然演绎推理
自然演绎推理的部分推理规则:
1.假言三段论的基本形式为
P→Q,Q→RÞP→R
它表示如果谓词公式P→Q和Q→R均为真,则谓词公式P→R也为真。
2.假言推理可用下列形式表示
P,P→QÞQ
它表示如果谓词公式P和P→Q都为真,则可推得Q为真结论
自然演绎推理
3.拒取式的一般形式为
P→Q,~QÞ~P
它表示如果谓词公式P→Q为真且Q为假,则可推得P为假的结论。
4.引入合取词
A,B⇒A∧B
它表示如果谓词公式A和B为真,则可推得A∧B为真的结论。
自然演绎推理
例:
设已知如下事实:
A,B,A→C,B∧C→D,D→Q
求证:
Q为真。
证明:
因为A,A→C⇒C假言推理
B,C⇒B∧C引入合取词
B∧C,B∧C→D⇒D假言推理
D,D→Q⇒Q假言推理
因此,Q为真
自然演绎推理
例设已知如下事实:
(1)只要是需要编程序的课,王程都喜欢。
(2)所有的程序设计语言课都是需要编程序的课。
(3)C是一门程序设计语言课。
求证:
王程喜欢C这门课。
证明:
首先定义谓词
Prog(x)x是需要编程序的课。
Like(x,y)x喜欢y。
Lang(x)x是一门程序设计语言课
自然演绎推理
把已知事实及待求解问题用谓词公式表示如下:
Prog(x)→Like(Wang,x)
(∀x)(Lang(x)→Prog(x))
Lang(C)
应用推理规则进行推理:
Lang(y)→Prog(y)全称固化
Lang(C),Lang(y)→Prog(y)⇒Prog(C)假言推理{C/y}
Prog(C),Prog(x)→Like(Wang,x)⇒Like(Wang,C)假言推理{C/x}
因此,王程喜欢C这门课。
自然演绎推理
优点:
定理证明过程自然,易于理解,并且有丰富的推理规则可用。
缺点:
是容易产生知识爆炸,推理过程中得到的中间结论一般按指数规律递增,对于复杂问题的推理不利,甚至难以实现。
自然演绎推理
归结推理
归结推理
归结推理也叫消解推理由Robinson在1965年提出,使自动定理证明技术得到很大的发展。
归结是一种可用于一定的子句公式的重要推理规则。
例如,如果存在某个公理E1∨E2和另一公理~E2∨E3,那么E1∨E3在逻辑上成立。
这就是归结。
归结推理-化为子句集
归结推理的第一步是将谓词演算公式化成合取范式的形式。
合取范式
范式:
范式是公式的标准形式,公式往往需要变换为同它等价的范式,以便对它们作一般性的处理。
合取范式:
单元子句的或(∨)的与(∧)
化为子句集步骤:
(1)消去蕴涵符号
应用∨和~符号,以~A∨B替换A=>B。
(2)减少否定符号的辖域
每个否定符号~最多只用到一个谓词符号上,并反复应用狄·摩根定律。
例如:
以~A∨~B代替~(A∧B)以~A∧~B代替~(A∨B)
以($x){~A}代替~("x)A
以("x){~A}代替~($x)A
以A代替~(~A)
归结推理-化为子句集
(3)对变量标准化
在任一量词辖域内,受该量词约束的变量为一哑元,它可以在该辖域内处处统一地被另一个没有出现过的任意变量所代替,而不改变公式的真值。
合适公式中变量的标准化,意味着对哑元改名以保证每个量词有其自己唯一的哑元。
例如,把
("x){P(x)->($x)Q(x)}
标准化为:
("x){P(x)->($y)Q(y)}
归结推理-化为子句集
(4)消去存在量词
Skolem函数:
在公式("y)[($x)P(x,y)]中,存在量词是在全称量词的辖域内,我们允许所存在的x可能依赖于y值。
令这种依赖关系明显地由函数g(y)所定义,它把每个y值映射到存在的那个x。
这种函数叫做Skolem函数。
如果用Skolem函数代替存在的x,我们就可以消去全部存在量词,并写成:
("y)P(g(y),y)
归结推理-化为子句集
从一个公式消去一个存在量词的一般规则:
以一个Skolem函数代替每个出现的存在量词的量化变量;
Skolem函数所使用的函数符号必须是新的,即不允许是公式中已经出现过的函数符号。
归结推理-化为子句集
如果要消去的存在量词不在任何一个全称量词的辖域内,那么我们就用不含变量的Skolem函数即常量。
例如,($x)P(x)化为P(A),其中常量符号A用来表示我们知道的存在实体。
A必须是个新的常量符号,它未曾在公式中其它地方使用过。
例如:
($z)("y)($x)P(x,y,z)
被{(" y)P(g(y),y,A)}代替,
其中g(y)为一Skolem函数。
归结推理-化为子句集
(5)化为前束形
到这一步,已不留下任何存在量词,而且每个全称量词都有自己的变量。
把所有全称量词移到公式的左边,并使每个量词的辖域包括这个量词后面公式的整个部分。
所得公式称为前束形。
前束形公式由前缀和母式组成,前缀由全称量词串组成,母式由没有量词的公式组成,即
前束形=(前缀)(母式)
全称量词串无量词公式
归结推理-化为子句集
(6)把母式化为合取范式
我们可以反复应用分配律。
把任一母式化成合取范式。
例如,我们把
A∨{B∧C}化为{A∨B}∧{A∨C}
(7)消去全称量词
到了这一步,所有余下的量词均被全称量词量化了。
同时,全称量词的次序也不重要了。
因此,我们可以消去前缀,即消去明显出现的全称量词。
归结推理-化为子句集
8)消去连词符号∧
用{(A∨B),(A∨C)}代替(A∨B)∧(A∨C),以消去明显的符号∧。
反复代替的结果,最后得到一个有限集,其中每个公式是文字的析取。
任一个只由文字的析取构成的合适公式叫做一个子句。
归结推理-化为子句集
(9)更换变量名称
可以更换变量符号的名称,使一个变量符号不出现在一个以上的子句中。
例如,对于子集
{~P(x)∨~P(y)∨P[f(x,y)],~P(x)∨Q[x,g(x)],~P(x)∨~P[g(x)]},在更改变量名后,可以得到子句集:
{~P(x1)∨~P(y)∨P[f(x1,y)],
~P(x2)∨Q[x2,g(x2)],
~P(x3)∨~P[g(x3)]}
归结推理-化为子句集
例:
将下列谓词演算公式化为一个子句集
("x){P(x)®{("y)[P(y)®P(f(x,y))]∧~("y)[Q(x,y)®P(y)]}}
解:
消去蕴涵符号
只应用∨和~符号,以~A∨B替换A®B。
("x){~P(x)∨{("y)[~P(y)∨P(f(x,y))]∧~("y)[~Q(x,y)∨P(y)]}}
(2)减少否定符号的辖域
每个否定符号~最多只用到一个谓词符号上,并反复应用狄·摩根定律。
("x){~P(x)∨{("y)[~P(y)∨P(f(x,y))]∧($y)[Q(x,y)∧~P(y)]}}
(3)对变量标准化
对哑元改名,以保证每个量词有其自己唯一的哑元。
("x){~P(x)∨{("y)[~P(y)∨P(f(x,y))]∧($w)[Q(x,w)∧~P(w)]}}
(4)消去存在量词
以Skolem函数代替存在量词内的约束变量,然后消去存在量词
("x){~P(x)∨{("y)[~P(y)∨P(f(x,y))]∧[Q(x,g(x))∧~P(g(x))]}}
式中,w=g(x)为一Skolem函数。
化为前束形
把所有全称量词移到公式的左边,并使每个量词的辖域包括这个量词后面公式的整个部分。
前束形={前缀}{母式}
全称量词串无量词公式
("x)("y){~P(x)∨{[~P(y)∨P(f(x,y))]∧[Q(x,g(x))∧~P(g(x))]}}
(6)把母式化为合取范式
任何母式都可写成由一些谓词公式和(或)谓词公式的否定的析取的有限集组成的合取。
("x)("y){[~P(x)∨~P(y)∨P(f(x,y))]∧[~P(x)∨Q(x,g(x))]∧[~P(x)∨~P(g(x))]}
(7)消去全称量词
所有余下的量词均被全称量词量化了。
消去前缀,即消去明显出现的全称量词。
{[~P(x)∨~P(y)∨P(f(x,y))]∧[~P(x)∨Q(x,g(x))]
∧[~P(x)∨~P(g(x))]}
(8)消去连词符号∧
用{A,B}代替(A∧B),消去符号∧。
最后得到一个有限集,其中每个公式是文字的析取。
~P(x)∨~P(y)∨P(f(x,y))
~P(x)∨Q(x,g(x))
~P(x)∨~P(g(x))
(9)更换变量名称
可以更换变量符号的名称,使一个变量符号不出现在一个以上的子句中。
~P(x1)∨~P(y)∨P[f(x1,y)]
~P(x2)∨Q[x2,g(x2)]
~P(x3)∨~P[g(x3)]
例:
将下列谓词演算公式化为一个子句集
("x)(($y)(P(x,y)∧Q(y))→($y)(R(y)∧T(x,y)))
~P(x,y)∨~Q(y)∨R(f(x))
~P(x1,y1)∨~Q(y1)∨T(x1,f(x1))
归结推理-化为子句集
归结推理
子句归结:
令L1,L2为两任意原子公式;L1和L2具有相同的谓词符号,但一般具有不同的变量。
已知两子句L1∨α和~L2∨β,如果L1和L2具有最一般合一σ,那么通过归结推理可以从这两个父辈子句推导出一个新子句(α∨β)σ。
两个子句时可能有一个以上的归结方法。
不过,在任何情况下,它们最多具有有限个归结方法。
例:
P[x,f(A)]∨P[x,f(y)]∨Q(y)和 ~P[z,f(A)]∨~Q(z)
如果取P[x,f(A)]}和~P[z,f(A)]} 归结
那么得到结果是:
P[z,f(y)]∨~Q(z)∨Q(y)
如果取{Q(y)}和{~Q(z)} 归结
那么得到结果是:
P[x,f(A)]∨P[x,f(y)]∨~P[y,f(A)]
进一步归结得到:
P[y,f(y)]
归结推理
归结推理进行定理证明基本原理
采用反证法或者称为反演推理方法,将待证明的表达式