# 知识表示[编辑]

| 知识表示 |
| --- |
| 科学分支领域 |
| 上级分类 | 人工智能  |
| 研究對象 | 知识表示  |

**知识表示**（英語：knowledge representation，KR），又称**知识重述**、**知识表现**、**知识表征**，是认知科学和人工智能两个领域共同存在的问题。在认知科学里，它关系到人类如何储存和处理资料。在人工智能里，其主要目标为储存知识，让程序能够处理，达到人类的智慧。知识表示与推理（knowledge representation and reasoning，KRR或KR&R）则进一步要求对知识进行理解和推理。

从人工智能的角度来看，知识表示涉及的基本问题包括：人类如何表示知识？知识的本质是什么？某种表示法应该只用在某个领域，还是应该通用？某种知识表达方案的表现能力如何？表示法应该是描述性的还是程序性的？知识表示的研究肇始于20世纪50年代，经历了基于逻辑、基于框架、基于规则和基于本体的多种范式的演变。相关的形式化方法主要包括语义网络、框架、规则系统、逻辑编程和本体等。自21世纪以来，机器学习中的参数化模型——包括卷积神经网络和Transformer等神经网络架构——也被视为一类知识表示形式。

## 历史

知识表示在计算机中的最早工作聚焦于通用问题求解器。1959年，艾伦·纽厄尔和赫伯特·西蒙开发了通用问题求解器（GPS），该系统使用规划与分解的数据结构：从目标出发，将目标分解为子目标，进而构建实现各子目标的策略。同年，约翰·麦卡锡提出了「采纳者」（Advice Taker）系统，主张使用谓词演算来实现常识推理。

1960年代，许多早期研究使用语义网络（图表示）来编码知识，问题求解被视为图遍历或寻径过程。另一条研究路线聚焦于自动定理证明，约翰·艾伦·罗宾逊于1965年提出了归结原理。麦卡锡和帕特·海斯发展了情境演算，作为关于因果关系常识知识的逻辑表示。

麻省理工学院的研究者反对归结证明的范式，倡导知识的程序性嵌入。这一关于逻辑表示与程序表示的冲突在1970年代初通过逻辑编程和Prolog语言的开发得到了解决，后者使用SLD归结将霍恩子句处理为目标归约过程。与此同时，北美AI研究者则专注于特定领域知识的表示而非通用推理，这一方向催生了1970至80年代的专家系统、产生式系统和框架语言。专家系统将AI系统分为包含事实和规则的知识库与应用知识的推理机两部分。

1974年，马文·明斯基提出了框架（frame）的概念——一种对类别的抽象描述，包含槽位（数据值）及其取值约束。1983年，IntelliCorp发布了知识工程环境（KEE），首次将框架与规则系统集成在一起，兼具前向链和后向链的推理能力。

1980年代中期的KL-ONE语言为框架语言提供了严格的语义形式化定义，并引入了基于描述逻辑的分类器（classifier）——一种能够从知识库推导出新断言、并验证一致性的自动化推理引擎。1984年，道格·利纳特启动了Cyc项目，旨在构建涵盖常识知识的大型百科全书式知识库，使用CycL语言表示时间、因果、物理和意图等常识模型。

21世纪初，语义网成为知识表示研究最活跃的领域之一。资源描述框架（RDF）提供了定义类、子类和对象属性的基本能力，Web本体语言（OWL）增加了额外的语义层并与分类推理引擎集成。

## 主要形式化方法

### 语义网络

语义网络以图结构表示知识，节点表示概念或实体，边表示概念之间的关系（如「是一个」（IS-A）、「属于」（instance-of））。语义网络是早期AI中广泛使用的知识表示形式，问题求解被视为图中的路径搜索。现代知识图谱可以视为语义网络的继承和发展。

### 框架

