解读 · 技术总览
符号 AI 技术大全:1956 年至今的每一种主要方法
一张表收录 130 多项技术、系统与标志性成果,从归结与 A* 到 Rete 算法、STRIPS、CDCL 与归纳逻辑编程:每一种由谁在何时提出、做什么、今天是否仍在使用。然后是它们所属的十大家族、这些家族如何从 1956 年的奠基思想演化而来,以及遇到什么问题该选哪一种。
符号 AI 技术是让程序用显式符号而非学到的权重进行推理的方法:逻辑与定理证明、搜索、规划、知识表示、基于规则的专家系统、约束与 SAT 求解、非单调推理、认知架构以及符号学习。每一种方法给出的答案,都能一步步追溯到明确陈述的事实与规则。
符号 AI 不是某一个算法,而是七十年间积累起来的一整套工具,其中大部分今天仍在日常使用,只是换了名字:SAT 求解器检查芯片设计,A* 在游戏里规划路径,基于 Rete 算法的规则引擎执行保险条款,证明助手检验数学证明,知识图谱支撑着搜索。本页就是这张地图。总表列出每一种主要技术的年份、提出者与所属家族,并链接到深入讲解它的页面。谱系图展示十大家族如何从 1960 年前已经出现的三种思想生长出来。选用指南把问题与技术对应起来;最后几节如实说明这些技术在哪里失效,以及它们能为失效安全模型提供什么。如果想先弄清符号 AI 本身的定义,请从什么是符号 AI?读起。
1. 什么算是一种符号 AI 技术
支柱页把符号 AI 定义为:把知识表示为显式、人可读的符号,并以逻辑、推理和搜索得出结论的方法。所谓一种技术,就是这种方法内部一项可复用的手段:一种表示法、一种推理过程、一种搜索策略,或一种从数据中学习符号结构的方式。本页采用一个可操作的判据。
按这个判据,一些从数据中学习的方法也算在内,例如决策树与归纳逻辑编程,因为它们学到的东西本身就是可读的符号结构;而结果是一组权重向量的方法不算,即使它们是用符号数据训练的。表中还收录了少数并非过程的结论,例如 Cook–Levin 定理与框架问题,因为它们划定了所有技术工作的边界。有几项技术比 AI 这个领域还古老:Boole 的逻辑(1847)、Frege 的一阶逻辑(1879)与 von Neumann 的极小化极大(1928),在程序开始使用它们时才成为 AI 技术。符号 AI 的历史按时间讲述这段故事;本页按方法组织;其中大多数技术的标准教科书讲解,见 Russell 与 Norvig [1]。
2. 总表:每一种主要技术
下表按时间排序。每项技术都链接到其家族页面中的对应小节,那里有它的工作原理、一个完整示例以及局限。年份是我们能够核实的首次发表或首个可运行系统的时间;若一项技术有两个重要日期(思想与命名,或思想与实用版本),则两者并列。今天仍在使用吗?是一个简短判断:是表示仍在常规生产或研究中使用;已成历史表示其思想延续了下来,但技术本身已很少运行;普通文字表示小众或仅限研究。
| 技术 | 年份 | 提出者 | 家族 | 做什么 | 今天仍在使用吗? |
|---|---|---|---|---|---|
| 命题逻辑 | 1847 | George Boole(代数形式) | 逻辑编程与定理证明 | 真假命题用与、或、非连接;SAT 的语言。 | 是:电路、SAT |
| 一阶逻辑 | 1879 | Gottlob Frege(《概念文字》) | 逻辑编程与定理证明 | 加入对象、关系以及“所有”和“存在”两个量词。 | 是:规约、证明器 |
| 深度优先搜索 | 19 世纪 | Charles Pierre Trémaux(走迷宫) | 搜索算法 | 沿一条路径走到底再回退;内存需求很小。 | 是:随处可见 |
| 极小化极大 | 1928 | John von Neumann;Claude Shannon 于 1950 年用于国际象棋 | 搜索算法 | 在双人博弈树中选择最坏结果最好的一步。 | 是:博弈引擎 |
| Herbrand 定理 | 1930 | Jacques Herbrand | 逻辑编程与定理证明 | 把一阶不可满足性归结为有限个基例构成的矛盾集合。 | 是:在证明器内部 |
| 产生式系统 | 1943;1972 | Emil Post(改写规则);Allen Newell、Herbert Simon(作为认知模型) | 专家系统 | 针对事实工作记忆触发的“如果–那么”规则。 | 是:规则引擎 |
| 广度优先搜索 | 1945;1959 | Konrad Zuse(1972 年才发表);Edward F. Moore | 搜索算法 | 逐层扩展状态;每步代价相同时给出最短路径。 | 是:随处可见 |
| 回溯搜索 | 1950 年代 | 由 D. H. Lehmer 命名 | 约束满足、SAT 与 SMT | 每次做一个选择来扩展部分解,走进死胡同就撤销上一个选择。 | 是:每个求解器内部 |
| 状态空间搜索 | 1956 | Allen Newell、Cliff Shaw、Herbert Simon(逻辑理论家、GPS) | 搜索算法 | 把问题表示为状态、算子与目标测试;求解就是找一条路径。 | 是:共同框架 |
| α–β 剪枝 | 1956 | John McCarthy 等人各自独立提出;Donald Knuth、Ronald Moore 于 1975 年分析 | 搜索算法 | 跳过不会改变极小化极大结果的博弈树分支;深蓝(1997)所用的搜索。 | 是:国际象棋引擎 |
| 手段–目的分析 | 1957–59 | Newell、Shaw、Simon(通用问题求解器) | 搜索算法 | 选用最能缩小当前状态与目标之差的算子。 | 已成历史;思想留在规划器中 |
| 程序综合 | 1957 | Alonzo Church(“Church 问题”) | 形式化验证与程序综合 | 从逻辑规约自动构造程序或电路的问题。 | 活跃的研究方向 |
| 常识推理 | 1958–59 | John McCarthy(《具有常识的程序》) | 非单调推理 | 用逻辑写下知识,得出人们习以为常的日常结论的研究纲领。 | 仍是开放的研究目标 |
| 一致代价搜索 | 1959 | Edsger Dijkstra(最短路径) | 搜索算法 | 优先扩展代价最小的路径;步代价非负时最优。 | 是:路径规划 |
| DPLL | 1962 | Martin Davis、George Logemann、Donald Loveland(承自 Davis–Putnam,1960) | 约束满足、SAT 与 SMT | 通过选变量、传播单子句与回溯来判定 SAT。 | 是:CDCL 的核心 |
| 情境演算 | 1963;1969 | John McCarthy;1969 年与 Patrick Hayes 合作 | AI 规划 | 动作的逻辑:每个事实在某个动作序列产生的情境中成立。 | 研究 |
| 归结 | 1965 | J. Alan Robinson | 逻辑编程与定理证明 | 单一推理规则,对一阶逻辑反驳完备:从被否定的目标推出矛盾。 | 是:Vampire、E、Prolog |
| 合一 | 1965 | J. Alan Robinson | 逻辑编程与定理证明 | 求使两个项相同的最一般代换。 | 是:Prolog、类型推断 |
| DENDRAL | 1965 | Edward Feigenbaum、Bruce Buchanan、Joshua Lederberg、Carl Djerassi(斯坦福) | 专家系统 | 根据质谱数据推断分子结构;通常被称为第一个专家系统。 | 已成历史 |
| A* 搜索 | 1968 | Peter Hart、Nils Nilsson、Bertram Raphael(SRI) | 搜索算法 | 按 f = g + h 做最佳优先搜索;h 从不高估时返回最优路径。 | 是:游戏、机器人、地图 |
| 语义网络 | 1968 | M. Ross Quillian | 知识表示 | 概念为节点、关系为带标签的边,并沿“是一种”边继承。 | 是:以知识图谱的形式 |
| Hoare 逻辑 | 1969 | C. A. R. Hoare | 形式化验证与程序综合 | 三元组 {P} C {Q}:证明程序把满足 P 的状态变成满足 Q 的状态。 | 是:程序验证器 |
| 框架问题 | 1969 | John McCarthy、Patrick Hayes | 非单调推理 | 如何说明一个动作不改变什么,而不必逐条列出所有非效果。 | 是问题而非工具,仍在研究 |
| 概念依存 | 1969 | Roger Schank | 知识表示 | 用少数原语动作表示句子的意义,与措辞无关。 | 已成历史 |
| AQ | 1969 | Ryszard Michalski | 符号机器学习 | 归纳出覆盖正例、排除反例的“如果–那么”规则。 | 基本已成历史 |
| Knuth–Bendix 完备化 | 1970 | Donald Knuth、Peter Bendix | 形式化验证与程序综合 | (成功时)把等式组变成合流的重写系统,从而用重写判定相等。 | 是:等式证明器 |
| 项重写 | 1970 年代 | 一个领域而非一篇论文;围绕 Knuth–Bendix 发展 | 形式化验证与程序综合 | 用有向等式不断替换子项,直到没有规则可用。 | 是:编译器、计算机代数 |
| 前向链接 | 1970 年代 | 产生式系统传统 | 专家系统 | 数据驱动:触发所有条件成立的规则,直到推不出新东西。 | 是:规则引擎、Datalog |
| 后向链接 | 1970 年代 | MYCIN 与 Prolog 传统 | 专家系统 | 目标驱动:从问题倒推到事实,把规则条件变成子目标。 | 是:Prolog、规则引擎 |
| Hearsay-II | 1970 年代 | Lee Erman、Frederick Hayes-Roth、Victor Lesser、Raj Reddy(卡内基梅隆) | 认知架构 | 语音理解系统,多个知识源通过黑板协作。 | 已成历史 |
| 黑板系统 | 1970 年代 | Hearsay-II 团队(卡内基梅隆) | 认知架构 | 相互独立的专家模块在共享数据结构上发布并修订部分假设。 | 小众 |
| STRIPS | 1971 | Richard Fikes、Nils Nilsson(SRI) | AI 规划 | 动作 = 前提条件 + 添加表 + 删除表;PDDL 背后的表示法。 | 是:通过 PDDL |
| Cook–Levin 定理 | 1971 | Stephen Cook;Leonid Levin 独立证明 | 约束满足、SAT 与 SMT | 证明 SAT 是 NP 完全的:没有已知算法能快速解出所有实例。 | 是定理:划定界限 |
| Prolog | 1972 | Alain Colmerauer、Philippe Roussel,基于 Robert Kowalski 的工作 | 逻辑编程与定理证明 | 程序就是 Horn 子句;运行程序就是一次归结证明搜索。 | 是:SWI-Prolog 等 |
| MYCIN | 1970 年代初 | Edward Shortliffe,与 Bruce Buchanan、Stanley Cohen(斯坦福) | 专家系统 | 约 600 条后向链接规则,用于识别细菌并推荐抗生素。 | 已成历史;从未用于临床 |
| Sussman 异常 | 1970 年代初 | Gerald Sussman | AI 规划 | 一个积木世界目标,使逐个解决子目标的规划器失败。 | 测试用例,仍在教学 |
| 证明助手 | 1972 年起 | LCF(Robin Milner);Isabelle(Lawrence Paulson,1986);Coq,今名 Rocq(1989);HOL(Michael Gordon);Lean(Leonardo de Moura,2013) | 逻辑编程与定理证明 | 由人引导证明;一个小而可信的内核检查每一步。 | 是:Lean、Rocq、Isabelle |
| SLD 归结 | 1974 | Robert Kowalski;由 Maarten van Emden 命名 | 逻辑编程与定理证明 | 针对确定子句的目标导向线性归结;Prolog 内部的过程。 | 是:在 Prolog 内部 |
| 框架 | 1974 | Marvin Minsky | 知识表示 | 刻板情境的记录结构,含槽、默认值与附加过程。 | 是:通过对象与本体 |
| 约束满足问题 | 1974 | Ugo Montanari(约束网络) | 约束满足、SAT 与 SMT | 变量、值域与约束;解就是满足全部约束的赋值。 | 是:排程、配置 |
| 偏序规划 | 1975;1977 | Earl Sacerdoti(NOAH);Austin Tate(Nonlin) | AI 规划 | 只在必要处给步骤排序,用添加次序约束来消解冲突。 | 已大体被取代 |
| HTN 规划 | 1975–77 | Sacerdoti(NOAH)、Tate(Nonlin);后有 SHOP(Dana Nau 等,1999) | AI 规划 | 用已知方法把高层任务分解为子任务,直到原语动作。 | 是:游戏、机器人 |
| 确定性因子 | 1975 | Edward Shortliffe、Bruce Buchanan(MYCIN) | 专家系统 | 附在规则上的 −1 到 1 之间的数,按固定公式合成。 | 已被概率方法取代 |
| 最弱前置条件 | 1975 | Edsger Dijkstra | 形式化验证与程序综合 | 计算保证程序到达目标状态的最弱条件。 | 是:在验证器内部 |
| 概念图 | 1976 | John Sowa | 知识表示 | 一种图形化的逻辑记法,源自 Peirce 的存在图。 | 小众 |
| 主观贝叶斯推理 | 1976 | Richard Duda、Peter Hart、Nils Nilsson(PROSPECTOR) | 专家系统 | 用专家为每条规则给出的似然比更新假设的几率。 | 已被贝叶斯网络取代 |
| 脚本 | 1977 | Roger Schank、Robert Abelson | 知识表示 | 刻板的事件序列(如去餐馆),用来补全没有说出的事实。 | 已成历史 |
| 抽象解释 | 1977 | Patrick Cousot、Radhia Cousot | 形式化验证与程序综合 | 在可靠的抽象值上“运行”程序,以证明对所有输入都成立的性质。 | 是:静态分析器 |
| 时序逻辑 | 1977;1981 | Amir Pnueli(LTL);Edmund Clarke、E. Allen Emerson(CTL) | 形式化验证与程序综合 | 关于程序执行中“总是”“最终”“直到”的逻辑。 | 是:规约 |
| 弧相容 | 1977 | Alan Mackworth(AC-3),承自 David Waltz 与 Ugo Montanari | 约束满足、SAT 与 SMT | 删去在某条约束上找不到支撑值的取值。 | 是:约束求解器内部 |
| 约束传播 | 1970 年代 | David Waltz、Ugo Montanari、Alan Mackworth | 约束满足、SAT 与 SMT | 反复做局部相容检查,直到值域不再缩小。 | 是:约束编程、SAT、ASP |
| 版本空间 | 1977 | Tom Mitchell | 符号机器学习 | 保留与样例一致的最一般假设与最特殊假设。 | 已成历史;仍在教学 |
| 知识工程 | 1977 | Edward Feigenbaum | 专家系统 | 从专家那里获取知识并编码为规则的实践。 | 是:规则、本体 |
| 知识获取瓶颈 | 1977 | Edward Feigenbaum | 专家系统 | 发现:从专家那里获取知识是专家系统的决定性成本。 | 仍是核心成本 |
| Datalog | 1977 | Hervé Gallaire、Jack Minker(逻辑与数据库);由 David Maier 命名 | 逻辑编程与定理证明 | 无函数符号的规则,在数据库上自底向上求值;求值总会终止。 | 是:程序分析、数据库 |
| 失败即否定 | 1978 | Keith Clark | 非单调推理 | 把“无法证明”当作“假”;Prolog 与 Datalog 使用的否定。 | 是:Prolog、ASP |
| PROSPECTOR | 1970 年代末 | Richard Duda、Peter Hart 等(SRI) | 专家系统 | 矿产勘探顾问;1982 年的论文报道它识别出一处隐藏矿床。 | 已成历史 |
| 封闭世界假设 | 1978 | Raymond Reiter | 非单调推理 | 凡是推不出来的,都视为假。 | 是:每一次数据库查询 |
| EMYCIN | 1970 年代末 | William van Melle(斯坦福) | 专家系统 | 去掉医学知识的 MYCIN:早期的专家系统外壳。 | 已成历史 |
| 真值维护系统 | 1979 | Jon Doyle | 非单调推理 | 记录每条信念为何成立,支撑消失时即可撤回。 | 小众 |
| 缺省逻辑 | 1980 | Raymond Reiter | 非单调推理 | 除非遇到反例否则适用的规则:鸟会飞,除非另有所知。 | 研究;在 ASP 中延续 |
| 限定 | 1980 | John McCarthy | 非单调推理 | 假定异常情形在已知事实允许的范围内尽可能少。 | 研究 |
| XCON | 1980 | John McDermott(卡内基梅隆)为 DEC 开发 | 专家系统 | 用 OPS5 规则配置 VAX 计算机订单;高峰时约 2,500 条规则。 | 已成历史 |
| 演绎程序综合 | 1980 | Zohar Manna、Richard Waldinger | 形式化验证与程序综合 | 从“所需输出存在”的构造性证明中提取程序。 | 研究;思想见于证明助手 |
| 非单调逻辑 | 1980 | Drew McDermott、Jon Doyle | 非单调推理 | 加入“是一致的”模态算子,使缺省可以写进逻辑内部。 | 研究 |
| SPIN | 1980;1991 年起免费 | Gerard Holzmann(贝尔实验室) | 形式化验证与程序综合 | 面向并发软件的显式状态模型检测器,性质用 LTL 书写。 | 是:协议 |
| OPS5 | 1981 | Charles Forgy(卡内基梅隆) | 专家系统 | 使用 Rete 匹配的产生式规则语言;XCON 用它写成。 | 已成历史;后继为 CLIPS |
| 模型检测 | 1981–82 | Edmund Clarke、E. Allen Emerson;Jean-Pierre Queille、Joseph Sifakis | 形式化验证与程序综合 | 逐一检查有限模型的每个状态是否满足时序公式,失败时给出反例;工具如 SPIN。 | 是:芯片、协议 |
| Rete 算法 | 1982 | Charles Forgy | 专家系统 | 把规则条件编译成缓存部分匹配的网络,只重新匹配发生变化的部分。 | 是:Drools、CLIPS |
| 基于案例的推理 | 1980 年代初;1994 | Roger Schank、Janet Kolodner;四步循环由 Agnar Aamodt、Enric Plaza 提出 | 符号机器学习 | 检索、复用、修正并保存相似的旧案例,以解决新问题。 | 小众 |
| 结构映射 | 1983 | Dedre Gentner | 符号机器学习 | 把类比建模为已知领域与新领域之间关系结构的对齐。 | 研究:认知科学 |
| 局部搜索 | 1983 | 爬山法;模拟退火由 Scott Kirkpatrick、C. Daniel Gelatt、Mario Vecchi 提出 | 搜索算法 | 只保留一个当前状态并移向更优的邻居,有时接受更差的邻居以跳出局部最优。 | 是:布局、排课 |
| Cyc | 1984 | Douglas Lenat(MCC) | 知识表示 | 人工构建的常识知识库,配有推理引擎。 | 小众 |
| IDA* | 1985 | Richard Korf | 搜索算法 | 以 f 值做迭代加深的 A*;最优,且内存与深度成线性。 | 是:内存受限的搜索 |
| 自认知逻辑 | 1985 | Robert C. Moore | 非单调推理 | 让推理者从“自己知道自己不知道什么”得出结论。 | 研究 |
| KL-ONE | 1970 年代末;1985 | Ronald Brachman;与 James Schmolze 的综述(1985) | 知识表示 | 带定义概念的结构化继承网络;描述逻辑的前身。 | 已成历史 |
| 描述逻辑 | 1980 年代 | KL-ONE 的后继(1980 年代定名) | 知识表示 | 用于类层级的一阶逻辑可判定片段;OWL 以之为基础。 | 是:OWL 推理机 |
| CLIPS | 1985 | NASA 约翰逊航天中心 | 专家系统 | 用 C 语言写成、使用 Rete 匹配的产生式规则外壳。 | 是:仍在维护 |
| 信念修正 | 1985 | Carlos Alchourrón、Peter Gärdenfors、David Makinson(AGM) | 非单调推理 | 关于在一致的信念集中合理地增加、删除与修正信念的公设。 | 研究 |
| BB1 | 1985 | Barbara Hayes-Roth | 认知架构 | 为自身的控制计划另设一块黑板的黑板系统。 | 已成历史 |
| WordNet | 1985 | George A. Miller 等(普林斯顿) | 知识表示 | 把英语单词分成同义词集,并以“是一种”“是部分”等关系相连的词汇数据库。 | 是:自然语言处理 |
| 迭代加深 | 1985 | 已用于国际象棋程序;由 Richard Korf 分析 | 搜索算法 | 依次以 0、1、2……为深度上限做受限搜索;在穷举树搜索中渐近最优。 | 是:博弈引擎 |
| 基于解释的学习 | 1986 | Tom Mitchell、Richard Keller、Smadar Kedar-Cabelli;Gerald DeJong、Raymond Mooney | 符号机器学习 | 证明一个样例为何属于目标概念并保留证明所需条件,从单例泛化。 | 小众 |
| ID3 | 1986 | J. Ross Quinlan | 符号机器学习 | 按信息增益最大的属性分裂,生长决策树。 | 是:以决策树的形式 |
| ATMS | 1986 | Johan de Kleer | 非单调推理 | 基于假设的 TMS:记录每条信念成立所需的最小假设集。 | 小众:诊断 |
| 事件演算 | 1986 | Robert Kowalski、Marek Sergot | 非单调推理 | 关于事件如何使性质开始或停止成立的时间逻辑。 | 研究 |
| 组块化 | 1986 | John Laird、Paul Rosenbloom、Allen Newell | 认知架构 | Soar 的学习方式:解决僵局的结果被编译成新规则。 | 是:在 Soar 中 |
| 耶鲁射击问题 | 1986–87 | Steve Hanks、Drew McDermott | 非单调推理 | 表明朴素地“最小化变化”会选出错误的时间演变故事。 | 测试用例,仍在教学 |
| Soar | 1987 | John Laird、Allen Newell、Paul Rosenbloom | 认知架构 | 把一切行为建模为问题空间中的搜索,规则存于长期记忆。 | 研究、仿真 |
| 约束逻辑编程 | 1987 | Joxan Jaffar、Jean-Louis Lassez | 约束满足、SAT 与 SMT | 在逻辑编程中用某个域上的约束求解取代合一。 | 是:在 Prolog 系统中 |
| TREAT | 1987 | Daniel Miranker | 专家系统 | 按需重新计算连接、而不存储部分匹配的规则匹配算法。 | 思想见于惰性匹配器 |
| 回答集编程 | 1988;1999 | Michael Gelfond、Vladimir Lifschitz(稳定模型);1999 年定名 | 逻辑编程与定理证明 | 把问题写成规则,其稳定模型恰好就是问题的解。 | 是:配置、排程 |
| 自动定理证明器 | 1980 年代末起 | Otter(William McCune,阿贡国家实验室);Vampire(Andrei Voronkov,曼彻斯特);E(Stephan Schulz) | 逻辑编程与定理证明 | 无需人工引导地搜索一阶逻辑证明。 | 是:Vampire、E |
| CN2 | 1989 | Peter Clark、Tim Niblett | 符号机器学习 | 学习能容忍噪声数据的有序“如果–那么”规则列表。 | 小众 |
| FOIL | 1990 | J. Ross Quinlan | 符号机器学习 | 以信息增益为引导,贪心地学习一阶 Horn 子句。 | 小众 |
| 认知导师 | 1980 年代–1995 | John R. Anderson、Albert Corbett、Kenneth Koedinger 等 | 认知架构 | 按技能的产生式规则模型追踪学生每一步的辅导系统。 | 是:数学辅导 |
| 符号模型检测 | 1990 | Jerry Burch、Edmund Clarke、Kenneth McMillan、David Dill、L. J. Hwang,基于 Randal Bryant 的 BDD(1986) | 形式化验证与程序综合 | 用二元决策图表示状态集合,可检查超过 10²⁰ 个状态的系统。 | 是:硬件 |
| 偏好模型 | 1990 | Sarit Kraus、Daniel Lehmann、Menachem Magidor | 非单调推理 | 任何合理的非单调推论关系都应满足的公理(System P)。 | 研究 |
| GSAT 与最小冲突 | 1990;1992 | Steven Minton 等(最小冲突);Bart Selman、Hector Levesque、David Mitchell(GSAT) | 约束满足、SAT 与 SMT | 每次修改一个变量来减少违反的约束;速度快,但无法证明不可满足。 | 是:大规模排程 |
| 归纳逻辑编程 | 1991 | Stephen Muggleton(命名),承自 Gordon Plotkin 与 Ehud Shapiro | 符号机器学习 | 从样例加背景知识中学习逻辑程序。 | 研究、科学发现 |
| 遗传编程 | 1992 | John Koza;更早有 Nichael Cramer 的树形表示工作 | 符号机器学习 | 通过选择、交叉与变异来进化程序树。 | 小众 |
| SATPlan | 1992 | Henry Kautz、Bart Selman | AI 规划 | 把固定步数的规划问题编码为 SAT 公式。 | 研究;思想仍在使用 |
| 符号回归 | 1992;2009 | John Koza;Michael Schmidt、Hod Lipson | 符号机器学习 | 搜索拟合数据的公式;输出是一个方程。 | 是:科学研究、PySR |
| ACT-R | 1993 | John R. Anderson(源自 1976 年的 ACT 与 1983 年的 ACT*) | 认知架构 | 产生式规则加陈述性组块,其激活值可预测人的反应时与错误。 | 研究:认知建模 |
| C4.5 | 1993 | J. Ross Quinlan | 符号机器学习 | ID3 的后继:支持数值属性、缺失值与剪枝。 | 是:以决策树的形式 |
| 本体 | 1993 | Tom Gruber(标准定义) | 知识表示 | 共享、形式化的类、关系与约束词汇。 | 是:SNOMED CT、基因本体 |
| Graphplan | 1995 | Avrim Blum、Merrick Furst | AI 规划 | 构建带互斥关系的分层规划图,再从后向前搜索。 | 思想留在启发式中 |
| Progol | 1995 | Stephen Muggleton | 符号机器学习 | 以逆蕴涵做 ILP,从最特殊子句出发搜索。 | 小众 |
| 抽象论辩 | 1995 | Phan Minh Dung | 非单调推理 | 论证加攻击关系;被接受的论证集是能为自己辩护的集合。 | 研究 |
| CDCL | 1996;2001 | João Marques-Silva、Karem Sakallah(GRASP);Matthew Moskewicz 等(Chaff) | 约束满足、SAT 与 SMT | 在 DPLL 上加入从每次冲突学习新子句与非时序回跳。 | 是:所有现代 SAT 求解器 |
| 深蓝 | 1997 | Murray Campbell、A. Joseph Hoane Jr.、许峰雄(IBM) | 搜索算法 | 配有定制国际象棋芯片的大规模并行 α–β 搜索;击败了 Garry Kasparov。 | 已成历史 |
| EPIC | 1997 | David Kieras、David Meyer(密歇根大学) | 认知架构 | 规则可并行触发、并配有精细感知与运动时序的认知架构。 | 研究:人因工程 |
| PDDL | 1998 | Drew McDermott 等(为国际规划竞赛而设计) | AI 规划 | 规划领域与规划问题的标准语言。 | 是:事实标准 |
| 国际规划竞赛 | 1998 | Drew McDermott 与规划学界 | AI 规划 | 在共享 PDDL 基准上对规划器进行定期的正面比较。 | 是:定期举办 |
| 启发式搜索规划 | 1998–2001 | Blai Bonet、Héctor Geffner(HSP);Jörg Hoffmann、Bernhard Nebel(FF) | AI 规划 | 由忽略删除表的松弛问题计算出启发值,引导前向搜索。 | 是:主流方法 |
| RDF | 1999 | W3C | 知识表示 | 以网络标识符命名的主–谓–宾三元组事实。 | 是:关联数据、Wikidata |
| 有界模型检测 | 1999 | Armin Biere、Alessandro Cimatti、Edmund Clarke、Yunshan Zhu | 形式化验证与程序综合 | 把系统展开 k 步,交给 SAT 求解器寻找该长度内的反例。 | 是:CBMC、硬件 |
| SMT | 2000 年代 | 源于 Nelson–Oppen(1979);CVC(斯坦福);Z3(Leonardo de Moura、Nikolaj Bjørner,2008) | 约束满足、SAT 与 SMT | SAT 加上算术、数组与位向量的判定过程。 | 是:验证、测试 |
| 基于 SMT 的验证 | 2000 年代 | 众多工具,如 Dafny(K. Rustan M. Leino,微软研究院) | 形式化验证与程序综合 | 把程序的正确性条件转成 SMT 查询并自动证明。 | 是:工业验证工具 |
| Aleph | 2001 | Ashwin Srinivasan | 符号机器学习 | Progol 传统中广泛使用的 ILP 系统。 | 研究 |
| 分离逻辑 | 1999–2002 | John C. Reynolds、Peter O’Hearn、Samin Ishtiaq、Hongseok Yang | 形式化验证与程序综合 | 把 Hoare 逻辑扩展到指针程序:对堆的一部分的证明可以忽略其余部分。 | 是:静态分析器 |
| OWL | 2004 | W3C | 知识表示 | 基于描述逻辑的网络本体语言;2009 年推出 OWL 2。 | 是:本体 |
| Drools | 2005 | Bob McWhirter、Mark Proctor(JBoss,后属 Red Hat) | 专家系统 | 采用改进版 Rete 匹配的 Java 业务规则引擎。 | 是:业务规则 |
| Fast Downward | 2006 | Malte Helmert | AI 规划 | 在 PDDL 的多值变量翻译上做启发式搜索的规划器。 | 是:研究界的标准 |
| 蒙特卡洛树搜索 | 2006 | Rémi Coulom(命名);Levente Kocsis、Csaba Szepesvári(UCT) | 搜索算法 | 以随机模拟引导博弈树生长;AlphaGo(2016)用神经网络来引导它。 | 是:博弈、规划 |
| CompCert | 2005–06 | Xavier Leroy(INRIA) | 形式化验证与程序综合 | 带有 Coq 机器检验证明(编译保持语义)的优化 C 编译器。 | 是:安全关键代码 |
| seL4 | 2009 | Gerwin Klein 等(NICTA) | 形式化验证与程序综合 | 其 C 代码在 Isabelle/HOL 中被证明实现了规约的微内核。 | 是 |
| 归纳程序综合 | 2011 | Sumit Gulwani(FlashFill) | 形式化验证与程序综合 | 从输入–输出样例推断程序。 | 是:Excel 快速填充 |
| 知识图谱 | 2012 | Google 知识图谱;Wikidata | 知识表示 | 程序可以查询与校验的大规模实体与类型化关系图。 | 是:搜索、数据集成 |
| 语法引导综合 | 2013 | Rajeev Alur 等;承自 Armando Solar-Lezama 的 Sketch(2006) | 形式化验证与程序综合 | 在用户给定的语法中搜索满足逻辑规约的程序。 | 研究 |
| AlphaGo | 2016 | DeepMind(David Silver 等) | 搜索算法 | 由策略网络与价值网络引导的蒙特卡洛树搜索;以 4–1 击败李世石。 | 混合系统的里程碑 |
| 认知通用模型 | 2017 | John Laird、Christian Lebiere、Paul Rosenbloom | 认知架构 | ACT-R、Soar 与 Sigma 共同收敛出的结构:工作记忆、程序性记忆与陈述性记忆。 | 研究 |
3. 各家族如何从 1956 年演化而来
到 1960 年,三种思想已经摆在桌面上。以逻辑作为表示:McCarthy 的“建议接受者”设想(1958)主张,程序应当把所知道的东西存成形式逻辑语句,并依据能推出的结论行动。启发式搜索:逻辑理论家(1956)借助经验法则从目标倒推,证明了定理;GPS 把这一思想推广为手段–目的分析。人类思维的模型:Newell 与 Simon 把 GPS 当作人类如何解决问题的理论来构建,这条路线后来引出了产生式规则、语义记忆,并最终引出认知架构。本页的每个家族都源自其中一种或几种思想。
图 1. 符号 AI 技术的谱系。家族编号与 §4 一致。演化是共享的:多数家族源自不止一种奠基思想,今天在用的多数系统也依赖不止一个家族。
这种演化并不是一棵整齐的树。规划把逻辑与搜索结合在一起;约束求解与 SAT 把逻辑问题变成搜索问题,然后让搜索变快;符号学习从逻辑借来假设语言,从搜索借来策略。今天真正在运转的系统往往同时依赖好几个家族:CompCert 是在证明助手中被证明正确的编译器;现代规划器是在逻辑模型上做启发式搜索;而 AlphaGeometry 这样的神经符号系统,则让提出方案的神经网络与负责推演的符号引擎配对工作。
4. 十大家族
下面每个家族都有自己的页面,逐一讲解其中每项技术,并附有完整示例、时间线与参考文献。这里的概述说明该家族解决什么问题、点出它的标志性技术,以及它今天的状况。
4.1 逻辑编程与定理证明
这是最古老的家族,也是其他家族借用最多的一个。它的原材料是命题逻辑与一阶逻辑,被当作工作语言而不是哲学来使用。决定性的一步是 J. Alan Robinson 的归结原理与合一算法(1965):一条对一阶逻辑反驳完备的推理规则,加上一种让它可以机械执行的匹配操作 [2]。Herbrand 定理(1930)早已表明,这样的搜索在原则上能找到每一个证明。
从归结长出了两条路线。逻辑编程把归结限制在 Horn 子句上,使得运行一个程序就是一次证明搜索:Kowalski 的 SLD 归结 [3]、Prolog(1972)[4]、面向数据库的 Datalog,以及在 Gelfond 与 Lifschitz 提出稳定模型(1988)[5] 之后、用于困难组合问题的回答集编程。定理证明则保留完整的逻辑:Otter、Vampire、E 等自动证明器独立搜索证明;而 LCF 传统中的交互式证明助手,如 Isabelle、HOL、Rocq(原名 Coq)与 Lean,由人来引导,由一个小内核检查每一步。深入了解逻辑编程与定理证明 →
4.2 形式化验证与程序综合
验证要回答的是:一个程序或电路是否对所有输入都符合其规约,而不只是对测试过的那些。Hoare 逻辑(1969)逐条语句地证明程序的性质 [6]。模型检测由 Clarke 与 Emerson、Queille 与 Sifakis 在 1981–82 年各自独立提出,它针对时序逻辑公式遍历有限模型的每一个状态,性质不成立时给出反例 [7] [8]。抽象解释(Cousot 夫妇,1977)在程序取值的可靠近似上计算,从而证明整类错误不会发生 [9]。项重写与 Knuth–Bendix 完备化(1970)提供了底层的等式推理 [10]。
综合则方向相反:从规约得到程序。Manna 与 Waldinger 从构造性证明中提取程序 [11];归纳综合根据样例推断程序,Sumit Gulwani 的 FlashFill(2011)让它走进了主流 [12]。今天最重要的成果是经过验证的系统:在 Coq 中被证明正确的 C 编译器 CompCert [13],以及在 Isabelle/HOL 中被证明正确的微内核 seL4 [14]。两者都依赖相邻家族的证明器与 SMT 求解器。深入了解形式化验证与程序综合 →
4.3 搜索算法
几乎每一种符号技术,归根结底都要在状态空间里搜索。无信息的策略,即广度优先、深度优先与一致代价搜索,保证覆盖;启发式搜索则加入对剩余代价的估计。A*(Hart、Nilsson 与 Raphael,1968)总是扩展估计总代价最低的节点 [15]:
其中 g(n) 是已花费的代价,h(n) 是估计值。只要 h 从不高估真实的剩余代价 h*,A* 扩展到的第一个目标就是最优的。IDA*(Korf,1985)以与深度成线性的内存给出同样的保证 [16]。博弈加入了对手:极小化极大选择最坏情况最好的一步;α–β 剪枝自 1956 年起被多位研究者各自独立发现,并由 Knuth 与 Moore 在 1975 年加以分析 [17],它跳过不可能改变结果的分支,是 1997 年深蓝内部的搜索方法。蒙特卡洛树搜索(Coulom;Kocsis 与 Szepesvári,2006)用随机模拟取代了手写的评估函数 [18] [19],AlphaGo(2016)则用神经网络引导它,使其成为混合系统 [20]。深入了解搜索算法 →
4.4 AI 规划
规划是一种搜索:状态是对世界的逻辑描述,走法是带有前提条件与效果的动作。McCarthy 的情境演算(1963,1969 年与 Hayes 进一步发展)给出了逻辑上的刻画 [21]。STRIPS(Fikes 与 Nilsson,1971)给出了实用的刻画:每个动作有前提表、添加表与删除表,未被删除的一切都假定保持为真,从而绕开了框架问题的大部分 [22]。
后来的规划器改变了搜索的组织方式。偏序规划只在必要时才给步骤定序;HTN 规划用已知的“配方”分解任务;Graphplan(Blum 与 Furst,1995)与 SATPlan(Kautz 与 Selman,1992)把规划编译成分层图或 SAT 公式 [23] [24]。PDDL(1998)为国际规划竞赛统一了输入语言 [25],而 Fast Downward(Helmert,2006)[26] 这类启发式搜索规划器是今天的标准。深入了解 AI 规划 →
4.5 约束满足、SAT 与 SMT
许多问题最好用约束来表述:一组变量,每个变量有一个可能取值的值域,以及所选取值必须共同满足的约束。
Montanari(1974)形式化了约束网络 [27];回溯搜索、弧相容(Mackworth 的 AC-3,1977)[28] 与约束传播负责剪枝;约束逻辑编程(Jaffar 与 Lassez,1987)把约束求解放进了 Prolog [29]。命题可满足性(SAT)是变量只取真假的特例。Cook(1971)证明它是 NP 完全的 [30];DPLL(1962)给出了基本算法 [31];冲突驱动子句学习(GRASP,1996;Chaff,2001)让它能处理规模很大的工业公式 [32] [33]。Z3(2008)[34] 与 cvc5 等 SMT 求解器又加入了算术、数组与位向量理论。它们合起来,大概是工业界用得最多的符号 AI:软硬件验证、排程、测试生成与软件包依赖求解。深入了解约束满足、SAT 与 SMT →
4.6 知识表示
知识表示在任何推理发生之前,就决定了系统能说什么。语义网络(Quillian,1968)把概念放进带“是一种”边的图中 [35];框架(Minsky,1974)加入了槽与默认值 [36];概念依存与脚本(Schank;Schank 与 Abelson,1977)表示句子的意义与刻板的事件序列 [37];概念图(Sowa,1976)为网络赋予了逻辑解读 [38]。
一种语言能表达多少、推理能有多快,这两者之间的权衡后来自成一个领域。KL-ONE [39] 引出了描述逻辑,即一阶逻辑的可判定片段,它成为 OWL 的基础,OWL 自 2004 年起是 W3C 标准。RDF(1999)把事实统一为三元组;Gruber 在 1993 年把本体定义为“对概念化的显式规约”,这成了标准定义 [40];Cyc(1984)则尝试手工编码常识。知识图谱,从 2012 年的 Google 知识图谱到 Wikidata,是今天大规模的语义网络,通常只做较轻的推理。深入了解知识表示 →
4.7 非单调推理
经典逻辑是单调的:增加前提永远不会让结论消失。
常识却不是这样。“Tweety 是一只鸟”暗示 Tweety 会飞,直到你得知 Tweety 是企鹅。1980 年,Reiter 的缺省逻辑与 McCarthy 的限定给出了两种形式化回答 [41] [42];Moore 的自认知逻辑(1985)推理一个主体知道自己不知道什么 [43];Clark 的失败即否定(1978)则是在 Prolog 与 Datalog 中实际运行的版本 [44]。
真值维护系统(Doyle,1979;de Kleer 的 ATMS,1986)负责记账:记录每条信念为何成立,以便其支撑消失时将其撤回 [45] [46]。框架问题(McCarthy 与 Hayes,1969)与事件演算(Kowalski 与 Sergot,1986)处理随时间发生的变化 [47]。这方面的研究如今大多以回答集编程的形式进行。深入了解非单调推理 →
4.8 专家系统
专家系统拿来产生式规则(“如果条件,那么动作”,源自 Post,后经 Newell 与 Simon 发展),在其中填入专家的知识。DENDRAL(始于 1965)推断分子结构;MYCIN(1970 年代初)用后向链接识别引起感染的细菌,并用确定性因子权衡证据 [48];PROSPECTOR(SRI,1970 年代末)为矿产勘探提供建议,1982 年的论文报道它识别出一处隐藏矿床 [49];XCON,又名 R1(1980),为 DEC 配置计算机订单 [50]。EMYCIN、OPS5 与 CLIPS 等外壳把推理引擎与知识分离开来。
工程上的突破是 Forgy 的 Rete 算法(1982):它缓存部分匹配,使工作记忆的每次变化只需重新匹配受影响的部分 [51]。局限则是 Feigenbaum 在 1977 年指出的知识获取瓶颈 [52]:规则必须靠人工从专家那里挖出来,并且要无限期地维护。Drools、CLIPS 等源自 Rete 的引擎至今仍在运行业务规则、资格审查与合规逻辑。深入了解专家系统 →
4.9 认知架构
认知架构是一组固定的机制,目标是为整个心智建模,而不是解决某一项任务。Hearsay-II 是 1970 年代在卡内基梅隆大学构建的语音理解系统,它引入了“黑板”:相互独立的知识源在一个共享结构上发布并修订假设 [53]。Soar(Laird、Newell 与 Rosenbloom,1987)把一切行为建模为问题空间中的搜索 [54],并通过组块化学习:每当它解决一个僵局,就把结果编译成一条新规则 [55]。
ACT-R(John R. Anderson;1993 年的 ACT-R 源自 1976 年的 ACT 理论)把产生式规则与陈述性记忆组块结合起来,组块的激活值可以预测人的反应时间与错误 [56]。这些系统今天主要用于认知科学、人因建模与仿真,而不是商业 AI 产品。深入了解认知架构 →
4.10 符号机器学习
符号机器学习学到的模型本身就是符号的:规则、树、逻辑程序、公式。Mitchell 的版本空间(1977)把学习看作在假设空间中的搜索 [57];Quinlan 的 ID3(1986)与 C4.5(1993)生长决策树 [58];AQ(Michalski,1969)与 CN2(Clark 与 Niblett,1989)归纳规则。基于解释的学习(1986)借助领域知识解释单个样例,从而由此泛化 [59]。
归纳逻辑编程(Muggleton,1991;代表系统有 FOIL、Progol 与 Aleph)从样例加背景知识中学习 Prolog 子句 [60]。基于案例的推理通过 Aamodt 与 Plaza 的“检索–复用–修正–保存”循环复用旧案例 [61];结构映射(Gentner,1983)为类比建模 [62]。遗传编程(Koza,1992)与符号回归在程序与公式空间中搜索 [63] [64]。这些学习器的产物可以被阅读和检验;代价是它们难以处理原始感知数据以及嘈杂的高维数据。深入了解符号机器学习 →
5. 什么问题用什么技术
这是一个起点,而不是规则手册。真实的系统往往组合使用好几行;而那些哪一行都不太合适的问题,例如识别图像中的物体,通常交给机器学习,再由某种符号技术检查结果。
| 问题 | 选用 | 理由 |
|---|---|---|
| 有良好距离估计的最短路线或路径 | A*、IDA* | 启发式可采纳时最优;内存紧张时用 IDA*。 |
| 有良好评估函数的双人博弈 | α–β 剪枝 | 剪枝有证明保证;经典的国际象棋方法。 |
| 没有良好评估函数的博弈或决策 | 蒙特卡洛树搜索 | 用模拟估计价值;很适合与学到的引导结合。 |
| 达成目标的动作序列 | PDDL、Fast Downward | 与领域无关:模型本身就是规约。 |
| 有已知“配方”的任务,如操作规程或任务流程 | HTN 规划 | 编码专家如何拆分工作;更快,也更容易控制。 |
| 排课、排班、产品配置 | 约束满足、约束逻辑编程 | 直接陈述约束,传播尽早剪枝。 |
| 大规模布尔问题:电路、软件包依赖、谜题 | CDCL SAT 求解 | 工业级求解器;可满足赋值很容易检验。 |
| 关于整数、实数、数组或位向量的约束 | SMT | 在 SAT 之上加入理论;程序验证器的常用后端。 |
| 这个设计是否满足某个随时间展开的性质? | 模型检测、时序逻辑 | 对有限模型穷尽检查;失败时给出反例轨迹。 |
| 这个程序是否符合规约? | Hoare 逻辑、基于 SMT 的验证、抽象解释 | 完整的正确性证明,或可扩展地证明某类错误不会发生。 |
| 必须完全可信的证明 | 证明助手 | 由一个小而可信的内核检查每一步。 |
| 在数据库上依据规则推导事实 | Datalog | 总会终止;其不动点是完备的,所以不在其中就意味着推不出。 |
| 带有默认与例外的选择 | 回答集编程、缺省逻辑 | 非单调规则与组合搜索相结合。 |
| 成文政策:资格、定价、合规 | 产生式规则、Rete | 规则与政策条款一一对应;修改只影响局部。 |
| 需要一致性检查的共享词汇 | OWL、描述逻辑 | 推理可判定;能发现矛盾并对概念分类。 |
| 来自多个来源、关于大量实体的事实 | 知识图谱、RDF | 形式简单的三元组,规模可以非常大。 |
| 证据变化时必须能撤回的信念 | 真值维护系统、ATMS | 为每条信念保留其理由。 |
| 从少量样例加背景知识学出可读规则 | 归纳逻辑编程 | 学到人能检查的关系规则。 |
| 表格数据上可解释的分类器 | C4.5、ID3 | 模型是一棵可读的树,由数据拟合。 |
| 一组测量数据背后的方程 | 符号回归 | 输出是公式,而不是黑箱。 |
| 为人如何完成任务建模 | ACT-R、Soar | 预测时间与错误,而不只是结果。 |
6. 这些技术在哪里失效
同样的四个问题在每个家族中反复出现,也正是因为它们,符号 AI 在感知与语言上输给了机器学习。支柱页对它们有深入讨论;这里说明每个问题落在哪里。
- 组合爆炸。搜索、规划、SAT 与定理证明面对的空间都随问题规模指数增长,而 Cook–Levin 定理表明,目前没有已知的通用出路。各家族的回应是启发式(A*)、剪枝(α–β)、传播(弧相容)、从失败中学习(CDCL)与分解(HTN)。它们让许多真实实例跑得很快,却不改变最坏情况。
- 知识获取瓶颈。专家系统、本体与 Cyc 都依赖有人把知识写下来并保持正确。符号学习(ID3、ILP)是这个领域自己的回答;现代系统越来越多地从结构化来源编译知识,而不是去访谈专家。
- 脆弱性。规则系统与规划器只知道别人告诉它们的东西。一个稍稍超出规则的情形,得到的要么是没有答案,要么是错误答案。非单调推理让规则可以被推翻,却无法补上没人写过的规则。
- 符号接地。每个家族都假定符号已经给定:已经有人判定这块像素区域是积木,那块是桌子。把符号与世界连接起来需要人、传感器或学到的感知,这也是今天能力最强的系统都是混合系统的原因。
7. 符号技术与失效安全模型
失效安全模型是这样一种 AI 模型:当它失败时,失败会把它推向受控的安全状态;证据缺失时它弃权,它的学习可以收窄它的行为,却永远不能扩大它被授权做的事。总表中的若干技术,恰好提供了这种模型所需的部件。
- 能说出“不被蕴涵”的检查器。归结、Datalog 求值以及 SAT 或 SMT 求解,要么给出证明或可满足赋值,要么确认在给定规则下不存在这样的东西。Datalog 的不动点是完备的,所以不在其中是有意义的:诚实的回答是“未知”,而不是猜测。
- 矛盾检测。描述逻辑推理机与 SAT 求解器能报告一组陈述不一致,并指出其中相互冲突的子集,从而让系统拒绝接纳与已有知识矛盾的事实。
- 记录下来的理由。真值维护系统为每条信念保存其成立的理由,理由失效时即可撤回该信念,人也能看到它当初为何成立。
- 只会收窄的学习。在版本空间学习中,每个新样例只能删去假设,绝不会加入假设语言之外的假设。这正是失效安全模型要求的有界学习的形态,尽管 Mitchell 当初的场景是概念学习,而非安全。
- 先约束,后选择。约束模型或规划模型在搜索做出选择之前,就先陈述什么是可接纳的;一个可靠的求解器不可能返回违反硬约束的答案。
这些技术单独都不能让系统成为失效安全的。这个性质取决于决定权:是由符号层决定什么算作真、什么可以做,还是它只是向一个可以无视它的模型提建议。模型可以提议;只有地板能接纳一条事实。这些技术也带着各自的局限(§6)。符号地板的好坏取决于它的来源和规则,所以用这些部件构建的失效安全模型,说“未知”的次数会比一个靠猜的模型更多。这正是有意为之的取舍。我们的论文《编排层的鸿沟》与《在符号系统中遍历数据》对此有更详细的论证。
Perslis Research 的 Peel 就是按这一原则构建的。据我们所知,它是第一个失效安全模型;确切的主张与最接近的更早工作,见什么是失效安全模型?做决定的回路中没有神经网络;知识是有类型、有来源的卡片;学习是可读的计数。Peel 是研究原型,并非经过认证的安全系统。Perslis 如何使用符号方法,见Perslis 的符号 AI;关于表示与流水线层面,另见符号系统与符号流两篇解读。
8. 常见问题
- 主要的符号 AI 技术有哪些?
- 它们可以分为十大家族:逻辑编程与定理证明、形式化验证与程序综合、搜索算法、AI 规划、约束满足与 SAT 和 SMT 求解、知识表示、非单调推理、专家系统、认知架构,以及符号机器学习。广为人知的具体技术包括归结、Prolog、A*、α–β 剪枝、STRIPS、框架、Rete 算法、DPLL 与 CDCL,以及归纳逻辑编程。
- 第一种符号 AI 技术是什么?
- 第一个作为人工智能而构建的程序,是 Allen Newell、Cliff Shaw 与 Herbert Simon 在 1956 年完成的逻辑理论家,它用启发式搜索证明定理;他们的通用问题求解器又引入了手段–目的分析。有些工具比这个领域还古老:命题逻辑可追溯到 1847 年的 George Boole,一阶逻辑可追溯到 1879 年的 Gottlob Frege,极小化极大原理可追溯到 1928 年的 John von Neumann。
- 哪些符号 AI 技术今天仍在使用?
- 很多,只是通常不再挂着 AI 的名字。SAT 与 SMT 求解器、模型检测与抽象解释用于验证软硬件;A* 及其后继用于规划路径;α–β 搜索与蒙特卡洛树搜索用于下棋和博弈;PDDL 规划器用于安排作业;Datalog 与回答集编程解决数据库与组合问题;Drools 等基于 Rete 的引擎运行业务规则;OWL 本体与知识图谱组织数据;Lean、Rocq、Isabelle 等证明助手检验数学证明与经过验证的软件。
- A* 搜索算是符号 AI 吗?
- 算。A* 在由具名算子连接的显式离散状态空间中搜索,它的保证本身就是一个证明:只要启发式从不高估剩余代价,A* 扩展到的第一个目标就在最优路径上。它由 Peter Hart、Nils Nilsson 与 Bertram Raphael 在 1968 年发表,至今仍是在游戏、机器人与路线规划中用得最广的符号 AI 技术之一。
- SAT 求解器与 SMT 求解器有什么区别?
- SAT 求解器判定一个只含真假变量的公式能否被满足。SMT 求解器,即可满足性模理论求解器,对还涉及整数、实数、数组、位向量或其他数据类型的公式做同样的判定,方法是把 SAT 求解器与针对每种理论的专门判定过程结合起来。Z3 与 cvc5 是广泛使用的 SMT 求解器。
- 前向链接与后向链接有什么区别?
- 前向链接从已知事实出发,触发所有条件成立的规则并加入结论,直到不再产生新东西;产生式规则引擎就是这样工作的。后向链接从问题出发,倒推到能证明它的事实,把每条规则的条件变成子目标;Prolog 与专家系统 MYCIN 就是这样工作的。
- 决策树算是符号 AI 吗?
- 模型本身是符号的:决策树是一组可读的“如果–那么”测试。构建它的方式却是统计的:ID3、C4.5 等算法通过在数据上测量信息增益来选择每一次分裂。这就是为什么决策树、规则归纳与归纳逻辑编程被一起归入符号机器学习。
- 符号 AI 技术与神经符号 AI 是什么关系?
- 神经符号系统把神经网络与这里的一种或几种技术结合起来。AlphaGo 用神经网络引导蒙特卡洛树搜索,AlphaGeometry 让语言模型与符号推演引擎配对工作,而调用求解器、数据库或证明检查器的语言模型,则以 SAT、SMT、Datalog 或定理证明作为系统中精确的那一半。
9. 参考文献
- S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach, 4th ed. Pearson, 2020.
- J. A. Robinson. A Machine-Oriented Logic Based on the Resolution Principle. Journal of the ACM 12(1):23–41, 1965. doi:10.1145/321250.321253
- R. Kowalski. Predicate Logic as Programming Language. Proceedings of IFIP Congress 74, 569–574, 1974.
- A. Colmerauer, P. Roussel. The Birth of Prolog. In History of Programming Languages II, ACM, 1996. doi:10.1145/234286.1057820
- M. Gelfond, V. Lifschitz. The Stable Model Semantics for Logic Programming. Proceedings of the 5th International Conference and Symposium on Logic Programming, MIT Press, 1070–1080, 1988.
- C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Communications of the ACM 12(10):576–580, 1969.
- E. M. Clarke, E. A. Emerson. Design and Synthesis of Synchronization Skeletons Using Branching Time Temporal Logic. Logics of Programs Workshop 1981, LNCS 131, Springer, 1982.
- J.-P. Queille, J. Sifakis. Specification and Verification of Concurrent Systems in CESAR. International Symposium on Programming, LNCS 137, Springer, 1982.
- P. Cousot, R. Cousot. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. POPL 1977, 238–252.
- D. E. Knuth, P. B. Bendix. Simple Word Problems in Universal Algebras. In J. Leech (ed.), Computational Problems in Abstract Algebra, Pergamon, 263–297, 1970.
- Z. Manna, R. Waldinger. A Deductive Approach to Program Synthesis. ACM Transactions on Programming Languages and Systems 2(1):90–121, 1980.
- S. Gulwani. Automating String Processing in Spreadsheets Using Input-Output Examples. POPL 2011. doi:10.1145/1926385.1926423
- X. Leroy. Formal Verification of a Realistic Compiler. Communications of the ACM 52(7):107–115, 2009.
- G. Klein et al. seL4: Formal Verification of an OS Kernel. SOSP 2009; extended in ACM Transactions on Computer Systems 32(1), 2014. doi:10.1145/2560537
- P. E. Hart, N. J. Nilsson, B. Raphael. A Formal Basis for the Heuristic Determination of Minimum Cost Paths. IEEE Transactions on Systems Science and Cybernetics 4(2):100–107, 1968.
- R. E. Korf. Depth-First Iterative-Deepening: An Optimal Admissible Tree Search. Artificial Intelligence 27(1):97–109, 1985.
- D. E. Knuth, R. W. Moore. An Analysis of Alpha-Beta Pruning. Artificial Intelligence 6(4):293–326, 1975.
- R. Coulom. Efficient Selectivity and Backup Operators in Monte-Carlo Tree Search. Computers and Games 2006, LNCS 4630, Springer, 2007.
- L. Kocsis, C. Szepesvári. Bandit Based Monte-Carlo Planning. ECML 2006, LNCS 4212, Springer.
- D. Silver et al. Mastering the Game of Go with Deep Neural Networks and Tree Search. Nature 529:484–489, 2016.
- J. McCarthy, P. J. Hayes. Some Philosophical Problems from the Standpoint of Artificial Intelligence. In Machine Intelligence 4, Edinburgh University Press, 1969.
- R. E. Fikes, N. J. Nilsson. STRIPS: A New Approach to the Application of Theorem Proving to Problem Solving. Artificial Intelligence 2(3–4):189–208, 1971.
- A. L. Blum, M. L. Furst. Fast Planning Through Planning Graph Analysis. Artificial Intelligence 90(1–2):281–300, 1997 (IJCAI 1995).
- H. Kautz, B. Selman. Planning as Satisfiability. ECAI 1992, 359–363.
- D. McDermott et al. PDDL: The Planning Domain Definition Language. Technical report, Yale Center for Computational Vision and Control, 1998.
- M. Helmert. The Fast Downward Planning System. Journal of Artificial Intelligence Research 26:191–246, 2006. doi:10.1613/jair.1705
- U. Montanari. Networks of Constraints: Fundamental Properties and Applications to Picture Processing. Information Sciences 7:95–132, 1974. doi:10.1016/0020-0255(74)90008-5
- A. K. Mackworth. Consistency in Networks of Relations. Artificial Intelligence 8(1):99–118, 1977.
- J. Jaffar, J.-L. Lassez. Constraint Logic Programming. POPL 1987, 111–119.
- S. A. Cook. The Complexity of Theorem-Proving Procedures. STOC 1971, 151–158.
- M. Davis, G. Logemann, D. Loveland. A Machine Program for Theorem-Proving. Communications of the ACM 5(7):394–397, 1962. doi:10.1145/368273.368557
- J. P. Marques-Silva, K. A. Sakallah. GRASP: A Search Algorithm for Propositional Satisfiability. IEEE Transactions on Computers 48(5):506–521, 1999 (ICCAD 1996).
- M. W. Moskewicz, C. F. Madigan, Y. Zhao, L. Zhang, S. Malik. Chaff: Engineering an Efficient SAT Solver. DAC 2001. doi:10.1145/378239.379017
- L. de Moura, N. Bjørner. Z3: An Efficient SMT Solver. TACAS 2008, LNCS 4963. doi:10.1007/978-3-540-78800-3_24
- M. R. Quillian. Semantic Memory. In M. Minsky (ed.), Semantic Information Processing, MIT Press, 1968.
- M. Minsky. A Framework for Representing Knowledge. MIT AI Laboratory Memo 306, 1974.
- R. C. Schank, R. P. Abelson. Scripts, Plans, Goals and Understanding. Lawrence Erlbaum, 1977.
- J. F. Sowa. Conceptual Graphs for a Data Base Interface. IBM Journal of Research and Development 20(4):336–357, 1976.
- R. J. Brachman, J. G. Schmolze. An Overview of the KL-ONE Knowledge Representation System. Cognitive Science 9(2):171–216, 1985.
- T. R. Gruber. A Translation Approach to Portable Ontology Specifications. Knowledge Acquisition 5(2):199–220, 1993.
- R. Reiter. A Logic for Default Reasoning. Artificial Intelligence 13(1–2):81–132, 1980.
- J. McCarthy. Circumscription: A Form of Non-Monotonic Reasoning. Artificial Intelligence 13(1–2):27–39, 1980.
- R. C. Moore. Semantical Considerations on Nonmonotonic Logic. Artificial Intelligence 25(1):75–94, 1985.
- K. L. Clark. Negation as Failure. In H. Gallaire, J. Minker (eds.), Logic and Data Bases, Plenum, 293–322, 1978.
- J. Doyle. A Truth Maintenance System. Artificial Intelligence 12(3), 1979.
- J. de Kleer. An Assumption-Based TMS. Artificial Intelligence 28(2):127–162, 1986.
- R. Kowalski, M. Sergot. A Logic-Based Calculus of Events. New Generation Computing 4(1):67–95, 1986.
- E. H. Shortliffe, B. G. Buchanan. A Model of Inexact Reasoning in Medicine. Mathematical Biosciences 23(3–4):351–379, 1975.
- A. N. Campbell, V. F. Hollister, R. O. Duda, P. E. Hart. Recognition of a Hidden Mineral Deposit by an Artificial Intelligence Program. Science 217(4563):927–929, 1982. doi:10.1126/science.217.4563.927
- J. McDermott. R1: A Rule-Based Configurer of Computer Systems. Artificial Intelligence 19(1):39–88, 1982.
- C. L. Forgy. Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem. Artificial Intelligence 19(1):17–37, 1982.
- E. A. Feigenbaum. The Art of Artificial Intelligence: Themes and Case Studies of Knowledge Engineering. IJCAI 1977.
- L. D. Erman, F. Hayes-Roth, V. R. Lesser, D. R. Reddy. The Hearsay-II Speech-Understanding System: Integrating Knowledge to Resolve Uncertainty. ACM Computing Surveys 12(2):213–253, 1980. doi:10.1145/356810.356816
- J. E. Laird, A. Newell, P. S. Rosenbloom. SOAR: An Architecture for General Intelligence. Artificial Intelligence 33(1):1–64, 1987. doi:10.1016/0004-3702(87)90050-6
- J. E. Laird, P. S. Rosenbloom, A. Newell. Chunking in Soar: The Anatomy of a General Learning Mechanism. Machine Learning 1(1):11–46, 1986.
- J. R. Anderson. Rules of the Mind. Lawrence Erlbaum, 1993.
- T. M. Mitchell. Generalization as Search. Artificial Intelligence 18(2):203–226, 1982.
- J. R. Quinlan. Induction of Decision Trees. Machine Learning 1(1):81–106, 1986.
- T. M. Mitchell, R. M. Keller, S. T. Kedar-Cabelli. Explanation-Based Generalization: A Unifying View. Machine Learning 1(1):47–80, 1986.
- S. Muggleton. Inductive Logic Programming. New Generation Computing 8(4):295–318, 1991.
- A. Aamodt, E. Plaza. Case-Based Reasoning: Foundational Issues, Methodological Variations, and System Approaches. AI Communications 7(1):39–59, 1994.
- D. Gentner. Structure-Mapping: A Theoretical Framework for Analogy. Cognitive Science 7(2):155–170, 1983.
- J. R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, 1992.
- M. Schmidt, H. Lipson. Distilling Free-Form Natural Laws from Experimental Data. Science 324(5923):81–85, 2009.