人工智能
一、章节总述
同学们,上一节课我们一起系统学习了知识表示的核心方法,从一阶谓词逻辑、产生式表示,到框架表示、语义表示,再到当下应用广泛的知识图谱,大家已经掌握了如何把人类知识转化为计算机能理解、存储和处理的形式。
知识表示是基础,而真正让知识 “活起来”、让系统具备智能判断能力的,是推理 。就像我们学习知识不是为了单纯记忆,而是为了分析问题、得出结论一样,计算机也需要通过推理,从已知知识推导出未知结论,实现智能决策。
从这节课开始,我们将进入确定性推理 的学习,用两个课时的时间,从推理的基本概念入手,掌握自然演绎推理的逻辑思路,重点攻克谓词公式化为子句集、海伯伦域、鲁滨逊归结原理,以及核心的归结反演方法。这些内容既是谓词逻辑的延伸,也是人工智能自动推理的经典理论基础。
接下来,就让我们一起走进确定性推理,看看机器是如何一步步实现逻辑推导、完成智能思考的。
一、推理的基本概念
前言
3.1.1 推理的定义
推理:从 已知知识 (如专家经验、常识)和 初始证据(如病人症状、化验结果)出发,通过规则推导出中间结论或最终结论 的过程。

通俗案例:医疗专家系统中,医生的医学知识是“已知知识”,病人发烧、咳嗽是“初始证据”,系统推出“病人感冒”就是“推理结论”。

3.1.2 推理方式及其分类
按不同标准分4类,核心是前3类,用通俗例子+核心特征理解:
1. 按思维方向:演绎、归纳、默认推理
| 类型 | 核心逻辑 | 例子 | 必然性 |
|---|---|---|---|
| 演绎推理 | 一般→个别(三段论:大前提+小前提→结论) | 大前提:足球运动员的身体都是强壮的;小前提:高波是一名足球运动员;结论:所以,高波的身体是强壮的 | 必然(前提真,结论必真) |
| 完全归纳推理 | 个别→一般(考察所有对象) | 检查全部产品合格→该厂产品合格 | 必然 |
| 不完全归纳推理 | 个别→一般(考察部分对象) | 检查全部样品合格→该厂产品合格 | 非必然 |
| 默认推理 | 知识不全时,假设某条件成立再推理 | 制作鸟笼,默认“鸟会飞”→给鸟笼加盖子 | 非必然 |
下面的题目对应那种类型?
- 大前提:所有猫会抓老鼠;小前提:橘猫是猫;结论:橘猫会抓老鼠
- 检查1班所有同学都及格→1班全班及格
- 检查1班10个同学都及格→1班全班及格
2. 按知识/证据确定性:确定性、不确定性推理
- 确定性推理:知识、证据、结论都确定(本章重点),如“1+1=2”是确定知识,推出“2-1=1”是确定结论;
- 不确定性推理:知识/证据不确定,如“阴天大概率下雨”(概率论)、“这个人有点胖”(模糊逻辑),结论也不确定。
-- 似然推理(概率论)
|
不确定性推理--
|
-- 近似推理或者模糊推理(模糊逻辑)3. 按推理单调性:单调、非单调推理
- 单调推理:加新知识,结论只会更接近目标,不会被否定。如知道“猫会抓老鼠”,再加“橘猫是猫”,只会推出“橘猫会抓老鼠”,不会否定原有知识;
- 非单调推理:加新知识,否定原有结论,需重新推理。如先默认“所有鸟会飞”,再加“企鹅是鸟但不会飞”,必须否定原有结论,重新修正。
[默认:所有鸟会飞]
↘
[结论:企鹅会飞]
↘
[新知:企鹅是鸟但不会飞]
↘
[否定:企鹅会飞]
↘
[重推:企鹅不会飞,规则加例外]默认推理是非单调推理,因为默认知识是不确定的,加新知识可能会否定原有结论。
4. 按是否用启发式知识:启发式、非启发式推理
- 启发性知识:与问题有关且能加快推理过程、提高搜索效率的额外知识。
- 案例:医生诊断发烧病人,候选答案:脑膜炎、肺炎、流感。若有启发式知识“近期流感盛行”,直接优先排查流感(启发式推理);若无,逐一排查(非启发式推理)。
3.1.3 推理的方向