框架（frame）是对某一类别的抽象描述，由明斯基于1974年提出。框架包含多个槽位（slot），每个槽位存储一个属性值，并可能附带默认值、取值范围约束和触发过程。框架之间通过继承关系组织成层次结构。框架语言后来与面向对象编程深度结合，影响了许多现代知识表示系统。

### 规则与产生式系统

规则系统使用IF-THEN形式的产生式规则表示知识。每条规则包含前提条件和结论，推理机通过前向链（从事实出发推导结论）或后向链（从假设出发寻求证据）驱动推理。产生式系统在1970–80年代的专家系统中占据了主导地位。

### 逻辑与逻辑编程

一阶谓词逻辑（FOL）具有高度的表达能力和形式化语义，是衡量知识表示语言表达能力的重要标准。但FOL的完全实现面临可判定性和计算效率的挑战。逻辑编程语言Prolog基于霍恩子句，结合SLD归结推理和闭世界假设，是逻辑知识表示的重要实现{。

### 描述逻辑与本体

描述逻辑（description logic）是KL-ONE语言家族的理论基础，提供了一类可判定的知识表示语言。描述逻辑系统支持自动分类——通过概念包含关系（subsumption）的推理来动态组织本体层次结构。Web本体语言（OWL）在描述逻辑的基础上为语义网提供了标准化的本体描述框架。

## 核心特征与设计权衡

1985年，隆·布拉赫曼归纳了知识表示的七大核心问题：

* **基元**（primitives）：表示知识的底层框架是什么？语义网络、框架和逻辑是三类主要的基元。
* **元表示**（meta-representation）：形式系统能否访问和修改自身的状态，即反射能力。
* **不完全性**（incompleteness）：如何处理真实世界中不确定的知识？模糊逻辑和置信度因子是常见的处理手段。
* **定义与事实**（definitions vs. facts）：全称量化陈述（如「所有人都会死」）与存在量化实例（如「苏格拉底是人」）的区分。
* **非单调推理**（non-monotonic reasoning）：当新知识加入后，允许撤回已有的结论。真值维护系统是实现该能力的常见技术。
* **表达充分性**（expressive adequacy）：表示方案在多大程度上接近一阶谓词逻辑的表达能力。
* **推理效率**（reasoning efficiency）：知识库更新和推理的运行时效率。表达充分性与推理效率之间存在根本性权衡——表达能力越强，推理效率往往越低。

兰德·戴维斯等人于1993年提出了知识表示的五个角色框架：

1. 知识表示是真实世界的**替身**（surrogate），使系统能够通过思考而不是行动来推断后果；
2. 一组**本体论承诺**（ontological commitments），即「我应该以什么术语来思考世界」的答案；
3. 一种关于智能推理的**片段理论**（fragmentary theory），规定了表示所认可和推荐的推理；
4. 一个**高效计算的媒介**（medium for efficient computation），为组织信息以促进推荐推理提供指导；
5. 一种**人类表达的媒介**（medium of human expression），即「我们说关于世界的语言」。

## 知识提取与本体工程

知识提取是指从结构化或非结构化数据中自动提取可计算知识的過程。随着知识库规模的增长，本体工程——即设计和构建可供多个项目使用的大型知识库——变得越来越重要。

Cyc项目是该领域最雄心勃勃的努力之一。Cyc的知识表示语言CycL支持时间、因果、物理和意图等多个领域的常识建模。在CycL之后，多种本体语言相继被开发出来，其中OWL（网络本体语言）建立在描述逻辑之上，成为语义网的标准本体语言。

语义网将知识表示与基于XML的标记语言相结合。资源描述框架（RDF）提供了在互联网上定义基于知识的对象的基本能力。Web本体语言（OWL）添加了额外语义层，并与自动分类推理引擎集成。分类推理引擎可以在知识库中动态推断新的类关系，使得系统能够应对不断变化的互联网信息环境。

* 描述逻辑
* 网络本体语言
* 本体语言
* 知识图谱
* 框架 (人工智能)
* 概念图
* 语义网络
* 自动推理