数理逻辑基础
数理逻辑是符号 AI 的数学根基。符号主义的核心信念是"智能即符号操作",而逻辑学提供了操纵符号的严格规则。理解命题逻辑和谓词逻辑,是理解后续知识表示、推理引擎、专家系统等内容的前提。
命题逻辑
命题逻辑(Propositional Logic)是最简单的逻辑系统,处理的是可以判断真假的命题。一个命题就是一句话,比如"今天是星期一"或者"服务器正在运行",它要么为真要么为假,不存在中间状态。
逻辑连接词
命题逻辑通过连接词将简单命题组合成复杂命题。五个基本连接词构成了命题逻辑的全部表达力:
- 否定(
):取反, 表示"P 不成立" - 合取(
):逻辑与, 表示"P 且 Q" - 析取(
):逻辑或, 表示"P 或 Q" - 蕴涵(
):如果...则..., 表示"P 蕴涵 Q" - 等价(
):当且仅当, 表示"P 和 Q 同真同假"
蕴涵连接词
真值表与等价推理
真值表是判定命题公式语义的基本工具。对于含有
一阶谓词逻辑
命题逻辑的表达能力有限,它只能把每个命题看作一个不可分割的整体符号。当需要表达"所有用户都有密码"或者"存在一个管理员在线"这样的陈述时,命题逻辑需要为每种具体情况创建独立的命题变量,根本无法表达量化的语义。一阶谓词逻辑(First-Order Logic)引入了谓词、函数和量词,极大增强了表达能力。
谓词与个体
谓词(Predicate)描述个体(Individual)的性质或关系。Human(socrates) 表示"苏格拉底是人",Parent(john, mary) 表示"John 是 Mary 的父母"。谓词可以接受一个或多个参数,参数个数称为谓词的元数。一个谓词加上具体参数后就是一个命题,有确定的真值。 函数(Function)从一个个体映射到另一个个体。father(john) 返回 John 的父亲这个个体,age(socrates) 返回苏格拉底的年龄。函数和谓词的区别在于:函数返回一个个体,谓词返回真或假。
量词
量词是一阶逻辑超越命题逻辑的关键机制。全称量词
一阶逻辑的语义
一阶逻辑的语义基于解释(Interpretation)的概念。一个解释指定了论域(个体集合)、每个常量符号对应的个体、每个函数符号对应的映射关系、每个谓词符号对应的关系。给定一个解释,可以判定任何公式的真值。有效公式是在所有解释下都为真的公式(类似重言式),可满足公式是存在至少一个解释使其为真的公式。 一阶逻辑的可靠性和完备性定理是元理论的核心成果。可靠性保证:如果公式可以从公理系统中推导出来,那么它在所有满足公理的解释下都为真——推理不会产生错误结论。完备性保证:如果公式在所有满足公理的解释下都为真,那么它可以从公理系统中推导出来——所有正确结论都可以被推导。这两个性质共同确保了逻辑推理系统是值得信赖的。
推理规则
推理规则是从已知前提得出结论的机械步骤,是自动推理的理论基础。
假言推理
假言推理(Modus Ponens)是最基本的推理规则:已知
归结原理
归结原理(Resolution)是 Robinson 在 1965 年提出的单一推理规则,它彻底改变了自动定理证明领域。归结规则如下:从
示例:证明 "Socrates 是会死的"
前提:
1. ∀x (Human(x) → Mortal(x)) /* 所有人都是会死的 */
2. Human(socrates) /* 苏格拉底是人 */
转化为子句集:
1. ¬Human(x) ∨ Mortal(x)
2. Human(socrates)
归结过程:
对子句 1(取 x = socrates)和子句 2 进行归结:
¬Human(socrates) ∨ Mortal(socrates)
Human(socrates)
─────────────────────
Mortal(socrates) /* 结论:苏格拉底会死 */归结原理在工程实现中面临的主要问题是搜索空间爆炸。即使对于中等复杂度的问题,可能生成的归结式数量也会指数增长。各种启发式策略(如优先对含较少文字的子句进行归结、设置文字数量上限等)在实际系统中被广泛采用。
统一算法
统一(Unification)是归结在一阶逻辑中处理变量的关键机制。两个含有变量的项可以通过统一找到一种变量替换,使得替换后的两个项完全相同。比如
推理类型
演绎推理(Deduction)从一般到特殊,前提为真时结论必然为真。经典的三段论"所有人都是会死的,苏格拉底是人,所以苏格拉底会死的"就是演绎推理。演绎推理不产生新知识,只是将前提中隐含的信息显式化。数学证明、程序验证等需要绝对可靠性的场景都依赖演绎推理。 归纳推理(Induction)从特殊到一般,从有限观察中总结普遍规律。观察了 1000 只天鹅都是白色的,归纳出"所有天鹅都是白色的"——第 1001 只黑天鹅就可能推翻这个结论。归纳推理的结论是或然的而非必然的,但它是科学发现和机器学习的基本模式。机器学习本质上就是 一种自动化的归纳过程:从训练数据中归纳出模型,期望模型在未见数据上也能表现良好。 溯因推理(Abduction)从结果反推原因。已知"下雨则地湿"和"地湿",推测"可能下雨了"。溯因推理的结论不一定正确(也可能有人洒水了),但它是诊断推理的核心方法。医疗诊断、故障排查、刑侦推理都依赖溯因推理——从观察到的症状或现象出发,寻找最合理的解释。 三种推理在 AI 系统中各有其位:演绎推理用于确保结论的可靠性,归纳推理用于从数据中学习,溯因推理用于诊断和解释。理想的 AI 系统应该能灵活运用三种推理模式。
可满足性问题
布尔可满足性问题(Boolean Satisfiability Problem,SAT)是计算复杂性理论的核心问题:给定一个命题逻辑公式,判断是否存在一种变量赋值使得公式为真。SAT 是第一个被证明为 NP 完全的问题(Cook-Levin 定理,1971 年),这意味着如果找到多项式时间的 SAT 算法,所有 NP 问题都可以在多项式时间内解决。 尽管 SAT 在最坏情况下是指数复杂度的,但现代 SAT 求解器(如 MiniSat、Z3)在实际工程问题上表现出了惊人的效率。DPLL 算法通过布尔约束传播(BCP)和纯文字消除快速缩小搜索空间,CDCL(Conflict-Driven Clause Learning)在遇到冲突时学习新的子句避免重复搜索相同的无效路径。 SAT 求解器的工程价值远超学术意义。硬件验证中使用 SAT 求解器检查芯片设计的正确性,软件验证中用其分析程序的可达路径,密码分析中用 SAT 方法破解加密算法,调度和规划问题也可以编码为 SAT 实例求解。Z3 求解器被广泛集成在各类开发工具中,从编译器优化到安全漏洞检测都有它的身影。
从逻辑到 AI
数理逻辑为符号 AI 提供了严格的形式化框架,但"用逻辑就能实现智能"这个假设存在根本性的局限。逻辑要求知识被显式编码为符号和规则,而现实中大量知识是隐性的、模糊的、难以形式化的。命题逻辑表达能力不足,一阶逻辑推理计算代价高昂,更高阶的逻辑甚至不可判定。 尽管如此,数理逻辑的价值并未因深度学习的兴起而减弱。在需要可靠性、可解释性的场景中,逻辑推理仍然是不可替代的工具。程序验证依赖逻辑证明,知识图谱建立在描述逻辑之上,SAT 求解器广泛用于工程验证。理解数理逻辑,不仅是理解符号 AI 的前提,也是理解现代计算理论的基础。