推理方向决定“从哪开始推”,分4种,核心是正向和逆向,用流程图+核心特点理解:
1. 正向推理(事实驱动)
流程:已知事实→匹配知识库知识→推出新事实→继续匹配→得结论
特点:简单易实现,目的性差、效率低(像大海捞针)。
例子:已知“小明发烧、咳嗽、咽痛”,从知识库中逐一匹配“感冒、肺炎、咽炎”的知识,最终推出“小明感冒”。

2. 逆向推理(目标驱动)
流程:提出假设目标→找支持目标的证据→证据全则假设成立,否则换假设
特点:目的性强,不用无关知识,初始假设选不好会降低效率。
例子:先假设“小明感冒”,再针对性检查“是否发烧、咳嗽、咽痛”,证据全则假设成立。

3. 混合推理
结合正向+逆向,解决两者单独的缺点:
- 先正后逆:先从事实推部分结论,再以结论为假设找证据(如先从“小明发烧”推“呼吸道疾病”,再假设“感冒”找证据);
- 先逆后正:先假设目标找部分证据,再从证据推更多结论。


4. 双向推理
正向和逆向同时推,在中间某一步“碰头”(正向的中间结论=逆向的证据)。
例子:先假设“小明感冒”,再假设“小明发烧”,正向和逆向同时推,在“发烧”这一步碰头,得出结论“小明感冒”。
图解:👇

