第 4 章 · 知识表示与推理

符号主义 AI 的心脏:把知识写成机器可操作的句子,再用推理引擎从已知推出未知。本章以逻辑编程(Prolog)为载体,展示「知识库 + 推理机」的架构,讲清它的辉煌(专家系统、定理证明)、它的软肋(常识问题、不确定性),以及它如何把接力棒交给统计学习。离散数学课第 2、3 章的命题/谓词逻辑在此直接变成代码。

4.1 知识的三种表示法

同一个知识「鸟会飞(除企鹅)」,三种写法:

  • 逻辑(一阶谓词):∀x (Bird(x) ∧ ¬Penguin(x) → Flies(x))——离散数学课的公式,精确、可推理;
  • 规则(if-then):IF 动物是鸟 AND 不是企鹅 THEN 会飞——专家系统的形式,人类专家「口述」最自然;
  • 语义网络/图:节点(鸟、企鹅)带边(是、会),知识图谱(Google 的知识面板)的形态。

选型口径:要严格推理(数学、法律条文、硬件验证)用逻辑;要专家经验(诊断、配置)用规则;要关联检索(搜索、问答)用图。三者在真实系统里常混用(知识图谱 + 规则引擎 + 神经网络)。

4.2 Prolog:知识即程序

Prolog(Programming in Logic)是逻辑编程的活标本:程序 = 事实 + 规则,查询 = 推理请求:

% 事实
parent(tom, bob).      % tom 是 bob 的家长
parent(tom, liz).
parent(bob, ann).
male(tom). male(bob).

% 规则:grandparent 是推导出来的
grandparent(G, C) :- parent(G, P), parent(P, C).

% 查询
?- grandparent(tom, Who).
Who = bob ;
Who = liz ;
false.

没有 for 循环、没有赋值:你声明「什么是真」,推理引擎自己搜出「怎么证」。:- 读作「如果」(右边都成立则左边成立),逗号是「与」。上面查询的执行过程:回溯搜索(第 2 章的深度优先 + 回退):先把 Who 绑定为 bob,验证 parent(bob, ann) 成立,输出;继续搜,换 liz;搜尽返回 false。**「程序 = 知识库」**的范式在这里实现。

4.3 归结与推理机:机器怎么「想」

推理引擎的核心是归结原理(Robinson, 1965):要证 KB ⊨ 结论,等价于证明「KB ∧ ¬结论」矛盾(反证法的形式化,离散数学课第 4 章)。归结规则一句话:两个子句(或项的析取)中含互补文字 P 与 ¬P,消去它们合并出新子句——一条规则支撑起整个自动定理证明。

工程推理机的两条路线:前向链(数据驱动,从事实出发反复点火规则直到无新事实,专家系统 MYCIN 的诊断、规则引擎 Drools 的风控);后向链(目标驱动,从要证的结论倒推需要的证据,Prolog 的执行模式,「我怀疑 X,要证 X 需要先证 Y 和 Z」)。诊断类系统用前向(症状进结论出),证明类任务用后向(目标导向)。

4.4 辉煌与困境:符号 AI 的天花板

符号推理的巅峰成就:专家系统(1980s 产值十亿美元级,XCON 配置计算机系统每年省亿级成本)、自动定理证明(四色定理的计算机辅助验证,第 6 章离散数学提过;今天的形式化验证 SeL4 内核、CompCert 编译器,数学上零缺陷)。

但它撞上三堵墙(第 1 章的呼应):

  • 知识获取瓶颈:每条规则都要人类专家口述,Feigenbaum 估算一个领域数千条规则起步,写不完、更新不动;
  • 常识深渊:「气球飞走」这类千万条常识,规则系统望不到头;Cyc 项目耗资数亿美元手写常识 30 年,仍离实用遥远;
  • 不确定性:规则世界假设「事实非真即假」,但现实是「病人 80% 可能是阑尾炎」「传感器 5% 概率失灵」。概率的缺席是致命伤——这正是第 5 章(机器学习与概率)接棒的原因。

一个公允的注脚:符号方法没有死,它在与神经方法分工——LLM 会「说」但不可靠,符号系统可靠但不会「学」;今天的神经符号系统(LLM 生成 SQL/代码,求解器验证执行)正在把两代 AI 拼回一起。

4.5 本体与知识图谱:工业级的知识库

把「知识库」做到工业规模需要工程化:本体(ontology)定义领域的概念体系(类、属性、关系,如「」药物-成分-禁忌是一张什么样的网),知识图谱(Knowledge Graph)是它的具体实现(节点实体、边关系,Google 2012 年提出,今天每个搜索引擎背后都有一张)。构建路径:从文本抽取(实体识别、关系抽取——用第 8 章的神经模型!)+ 人工校对 + 融合对齐。图谱的强项是可查询、可解释的多跳推理:「A 的导演的妻子的前夫的作品」这类查询,LLM 经常幻觉,图谱一次查准。这也是 RAG(检索增强生成,第 10 章)选图谱当知识源的原因。

常见认知误区

  • 「Prolog 过时了所以逻辑推理没用」。推理机的思想活在所有规则引擎(Drools 风控、IPTABLES 的规则匹配)、SAT/SMT 求解器(芯片验证、编译器优化确认)、约束求解(排班、排课)里;学的是思想不是语法。
  • 「知识库越大越智能」。不一致的知识库推出一切(爆炸原理,离散数学课);一致性维护、冲突消解是知识工程的真功夫。
  • 「符号 AI 与神经 AI 是敌人」。第 1 章的两代范式是工具箱里的两把锤子;LLM 的幻觉问题恰恰是「缺符号约束」的症状,结合是进行时(第 10 章)。

练习

  1. 动手:装 SWI-Prolog,实现家族关系库(parent/male/female + grandparent/sibling/aunt 规则),查询「tom 的所有孙辈」;故意制造一个「自己是自己的 parent」的环,观察推理机怎么死循环,加一个 visited 列表修复(第 2 章 DFS 的防环)。
  2. 动手:用 Python 实现一个 50 行的前向链推理机:规则列表 + 事实集合,反复扫描直到无新事实;用它做一个小型「动物识别」专家系统(经典 20 问的规则集)。
  3. 手算:把「如果下雨且没带伞,那么会淋湿;今天下雨但没淋湿;所以带了伞」形式化(离散数学课第 2 章),验证推理有效性(拒取式 MT)。
  4. 思考:知识图谱的构建里「实体对齐」(「张三」和「Zhang San」和「老张」是同一人?)是脏活。结合数据库课第 5 章(实体完整性、主键)与本章,讨论:知识的「唯一标识」为什么比数据的更难?