推理
# 推理
- 逻辑系统
- 经典推理方法
- 概率推理
- 决策
- 规划
# 前言
暂未载入以下章节:
- 知识图谱表示框架
- 知识图谱应用
- 知识获取与存储
# 逻辑系统
推理(reasoning)也叫逻辑推理(logical reasoning),是人类理性和智能的象征之一,因而也是人工智能领域最重要的一个研究方向,推理是从一个或多个已知的判断推导出新的判断的过程。推理离不开逻辑,因此逻辑系统是基础,即使通过计算选择推理结果,也必须用逻辑来解释。
推理是根据已有的知识或者信息(数据)导出结论、做出预测或者构造解释,这就对应了三种主要推理类型:
- 演绎推理(deductive reasoning)
- 归纳推理(inductive reasoning)
- 溯因推理(abductive reasoning)
# 演绎推理
从多个前提(promises)达到一个逻辑结论的过程,即从一般性规则推导出特殊结论,保证结论正确,经典推理方法属于演绎推理
例子:当下雨时,外面的东西会湿;草坪在外面,因此下雨时草坪也会湿。
# 归纳推理
从一定量的个别观察总结出规律(从个别到一般),虽然结论可能令人信服,但不保证结论正确,从数据中抽象出规律,从这个角度说,机器学习属于归纳推理的范畴。
例子:有许多次下雨时草坪湿了,因此下雨时草坪总是湿的。
# 溯因推理
从不完全的观察集合推导出关于这些观察的最可能的解释,与演绎推理或者归纳推理不同,溯因推理过程需要创见和直觉。贝叶斯网络的推理就属于这一类。
溯因推理:当下雨时,草坪湿了,现在草坪是湿的,因此一定下过雨。
# 命题逻辑
命题是一个描述客观世界的可区分真假的陈述句,即一个二值(T / F)
如:2+2 = 4 (T)
反例: A比B聪明,蛋糕真好吃... (这属于主观判断)
命题具有真假值,用T / F表示
真值连接词有五个:
- ¬ : 否定
- ∧ : 合取
- ∨ : 析取
- → : 蕴含
- ≡ : 等价
使用连接词以后的命题称为复合命题
# 谓词逻辑
谓词是用于说明个体的性质或者个体之间关系的形式符号
谓词可看作是从个体域或者个体域的笛卡尔乘积到真值集合的映射
例如:人都会死,可以写为M(x)->D(x)
,其个体域是人,给定了论域,就是确定了谓词的真假值
通常一元谓词用于表述个体的性质,如人会死亡
记为D(x)
,表示任意一个人x,使得一元谓词D(x)为真
二元谓词或者多元谓词表示个体之间的关系,如二元谓词Win(x,y)
代入x=中国队, y=蒙古队,即句子中国队战胜了蒙古队
表示为Win(中国队, 蒙古队)
# 量词
量词用来表示谓词的判断特性; 全称量词∀: 对所有的x,∀xP(x); 存在量词∃: 存在x, ∃xP(x)
带有全称变量∀x的公式,表示形式为∀x(P(x)->...) 带有存在变量∃x的公式,表示形式为∃x(P(x)∧...)
例如: 所有的有理数都是实数,∀x(P(x)->R(x)) 有些人身高超过两米,∃x(P(x)∧G(x))
这种使用方法不可改变,否则会造成逻辑错误。
# 约束变量
约束变量是∀、∃中x的变量,量词管辖的公式如P(x)称为量词辖域; 不存在量词辖域内的变量为自由变量
# 函数
函数用于表示个体之间的运算,可作用于一个或多个个体,给定一个或多个个体,产生于给新的个体,函数用小写字母表示,函数中的变量的个数称为函数的元数。
例如: x的父亲,记为father(x),两数之和仍然是一个数字,记为add(e1,e2)
# 谓词与函数区别
谓词代表语句(关系),结果为真假值 函数代表运算(关系运算),结果是一个新个体
例如:谓词Sum(e1,e2,e3),说明e1,e2,e3之间的关系是e3是e1与e2之和(如果确实是,则为真,否则为假); 而函数add(e1,e2)说明e1与e2相加的结果仍然是一个数
# 经典推理方法
介绍基本的推理运算 —— 置换与合一 给定了一般的推理规则,根据具体条件需要在规则中带入具体事实,这就是置换,推理的结论用某一具体谓词公式表示,推理过程最终需要与结论相同。相应的就有合一运算
# 置换与合一
文字(literal) : 正负原子公式,前面有否定连接词的谓词公式是负原子公式,否则就是正原子公式。
子句(clause): 仅使用析取连接词将原子公式连接后的公式,或称为文字的析取式。
Horn子句(Horn clause) : 至多有一个正文字的子句,例如¬A V ¬B V ¬C V D
其中正文字称为Horn子句头,其他称为子句体。
置换(substitution) : 设x1 ~ xn 是n个变量且各不相同,t1 ~ tn 是n个项(常量、变量、函数), ti != xi,则用ti
替换变量xi
操作形成的有限序列{x1/t1, ..., xn/tn}称为一个置换(运算)
合一置换,通过相关置换使不同的一阶谓词公式成为相同的过程。
如: Unify(Know(Tommy,x), Know(Tommy, Katlin)) = {x/Katlin}
但,Unify(K(Tommy,x),K(x,Jane)) = Fail
,因为x不能同时为两个值。
# 正向推理方法
- 通过已知事实即知识库中的原子公式开始,依次对知识库中的推理规则进行置换,检查规则前提部分的文字是否全部与知识库中的事实相匹配。
- 如果匹配则把该条规则已经做过置换的结论部分添加到知识库中,如果这个结论和需要推导出的结论一致,则推理结束,结论获得证明。
- 否则回到(1),直至获得证明; 或者在没有新的事实加入,此时推理以证明失败结束。
输入: 知识库KB - 有限子句集合,待证结论α - 原子公式 输出: 置换(证明成功) 或者FAIL(证明失败)
美国法律规定,美国人卖武器给敌对国家是犯罪的; 美国的敌国Nono有一些道道,所有这些导弹都是West上校卖给他们的,而West上校是个美国人。
首先用子句表达每个句子,形成知识库KB:
1. 美国人卖武器给敌对国家是犯罪的
American(x) ∧ Weapon(y) ∧ Sell(x,y,z) ∧ Hostile(z) -> Criminal(x)
2. Nono有一些导弹
∃xOwn(Nono,x) ∧ Missile(x)
消去存在量词,引入新常量,得到2个原子公式
3. Own(Nono, M1);
4. Missile(M1);
5. 所有该国导弹都是West上校出售的
Missile(y) ∧ Own(Nono, y) -> Sell(West, y, Nono);
6. 导弹是武器: Missile(y) -> Weapon(y);
7. 其他陈述:
American(West)
HOSTILE(Nono);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17