3.1.4 冲突消解策略
核心前提
推理时,已知事实和知识库知识的匹配有3种情况:
- 一对一(恰好匹配,直接用);✅
- 不能匹配(无法推理);✅
- 多对多/一对多(多种匹配,需冲突消解选最优)。❌
在推理过程中,会产生非常多的规则,冲突消解在推理中的作用,即当多个规则匹配时,如何选择最合适的规则执行。
4种核心消解策略(选知识的规则)
用简单例子理解:事实是“小明发烧+咳嗽”,知识库有两条规则:
- r1:发烧+咳嗽→感冒(2个条件);
- r2:发烧→呼吸道疾病(1个条件)。
- 按针对性排序:选对事实描述更具体的(选r1,覆盖发烧+咳嗽);
- 按新鲜性排序:选匹配最新事实的(若“咳嗽”是刚测的,优先选r1);
- 按匹配度排序:选匹配事实更多的(r1匹配2个,r2匹配1个,选r1);
- 按条件个数排序:选条件更少的(若事实只有“发烧”,选r2)。
- 按照上下文排序:根据当前推理上下文选择(如当前假设是“感冒”,优先选r1)。
- 随机选择:当无法确定时,随机选择一个规则。
二、自然演绎推理
前言
同学们,我们刚刚学习了冲突消解策略,知道了当多条规则同时被触发时,该如何选择优先执行哪一条规则,解决了推理过程中“选哪条路走”的问题。
但光知道选规则还不够,我们更要知道怎么用规则去推导。
从已知事实出发,严格按照逻辑规则(P/T规则、假言推理、拒取式),一步步推出结论——这就是我们接下来要学习的:自然演绎推理。
P规则:P为真,则P→Q为真;T规则:P→Q为真,则P为真。
它最贴近我们人类的思考方式,也是确定性推理里最直观、最基础的推理方法。
下面,就让我们一起进入自然演绎推理的学习。
核心推理规则(重点,记公式+例子)
1. 假言推理
公式:(P为真,P推Q为真,则Q为真)
是 断定符(也叫推出符、衍推符)
例子:
如果X是金属,则X能导电
P(铜是金属),P→Q(金属能导电)→Q(铜能导电)。
2. 拒取式推理
公式:(P推Q为真,Q为假,则P为假)
例子:P→Q(下雨则地上湿),(地上不湿)→(没下雨)。
3. 常见错误(绝对不能用)
- 否定前件:(下雨则地上湿,没下雨→地上不湿?错,可能有人洒水);
- 肯定后件:(下雨则地上湿,地上湿→下雨?错,原因同上)。
实际案例(课本例3.1,页码:78)
已知:
(1)凡是容易的课程小王(wang) 都喜欢;
(2)C班课程都是容易的;
(3)ds是C班的课程。
求证:👉 小王喜欢ds课程。 👈
步骤1:定义谓词(把文字转化为逻辑符号)
- :x是容易的;
- :x喜欢y;
- :x是C班的课程。
步骤2:转化为谓词公式
- (1) ;
- (2) ;
- (3) ;
- 求证 :。
步骤3:推理(用规则)
- 全称固化:把“任意x”换成具体变量, => ; => ;
- 假言推理:;
- 假言推理:,得证。
优缺点
- 优点:过程自然易懂,推理规则灵活,能加领域启发式知识;
- 缺点:组合爆炸(知识多的时候,中间结论呈指数增长,效率极低)。
三、谓词公式化为子句集的方法
前言
本节课程的重点是鲁滨逊归结原理,他是人工智能里非常经典、非常重要的一个算法,但在正式学习它之前,我们必须先掌握两个关键内容:谓词公式化为子句集 和 海伯伦定理。大家可能会问:为什么一定要先学这两个?
原因其实非常清晰:
鲁滨逊归结原理,只能处理“子句”这种统一形式
它的推理规则非常简单——找互补文字、做归结。但它不能直接处理带蕴含、存在量词、复杂嵌套的谓词公式。
所以,我们必须先把所有知识统一变成子句集,让推理机“看得懂、能操作”。
一句话:化为子句集,是归结推理的“前提准备”。海伯伦定理,是鲁滨逊归结原理的“理论依据”
海伯伦定理告诉我们:
要判断一个子句集是否不可满足,只需要在它的海伯伦域上判断就够了。
这就从理论上保证了鲁滨逊归结原理是可靠、完备的。
没有海伯伦定理,归结原理就只是一个操作方法,没有理论根基。
所以:
- 谓词公式→子句集:解决怎么表示的问题;
- 海伯伦定理:解决为什么能这么推的问题;
- 鲁滨逊归结原理:解决具体怎么推的问题。
接下来,我们先学习谓词公式→子句集,即谓词公式化简为子句集的方法。
3.3.1 基本概念
- 原子谓词公式 :不能再拆的简单命题,如、;
- 文字 :原子公式(正文字)或其否定(负文字),如、;
- 子句(clause) :文字的析取式(用∨连接),单个文字也是子句,如、;
- 空子句(NIL) :不含任何文字的子句,永假、不可满足(归结的核心目标就是推出空子句);
- 子句集 :多个子句的集合,子句之间是合取(用∧连接)。
3.3.2 九大转化步骤(固定流程,按步骤来)
所有谓词公式都能按此步骤转化为子句集,核心是消去蕴含、量词,标准化变量,最终拆分为子句,关键定理:谓词公式不可满足 ⇨ 其子句集不可满足(即推不出结论等价于子句集能推出空子句 )。
简化步骤(核心操作):
- 消去→和↔:用转化;
- 否定符号移到谓词前:用双重否定律、德·摩根律(如);
- 变量标准化:不同量词的同名变量换名(如);
- 消去存在量词(Skolem化):用Skolem函数代替(如,f(x)是Skolem函数);
- 化为前束形:所有全称量词移到公式最前面,后面跟不含量词的“母式”;
- 化为Skolem标准形:母式转化为子句的合取式;
- 略去全称量词:前束形的全称量词可直接去掉(默认所有变量都是全称);
- 消去合取词:把合取式拆分为单个子句,形成子句集;
- 子句变量标准化:不同子句的同名变量换名(如)。
核心结论:无论多复杂的谓词公式,按步骤最终都能转化为仅由文字析取式构成的子句集,且两者的不可满足性等价。
3.3.3 例子
例子:将下面的谓词公式转成子句集 👇
原始谓词公式:
第1步:消去蕴含 →
第2步:否定向内移
这里已经在最里面,不变。
第3步:变量标准化
只有一个 x,不变。
第4步:消去存在量词 ∃
没有 ∃,跳过。
第5步:消去全称量词 ∀
直接去掉:
第6步:化为合取范式
已经是,不变。
第7步:写成子句集
例3.3 题目
将谓词公式:
化为子句集。
步骤1:消去蕴含符号
利用蕴含等价式 ,将公式中的 → 替换:
步骤2:把否定符号移到每个谓词前面
利用德摩根律 ,将否定符号深入到谓词层级:
步骤3:标准化变量
两个全称量词的约束变量均为 ,无重名冲突,无需重命名。
步骤4:消去存在量词(Skolem化)
处于 的辖域内,用Skolem函数 替换存在量词约束的变量 :
步骤5:化为前束范式
将所有全称量词移到公式最前端,保持辖域覆盖整个公式:
步骤6:化为Skolem标准形(合取范式)
利用分配律 化简为合取范式:
步骤7:略去全称量词
公式中仅剩余全称量词,且子句集默认变量受全称量词约束,因此可直接略去:
步骤8:消去合取词,得到子句集
将合取范式拆分为多个子句,子句间以逗号分隔,形成子句集:
步骤9:子句变量标准化
为每个子句重新命名变量(避免变量名冲突),标准化后子句集:
四、海伯伦定理
前言
海伯伦定理诞生前,数理逻辑界的核心研究方向是一阶谓词逻辑的形式化与可判定性,当时的学界面临一个关键难题:一阶逻辑的公式是否可满足 / 不可满足,该如何判定?
- 命题逻辑的判定很简单:通过真值表就能有限步验证公式真假;
- 但一阶逻辑包含变量、量词(∀/∃)、函数 / 谓词,个体域可能是无穷的,无法用真值表直接验证,成为当时逻辑学家的研究核心。
👇 👇
- 一阶逻辑的子句集 (S) 不可满足,意味着“无论怎么给变量赋值,都不可能让所有子句同时为真”。
- 海伯伦定理告诉我们:只要能找到有限个具体的“赋值方案”(即基例),使得这有限个方案下都矛盾,就足以证明整个 (S) 不可满足,而不需要检查无穷多的可能。
自动定理证明领域的终身成就奖-Herbrand Award
看上去,很美好,但是。。。
海伯伦定理虽然从理论上把一阶逻辑的不可满足性判定归约为命题逻辑的有限基例判定,为自动定理证明奠定了理论基础,但直接在计算机上实现海伯伦定理的原始思路,难度极大、甚至几乎不可行 ,核心原因是其原始构造会引发组合爆炸,再加上计算机的存储、计算资源有限,以及基例筛选无明确策略,最终导致实际落地性极差。

