第10章 知识表示

摘要:本章系统阐述了知识表示的核心理论与方法,从本体工程、类别与对象、事件表示到心理对象与模态逻辑,构建了完整的知识表示框架。重点探讨了具体化(reification)作为核心技巧,将类别、命题、事件等抽象概念转化为可操作的对象。通过对比语义网络、描述逻辑等不同表示方法的表达力与可推理性权衡,揭示了知识表示的本质是在表达力与计算效率间寻求平衡。最后,文章将经典理论与现代AI(如LLM)进行对比,探讨了显式本体与隐式知识表示的互补关系,并提出了AI对齐视角下的本体价值观问题。

对应 Artificial Intelligence: A Modern Approach, 4th Edition 第 10 章 Knowledge Representation


1. 章节概述

第 8、9 两章分别给出了一阶逻辑的语言(怎么说)和推理机制(怎么算)。但一个关键问题尚未回答:

到底该说什么?

前两章的例子(亲属关系、Wumpus World、电路)都是“玩具领域”(toy domain)——领域小、词汇少、边界清晰。真实世界的知识库要面对的是开放领域:需要表示动作、时间、物理对象、信念、金钱、颜色、事件、因果……而且这些概念彼此纠缠。

本章的任务是提供一套通用的、跨领域的表示框架,即 上层本体(upper ontology)。核心论点:

与其为每个领域从零设计词汇,不如构建一个通用本体(general ontology),把所有领域的知识组织在一个统一的概念骨架下。这样不同领域的知识可以互操作、复用、组合。

本章主线:

  1. 本体工程(ontological engineering):如何设计上层本体,“万物的分类学”。
  2. 类别与对象(categories and objects):继承、分类学、物理复合对象、度量。
  3. 事件(events):时间区间、流(fluents)、过程(processes)、事件演算。
  4. 心理对象与模态逻辑(mental objects and modal logic):表示“知道”、“相信”,指称不透明性。
  5. 推理系统:语义网络(semantic networks)、描述逻辑(description logics)。
  6. 默认信息的推理:非单调逻辑、限定(circumscription)、默认逻辑(default logic)、真值维护系统(TMS)。
  7. 实用系统:CYC、WordNet、DBpedia、语义网(Semantic Web)、知识图谱。

读者应带走的核心直觉

本体工程的本质,是在“表达力”与“可推理性”之间做出一系列有意识的取舍;而“具体化(reification)”是让本体保持灵活可扩展的最重要技巧。


2. 关键概念与定义

2.1 本体(Ontology)与本体工程

本体(ontology):对某个领域中存在哪些实体、这些实体如何分类、以及它们之间有何关系的形式化规约(formal specification of a conceptualization, Gruber 1993)。

本体工程(ontological engineering):设计与构建本体的方法论。相比第 8 章的“知识工程”,本体工程更关注通用性与跨领域复用

上层本体(upper ontology):位于分类树最顶端的通用概念(如“物体”、“事件”、“时间”、“数量”),任何领域本体都可挂接其下。

两条对立的哲学路线

路线 主张 代表
通用本体(general-purpose) 存在一套可涵盖一切的上层本体,特殊领域向下细化 CYC、SUMO、DOLCE
特设本体(special-purpose) 每个领域自建词汇,不追求统一 大多数工业 KB、Schema.org(半统一)

书中指出:任何通用本体都必须满足两个苛刻要求:

  1. 足够通用:能容纳所有领域的概念。
  2. 足够具体:在每个领域都能做出有用的推理。

历史经验表明这极难达成。CYC 项目(Doug Lenat,1984 起)投入数十人年编码数百万条常识断言,是这条路线上最大的尝试。其结论褒贬不一:它证明了常识知识的巨大规模,也暴露了手工编码的不可扩展性

2.2 类别与对象(Categories and Objects)

为什么需要类别:绝大多数推理发生在类别层面而非个体层面。看到一个圆形、红色、有柄的东西,我们推断“这是番茄”,进而推断“可以吃”——这个推断的中介就是类别。

两种表示类别的方式

  1. 谓词方式:Basketball(b) —— 简单,但类别本身不是对象,无法对类别作断言。
  2. 具体化(reification)为对象:b ∈ Basketballs —— 类别成为一等公民,可以有属性(“篮球是 1930 年发明的”)。

⚠️ 具体化是本章最重要的技巧,反复出现。

两个基本关系

关系 记法 含义
成员关系(membership) BB_9 ∈ Basketballs 个体属于类别
子集关系(subset / subclass) Basketballs ⊂ Balls 类别包含于类别

继承(inheritance)

继承(inheritance)

∀x (x ∈ Basketballs ⇒ Round(x))

若 Basketballs ⊂ Balls 且 ∀x (x ∈ Balls ⇒ Round(x)),则篮球自动是圆的。分类学(taxonomy / taxonomic hierarchy)由子类关系构成,是继承的骨架。

分类学是最古老的知识组织形式:生物学的林奈分类、图书馆的杜威十进制、专利分类、疾病编码 ICD 都是。

