本节摘要:知识表示决定智能体「能理解什么」,知识推理决定「能从已知推出什么」。本节先讲符号、亚符号、混合三种知识表示方法(逻辑/语义网络/框架/本体 vs 神经网络 vs 神经符号),再讲演绎、归纳、溯因、概率、基于案例五种推理,最后给出「知识表示+推理」的选型思路与贝叶斯网络查询示例。
阅读完本节,你应当能够:
智能体靠感知拿到一堆事实:「草地上湿的」「苏格拉底是人」。但这些孤立的感知数据还不能支撑「要不要带伞」「苏格拉底会不会死」这种结论。缺什么?缺两样:把知识组织起来的形式(知识表示),和从已知推出未知的机制(知识推理)。
SOURCE 原文把知识表示称为智能体的「认知框架」——它决定智能体「看到什么、理解什么、如何用这些理解去推理和行动」。同样一条信息,用逻辑表示和用神经网络权重表示,智能体的推理方式完全不同。所以知识表示的选择不只是技术选型,而是「智能体怎么思考」的路线选择。举个直觉例子:专家系统靠符号规则推理,能解释「为什么下这个诊断」;深度学习模型靠权重推理,答得快但说不清理由。没有绝对的对错,只有场景的适配。
SOURCE 列出了判断一种表示好不好用的五条标准:表达力(能不能充分表达概念、事实、规则、关系)、推理效率(支不支持高效推导新知识)、组织性(能不能结构化存储检索)、可扩展性(知识增长时好不好更新)、可理解性(人能不能读懂)。这五条常常互相冲突:符号表示可理解但表达力受限,神经网络表达力强但完全不可理解。选表示的本质就是在这五条之间做权衡。
符号表示用符号、逻辑规则抽象表示知识,强调显式与结构化。
is_a(Socrates, man) 加上 forall x: is_a(x, man) → will_die(x),推出 will_die(Socrates)。清晰、可验证,但表达复杂知识时要写很多公式。frame_person 定义了 Person 类型的 name/age/occupation 三个槽,frame_alice 是它的实例。结构化程度高,适合表示对象属性。符号表示最大的价值是可解释——每一步推理都有据可查。代价是难以处理感知和模糊信息,知识获取要靠人手工编,泛化能力弱。这正是第 1 章「符号主义」流派的写照。
符号表示的维护成本经常被低估。规则一旦多起来,规则之间可能互相冲突、覆盖,知识的「一致性」很难保证——改一条规则可能连锁影响几十条规则的触发。所以工程上符号知识库要配版本管理和测试套件:把「已知事实 + 期望结论」写成用例,每次改规则跑一遍回归。SOUCE 的 Prolog 例子虽然只有三条规则,但生产级的规则库动辄几千条,没有测试保护的修改等于埋雷。
语义网络在现代工程里最成熟的形态是知识图谱。它把「实体—关系—实体」三元组(如 Alice—knows—Bob)存储成图,配图数据库和查询语言。SOUCE 用 RDFlib 演示的就是这个概念的最小版本:定义命名空间、添加三元组、按模式查询。知识图谱相比关系数据库的优势在于关系即一等公民——「Alice 认识谁」这类多跳查询天然高效,还能支持「朋友的朋友」这类推理。推荐系统、问答系统、风险控制里都大量用知识图谱做结构化知识层。不过要注意,知识图谱的「推理」大多是图遍历和规则推导,不是逻辑学意义上的严格演绎——两者的边界别搞混。
亚符号表示(神经网络)的「知识分布式存储」带来一个工程后果:无法局部修改知识。符号知识库里改一条规则只影响相关推理;神经网络想「忘掉」某条错误知识,几乎只能重新训练。这在需要动态更新知识的场景(法规变化、产品改版)里是硬伤。另外,神经网络的「知识」质量完全取决于训练数据——数据里的偏见会被学进去,这埋下了第 6 章安全伦理里「算法偏见」的伏笔。
但亚符号表示也有符号表示做不到的事:从原始感知里自动提取特征。图像、语音、文本这类低层次数据,没有神经网络几乎没法变成机器可用的表示。所以工程实践里最常见的形态不是「二选一」,而是「符号壳 + 亚符号核」:神经网络把图像翻译成「有猫、有人、猫在沙发上」的符号事实,符号引擎再基于这些事实做推理。SOUCE 把这种形态叫神经符号系统,它解决的是「既想会看图,又想讲道理」的现实需求。
亚符号表示主要指神经网络。知识隐含编码在连接权重里,是分布式存储——「知识分散在网络各处,难以直接提取和解释」。SOURCE 用 PyTorch 训了一个线性模型学习 y = 2x + 1:1000 轮后输入 5 预测接近 11。这个例子虽小,但「知识在权重里」的感觉很具体——你没法把模型的「规律」打印出来看,只能通过预测行为间接验证。
亚符号表示的长处是自动学习特征、擅长感知和模式识别;短处是黑箱、不可解释、需要大量数据。它在感知任务(图像、语音、文本)上碾压符号表示,但在需要逻辑推理的任务上无能为力。
混合表示把两者结合,是当前研究热点。两个代表方向:神经符号系统(符号知识指导神经网络学习,或神经网络增强符号推理)、知识图谱嵌入(把实体和关系映射到低维向量空间,用向量距离表示语义,可用于知识图谱补全和关系预测)。简单说,混合表示想让智能体「既会看图,又会讲道理」。
所有人会死 + 苏格拉底是人 → 苏格拉底会死。SOUCE 给出了 Prolog 代码:will_die(X) :- is_a(X, man). 加事实 is_a(socrates, man).,查询返回 true。严谨但需要完备的规则库。SOURCE 用 pgmpy 建了一个经典的「草湿」贝叶斯网络——阴天影响洒水器和下雨,两者共同影响草是否湿:
from pgmpy.models import BayesianModel from pgmpy.factors.discrete import TabularCPD from pgmpy.inference import VariableElimination model = BayesianModel([ ('Cloudy', 'Sprinkler'), ('Cloudy', 'Rain'), ('Sprinkler', 'WetGrass'), ('Rain', 'WetGrass') ]) # ... 省略各节点条件概率表的定义 ... infer = VariableElimination(model) result = infer.query(variables=['Rain'], evidence={'WetGrass': 'T'})
核心动作是「给定证据反向推理」:已知草地湿,问下雨概率。变量消元(VariableElimination)算法自动完成贝叶斯公式的传播。工程上这类模型的价值在于把领域因果结构显式编码——医生知道「感冒→咳嗽」「过敏→咳嗽」,证据是咳嗽,系统能算出感冒和过敏各自的后验。比起端到端神经网络,这种模型可解释、样本需求小,代价是需要人来指定结构。
| 场景需求 | 推荐表示 | 推荐推理 |
|---|---|---|
| 规则明确的专家系统 | 逻辑/产生式规则 | 演绎 |
| 关系丰富的知识库 | 知识图谱/本体 | 图查询 + 推理 |
| 从数据学规律 | 亚符号(神经网络) | 归纳(学习) |
| 诊断/故障排查 | 符号 + 概率 | 溯因 + 贝叶斯 |
| 经验丰富领域 | 案例库 | 基于案例 |
| 感知 + 推理混合 | 神经符号 | 混合 |
⚠️ 常见坑:把「神经网络能回答」误当成「它在推理」。多数语言模型是在做模式匹配与生成,不是严格的逻辑推理——让它做多步演绎容易一本正经地出错。需要严格推理的任务,用符号工具(逻辑编程、规划器)更可靠。
💡 关键直觉:表示和推理是配对选择的。符号表示配演绎推理(规则进规则出),亚符号表示配归纳推理(数据进模式出),概率表示配概率推理(证据进后验出)。配对错了,整个知识层就转不起来。
回到第 2 章的开篇图:感知结果进入知识层,知识层支撑规划决策。SOUCE 列出知识表示与推理在 NLP、专家系统、机器人、知识图谱、推荐系统五个方向的应用——这些正是第 5 章要讲的领域。所以本节是「承上启下」的枢纽:它承接 2.1 的感知输出,又为 2.3 的规划决策、第 5 章的行业落地提供认知地基。做智能体时,先问「知识怎么存、怎么推」,再往下设计决策逻辑,顺序不要反。
知识层就绪了,下一节让智能体「做决定」——规划与决策。