胡慧华
菜单
首页人工智能机器学习深度学习项目实践关于我
跳至课程正文
← 人工智能课程

ARTIFICIAL INTELLIGENCE · COURSE 05

知识表示:把事实和规则组织起来

认识事实、关系与规则,跟随简单推理找到结论的依据。

第 05 / 18 课20–30 分钟(含实验)无需密钥 · 本地实验
透明迷宫中的青色路径连接起点与终点,呈现搜索和路径规划
让机器寻找答案与行动
  • 知识关系
  • 规则推理
01

START WITH A QUESTION

设备不制冷,能否解释为什么需要检查?

报修人员说“空调已通电,但不制冷”。系统如果只输出一个故障名称,你很难知道它根据什么判断。另一种方式是保存明确事实和规则,逐步推出“需要检查制冷系统”,同时展示推理依据。

这套小规则不能代替专业检修,但适合学习知识表示:先把含糊描述变成有结构的事实,再按明确条件推理。规则输出的是检查建议,不是未经验证的故障结论。

02

BUILD YOUR VOCABULARY

先把三个概念讲清楚

CONCEPT 01

事实与关系

事实是当前已知且可追溯的陈述;关系连接实体。实体是所描述的对象,如某台空调。未知事实不应自动当作否定。

放进场景看

“设备 A 已通电”和“设备 A 位于二楼”表达不同属性与关系。

CONCEPT 02

规则

规则规定当前提都成立时可推出什么。它是人为约定的知识表达,不是从数据中自动学到的参数。

放进场景看

已通电且不制冷 → 需要检查制冷系统。

CONCEPT 03

推理与解释链

推理把已有事实和规则组合成新事实;解释链记录用了哪些前提。结论可靠性取决于事实和规则是否正确适用。

放进场景看

需要检查制冷系统 → 建议人工检修;可以追溯两步来源。

03

FOLLOW THE PROCESS

把原理放进完整流程

  1. 01

    整理事实

    记录来源和时间,区分已知、否定与未知。

  2. 02

    匹配前提

    逐条检查规则需要的事实是否全部成立。

  3. 03

    加入新结论

    把满足条件的结论加入事实集合并记录来路。

  4. 04

    重复到稳定

    新结论可触发后续规则,直到没有新增事实。

两次推理组成一条解释链
步骤已知条件推导结果
输入已通电、不制冷尚未确定故障原因
规则 1两个输入事实都成立需检查制冷系统
规则 2需检查制冷系统建议人工检修
04

CHANGE ONE THING & OBSERVE

切换事实,观察推理链

勾选已确认的事实,观察哪些规则被触发。未勾选表示尚未确认,而非一定为假。

INTERACTIVE LAB / 05
当前已确认的事实
  1. 规则 1已通电 + 不制冷 → 需检查制冷系统
  2. 规则 2需检查制冷系统 → 建议人工检修
前提尚未全部确认,不能推出检修建议。未勾选的事实保持未知。
05

KNOW THE LIMITS

哪些结论不能直接推出?

知识库不是绝对真理

规则需要适用范围、版本和维护人员。过期或相互冲突的规则可能给出错误建议。

没有记录不等于没有发生

如果不知道是否通电,应先补问,而不是把“未记录”替换成“未通电”。

06

READ, RUN & EXPLAIN

让规则推理持续到没有新结论

以下示例仅使用 Python 3 标准库,可复制到本地 Python 环境运行。先看每一行的作用,再修改一个输入观察结果;无需网络或密钥。

Python 3 · 完整示例下载 .py
facts = {'已通电', '不制冷'}
rules = [({'已通电', '不制冷'}, '需检查'), ({'需检查'}, '人工检修')]
changed = True
while changed:
    changed = False
    for premises, conclusion in rules:
        if premises <= facts and conclusion not in facts:
            facts.add(conclusion)
            changed = True
print('人工检修' in facts)

复制或下载只获取本课示例,不会自动执行。

逐行解释(10 行)
  1. 第 1 行facts = {'已通电', '不制冷'}

    用集合记录初始事实。集合会自动去除重复项。

  2. 第 2 行rules = [({'已通电', '不制冷'}, '需检查'), ({'需检查'}, '人工检修')]

    每条规则由前提集合和结论组成。这里是教学规则。

  3. 第 3 行changed = True

    标记是否还可能产生新事实。

  4. 第 4 行while changed:

    只要上一轮出现新事实,就再检查一轮。

  5. 第 5 行 changed = False

    先假设本轮不会新增。

  6. 第 6 行 for premises, conclusion in rules:

    依次取出前提与结论。

  7. 第 7 行 if premises <= facts and conclusion not in facts:

    <= 对集合表示包含关系;只新增还没有的结论。

  8. 第 8 行 facts.add(conclusion)

    将可推导的结论加入事实集合。

  9. 第 9 行 changed = True

    告诉循环需要继续检查。

  10. 第 10 行print('人工检修' in facts)

    检查目标结论是否最终可推出。

预期输出
True
07

CHECK YOUR UNDERSTANDING

换一个角度,检查自己是否理解

已回答 0 / 3 题 · 当前答对 0 题

1. 不知道是否通电,应该如何表示?
2. 推理链有什么用?
3. 规则方法与机器学习的一个区别是什么?
08

TAKE IT WITH YOU

带走三个判断,再做一次迁移练习

  • 先明确事实、对象与关系,再讨论推理。
  • 规则匹配前提,推理生成有依据的新结论。
  • 维护未知、版本和适用范围,避免过度诊断。
参考与延伸阅读

本课例子、代码和模拟数据为教学设计。以下一手文档用于延伸核对,不代表对本示例的认证。