关于类别的常见断言形式

  • BB_9 ∈ Basketballs —— 个体是类别成员
  • Basketballs ⊂ Balls —— 子类
  • ∀x (x ∈ Basketballs ⇒ Spherical(x)) —— 类别所有成员共有的属性
  • ∀x ((Orange(x) ∧ Round(x) ∧ Diameter(x) = 9.5'' ∧ x ∈ Balls) ⇒ x ∈ Basketballs) —— 类别的充分条件
  • Dogs ∈ DomesticatedSpecies —— 类别本身作为对象,是另一类别的成员

最后一条极为重要:类别可以是其他类别的成员(元类别 metaclass)。Dogs 是一个类别,同时是 DomesticatedSpecies 这个“类别的类别”的成员。

类别之间的结构关系

  • 不相交(disjoint):任意两个成员集合无交集。Disjoint({Animals, Vegetables});Disjoint(s) ⇔ ∀c₁,c₂ (c₁ ∈ s ∧ c₂ ∈ s ∧ c₁ ≠ c₂ ⇒ Intersection(c₁,c₂) = {})
  • 穷尽分解(exhaustive decomposition):并集覆盖父类。ExhaustiveDecomposition({Americans, Canadians, Mexicans}, NorthAmericans)
  • 划分(partition):不相交 + 穷尽。Partition({Males, Females}, Animals);Partition(s,c) ⇔ Disjoint(s) ∧ ExhaustiveDecomposition(s,c)

⚠️ 注意:Partition(\{Males, Females\}, Animals) 在生物学上其实不完全正确(存在雌雄同体的物种)。这提醒我们:本体断言的正确性取决于领域范围,过强的断言会导致错误推理。

2.3 物理复合对象(Physical Composition)

部分关系(PartOf):

PartOf(Bucharest, Romania)
PartOf(Romania, EasternEurope)
=> PartOf(Bucharest, Europe)   (传递性)

公理:

∀x PartOf(x,x)(自反)

∀x,y,z PartOf(x,y) ∧ PartOf(y,z) ⇒ PartOf(x,z)(传递)

复合对象(composite object):由部件按特定结构组成的对象。

∀a Biped(a) ⇒ ∃l₁,l₂,b Leg(l₁) ∧ Leg(l₂) ∧ Body(b) ∧ PartOf(l₁,a) ∧ PartOf(l₂,a) ∧ PartOf(b,a) ∧ Attached(l₁,b) ∧ Attached(l₂,b) ∧ l₁ ≠ l₂ ∧ …

捆束(bunch):不关心结构,只关心部件集合。BunchOf({Apple₁, Apple₂, Apple₃}) 是由三个苹果组成的复合对象。

∀x x ∈ s ⇒ PartOf(x, BunchOf(s))

BunchOf(s) 是包含 s 中所有元素的最小对象(逻辑最小化)。

⚠️ 关键区分:BunchOf({Apple₁, Apple₂}) 是一个物理对象(有重量、有位置);而集合 {Apple₁, Apple₂} 是数学对象(无重量、无位置)。混淆两者是本体设计的常见错误。

2.4 度量(Measurements)

物理对象具有长度、质量、时间、成本等属性。这些用度量函数(measure function)表示:

Length(L₁) = Inches(1.5) = Centimeters(3.81)

注意:Inches(1.5) 与 Centimeters(3.81) 指称同一个抽象长度对象,只是用不同单位命名。

单位转换公理

∀i Centimeters(2.54 × i) = Inches(i)

度量的最重要性质:可排序(orderable)

∀d₁, d₂ Diameter(d₁) > Diameter(d₂) ⇔ …

非数值度量:难度、美观、口味也可以有部分序

∀e₁, e₂ e₁ ∈ Exercises ∧ e₂ ∈ Exercises ∧ Wrote(e₁, Norvig) ∧ Wrote(e₂, Russell) ⇒ Difficulty(e₁) > Difficulty(e₂)

核心洞察

度量的用处不在于具体数值,而在于可比较性。即使无法量化“美观”,只要能排序,就能做推理与决策。这一点与第 16 章的效用理论直接相通。

2.5 对象:物质与事物(Stuff vs Things)

这是本体论中的经典区分(源自哲学的 mass noun / count noun)。

事物(things / count nouns) 物质(stuff / mass nouns)
例子 苹果、汽车、人 黄油、水、能量
个体化 有清晰边界,可数 无内在边界,不可数
部分性质 苹果的一部分不是苹果 黄油的一部分仍是黄油
语言 “three apples” “some butter”(不说 “three butters”)

形式化

∀x,y x ∈ Butter ∧ PartOf(y,x) ⇒ y ∈ Butter

这称为 内在性质的可分性(divisibility)。

内在性质 vs 外在性质

类型 定义 例子 分割后
内在(intrinsic) 属于对象的实质(substance) 密度、沸点、味道、颜色 保持不变
外在(extrinsic) 属于对象整体 重量、长度、形状 改变

判定规则

