先讲一个场景。
2011年,美国著名的智力竞赛节目《危险边缘》。
两位人类冠军选手,肯·詹宁斯和布拉德·鲁特,坐在台上。
他们旁边,是一台叫做 Watson 的计算机。
主持人念出题目:
“这位美国总统,在任期间,美国经历了最长的经济扩张期。”
Watson 的答案灯亮了。
“克林顿。”
正确。
比赛结束,Watson 以压倒性的优势获胜。
肯·詹宁斯在答题纸上写道:
“我,代表人类,欢迎我们的计算机霸主。”
Watson 是怎么做到的?
它没有真正"理解"问题。
它做的,是推理。
从海量的知识库里,用推理规则,一步一步,找到答案。
这,就是推理规则在人工智能中的应用。
人工智能需要推理
人工智能,从诞生的第一天起,就面临一个核心问题:
机器,能思考吗?
1950年,图灵提出了著名的图灵测试。
如果一台机器,能在对话中让人分不清它是人还是机器,
那么,这台机器,就可以被认为是"会思考的"。
但思考,是什么?
思考,在很大程度上,就是推理。
从已知的信息,推导出未知的结论。
从观察到的现象,推断出背后的原因。
从给定的规则,推算出具体的结果。
这些,都是推理。
而推理规则,正是把这种能力,赋予机器的工具。
第一个应用:专家系统
什么是专家系统
1970年代,人工智能研究者有一个想法:
能不能把专家的知识,装进计算机?
医生的诊断经验,律师的法律知识,工程师的设计规则。
把这些知识,用逻辑规则的形式,存储起来。
然后,让计算机用推理规则,模拟专家的思维过程。
这就是专家系统。
专家系统的结构
专家系统,有两个核心部分。
知识库:存储规则。
规则1:如果发烧 AND 咳嗽 AND 流鼻涕,那么可能是感冒。 规则2:如果发烧 AND 咳嗽 AND 胸痛,那么可能是肺炎。 规则3:如果是感冒,那么建议多休息多喝水。 规则4:如果是肺炎,那么建议立即就医。推理引擎:运用推理规则。
推理引擎,拿到用户的症状,
在知识库里,用假言推理,一条一条匹配规则,
得出诊断结论。
一个具体的例子
病人来了,说:
“我发烧,咳嗽,而且胸口很痛。”
推理引擎开始工作:
已知事实: 发烧 = 真 咳嗽 = 真 胸痛 = 真 第一步:匹配规则2 规则2:发烧 ∧ 咳嗽 ∧ 胸痛 → 可能是肺炎 前提:发烧(真)∧ 咳嗽(真)∧ 胸痛(真)= 真 用假言推理,得出:可能是肺炎 第二步:匹配规则4 规则4:肺炎 → 建议立即就医 前提:肺炎(真) 用假言推理,得出:建议立即就医 最终结论:建议立即就医。每一步,都是假言推理。
每一步,都有规则支撑。
这就是专家系统的工作原理。
历史上著名的专家系统
MYCIN(1970年代,斯坦福大学)
用于诊断血液感染疾病。
知识库里,有600多条规则。
诊断准确率,达到了69%。
而当时的医学专家,平均准确率是80%。
差距不大,但已经令人震惊。
一台机器,能做到接近专家水平的医学诊断。
DENDRAL(1960年代,斯坦福大学)
用于分析化学分子结构。
它的推理能力,甚至超过了很多化学家。
第二个应用:逻辑编程
Prolog 语言
1972年,法国科学家阿兰·科尔默劳尔,发明了一种编程语言。
叫做 Prolog。
Prolog,是 Programming in Logic 的缩写。
用逻辑编程。
这种语言,和普通编程语言完全不同。
普通编程语言,你告诉计算机怎么做。
Prolog,你告诉计算机是什么。
然后,Prolog 自己用推理规则,找到答案。
Prolog 的例子
% 定义事实 父亲(张三, 张小明). % 张三是张小明的父亲 父亲(张三, 张小红). % 张三是张小红的父亲 父亲(李四, 李小强). % 李四是李小强的父亲 % 定义规则 兄弟(X, Y) :- % X和Y是兄弟,如果 父亲(Z, X), % Z是X的父亲 父亲(Z, Y), % Z也是Y的父亲 X \= Y. % 且X和Y不是同一个人 % 查询 ?- 兄弟(张小明, 张小红). % 回答:trueProlog 在背后,用的就是推理规则。
它拿到查询,在事实库里,用假言推理,一步一步,找到答案。
这个过程,叫做归结推理。
归结推理
归结推理,是逻辑编程的核心。
它的基本思想,是反证法。
想证明结论 Q 是真的,
先假设 Q 是假的,
然后和已知的事实、规则,一起推导,
如果推出了矛盾,
说明假设错误,Q 是真的。
想证明:张小明和张小红是兄弟 假设:张小明和张小红不是兄弟 已知规则: 如果有共同父亲且不是同一人,就是兄弟 已知事实: 张三是张小明的父亲 张三是张小红的父亲 张小明 ≠ 张小红 从事实出发: 张三是张小明的父亲 ✓ 张三是张小红的父亲 ✓ 张小明 ≠ 张小红 ✓ → 张小明和张小红是兄弟 这和假设矛盾! 所以假设错误,张小明和张小红是兄弟。第三个应用:知识图谱
什么是知识图谱
2012年,谷歌发布了知识图谱。
知识图谱,是一个巨大的知识网络。
里面存储了数十亿个实体,和它们之间的关系。
实体:北京、中国、天安门、故宫、明朝... 关系:北京 是 中国的首都 天安门 位于 北京 故宫 建于 明朝 ...当你在谷歌搜索"北京有什么著名景点",
谷歌不只是搜索网页,
它在知识图谱里,用推理规则,找到答案。
知识图谱中的推理
知识图谱里,有一种重要的推理,叫链式推理。
就是假言三段论的应用。
已知: A 是 B 的父亲 B 是 C 的父亲 推理规则: 如果 X 是 Y 的父亲,Y 是 Z 的父亲, 那么 X 是 Z 的祖父。 推出: A 是 C 的祖父这个推理,在知识图谱里,可以无限延伸。
已知: 李白 是 唐朝诗人 唐朝 属于 中国历史 中国历史 是 中华文明的一部分 推出: 李白 是 中华文明的一部分谷歌、百度的知识图谱,每天都在做数十亿次这样的推理。
本体推理
知识图谱里,还有一种推理,叫本体推理。
本体,是对概念和关系的形式化描述。
本体规则: 所有的猫,都是哺乳动物。 所有的哺乳动物,都是动物。 所有的动物,都是生物。 已知: 咪咪 是 猫。 推出: 咪咪 是 哺乳动物。(假言推理) 咪咪 是 动物。(假言三段论) 咪咪 是 生物。(假言三段论)这种推理,让知识图谱能够自动发现,
那些没有被明确写出来的知识。
第四个应用:自动定理证明
机器能证明数学定理吗
1976年,数学界发生了一件大事。
四色定理,被证明了。
四色定理说:任何地图,只需要四种颜色,就能让相邻区域颜色不同。
这个定理,数学家们研究了一百多年。
最终的证明,用了计算机。
计算机检验了1936种特殊情况,每种情况都用推理规则验证。
这是历史上第一个,用计算机辅助证明的重大数学定理。
自动定理证明的原理
自动定理证明,用的是归结原理。
把要证明的定理,转化成逻辑公式。
然后,用推理规则,一步一步,推导出矛盾或者结论。
想证明:如果 n 是偶数,那么 n² 是偶数。 转化为逻辑公式: ∀n(偶数(n) → 偶数(n²)) 用归结推理: 假设存在 n,n 是偶数,但 n² 不是偶数。 因为 n 是偶数,n = 2k(某个整数k) n² = (2k)² = 4k² = 2(2k²) 2(2k²) 是偶数。 矛盾! 所以原命题成立。现代自动定理证明工具
Coq(法国国家信息与自动化研究所)
一个交互式定理证明系统。
数学家用它,证明了四色定理的完整形式化版本。
还证明了编译器的正确性。
Lean(微软研究院)
一个现代定理证明系统。
数学家们正在用它,把整个数学,形式化地重新证明一遍。
这个项目,叫做数学图书馆(Mathlib)。
第五个应用:机器学习中的规则提取
机器学习和推理的结合
现代机器学习,特别是深度学习,
能从数据中学习模式。
但它有一个问题:黑盒。
你不知道它为什么做出这个决定。
这在很多场景里,是不可接受的。
医疗诊断,你需要知道为什么。
法律判决,你需要知道为什么。
金融风控,你需要知道为什么。
于是,研究者们,把机器学习和推理规则结合起来。
让机器学习,从数据中提取规则。
然后,用这些规则,做可解释的推理。
决策树:可解释的推理
决策树,是最简单的例子。
年龄 > 30? / \ 是 否 / \ 收入 > 5万? 学历 > 本科? / \ / \ 是 否 是 否 / \ / \ 批准贷款 拒绝 批准贷款 拒绝每一个节点,都是一个判断。
从根节点到叶节点,就是一条推理链。
已知:年龄35岁,收入6万。 推理过程: 年龄35 > 30?是。→ 走左边 收入6万 > 5万?是。→ 走左边 结论:批准贷款。这就是假言三段论,在机器学习里的应用。
神经符号人工智能
最前沿的研究,叫做神经符号人工智能。
把神经网络(感知)和符号推理(思考)结合起来。
神经网络,负责从原始数据中,提取特征。
符号推理,负责用推理规则,做逻辑推断。
例子:看图回答问题 输入:一张图片,图片里有一只红色的大球和一个蓝色的小方块。 问题:红色的球比蓝色的方块大吗? 神经网络: 识别出:红色球,大小=大 识别出:蓝色方块,大小=小 符号推理: 规则:如果 A 的大小是"大",B 的大小是"小",那么 A 比 B 大。 已知:红色球大小=大,蓝色方块大小=小 推出:红色球比蓝色方块大。 回答:是的。这种结合,让人工智能,既能感知,又能推理。
第六个应用:自然语言处理中的推理
文本蕴含
自然语言处理里,有一个任务,叫文本蕴含。
给你两段文字,判断第一段,是否蕴含第二段。
文字1:张三是一名医生,他每天在医院工作。 文字2:张三有工作。 问题:文字1蕴含文字2吗? 推理: 张三是医生(已知) 医生是一种职业(常识) 有职业的人有工作(规则) → 张三有工作(结论) 答案:是的,文字1蕴含文字2。这背后,用的是假言三段论。
问答系统
Watson 在《危险边缘》里的表现,
就是问答系统的典型应用。
问题:这位美国总统,在任期间,美国经历了最长的经济扩张期。 推理过程: 步骤1:识别问题类型 → 问的是"美国总统" 步骤2:提取关键信息 → "最长的经济扩张期" 步骤3:在知识库里搜索 → 找到"克林顿执政期间,美国经历了1991-2001年的经济扩张" 步骤4:验证 → 这是美国历史上最长的经济扩张期吗?是的。 步骤5:得出结论 → 克林顿每一步,都是推理。
每一步,都有规则支撑。
第七个应用:规划和决策
自动规划
机器人要从 A 点走到 B 点。
中间有障碍物。
怎么规划路径?
这是一个推理问题。
已知: 当前位置:A 目标位置:B 障碍物:C、D 规则: 如果当前位置是 X,X 的右边是 Y,Y 没有障碍物, 那么可以移动到 Y。 推理: 当前在 A,A 的右边是 E,E 没有障碍物 → 可以移动到 E 在 E,E 的右边是 F,F 没有障碍物 → 可以移动到 F 在 F,F 的右边是 B → 到达目标 路径:A → E → F → B这是假言三段论,反复应用的结果。
博弈推理
下棋,也是推理。
已知:当前棋局状态 规则:如果走这一步,对手可能走那一步 推理:哪一步,能让我最终获胜?AlphaGo 下围棋,
不只是用神经网络评估局面,
还用了大量的推理,来搜索最优的走法。
推理规则的局限性
说了这么多应用,也要说说局限性。
知识获取瓶颈
专家系统最大的问题,是知识获取。
把专家的知识,转化成规则,非常困难。
专家自己,很多时候,说不清楚自己是怎么想的。
这叫做知识获取瓶颈。
不确定性
现实世界,充满了不确定性。
“如果发烧,可能是感冒”,这是概率,不是必然。
纯粹的逻辑推理,处理不了概率。
于是,研究者们,发展出了概率推理。
把推理规则,和概率论,结合起来。
开放世界假设
逻辑推理,通常假设:
知识库里没有的,就是假的。
这叫封闭世界假设。
但现实世界是开放的。
知识库里没有的,可能只是我们不知道,不代表是假的。
这是推理规则,在现实应用中,面临的挑战。
最后说一句
从1950年图灵提出图灵测试,
到1970年代的专家系统,
到1980年代的逻辑编程,
到2000年代的知识图谱,
到今天的神经符号人工智能。
人工智能的发展,从来没有离开过推理规则。
即使是今天最强大的大语言模型,
ChatGPT,GPT-4,
在它们的背后,也有推理的影子。
研究者们,正在努力,让这些模型,
不只是记住知识,
而是真正地,会推理。
假言推理,让机器能从原因推结果。
拒取式,让机器能从结果排除原因。
假言三段论,让机器能做链式推理。
归谬法,让机器能证明定理。
这些,两千多年前,亚里士多德就发现了。
今天,它们,成了人工智能的基石。
人类最古老的思维工具,
正在驱动,最现代的智能机器。
这,是一件很美妙的事情。