直到1965 年阿兰・鲁宾逊(Alan Robinson)提出的归结原理(Resolution Principle) 出现才被彻底解决,这也是一阶逻辑自动定理证明领域里程碑式的算法定理,堪称海伯伦定理的工程化落地核心解法。
五、鲁宾逊归结原理
前言
核心思想
子句集的子句之间是合取关系,只要有一个子句不可满足,整个子句集就不可满足 。
归结的目标是推出空子句(NIL),因为空子句永假,推出则说明子句集不可满足,原结论成立。
简单说:检查子句集→有NIL则不可满足→无NIL则选子句归结→直到推出NIL。
归结:两个子句归结,消去互补文字,得到新子句。
命题逻辑和谓词逻辑归结原理如下:👇
一、命题逻辑中的归结
没有变量、没有函数、没有量词
只有: 这种
归结规则:
例子:
- 有完全一样的互补文字: 和
- 直接消掉
- 剩下合并:
二、谓词逻辑中的归结
有变量 、有常量、有谓词
多一步:合一(Unify)
归结规则:
例子:
- 找到:
与 - 合一:
- 变成:
与 - 消去互补文字
- 得到:
例子:用鲁滨逊归结证明
前提:
- 所有人都会死
- 苏格拉底是人
结论:
苏格拉底会死
第一步:转成谓词公式
设:
- : 是人
- : 会死
- 所有人都会死:
消去蕴含:A→B⟺¬A∨B
- 苏格拉底是人:
- 结论否定(归结反演必须加):
其实就是证明:所有人会死 ∧ 苏格拉底是人 → 苏格拉底会死 这个不成立就行
第二步:得到子句集
第三步:鲁滨逊归结(核心)可以绘制归结树(
(1)¬Man(x)∨Mortal(x) (3) Man(Socrates)
\ /
\ /
\ /
\ /
\ /
(4) ¬Man(Socrates) (2) Man(Socrates)
\ /
\ /
\ /
\ /
NIL推出 NIL ⇒ 子句集不可满足⇒ 原定理 成立
六、归结反演
前言
核心思路
利用反证法:要证明结论Q 是前提F的逻辑结论,只需证明不可满足,即把F和化为子句集,归结推出空子句(NIL)。
四大步骤(固定流程,必记)
- 化前提:把已知前提表示为谓词公式F;
- 化结论:把待证结论表示为Q,否定得;
- 构子句集:把化为子句集S;
- 做归结:对S中的子句反复归结,把归结式并入S,若推出NIL,则Q得证。
实际案例(课本例3.9)
已知:公司招聘A、B、C三人,(1)至少录取一人;(2)录取A不录取B→录取C;(3)录取B→录取C。
求证:公司必录取C。
谓词公式表示如下:
- P(A)∨P(B)∨P(C) ---> 至少录取一人
- P(A)∧¬P(B)→P(C) ---> 去掉→ 等于 ¬P(A)∨ P(B) ∨ P(C)
- P(B)→P(C) --->去掉→ 等于 ¬P(B) ∨ P(C)
待证结论:P(C)(公司必录取C)--->否定得 ¬P(C)
归结树绘制如下:
P(A)∨P(B)∨P(C) ¬P(A)∨P(B)∨P(C)
\ /
\ /
\ /
\ /
\ /
¬P(B) ∨ P(C) P(B)∨P(C)
\ /
\ /
\ /
\ /
\ /
\ /
¬P(C) P(C)
\ /
\ /
NIL推出 NIL ⇒ 子句集不可满足⇒ 原定理 成立
七、应用归结反演求解问题
前言
不仅能证明定理,还能求解具体问题答案(如“小张的老师是谁?”),核心是在归结中加入ANSWER谓词,答案会包含在ANSWER的归结式中。
五大步骤(比归结反演多一步ANSWER)
- 化前提:已知前提F化为谓词公式,转成子句集S;
- 化目标:待求问题Q表示为谓词公式,否定后与ANSWER析取();
- 扩子句集:把化为子句集,并入S得新子句集S';
- 做归结:对S'反复归结,保留含ANSWER的归结式;
- 得答案:若推出ANSWER(常量/变量),则括号内就是问题答案。
实际案例(课本例3.17)
已知:(1)王老师是小李的老师;(2)小李和小张是同班同学;(3)同班同学的老师相同。
求:小张的老师是谁?
定义谓词
- Teacher(x, y):x 是 y 的老师
- Classmate(x, y):x 和 y 同班
将上面的已知写成子句:
- 王老师是小李的老师:Teacher(王,李)
- 小李和小张同班:Classmate(李,张)
- 同班同学的老师相同:如果 x 和 y 同班,且 z 是 x 的老师,则 z 是 y 的老师 ---> Classmate(x,y)∧Teacher(z,x)→Teacher(z,y)
- 化成子句:¬Classmate(x,y) ∨ ¬Teacher(z,x) ∨ Teacher(z,y)
求解:小张的老师是谁?
- 求解题 = 先假设答案不存在,再反演
- 设答案是 u,即:Teacher (u, 张)
- 我们要证明它成立,所以先否定它:¬Teacher (u, 张)
说白了,就是求出u等于什么的时候,¬Teacher (u, 张) 不成立,即nil
- 求解题 = 先假设答案不存在,再反演
绘制归结树
¬Classmate(x,y)∨¬Teacher(z,x)∨Teacher(z,y) Classmate(李,张)
\ /
\ /
¬Teacher(z,李)∨Teacher(z,张) Teacher(王,李)
\ /
\ /
Teacher(王,张) ¬Teacher(u,张)
\ /
\ /
NIL上述只有u=王 的时候,¬Teacher(u,张) 不成立,所以答案就是王老师
八、章节总结
前言
本章围绕确定性推理展开,核心是解决“让计算机如何做逻辑推理”的问题,从基础概念到实际应用分为三层:
- 基础层:推理的基本概念(分类、方向、冲突消解),是理解推理的前提,重点掌握演绎/归纳/默认推理、正向/逆向推理;
- 入门层:自然演绎推理,用经典逻辑规则推理,过程自然但有组合爆炸问题,因此引入归结演绎推理;
- 核心层:谓词公式化子句集、鲁宾逊归结原理、归结反演,是本章的重点和难点,也是机器定理证明的核心方法:
- 把谓词公式转化为子句集是前提;
- 鲁宾逊归结原理是核心方法(命题+谓词逻辑的归结);
- 归结反演是证明定理的流程,加入ANSWER谓词后可求解具体问题。
核心考点:归结反演的证明步骤、归结原理求解问题的步骤、谓词公式化子句集的关键操作、鲁宾逊归结的基本思想。