若一个类别的所有定义性属性都是内在的,则它是物质(substance / mass noun);若包含外在属性,则是事物(count noun)。

Butter 只由内在属性定义 ⇒ 物质。Pound(Butter) 加入了外在的重量 ⇒ 变成可数的事物。

2.6 事件(Events)

情境演算 vs 事件演算

第 7 章用带时间下标的命题(L^t_{1,1})表示变化,但这只适用于离散、单智能体、每步一个动作的世界。真实世界需要:

  • 连续时间
  • 并发事件
  • 持续时间的动作(不是瞬时的)
  • 外部事件(非智能体引发)

为了表示这些更复杂的变化,AIMA 第 10 章引入了事件演算(event calculus)这一框架。其核心思想是:把事件(event)当作本体中的一等公民,通过时间区间(time intervals)与(fluents)来描述世界状态如何随时间变化。

时间区间(time intervals):事件演算不再像情境演算那样把时间离散化为一个个"情境"(situation),而是直接使用连续的时间区间。一个事件发生在某个时间点或时间区间上,例如"从 14:00 到 15:00 下雨"就是一个持续的时间区间。这种表示天然支持持续时间的动作,而不必把动作强行切分为瞬时步骤。

流(fluents):流是随时间变化而取不同真值的命题,例如"门是开着的"(Open(Door))就是一个流——它在某个时间区间为真,在另一个时间区间为假。事件演算用 HoldsAt(f, t) 表示流 f 在时间 t 成立,用 Happens(e, t) 表示事件 e 在时间 t 发生。流的引入使得我们可以自然地表达并发事件:多个事件可以在同一时间区间内同时发生,互不排斥。

过程(processes):过程是一类特殊的流,它表示持续进行中的活动,例如"水在沸腾"(Boiling(Water))。过程与瞬时事件的区别在于:过程有持续时间,且可以被触发(initiated)和终止(terminated)。例如,事件"打开开关"(TurnOn(Switch))会触发过程"灯亮着"(Lit(Bulb)),而事件"关闭开关"(TurnOff(Switch))则终止该过程。这种触发-终止机制是事件演算表达因果关系的核心。

事件演算的公理:事件演算通过一组公理把事件、流和时间联系起来。最基本的公理是:

Happens(e, t1) ∧ Initiates(e, f, t1) ∧ t1 < t2 ∧ ¬Clipped(t1, f, t2)
⇒ HoldsAt(f, t2)

这条公理的含义是:如果事件 e 在 t1 时刻发生,且 e 触发了流 f,并且在 t1 到 t2 之间 f 没有被"剪断"(clipped,即没有被终止事件打断),那么 f 在 t2 时刻仍然成立。这里的 Clipped 谓词用于处理并发与干扰:当一个流被多个事件同时影响时,需要判断哪个事件真正改变了状态。

情境演算 vs 事件演算的对比

维度 情境演算(Situation Calculus) 事件演算(Event Calculus)
时间模型 离散的情境序列 连续的时间区间
动作表示 瞬时动作,改变情境 事件可瞬时也可持续
并发支持 困难,需显式处理 天然支持并发事件
外部事件 难以表示非智能体事件 可自然表示外部事件
核心谓词 Do(a, s) 表示动作后的情境 Happens(e,t)、HoldsAt(f,t)

核心洞察:事件演算通过把事件时间都具体化为对象,使得我们能够对"变化"本身进行推理——这正是具体化(reification)技巧在时间领域的又一次应用。它比情境演算更贴近真实世界的连续、并发、持续特性,是表示开放领域动态知识的有力工具。

3. 本章小结

本章围绕知识表示的核心问题展开,可以归结为三个层面的收获:

  • 具体化(reification):将类别、命题、事件等抽象概念转化为可操作的对象,使其成为一等公民,从而能够对类别本身作断言、赋予属性。这是贯穿全章、让本体保持灵活可扩展的最重要技巧。
  • 继承(inheritance):通过子类关系与分类学(taxonomy)组织知识,使个体自动获得其所属类别的属性,极大减少了重复断言,是知识库高效推理的骨架。
  • 度量(measurement):用度量函数表示长度、质量、时间等属性,其价值不在于具体数值,而在于可比较性——即使无法量化,只要能排序,就能支撑推理与决策。

知识表示的本质,是在表达力可推理性之间做出一系列有意识的取舍。语义网络、描述逻辑等不同表示方法各有侧重:表达力越强,往往推理越困难;而约束表达形式,则能换取更高效的自动推理。本体工程正是要在二者之间找到适合具体领域的平衡点。

展望现代 AI,大语言模型(LLM)以隐式知识表示的方式,将知识编码在神经网络参数之中,与本章讨论的显式本体形成互补。显式本体可解释、可验证、便于组合与推理,而隐式表示擅长处理开放领域的模糊与常识。未来知识表示的发展方向,很可能是将二者的优势结合——用显式本体提供结构骨架,用隐式表示补充灵活性与规模,从而在表达力与可推理性之间开辟新的平衡。

更多推荐