Symbolic AI
符号 AI,也称为 GOFAI,通过人类可读的符号、显式规则和逻辑进行推理。了解专家系统的工作原理、局限性和神经符号 AI。
符号人工智能是一种人工智能(AI)方法,它将知识表示为人类可读的符号,例如 bird、penguin 或“苏格拉底是人”,并通过明确的规则、逻辑和搜索进行推理。从 1956 年的达特茅斯研讨会到 20 世纪 80 年代,符号人工智能一直主导 AI 研究。哲学家 John Haugeland 后来于 1985 年将其称为“老派人工智能”(GOFAI)。符号系统得出的每个结论都可以追溯到人类编写且能够读懂的规则,因此具有可审计性;但系统中的每一条知识都必须手动编写,因此难以扩展。
符号人工智能的工作原理#
符号系统由两部分组成。知识库使用一阶逻辑、if-then 产生式规则或知识图谱等形式语言存储事实(“苏格拉底是人”)和规则(“所有人都会死”)。推理引擎应用规则推导出未存储的事实(“苏格拉底会死”)。正向链式推理从已知事实出发,执行所有满足条件的规则,直到不再产生新事实。反向链式推理则从目标出发,反向推导能够证明目标的事实;逻辑编程语言 Prolog就采用了这种策略。
这种方法的理论基础是 Allen Newell 和 Herbert Simon 于 1976 年提出的物理符号系统假设,该假设认为,操作符号对于通用智能既是必要条件,也是充分条件。下面用几行纯 Python 代码就能实现正向链式推理引擎:
# Knowledge base: IF every premise is a known fact THEN add the conclusion
rules = [
({"has_feathers", "lays_eggs"}, "bird"),
({"bird", "cannot_fly", "swims"}, "penguin"),
]
facts = {"has_feathers", "lays_eggs", "cannot_fly", "swims"}
# Forward chaining: keep firing rules until no new fact appears
changed = True
while changed:
changed = False
for premises, conclusion in rules:
if premises <= facts and conclusion not in facts:
facts.add(conclusion)
changed = True
print(f"{conclusion} <- {sorted(premises)}")该引擎会先打印 bird <- ['has_feathers', 'lays_eggs'],然后打印 penguin <- ['bird', 'cannot_fly', 'swims']:只有第一条规则添加了 bird,第二条规则才会触发。每一行输出都完整解释了结论成立的原因;这类推理轨迹正是可解释 AI(XAI)方法试图为神经网络重建的内容。
专家系统#
20 世纪 70 年代和 80 年代,符号人工智能通过专家系统进入工业领域。斯坦福大学的 MYCIN 根据从医生处收集的约 600 条规则,识别严重感染背后的细菌并推荐抗生素;Digital Equipment Corporation 的 XCON 则为 VAX 计算机配置客户订单。专家系统在基本引擎之外,还包含知识工程师和解释功能:知识工程师会访谈领域专家,将其知识编码为规则;解释功能则会重放得出每个答案所依据的规则。
访谈环节成了瓶颈。专家很难将直觉表述为规则,大型规则库会在遇到无人预料的情况时失效,而且系统无法从数据中学习。Doug Lenat 于 1984 年启动了 Cyc 项目,试图手工编码常识,这项工作已持续数十年。20 世纪 80 年代末,专家系统的预算大幅削减,该领域因此进入第二次“AI 寒冬”。
符号 AI 与统计 AI#
统计式 AI从示例中学习模式,是现代机器学习(ML)和深度学习(DL)的基础。这两种范式各自在对方不擅长的领域失效:
- 符号人工智能:精确、透明,完全不需要训练数据,适用于算术、规划、法规和形式证明。但它无法处理原始感知,因为没人能编写出仅凭像素值识别猫的规则;对于规则未曾预料到的输入,它也会失效。
- 统计式 AI:直接从数据中学习感知和语言,并能够容忍噪声;但它需要大型数据集,决策过程难以检查,而且语言模型可能生成流畅却错误的回答,即所谓的幻觉。
符号人工智能如今的应用场景#
- 规则引擎与合规: 税务软件和业务规则引擎会将法规编码为明确规则,因此每个结果都能追溯到生成该结果的条款。
- 规划与调度: 自动规划器会根据对行动、前置条件和效果的符号化描述进行搜索,为物流、工厂作业和航天器运行制定计划。
- 形式验证: Microsoft 的 Z3 等 SAT 和 SMT 求解器可证明芯片和软件的性质;Lean 等证明助手则会逐步检查数学证明。
- 知识图谱: 搜索引擎和 Wikidata 会将数十亿条事实存储为实体和关系,以便查询遍历。
神经符号 AI#
神经符号 AI结合了这两种范式:神经网络负责感知和模式识别,符号组件则负责规则、约束和精确推理。通过函数调用调用计算器、SQL 数据库或代码解释器的语言模型,也采用了相同的分工。在视觉流水线中,像 Ultralytics YOLO26这样的检测器会将像素转换为符号,即所检测到目标的类别名称,再由简单规则对这些符号进行推理:
from ultralytics import YOLO
# 神经感知:检测目标,并将其类别名称保留为符号事实
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
facts = {result.names[int(c)] for c in result.boxes.cls}
# 符号推理:如果存在一辆公交车并且有一个人,则发出警报
if {"bus", "person"} <= facts:
print("Rule fired: pedestrians next to a bus")更改规则会立即改变系统行为,无需重新训练。Google DeepMind 的 AlphaGeometry将同样的分工用于数学:神经语言模型提出辅助构造,符号演绎引擎根据这些构造证明结果;两者结合,在 2024 年发表于 Nature 的论文中解出了 30 道国际数学奥林匹克竞赛几何题中的 25 道。










