Ch1-2 绪论与智能体 (Introduction & Intelligent Agents)

课件:lec1_intro.pdf (62 页) + lec2.pdf (45 页)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig), Ch1 & Ch2
教师:吉建民,USTC


0. 本章概述

本章是整门课的起点,由"绪论"与"智能体"两节合并。绪论回答"AI 是什么、从哪来、到哪去";智能体给出贯穿全书的统一框架——理性智能体 (Rational Agent)。后续所有主题(搜索、逻辑、不确定性、学习)都可视为不同类型智能体的能力。

子主题 核心内容 重要程度
AI 的四种定义思路 像人行动/像人思考/理性思考/理性行动;图灵测试 ⭐⭐⭐
理性智能体框架 agent = architecture + program;f: P*→A ⭐⭐⭐
机器学习为何可能 PAC 学习、Hoeffding 不等式、奥卡姆剃刀 ⭐⭐⭐
理性 (Rationality) 性能度量;理性 ≠ 全知 ≠ 必然成功 ⭐⭐⭐
PEAS 描述 Performance / Environment / Actuators / Sensors ⭐⭐⭐
环境类型(6 维度) 可观测性/确定性/片段性/静态/离散/单多智能体 ⭐⭐⭐
智能体类型 反射 / 有状态 / 目标驱动 / 效用驱动 / 学习 ⭐⭐⭐
Agentic AI(现代) ReAct 范式、OpenClaw、LLM 驱动的智能体 ⭐⭐
AI 发展简史与现状 达特茅斯会议、两次寒冬、深度学习、大模型、具身智能 ⭐⭐

第一部分:人工智能绪论 (lec1)

1.1 课程概览

教材与考核

  • 主教材:Artificial Intelligence: A Modern Approach (3rd Edition),S. Russell & P. Norvig(中译《人工智能——一种现代方法》)
  • 参考书:机器学习(周志华,2016)、《动手学深度学习》(第二版)
  • 学期总评 = 期末考试 (60%) + 书面作业 (15%) + 实验部分 (25%)

课程六大模块

部分 主题 教材章节
一 人工智能概述 / Introduction and Agents Ch 1, 2
二 问题求解 / Search(搜索、有信息搜索、CSP、博弈规划) Ch 3–6
三 知识、推理与规划 / Logic, Knowledge, Reasoning, Planning Ch 7–12
四 不确定知识与推理 / Uncertainty and Decision Making(贝叶斯网、MDP、POMDP、随机博弈) Ch 13–17
五 学习 / Learning(ML、DL、RL) Ch 18–21
六 应用 / NLP, Perception, Robotics Ch 22–25

课程定位

  • 广义"人工智能"含搜索、知识表示与推理、规划、MDP、贝叶斯网等经典工作;当下大众语境中的"AI"多指机器学习/深度学习/大模型。
  • 本课定位:面向计算机专业,熟练掌握 IT 工程师应具备的 AI 基础技术;同时作为索引介绍 ML/NN/大模型等新方向,仅要求了解。
  • 进阶建议:系统入门 DL → 自学"动手学深度学习"(李沐,d2l.ai);精深 → 选定 CV/NLP/多模态等具体领域,从综述读起、动手实现;成专家 → 加入实验室做前沿研究。

1.2 什么是 AI?—— 四种定义思路

教材主张:“理性地行动 (acting rationally)”。

四种思路的二维划分(按"像人/理性" × “思考/行动”):

像人 (Humanly) 理性 (Rationally)
思考 认知科学 (Cognitive Science) 思维法则 (Laws of Thought)
行动 图灵测试 (Turing Test) 理性智能体 (Rational Agent) ✅

① 像人一样行动 (Acting Humanly):图灵测试

  • Turing (1950) “Computing Machinery and Intelligence”:将"机器能否思考?“转化为"机器能否表现出智能行为?”
  • 模仿游戏 (Imitation Game):人类裁判通过问答区分机器与真人。
  • 预言:到 2000 年,机器可能有 30% 概率骗过普通人 5 分钟;并预见了此后 50 年反对 AI 的主要论点。
  • 暗示 AI 的核心组成部分:知识 (knowledge)、推理 (reasoning)、语言理解 (language understanding)、学习 (learning)。
  • ⚠️ 缺点:不可复现、非构造性、难以做数学分析。

② 像人一样思考 (Thinking Humanly):认知科学

  • 1960s"认知革命":信息加工心理学取代行为主义。
  • 需要关于大脑内部活动的科学理论,涉及抽象层次(“知识"还是"电路”?)与验证方式(自上而下预测行为 / 自下而上神经数据)。
  • 现已与 AI 分离:发展为认知科学 (Cognitive Science) 与认知神经科学 (Cognitive Neuroscience)。

③ 理性地思考 (Thinking Rationally):思维法则

  • 规范性 (normative / prescriptive) 而非描述性。
  • 源于亚里士多德:什么是正确的论证/思维过程?古希腊各学派发展出各种逻辑(思想的符号化与推导规则)。
  • 经数学、哲学一脉相承到现代 AI。
  • ⚠️ 问题:
    • 并非所有智能行为都由逻辑深思熟虑驱动;
    • "思考的目的是什么?该有什么想法?"难以回答;
    • 逻辑系统在不确定性下常做错事(部分学者认同此点,部分不认同)。

④ 理性地行动 (Acting Rationally) ← 教材采用

  • 理性行为 (rational behavior) = 做正确的事:在给定可得信息下,期望最大化目标达成。
  • 不一定需要思考(如眨眼反射);但思考应服务于理性行动。
  • 引亚里士多德《尼各马可伦理学》(Nicomachean Ethics):“一切技艺与探索、一切行动与追求,都被认为指向某种善。”
  • 关键区分:
    • 理性 ≠ 成功 (rational ≠ successful)
    • 不理性 ≠ 疯狂 (irrationality = 次优行动,而非 insane)
    • 完全依赖目标 (goals)
    • 现实世界充满不确定性与复杂性,通常只是近似理性。

1.3 理性智能体 (Rational Agents)

⭐ 这是贯穿全书的统一定义:

  • 智能体 (agent) 是能够感知 (perceive) 和行动 (act) 的实体。
  • 本课核心:设计理性智能体。
  • 抽象地,智能体是一个从感知历史到行动的函数:

f:P∗→Af : P^{*} \to A

(P∗P^{*} 为所有可能的感知序列,AA 为动作集)

  • 对给定环境类与任务类,寻找性能最优的智能体(类)。
  • ⚠️ 注意:计算资源有限使完美理性不可达 → 实际目标是"为给定机器资源设计最好的程序"。

学习与具身案例:自动驾驶架构在 2020 年前后从"分模块流水线"转向"端到端"。


1.4 机器学习:表示 + 评价 + 优化

  • 机器学习 ≈ 拟合一个函数。
  • 学习 = 表示 + 评价 + 优化:
    • 表示 (Representation):确定假设空间 (hypothesis space) H\mathcal{H}。
    • 评价 (Evaluation):用评价函数(目标函数/打分函数)判断优劣。
    • 优化 (Optimization):用搜索方法在假设空间中找到评价函数得分最高的函数。

1.4.1 误差定义

设假设 h∈Hh \in \mathcal{H},目标概念 c∈Cc \in \mathcal{C},分布 D\mathcal{D},样本集 S=(x1,…,xm)S=(x_1,\dots,x_m):

  • 泛化误差 (generalization error):

R(h)=Pr⁡x∼D[h(x)≠c(x)]R(h) = \Pr_{x \sim \mathcal{D}}[h(x) \neq c(x)]

  • 经验误差 (empirical error):

R^S(h)=1m∑i=1m1[h(xi)≠c(xi)]\hat{R}_S(h) = \frac{1}{m}\sum_{i=1}^{m}\mathbb{1}[h(x_i) \neq c(x_i)]

  • 两者关系:因为 SS 由 D\mathcal{D} 独立同分布产生,

ES∼Dm[R^S(h)]=R(h)\mathbb{E}_{S\sim\mathcal{D}^m}\big[\hat{R}_S(h)\big] = R(h)

(经验误差是泛化误差的无偏估计)

1.4.2 PAC 学习(“机器学习为什么可能”)

"好的假设"需同时满足两个 PAC 辨识条件:

  1. 近似正确 (Approximately Correct):泛化误差足够小,即 R(h)≤ϵR(h) \le \epsilon。
  2. 可能正确 (Probably Correct):以大概率近似正确,即 P(R(h)≤ϵ)≥1−δP(R(h)\le\epsilon)\ge 1-\delta。

且所需样本数是关于 1/ϵ, 1/δ, n, size(c)1/\epsilon,\,1/\delta,\,n,\,\text{size}(c) 的多项式函数。

⭐ PAC 可学 (PAC-Learnable) 定义:概念类 C\mathcal{C} 称为 PAC 可学,若存在算法 AA 和多项式 poly(⋅)\text{poly}(\cdot),使得对任意 ϵ>0,δ>0\epsilon>0,\delta>0、任意分布 D\mathcal{D}(实例长度 nn)、任意目标概念 c∈Cc\in\mathcal{C},当样本量

m≥poly ⁣(1/ϵ, 1/δ, n, size(c))m \ge \text{poly}\!\left(1/\epsilon,\,1/\delta,\,n,\,\text{size}(c)\right)

有 PS∼Dm ⁣[R(hS)≤ϵ]≥1−δP_{S\sim\mathcal{D}^m}\!\left[R(h_S)\le\epsilon\right]\ge 1-\delta。若 AA 运行时间也是多项式,则称高效 PAC 可学,AA 为 C\mathcal{C} 的 PAC 学习算法。

1.4.3 独立同分布 (i.i.d.)

X1,…,XnX_1,\dots,X_n 独立同分布当且仅当:

  • 独立性:任意有限个 Xi1,…,XikX_{i_1},\dots,X_{i_k} 的联合分布 = 各自边缘分布之积;即每个变量的取值不受其他变量影响。
  • 同分布性:所有变量服从相同分布。

⚠️ i.i.d. 是理想化假设,实际数据常违反(如时间序列自相关、空间聚类效应),需用时序分析、混合模型,或数据预处理(随机打乱)逼近。

1.4.4 Hoeffding 不等式

定理(Wassily Hoeffding, 1963):设 X1,…,XmX_1,\dots,X_m i.i.d.,Xi∈[ai,bi]X_i\in[a_i,b_i],对任意 ϵ>0\epsilon>0:

P ⁣(1m∑i=1mXi−1m∑i=1mE(Xi)≥ϵ)≤2exp⁡ ⁣(−2m2ϵ2∑i=1m(bi−ai)2)P\!\left(\frac{1}{m}\sum_{i=1}^{m}X_i - \frac{1}{m}\sum_{i=1}^{m}\mathbb{E}(X_i) \ge \epsilon\right) \le 2\exp\!\left(\frac{-2m^2\epsilon^2}{\sum_{i=1}^{m}(b_i-a_i)^2}\right)

  • 直觉:取值范围有界的独立变量,随样本量增加,其均值越来越集中于期望附近;上界随 mm 指数级下降。
  • 特例 Xi∈[0,1]X_i\in[0,1]:P(⋅)≤2e−2mϵ2P(\cdot)\le 2e^{-2m\epsilon^2}。

1.4.5 经验误差与泛化误差的关系

由 E(R^S(h))=R(h)\mathbb{E}(\hat{R}_S(h))=R(h) 代入 Hoeffding([0,1][0,1] 情形):

PS∼Dm ⁣[R^S(h)−R(h)≥ϵ]≤2e−2mϵ2P_{S\sim\mathcal{D}^m}\!\left[\hat{R}_S(h)-R(h)\ge\epsilon\right]\le 2e^{-2m\epsilon^2}

令 δ=2e−2mϵ2\delta = 2e^{-2m\epsilon^2},则对固定假设 h:X→{0,1}h:\mathcal{X}\to\{0,1\},以至少 1−δ1-\delta 的概率成立:

 R(h)≤R^S(h)+log⁡(2/δ)2m \boxed{\,R(h)\le \hat{R}_S(h) + \sqrt{\dfrac{\log(2/\delta)}{2m}}\,}

1.4.6 奥卡姆剃刀 (Occam’s Razor)

对有限假设集 H\mathcal{H}:

R(h)≤R^S(h)+O ⁣(log⁡2∣H∣m)R(h) \le \hat{R}_S(h) + O\!\left(\sqrt{\dfrac{\log_2|\mathcal{H}|}{m}}\right)

  • 固定 ∣H∣|\mathcal{H}| 时,要达到与一致情形相同的保证,需要平方量级更大的标注样本。
  • 即 Occam’s Razor(奥卡姆剃刀):“如无必要,勿增实体” / 最简单的解释最好。

1.4.7 从特征工程到深度学习

  • 传统 ML 流程中"特征表达"靠人工提取,耗时且关键 → 能否自动学习特征?能,即深度学习 (Deep Learning / 无监督特征学习)。
  • 衍生:深度神经网络、计算图、CNN;代表模型 BERT、GPT-3。
  • DeepSeek(范例):
    • V3:671B 参数、推理激活 37B;核心创新含 MoE 架构(对 Transformer 的改进)、数据并行-专家并行-流水并行、MTP、分布式混合精度训练、DualPipe 训练框架;大幅降低训练/推理成本。
    • R1:用强化学习 GRPO(多组策略竞争、组内相对奖励)优化生成更好的 CoT,提升 LLM 推理能力;R1 生成的带推理过程 CoT 数据可蒸馏小模型,显著提升其推理能力。

1.5 "新"新工具 (Novum Organum):神经网络的认识论

借"自然科学如何可能?"这一哲学命题,引出神经网络作为新工具的地位。

  • 英国经验主义(休谟):没有绝对真理,只是经验的归纳整理、compact 的表示。
  • 大陆理性主义(莱布尼茨):仿《几何原本》,从几条公设出发形式化推理构建完整理论。
    • 哥德尔不完备性定理:任何足够复杂(含数学归纳法)的公理系统不能既可靠又完备;可靠系统中必有真但不可证的命题。
    • 不同公理系统(理论)彼此不能证伪。
  • 康德、黑格尔:人通过先验概念理解世界——不是世界本就如此,而是我们只能以公理系统方式理解复杂世界。
  • 培根《新工具》:公理系统 + 科学实验。
  • "新"新工具 = 神经网络、端到端学习,其理论基础有二:
    • 通用近似 (Universal Approximation):任何连续函数都能被前馈神经网络以任意小误差近似。
    • 图灵完备 (Turing Completeness):任何图灵机都能被循环神经网络 (RNN) 模拟。

1.6 AI 发展简史

孕育期 (Pre-1956)

领域 人物与贡献
逻辑与推理基础 亚里士多德:三段论 (Syllogism) 形式逻辑基本规律;莱布尼茨:符号逻辑 (Symbolic Logic) 思想;布尔 (Boole, 1854):布尔代数 (Boolean Algebra),思维符号化与数学化
计算与信息基础 图灵 (Turing, 1936):图灵机 (Turing Machine);Mauchly & Eckert (1946):第一台通用电子计算机 ENIAC;香农 (Shannon, 1948):信息论 (Information Theory)
迈向智能 图灵 (1950):《Computing Machinery and Intelligence》,提出图灵测试

诞生 (1956):达特茅斯会议 (Dartmouth Workshop)

  • 由 John McCarthy 组织为期两个月的暑期研讨会。
  • 先驱:McCarthy, Minsky, Rochester, Shannon, Moore, Samuel, Selfridge, Solomonoff, Simon, Newell。
  • 核心假设:“学习的每一个方面、智能的任何其他特征,原则上都能被精确描述到可以让机器模拟的程度。”
  • 里程碑:与会者一致采用 Artificial Intelligence 作为该领域名称,标志 AI 作为独立学科正式诞生。

简史年表 (1950s–2026)

时期 事件
1950s–60s 早期热情:搜索、Logic Theorist、跳棋 (Checkers) 程序
1960s–70s 现实检验:发现计算复杂性 → 第一次 AI 寒冬
1980s 知识系统:专家系统产业繁荣
1980s–90s 专家系统衰退 → 第二次 AI 寒冬;神经网络短暂回归
1990s–00s AI 成为科学:机器学习、统计方法、智能体
2010s 深度学习时代:大数据、ImageNet、AlphaGo(强化学习)
2020–23 基础模型时代:生成式 AI、LLM(如 ChatGPT)兴起
2024–26 Agentic AI 与具身智能:从被动感知转向主动推理与物理交互;自主智能体、具身 VLA 模型用于长程复杂操作

1.7 AI 现状与前沿 (2026)

  • 全球格局:产业高速增长,中美领跑第一梯队;依托 LLM,AI 高速渗透科研、工业与生活,进入战略部署、监管落地与生态建设的深水区。
  • 推理革命 (Reasoning Revolution):范式从"快速生成 (System-1)“转向"慢思考推理 (System-2)”;DeepSeek V3/R1 引领低成本强化学习与开源推理范式;OpenAI o 系列、Google Gemini 等确立原生多模态与深度思考新标准。
  • 具身 VLA 与复杂操作:π0∗, π0.5, π0.6, \pi_0^{*},\,\pi_{0.5},\,\pi_{0.6},\,Motus 等 VLA 模型在非结构化环境中泛化能力显著提升;突破单一抓取,联合离散任务与连续运动规划,走向长程复杂操作。
  • Agentic AI(自主智能体):AI 从"对话框顾问"进化为"系统级执行者",代表如 OpenClaw 接管终端,赋能跨应用、跨任务的自动化。

1.8 典型 AI 应用与里程碑模型

应用一:感知、决策与物理交互

  • 智能交通与低空经济:自动驾驶(Tesla FSD v13 端到端纯视觉、华为乾崑 ADS 4.0 无图智驾城市泛化、Waymo 全无人 Robotaxi 商业运营);无人机感知与控制(大疆行业级多模态巡检大模型、软体机械臂空中作业平台)。
  • 具身智能与机器人:人形机器人(Tesla Optimus、Figure 02、宇树、智元);家庭/服务机器人(斯坦福 Mobile ALOHA 炒菜/家务、RoboCup@Home);四足机器人(宇树 Go2/B2)。
  • 计算机视觉与安防:身份识别(苹果 Face ID 3D 活体检测、商汤智慧城市);工业质检(百度智能云开物 3C 电子微米级缺陷检测);医疗影像(腾讯觅影食管癌/肺结节、联影智能 uAI)。

应用二:生成、助理与科学前沿

  • 生产力与代码生成:AI 编程(Cursor IDE 集成 Claude/o3、GitHub Copilot、DeepSeek Coder);办公智能(微软 Copilot for Microsoft 365、钉钉 AI 助理)。
  • 内容生成与大模型对话 (AIGC & LLMs):文本/推理(ChatGPT GPT-4o/o3、Gemini 3.1、DeepSeek R1、豆包);图像/视频(Sora、Veo、字节 Seedance 2.0);音乐/音频(Suno v4、Udio)。
  • 智能体与科学计算:个人助理/终端 Agent(Apple Intelligence、OpenClaw);气象/物流(华为盘古气象大模型精度超传统数值预报、京东地狼 AGV 调度);生命科学(DeepMind AlphaFold 3 高精度预测蛋白质结构,加速靶点制药与抗体设计)。

里程碑模型速查

模型 要点
ChatGPT OpenAI 2022 年 11 月发布;GPT-3 为 175B 参数 LLM;ChatGPT 在 GPT-3.5 上用监督学习 + 强化学习微调
AlphaGo 以 4:1 击败李世石,机器首次在围棋战胜人类顶尖高手;AlphaGo Zero 从 0 学起,不到 3 天以 100:0 完胜 AlphaGo
Tesla Optimus 人形机器人:28 自由度,共享汽车零部件供应链;软件 = FSD 自动驾驶 + Dojo 大脑,共享算法与数据
Open X-Embodiment 机器人界的"ImageNet 时刻"
Sora OpenAI,由文本指令生成逼真且富有想象力的场景
DeepSeek R1 在 AIME 2024、MATH-500、Codeforces 表现媲美/超越 OpenAI-o1-1217;Codeforces 得分 2441(高于 96.3% 人类);总训练成本仅 557.6 万美元(约 O1 的几十分之一);成功蒸馏出 32B/70B 等小型推理模型,Distill-Qwen-7B 在 AIME 2024 超过 QwQ-32B-Preview
OpenClaw 现象级开源自主 AI 智能体;开发者 Peter Steinberger 于 2025 年底发布(原名 Clawdbot/Moltbot),2026 年初定名 OpenClaw;自身不含大模型,作为调度中心接入 SOTA 模型(Claude/Gemini/OpenAI/本地模型)作"大脑";通过 Telegram/WhatsApp/Discord 等通讯软件交互;具备系统操作权限、长期记忆与主动性;同时引发数据隐私与恶意指令劫持的安全担忧
AlphaFold 3 高精度蛋白质结构预测

课后练习:对比 DeepSeek/ChatGPT/Gemini/豆包/Kimi/千问/星火等大模型;利用大模型协助编程解题;调研试用 OpenClaw。


第二部分:智能体 (lec2)

2.1 智能体与环境

⭐ 智能体 (agent) 是任何能被视作通过传感器 (sensors) 感知环境、通过执行器 (actuators) 作用于环境的事物。

  • 例:
    • 人类智能体:传感器 = 眼、耳及其他器官;执行器 = 手、腿、嘴等身体部位。
    • 机器人智能体:传感器 = 摄像头、红外测距仪;执行器 = 各类电机。
  • 其他例子:软件机器人 (softbots)、自动调温器 (thermostats) 等。

智能体函数与程序

  • 智能体函数 (agent function):从感知历史到行动的映射 f:P∗→Af:P^{*}\to A,完全定义了智能体。
  • 智能体程序 (agent program) 在物理架构上运行以实现 ff。
  • ⭐ agent = architecture(架构)+ program(程序)

吸尘器世界 (Vacuum-cleaner world) — 经典示例

  • 感知 (Percepts):位置与内容,如 [A, Dirty]。
  • 动作 (Actions):Left, Right, Suck, NoOp。
  • 引出问题:正确的函数是什么?能否用小程序实现?
  • 现实类比:随机覆盖式扫地机器人(iRobot Roomba 3–8 系列算法)vs 规划式扫地机器人。

2.2 理性 (Rationality)

  • 智能体应努力"做正确的事"——基于其能感知的信息与能执行的动作,选择最可能成功的行动。
  • 性能度量 (Performance measure):评价智能体行为成功与否的客观准则。
    • 扫尘器例:清除的灰尘量、用时、耗电量、噪声等。

⭐ 理性智能体定义:对每个可能的感知序列,理性智能体应基于该感知序列提供的证据和自身已有先验知识,选择期望最大化其性能度量的行动。

理性的三个不等式

命题 含义
Rational ≠ Omniscient(全知) 感知未必提供全部相关信息
Rational ≠ Clairvoyant(明察秋毫) 行动结果未必如预期
⇒ Rational ≠ Successful 理性不保证成功

由理性衍生出三种行为:

  • 信息收集 (information gathering / exploration):为修改未来感知、获取有用信息而采取行动。
  • 学习 (learning):弥补不全面或不正确的先验知识。
  • 自主性 (autonomy):智能体行为由自身经验决定(能学习与适应)即为自主。

即:Rationality → exploration, learning, autonomy。


2.3 PEAS 描述

⭐ PEAS = Performance measure(性能度量)、Environment(环境)、Actuators(执行器)、Sensors(传感器)。用于刻画一个任务环境。

示例一:自动驾驶出租车 (automated taxi)

维度 内容
Performance safety(安全)、destination(到达)、profits(收益)、legality(合法)、comfort(舒适)
Environment 街道/高速、交通、行人、天气
Actuators 方向盘、油门、刹车、喇叭、扬声器/显示屏
Sensors 视频、加速度计、仪表、发动机传感器、键盘、GPS

示例二:互联网购物智能体 (Internet shopping agent)

维度 内容
Performance price(价格)、quality(质量)、appropriateness(合适度)、efficiency(效率)
Environment 当前与未来的网站、供应商、发货商
Actuators 向用户显示、跟踪 URL、填写表单
Sensors HTML 页面(文本、图形、脚本)

2.4 环境类型(6 个维度)

环境类型在很大程度上决定了智能体的设计。

维度 两端 定义
可观测性 Fully / Partially observable 智能体传感器是否能在每个时刻获取环境的完整状态
确定性 Deterministic / Stochastic 下一状态是否完全由当前状态与执行动作决定(若仅因其他智能体动作而不确定,称为 strategic)
片段性 Episodic 片断式 / Sequential 延续式 经验是否被分为原子"片段"(每片段只感知并做单个动作,且动作选择只依赖该片段本身)。例:装配线上检测次品的机器人
静态 Static / Dynamic 智能体思考时环境是否不变(若环境本身不变但性能分数变,称为 semidynamic)
离散性 Discrete / Continuous 感知与动作是否为有限、清晰可分的
智能体数 Single / Multi-agent 环境中是否只有一个智能体

⭐ 真实世界是最难的组合:partially observable, stochastic, sequential, dynamic, continuous, multi-agent。


2.5 智能体类型

按通用性递增排列,四种基本类型,且都可变为学习智能体。

① 简单反射智能体 (Simple Reflex Agents)

  • 仅基于当前感知与 条件-动作规则 (condition-action rules) 行动;无内部状态。

② 有状态的反射智能体 (Reflex Agents with State / Model-based)

  • 维护内部状态以追踪世界的不可见部分,并根据变化与自身动作更新状态。

③ 目标驱动智能体 (Goal-based Agents)

  • 反射智能体仅基于预计算知识(规则)行动;目标驱动智能体通过推理哪种行动能达到目标来行动。
  • 更低效,但更自适应、灵活。
  • 搜索与规划 (search and planning):寻找满足目标的动作序列;与条件-动作规则的本质区别——需考虑"如果我做…会发生什么 (what will happen if I do…)",涉及对未来推理。
  • 可在不"重编程"规则的情况下改变目标(如出租车换了新目的地)。

④ 效用驱动智能体 (Utility-based Agents)

  • 效用函数 (Utility Function):状态到实数的映射。
  • 允许在两类情形下做理性决策:
    • 权衡冲突目标 (conflicting goals);
    • 评估竞争目标 (competing goals)。
  • 更偏好的世界状态有更高效用。

⑤ 学习智能体 (Learning Agents)

⭐ 四大组件:

组件 作用
Performance element(执行元件) 即智能体函数,负责实际选择行动
Learning element(学习元件) 通过观察 performance 做出改进
Critic(评判元件) 测量智能体性能,向学习元件反馈
Problem generator(问题生成元件) 建议其他可能的行动路径(exploration)

表查找智能体 (Table-lookup Agent) 的缺点

作为反例:表巨大、建表耗时长、无自主性、即便学习也需很久才能填满表项。


2.6 大语言模型驱动的 Agentic AI(现代延伸)

范式演进:从对话系统到 Agentic AI

  • 生成式 AI 的局限:传统对话界面属被动响应系统,依赖人类输入 Prompt,输出文本/代码,缺乏与外部世界直接交互。
  • ⭐ Agentic AI 定义:能够感知环境、自主多步规划 (Planning)、调用工具 (Tool-use),并为达成既定目标而行动的 AI 系统。
  • 经典公式的现代重构:agent = architecture + program
    • Program(认知核心):LLM 作为推理与规划的"大脑"。
    • Architecture(躯干/脚手架):现代 Agent 框架提供环境交互接口与执行环境。

现代 Agent 架构与 PEAS 映射(以 OpenClaw 为例)

PEAS 内容
Performance 任务完成准确率、API 调用效率与成本(Token 消耗)、多步推理成功率
Environment 操作系统文件目录、Web 浏览器、软件 API、本地终端命令行
Sensors 网页 DOM 树解析、RAG 读取本地知识库与文档、终端 stdout 回传
Actuators 自动执行终端脚本(Python/Shell)、鼠标/键盘 GUI 自动化、发送 HTTP 请求调用云端服务

⭐ 核心运行机制:ReAct 范式 (Reasoning and Acting)

  1. Thought(思考):LLM 接收自然语言指令,评估当前系统状态并决定下一步操作的逻辑。
  2. Action(行动):LLM 输出结构化的工具调用指令(如 JSON 格式的 search_files 工具),本地实际执行。
  3. Observation(观察):将本地执行结果(文件路径或文本截取)反馈给 LLM。
  4. Loop(循环):重复"思考 → 行动 → 观察",直到自我验证目标已完成。

OpenClaw 架构细节

  • 定位:开源自主系统操作智能体框架,将 LLM 的逻辑推理能力与 OS 级执行权限深度集成的闭环系统;实现"云端大脑 (LLM) + 本地手脚 (执行沙箱)"的物理与逻辑解耦。
  • OS 级深度集成:运行在宿主机后台(终端或常驻进程),可直接挂载文件系统、终端 (CLI) 和网络栈作为"物理环境"。
  • 多模态交互界面:无缝嵌入 Slack/Telegram/命令行等,把 Agent 转化为"数字共事者 (Digital Coworker)"。
  • 扩展的 ReAct 状态机:
    1. 状态感知与思考:LLM 评估上下文 (Context),进行目标拆解 (Task Decomposition);
    2. 结构化行动:必须输出严格符合 JSON Schema 签名的函数调用 (Function Calling),框架捕获并映射到本地脚本/命令;
    3. 客观反馈注入:捕获 stdout/stderr 作为新观测拼入上下文,触发下一轮推理。
  • 动作空间 (Action Space) 决定能力边界:
    • 文件与系统工具:read_file、write_to_file、grep_search 等;
    • 浏览器自动化:集成 Playwright/Puppeteer,将 DOM 树转为无障碍树 (A11y Tree) 实现精准点击/输入/抓取;
    • 动态技能扩展:支持用户自行编写 Python 函数注册新技能,运行时动态调用甚至自我编写脚本解决长尾需求。

系统记忆管理与个性化对齐

为避免每次启动成为"白板 (Blank Slate)",引入持久化双轨记忆系统:

  • 静态系统级提示词:IDENTITY.md(行为准则与响应风格)、USER.md(用户偏好、操作系统类型、工作流习惯)。
  • 动态情景记忆:本地**向量数据库(如 ChromaDB)**记录历史交互轨迹;面临相似任务时通过 RAG 召回过去成功路径或纠错经验,降低 Token 消耗、提高规划成功率。

部署挑战

  • 边缘计算与本地推理:高频思考-行动循环带来巨大延迟与 API 成本 → 将小参数模型(如 7B/8B)本地量化部署。
  • 安全边界与人在回路 (Human-in-the-loop, HITL):
    • 沙箱隔离:执行环境限制在 Docker 容器或特定 VM 挂载目录,防误删核心文件;
    • 权限拦截:对不可逆高危操作(如 rm -rf、数据库 DROP、对外发邮件)强制挂起,等待人类明确授权。

⭐ Agentic AI 前沿挑战

挑战 说明
幻觉与误差累积 (Hallucination & Error Propagation) 多步规划中早期幻觉(如调用不存在的 API)会导致后续全部偏离目标,甚至死循环
安全与权限边界 (Security & Alignment) 赋予真实系统操作权限风险极大;提示词注入攻击 (Prompt Injection) 可让恶意网页隐藏指令"劫持"正在浏览的 Agent 越权破坏
环境动态性与部分可观测性 数字环境随时变化(UI 更新、网络延迟),要求强错误恢复 (Error Recovery) 与动态重规划 (Re-planning) 能力



📋 本章速览补充:以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。

2 智能体

0. AI 定义与理性智能体

0.1. AI 的四种定义视角

教材常把 AI 定义分成四类:

维度 像人一样 (…humanly) 理性地 (…rationally)
思考 Thinking humanly Thinking rationally
行动 Acting humanly Acting rationally

本课更偏向:理性智能体 (rational agent),即在给定感知和知识下,选择期望性能最好的行动。

0.2. 图灵测试

图灵测试关注机器是否能表现出与人类不可区分的智能行为。需要能力:

  • 自然语言处理。
  • 知识表示。
  • 自动推理。
  • 机器学习。
  • 若是 Total Turing Test,还包括感知和机器人行动。

0.3. 理性智能体

理性不等于全知。理性智能体根据:

  • 当前感知序列。
  • 已有知识。
  • 可执行行动。
  • 性能度量。

选择能最大化期望性能的行动。

1. 智能体基础

1.1. 智能体定义

智能体通过传感器感知环境,通过执行器作用于环境。

1
agent = sensors + actuators + agent program

智能体函数:f:percept sequence→actionf: \text{percept sequence} \to \text{action}。注意输入是感知序列,不只是当前感知。

1.2. 理性智能体

理性智能体对每个可能感知序列,选择能最大化期望性能度量的行动。理性取决于:

  • 性能度量。
  • 先验知识。
  • 可执行行动。
  • 当前感知序列。

理性不等于:全知;永远成功;事后看最优。

1.3. PEAS

PEAS 用于描述任务环境:

  • P Performance measure:性能度量。
  • E Environment:环境。
  • A Actuators:执行器。
  • S Sensors:传感器。

例:自动驾驶出租车

  • P:安全、准时、舒适、盈利、守法。
  • E:道路、行人、车辆、交通灯、天气。
  • A:方向盘、油门、刹车、喇叭、显示屏。
  • S:摄像头、雷达、GPS、速度计、麦克风。

2. 环境与智能体类型

2.1. 环境类型

  • 完全可观测:传感器能获得决策所需全部状态。
  • 部分可观测:有隐藏状态或传感器噪声。
  • 单智能体:只需考虑自身行动。
  • 多智能体:其他智能体也会行动,可能合作或竞争。
  • 确定性:当前状态和行动完全决定下一状态。
  • 随机性:结果有概率分布。
  • 片段式 (episodic):每次决策互不影响。
  • 序贯式 (sequential):当前行动影响未来。
  • 静态:智能体思考时环境不变。
  • 动态:环境会变化。
  • 半动态 (semidynamic):环境不变但性能随时间变化,如限时考试。
  • 离散:状态、时间、行动有限或可数。
  • 连续:变量连续,如自动驾驶位置和速度。
  • 已知:智能体知道行动结果模型。
  • 未知:需要学习模型。

2.2. 智能体类型

2.2.1. 简单反射智能体
基于当前感知选择行动:if condition then action。适用于完全可观测环境。缺点:没有记忆。

2.2.2. 基于模型的反射智能体
维护内部状态:internal state = update(previous state, action, percept)。适用于部分可观测环境。

2.2.3. 基于目标的智能体
使用目标信息选择行动,常需要搜索/规划。例:目标 = 到达 Bucharest。

2.2.4. 基于效用的智能体
不只判断是否达成目标,还比较不同结果好坏。最大化期望效用:arg⁡max⁡aE[U(Result(a))]\arg\max_a E[U(\text{Result}(a))]。

2.2.5. 学习智能体
能通过经验改进性能。包含:performance element、learning element、critic、problem generator。

2.3. LLM Agentic AI(隔壁班补充)

隔壁班课件提到大语言模型驱动的 Agentic AI。可理解为:

  • LLM 负责理解任务、规划步骤。
  • 工具调用负责执行搜索、代码、数据库、网页等操作。
  • 记忆模块保存上下文。

低概率概念题,了解即可。

3. 考试速查

3.1. 常见判断题

  • 智能体函数输入是感知序列:对。
  • 性能度量由智能体自己随意定义:错,通常由任务设计者给出。
  • 简单反射智能体适合部分可观测复杂环境:错。
  • 基于效用的智能体能处理目标之间的权衡:对。

3.2. 最后一分钟版

  • PEAS:Performance, Environment, Actuators, Sensors。
  • 理性 = 在给定信息下最大化期望性能。
  • 环境分类:可观测/确定/片段/静态/离散/单智能体/已知。
  • 智能体类型:简单反射、模型反射、目标、效用、学习。

Ch3-4 搜索 (Search: Uninformed & Informed)

课件:lec3.pdf (无信息搜索 / Uninformed Search) + lec4.pdf (有信息搜索 / Informed Search)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig), Ch 3
教师:吉建民,USTC


0. 本章概述

第二章的"目标驱动智能体 (goal-based agent)"需要"搜索与规划 (search and planning)"来找到达成目标的动作序列。本章正是把这一能力具体化:先给出搜索问题 (search problem) 的形式化,再用一系列策略在状态空间中寻找解。按是否利用额外领域知识,分为无信息搜索 (uninformed search) 与有信息搜索 (informed search / heuristic search)。

子主题 核心内容 重要程度
问题形式化 (Problem Formulation) 状态/动作/转移/目标/路径代价;抽象化;状态空间图 vs 搜索树 ⭐⭐⭐
树搜索 vs 图搜索 (Tree vs Graph Search) frontier;重复状态检测;节点 vs 状态 ⭐⭐⭐
性能评估四维度 完备性 / 时间 / 空间 / 最优性;b, d, m ⭐⭐⭐
无信息策略六种 BFS / UCS / DFS / DLS / IDS / 双向 ⭐⭐⭐
无信息策略对比与复杂度 b, bd, bmb,\ b^d,\ b^m;IDS 为何是首选 ⭐⭐⭐
有信息搜索框架 Best-first search;评价函数 f(n)f(n);启发式 h(n)h(n) ⭐⭐⭐
贪心最佳优先 (Greedy best-first) f=hf=h;不完备、非最优 ⭐⭐⭐
A* 搜索 f=g+hf=g+h;可采纳 / 一致;最优性证明 ⭐⭐⭐
启发式设计 松弛问题、支配性 dominance、组合 h=max⁡h=\max ⭐⭐⭐
局部搜索 (Local Search) 爬山 / 模拟退火 / 局部剪枝 / 遗传算法 ⭐⭐

第一部分:问题求解智能体与搜索问题 (lec3)

1.1 问题求解智能体 (Problem-solving Agents)

⭐ 问题求解智能体是一类目标驱动智能体 (goal-based agent):它通过评估未来的动作序列来做决策。

  • 搜索算法通常假设:
    • 转移模型已知且确定 (known, deterministic transition model)
    • 离散的状态与动作 (discrete states and actions)
    • 完全可观测 (fully observable)
    • 原子表示 (atomic representation):状态被视为整体,内部结构对算法不可见
  • 通常有明确目标 (definite goal);最优 (optimal) = 以最小代价达成目标。
  • 使用更高级的因子化 (factored) 或结构化 (structured) 表示的同类智能体称为规划智能体 (planning agents)。

离线 vs 在线

  • 离线问题求解 (offline problem solving):先求出完整解再执行(“闭着眼睛执行 solution executed eyes-closed”)。
  • 在线问题求解 (online problem solving):在不具备完全知识时边感知边行动(后续章节)。

引例:Romania(罗马尼亚公路旅行)

  • 在 Arad 度假,明天从 Bucharest 起飞 → 目标:到达 Bucharest。
  • 目标形式化:“be in Bucharest”。
  • 问题形式化:states = 城市;actions = 在城市间驾车。
  • 解 (solution):城市序列,如 Arad, Sibiu, Fagaras, Bucharest。

1.2 搜索问题的形式化 ⭐

⭐ 一个(搜索)问题 (search problem) 由以下要素组成:

要素 含义 Romania 例
初始状态 (initial state) s0s_0 起点 s0=In(Arad)s_0=\text{In(Arad)}
动作集 (actions) A(s)A(s) 在状态 ss 下可执行的动作 A(In(Arad))={Go(Sibiu),Go(Timisoara),Go(Zerind)}A(\text{In(Arad)})=\{\text{Go(Sibiu)},\text{Go(Timisoara)},\text{Go(Zerind)}\}
转移模型 (transition model) Result(s,a)\text{Result}(s,a) 动作执行后的新状态 Result(In(Arad),Go(Zerind))=In(Zerind)\text{Result}(\text{In(Arad)},\text{Go(Zerind)})=\text{In(Zerind)}
状态空间 (state space) SS 所有可达状态;可由 s0,A,Results_0,A,\text{Result} 隐式定义 —
目标测试 (goal test) G(s)G(s) 判断是否为目标状态 显式:G(s)=1(s∈{In(Bucharest)})G(s)=\mathbb{1}(s\in\{\text{In(Bucharest)}\});隐式:如国际象棋 G(s)=Checkmate(s)G(s)=\text{Checkmate}(s)
路径代价 (path cost) 每条路径的数值代价;单步代价 (step cost) c(s,a,s′)≥0c(s,a,s')\ge 0 距离之和、动作数等
  • 解 (solution):从初始状态到目标状态的一个动作序列。
  • 最优解 (optimal solution):所有解中代价最小者。

1.3 状态空间的抽象化 (Abstraction) 与"好"状态空间

抽象化

真实世界极其复杂,必须抽象化 (abstracted) 后才能求解:

  • (抽象) 状态 = 一组真实状态的集合。
  • (抽象) 动作 = 一组复杂真实动作的组合(如 Go(Zerind) 代表无数种可能路线、绕路、停靠)。
  • 为保证可实现性 (realizability):任何处于抽象状态 In(Arad)\text{In(Arad)} 的真实状态,执行该动作后必须落入某个 In(Zerind)\text{In(Zerind)} 的真实状态。
  • 每个抽象动作应比原问题"更容易"。

构建"好的"状态空间 ⭐

  • 让状态尽可能可达、可行、合法;状态数越少越好(规避大量不可达状态);方便设计后继函数与搜索算法。

例:n 皇后问题的三种状态空间设计(状态数差异巨大)

设计 状态数(8 皇后)
任意位置都可放皇后 (N2)!/(N2−N+1)!≈3.13×1012(N^2)!/(N^2-N+1)! \approx 3.13\times10^{12}
每行放一个皇后 NN=16777216N^N = 16777216
从左往右逐列放置、前 kk 列互不攻击 仅 2057 个

→ 同一个问题,状态空间设计的优劣直接决定搜索可行性。

其他典型搜索问题

问题 状态 动作 目标 代价
吸尘器世界 (Vacuum World) 灰尘与机器人位置 Left, Right, Suck, NoOp 无灰尘 1/动作(NoOp 为 0)
8-puzzle 棋子位置 移动空格 达到目标布局 1/步
机器人装配 关节角度、零件坐标 关节连续运动 完成装配 执行时间
华容道 棋盘布局 棋子合法移动 曹操逃出 1/步
n 皇后 棋盘布局 移动某皇后到相邻格 互不攻击 1/步

⚠️ n-puzzle 的最优解是 NP-hard;8-puzzle 的状态数为 O((n+1)!)O((n+1)!),是 NP 完全问题。


1.4 状态空间图 (State Space Graph) vs 搜索树 (Search Tree) ⭐

状态空间图

  • 节点 (nodes) = 抽象的世界配置;弧 (arcs) = 后继关系(动作结果);目标测试对应一组目标节点。
  • ⭐ 在状态空间图中,每个状态只出现一次。
  • 通常太大,无法完整在内存中构造,但是有用的概念。

搜索树

  • 通过扩展 (expanding) 已探索状态的后续状态,按需动态构造。
  • 搜索树的每个节点 (node) 对应状态空间图中一条完整路径(不是单个状态)。
  • 尽量只构造必要的部分。

节点 (Node) 的数据结构

节点是搜索树中的数据结构,包含:

  • state(状态)
  • parent node(父节点)
  • action(从父到本节点的动作)
  • path cost g(n)g(n)(路径代价)
  • depth(深度)

重复状态问题 ⭐

“Those who don’t know history are doomed to repeat it!”(不吸取历史教训者注定重蹈覆辙)

  • 不检测重复状态,可能把一个线性规模的问题变成指数规模。
  • 例:含重复状态、深度 dd 的搜索树有 4d4^d 个叶节点;而距起点 dd 步以内的不同状态仅有约 2d22d^2 个。

  • 基本思想:离线、模拟地探索状态空间——不断生成已探索状态的后继(即"扩展状态")。
  • 主要变化维度:
    1. 下一步扩展哪个叶节点(决定策略)
    2. 是否检测重复状态
    3. frontier 与已扩展节点的数据结构

图搜索 (Graph Search) 与 Frontier

  • Frontier(边界 / fringe):分隔"已扩展区域"与"未探索区域"。
  • 扩展一个 frontier 节点:把它从 frontier 移入已扩展集,并把新发现的未探索节点加入 frontier(维持 frontier 性质)。
  • 例:{1,2}\{1,2\} 已扩展,frontier ={3,4,5}=\{3,4,5\};扩展 3 后 frontier ={4,5,6,7}=\{4,5,6,7\}。

对比

搜索树 (Tree) 搜索图 (Graph)
节点 有重复,登记过程简单 无重复,登记过程复杂(每次都要查重)

1.6 搜索算法性能评估 ⭐

搜索策略 (search strategy) = 选择节点扩展的顺序。

四个评估维度:

维度 含义
完备性 (Completeness) 若解存在,是否总能找到
时间复杂度 (Time complexity) 生成的节点数
空间复杂度 (Space complexity) 内存中同时存的最大节点数
最优性 (Optimality) 是否总能找到最小代价解

复杂度参数 ⭐

符号 含义
bb 搜索树的(最大)分支因子 (branching factor)
dd 最小代价解的深度 (depth of least-cost solution)
mm 状态空间的最大深度(可能为 ∞\infty)

1.7 无信息搜索 (Uninformed Search) 策略 ⭐

⭐ 定义:无信息搜索 (uninformed / blind search) 指除问题定义提供的状态信息外,没有任何附加信息。与之对应的是有信息搜索(启发式搜索),后者知道某非目标状态是否比其他状态更接近目标。

本课介绍 6 种无信息策略:广度优先、一致代价、深度优先、深度受限、迭代加深、双向。


1.7.1 广度优先搜索 (Breadth-First Search, BFS) ⭐

  • Frontier 数据结构:FIFO 队列(first-in, first-out)。
  • 完备性:完备(若 dd 有限)。
  • 最优性:当每条边代价一致(cost = 1/step)时返回最优解;否则不一定。
  • 时间复杂度:

1+b+b2+⋯+bd=O(bd)1+b+b^2+\cdots+b^d = O(b^d)

若目标测试在节点被扩展时做(而非生成时),则整层 dd 都被扩展,时间复杂度为 O(bd+1)O(b^{d+1})。

  • 空间复杂度:O(bd)O(b^d)(或 O(bd+1)O(b^{d+1})),所有节点都要存——BFS 的最大瓶颈是空间。

1.7.2 一致代价搜索 (Uniform-Cost Search, UCS) ⭐

  • 思想:扩展当前路径代价最小的未扩展节点。
  • Frontier:按路径代价 g(n)g(n) 排序的优先级队列。
  • 若所有边代价一致,UCS 退化为 BFS。
  • 完备性:完备,前提是单步代价有下界 ϵ>0\epsilon>0(即 step cost ≥ϵ\ge\epsilon)。
  • 最优性:最优(节点按 g(n)g(n) 递增顺序扩展)。
  • 时间/空间复杂度:代价不超过 C∗C^* 的节点数

O ⁣(b1+⌊C∗/ϵ⌋)O\!\left(b^{1+\lfloor C^*/\epsilon\rfloor}\right)

其中 C∗C^* 为最优解代价。


1.7.3 深度优先搜索 (Depth-First Search, DFS)

  • Frontier:LIFO 栈(last-in, first-out)。
  • 完备性:不完备——在无限深空间或含环空间会失败;若改为避免路径上的重复状态,则在有限空间完备。
  • 最优性:不保证。
  • 时间复杂度:

1+b+b2+⋯+bm=O(bm)1+b+b^2+\cdots+b^m = O(b^m)

当 m≫dm\gg d 时很糟;但若解密集,可能比 BFS 快得多。

  • 空间复杂度:O(bm)O(bm),即线性空间——只需存一条根到叶的路径及路径上节点的未扩展兄弟。

1.7.4 深度受限搜索 (Depth-Limited Search, DLS)

  • 思想:DFS + 深度界限 ll,深度 >l>l 的节点不再扩展。目的:避免 DFS “一条路走到黑”。
  • 返回结果三种:有解 / 无解 / 在 ll 范围内无解。
  • 完备性:不完备。
  • 最优性:不保证。
  • 时间复杂度:O(bl)O(b^l);空间复杂度:O(bl)O(bl)。
  • 若 l<dl<d 可能不完备;若 l>dl>d 不最优。

1.7.5 迭代加深的深度优先搜索 (Iterative Deepening Search, IDS) ⭐⭐⭐

⭐ 由 DLS 演化:以 k=0,1,2,…k=0,1,2,\dots 为深度界限反复执行 DLS,每轮加一。

  • 结合了 BFS(完备/最优/浅层优先)与 DFS(线性空间)的优点。
  • 完备性:完备。
  • 最优性:当每条边代价一致(step cost = 1)时返回最优解;否则不一定。
  • 时间复杂度:

db+(d−1)b2+(d−2)b3+⋯+bd=O(bd)db+(d-1)b^2+(d-2)b^3+\cdots+b^d = O(b^d)

(上层被重复生成,但额外开销不大)

  • 空间复杂度:O(bd)O(bd)(深度界限达到 dd)。

IDS vs BFS 数值对比(b=10,d=5b=10,d=5,解在最右叶)

  • N(IDS)=50+400+3000+20000+100000=123450N(\text{IDS})=50+400+3000+20000+100000=123450
  • N(BFS)=10+100+1000+10000+100000=111100N(\text{BFS})=10+100+1000+10000+100000=111100

重复生成上层的额外成本很小,但换来了线性空间。

⭐ 结论:当搜索空间大、解深度未知时,IDS 是无信息搜索的首选方法 (preferred uninformed search method)。


  • 思想:同时从初态和终态进行 BFS,在中间相遇。
  • 难点:终态可能不好描述(如 n 皇后);从终态出发的前驱函数可能不好定义。
  • 完备性:完备。
  • 最优性:当每条边代价一致时返回最优解;否则不一定。
  • 时间/空间复杂度:O(bd/2)O(b^{d/2})(两个 d/2d/2 深度的搜索)。

第二部分:有信息搜索 (Informed Search) (lec4)

2.1 有信息 vs 无信息

无信息搜索 (Uninformed) 有信息搜索 (Informed)
信息 仅问题定义中的状态信息 问题定义 + 问题的特定知识
别名 盲目搜索 (blind) 启发式搜索 (heuristic search)

⭐ 核心思想:为每个节点定义评价函数 (evaluation function) f(n)f(n)——对"合意性 (desirability)"的估计;每次扩展 ff 最优的未扩展节点。

  • 启发函数 (heuristic function) h(n)h(n):估计状态 nn 距目标的接近程度;针对特定搜索问题设计。
  • 实现:frontier 为按 ff 降序排列的优先级队列 (priority queue)。
  • 是通用 TREE-SEARCH / GRAPH-SEARCH 的实例。
  • 三个评价函数的特例:
评价函数 对应算法
f(n)=g(n)f(n)=g(n) 一致代价 (Uniform Cost)
f(n)=h(n)f(n)=h(n) 贪心 (Greedy)
f(n)=g(n)+h(n)f(n)=g(n)+h(n) A*

其中:

  • g(n)g(n) = 从初始节点到 nn 的实际路径代价 (path cost so far)(向后代价 backward cost)。
  • h(n)h(n) = 从 nn 到目标的估计代价 (estimated cost to goal)(向前代价 forward cost)。

  • 评价函数 f(n)=h(n)f(n)=h(n) = 从 nn 到最近目标的代价估计。
    • Romania 例:hSLD(n)h_{\text{SLD}}(n) = nn 到 Bucharest 的直线距离 (Straight-Line Distance)。
  • 策略:扩展看起来离目标最近的节点。
  • 性质:
维度 性质
完备性 否——可能陷入循环(如 Iasi→Neamt→Iasi→…);在有限空间 + 重复状态检测下完备
时间 O(bm)O(b^m);但好的启发可大幅改进
空间 O(bm)O(b^m)——所有节点都在内存
最优性 否

2.4 A* 搜索 ⭐⭐⭐

评价函数

 f(n)=g(n)+h(n) \boxed{\,f(n)=g(n)+h(n)\,}

  • g(n)g(n) = 到达 nn 的耗散(cost so far)
  • h(n)h(n) = 从 nn 到目标的最低耗散路径的估计(启发函数)
  • f(n)f(n) = 经过 nn 到达目标的总代价估计

可采纳性 (Admissibility) ⭐

⭐ h(n)h(n) 是可采纳的 (admissible) 当且仅当对每个节点 nn:

h(n)≤h∗(n)h(n)\le h^*(n)

其中 h∗(n)h^*(n) 是从 nn 到目标的真实最小代价。并要求 h(n)≥0h(n)\ge 0,且对任何目标 GG 有 h(G)=0h(G)=0。

  • 直觉:可采纳启发式从不过高估计到达目标的代价,即它是乐观的 (optimistic)。
  • 例:hSLDh_{\text{SLD}} 从不高估真实公路距离。

一致性 (Consistency) ⭐

⭐ h(n)h(n) 是一致的 (consistent / monotone) 当且仅当对每个节点 nn、每个由动作 aa 生成的后继 n′n':

h(n)≤c(n,a,n′)+h(n′)h(n)\le c(n,a,n')+h(n')

  • ⭐ 一致性蕴含可采纳性 (consistency implies admissibility)。
  • 若 hh 一致,则沿任何路径 ff 值单调不减:

f(n′)=g(n′)+h(n′)=g(n)+c(n,a,n′)+h(n′)≥g(n)+h(n)=f(n)f(n')=g(n')+h(n')=g(n)+c(n,a,n')+h(n')\ge g(n)+h(n)=f(n)

A* 的最优性定理 ⭐⭐⭐

定理 1(TREE-SEARCH):若 h(n)h(n) 可采纳,则 A* 的 TREE-SEARCH 版本最优。

定理 2(GRAPH-SEARCH):若 h(n)h(n) 一致,则 A* 的 GRAPH-SEARCH 版本最优。

最优性证明(TREE-SEARCH,可采纳情形)⭐

设次优目标 G2G_2 已在 fringe 中,nn 是 fringe 中、位于通向最优目标 GG 的最短路径上的未扩展节点。

  1. f(G2)=g(G2)f(G_2)=g(G_2)(因为 h(G2)=0h(G_2)=0)。
  2. g(G2)>g(G)g(G_2)>g(G)(G2G_2 次优)。
  3. f(G)=g(G)f(G)=g(G)(因为 h(G)=0h(G)=0)。
  4. 故 f(G2)>f(G)f(G_2)>f(G)。
  5. 由可采纳性 h(n)≤h∗(n)h(n)\le h^*(n),且 nn 在到 GG 的最短路上:

f(n)=g(n)+h(n)≤g(n)+h∗(n)≤g(G)=f(G)f(n)=g(n)+h(n)\le g(n)+h^*(n)\le g(G)=f(G)

  1. 因此 f(G2)>f(n)f(G_2)>f(n),A* 永远不会选择 G2G_2 扩展。□\square

A* 的三个版本

  • Tree-search 版本:不检测重复。
  • Graph-search 版本:检测重复。
  • Practical 版本:当发现到达旧节点 nn 的新路径时,若 g(n)g(n) 变得更小,则更新 nn 并让它重新成为待扩展节点(即重新打开 closed 节点 / 路径更新)。这是实际工程中最常用的形式。

f-等值线 (f-contours)

A* 按递增的 ff 值扩展节点,逐步形成"等值线 (contours)"——contour ii 包含所有 f=fif=f_i 的节点,fi<fi+1f_i<f_{i+1}。

A* 扩展哪些节点 ⭐

设 C∗C^* 为最优解代价:

  • A* 扩展所有 f(n)<C∗f(n)<C^* 的节点;
  • A* 扩展部分 f(n)=C∗f(n)=C^* 的节点;
  • A* 不扩展任何 f(n)>C∗f(n)>C^* 的节点。

A* 性质总结

维度 性质
完备性 ✔(除非存在无穷多个 f≤f(G)f\le f(G) 的节点)
时间 仍为指数级;但对给定启发函数是效率最优 (optimally efficient) 的
空间 保存所有节点——A* 的主要缺点(指数级内存)
最优性 ✔(在可采纳 / 一致条件下)

2.5 启发式设计 (Heuristic Design) ⭐⭐⭐

8-puzzle 的两个经典启发式

设 h∗(n)h^*(n) 为真实最少步数:

  • h1(n)h_1(n) = 错位棋子数 (number of misplaced tiles)。
  • h2(n)h_2(n) = 曼哈顿距离之和 (total Manhattan distance) = 所有棋子到其目标位置的水平竖直距离和。

对同一初始状态 SS:h1(S)=8h_1(S)=8,h2(S)=3+1+2+2+2+3+3+2=18h_2(S)=3+1+2+2+2+3+3+2=18。

8-puzzle 平均解步数约 22,分支因子约 3;穷举到深度 22 需 322≈3.1×10103^{22}\approx 3.1\times10^{10}。

支配性 (Dominance) ⭐

⭐ 若对所有 nn 都有 h2(n)≥h1(n)h_2(n)\ge h_1(n)(且两者都可采纳),则称 h2h_2 支配 (dominate) h1h_1,h2h_2 更有利于搜索。

典型搜索开销(平均扩展节点数)对比:

深度 IDS A*(h1h_1) A*(h2h_2)
d=12d=12 3 644 035 227 73
d=24d=24 太多 39 135 1 641

→ 支配性更强的启发式扩展节点数远少于被支配者。

组合多个启发式 ⭐

⭐ 给定任意一组可采纳启发式 {h1,…,hm}\{h_1,\dots,h_m\},

h(n)=max⁡(h1(n),…,hm(n))h(n)=\max(h_1(n),\dots,h_m(n))

仍可采纳,且支配其中每个成员启发式。

松弛问题 (Relaxed Problems) ⭐⭐⭐

⭐ 松弛问题 (relaxed problem):对动作施加更少限制的问题。

  • ⭐ 核心定理:松弛问题最优解的代价,是原问题的一个可采纳启发式(因为去掉限制只会让代价不增)。
  • 关键点:松弛问题的最优解代价 ≤\le 原问题的最优解代价。

8-puzzle 的三种松弛(原规则:棋子可从 A 移到 B,当 A、B 水平/垂直相邻且 B 为空):

松弛 对应启发式
松弛 1:A 与 B 相邻即可(不要求 B 空) h2h_2(曼哈顿距离)
松弛 2:B 为空即可(不要求相邻) —
松弛 3:A → B 无任何限制 h1h_1(错位数)

设计启发式的一般方法:从原问题去掉某些约束得到松弛问题,求其精确最优解作为 hh。

Pattern Database(模式数据库)*

课件正文未直接展开,属 AIMA 标准方法(对照原课件/教材查看):预先存储一组"模式 (patterns)"到目标的最短代价,作为可采纳启发式,常用于 15-puzzle 等大状态空间。

有效分支因子 (Effective Branching Factor)*

AIMA 标准评估指标(对照原课件/教材查看):若 A* 扩展 NN 个节点、解深 dd,定义 b∗b^* 使 N+1=1+b∗+⋯+(b∗)dN+1=1+b^*+\cdots+(b^*)^d;b∗b^* 越接近 1 说明启发式越好,且对同一问题 b∗b^* 在不同 dd 下大致恒定。


2.6 Hybrid A*(应用扩展)*

车辆自主泊车的路径规划算法:以较少换挡次数规划出可行驶轨迹。

  • 搜索状态 (x,y,θ,r)(x,y,\theta,r),rr 表示前进/后退。
  • 动作离散化:max-left / no-turn / max-right。
  • 启发式:
    • non-holonomic without obstacles:忽略障碍但满足可行驶约束(车头朝向连续变化);
    • holonomic with obstacles:考虑障碍但忽略可行驶约束。
  • 最后再做轨迹平滑与优化。

2.7 内存受限与迭代加深的 A*(AIMA 扩展)*

课件正文未直接出现,属 AIMA 标准考点(建议对照教材 Ch3 补充):

  • IDA* (Iterative Deepening A*):把迭代加深思想用到 ff 值上。每轮设 ff 阈值,只扩展 f≤f\le 阈值的节点;下一轮阈值 = 上一轮被剪枝节点的最小 ff。内存 O(bd)O(bd),可采纳 hh 下完备且最优。
  • RBFS (Recursive Best-First Search):递归式最佳优先,用线性内存模拟最佳优先;每个节点记录"可达的最佳 ff 替代值",递归回溯。
  • SMA* (Simplified Memory-bounded A*):A* 的内存受限版——当内存满时丢弃 ff 最差节点,但将其信息回填到父节点,以便日后必要时重新生成。

2.8 局部搜索算法 (Local Search Algorithms) ⭐

适用场景:很多优化问题中,到目标的路径无关紧要,目标状态本身就是解。

  • 状态空间 = “完整配置 (complete configurations)” 的集合(如 n 皇后的一种摆法)。
  • 不断保持单个"当前状态"并尝试改进;常数空间,适合在线与离线搜索。
  • 比喻:“像在浓雾中、患健忘症 (amnesia) 攀登珠峰”——只能看到局部、忘记来路。
  • 问题:依赖初始状态,可能陷入局部极大值 (local maxima)、山肩 (shoulders)、平坦区。
  • 改进:
    • 随机重启爬山 (Random-restart hill climbing):克服局部极大,平凡地完备。
    • 横向随机移动 (random sideways moves):逃出山肩。

8-queens 中的爬山

  • 评价 hh = 互相攻击的皇后对数;某状态 h=17h=17;可能陷入 h=1h=1 的局部最小。
  • 思想:允许少量"坏"移动以逃离局部极大,但逐渐降低其频率(温度 TT 缓慢下降)。
  • ⭐ 理论保证:若 TT 下降足够慢,模拟退火将以趋于 1 的概率找到全局最优。
  • 广泛用于 VLSI 布局、航班调度等。

标准 AIMA 中的接受准则(对照教材):若 ΔE>0\Delta E>0 直接接受;否则以概率 exp⁡(ΔE/T)\exp(\Delta E/T) 接受(ΔE\Delta E 为新状态的值增量)。

  1. 同时跟踪 kk 个状态(而非一个)。
  2. 从 kk 个随机生成的状态开始。
  3. 每轮生成所有 kk 个状态的全部后继。
  4. 若任一为目标则停止;否则从完整后继列表中选最好的 kk 个,重复。
  • ⚠️ 不是 kk 个独立搜索并行运行——发现好状态的搜索会"招募"其他搜索加入。
  • 缺点:kk 个状态常聚集到同一座局部山丘 → 改进:随机选 kk 个后继、偏向好状态(随机束搜索 stochastic beam search)。

2.8.4 遗传算法 (Genetic Algorithms, GA) ⭐

  • 后继由两个父代状态组合产生。
  • 从 kk 个随机生成的状态(种群 population)开始。
  • 状态表示为有限字母表上的串(常为 0/1 串)。
  • 评价函数 = 适应度函数 (fitness function):状态越好值越大。
  • 通过三大操作产生下一代:选择 (selection)、杂交 (crossover)、变异 (mutation)。

8-queens 中的 GA

  • 适应度 = 不互相攻击的皇后对数(min = 0,max = (82)=28\binom{8}{2}=28)。
  • 选择概率正比于适应度,如 24/(24+23+20+11)=31%24/(24+23+20+11)=31\%。

2.9 搜索方法小结

有信息搜索

  • 启发函数估计到目标的最短路径代价;好的启发可极大降低搜索代价。
  • 贪心最佳优先:扩展最小 hh;不完备、不最优。
  • A*:扩展最小 g+hg+h;完备、最优,且(对前向搜索、除并列外)效率最优 (optimally efficient)。
  • 可采纳启发式可由松弛问题的精确解导出。

局部搜索

  • 路径无关紧要;保持单个"当前状态"并改进。
    • 爬山:可能陷入局部极大。
    • 模拟退火:允许坏移动并逐渐降温,可收敛到全局最优。
    • 局部剪枝:同时保留 kk 个状态。
    • 遗传算法:基于种群的选择/杂交/变异。

无信息 vs 有信息(课程结语)

  • 好的启发式搜索能大幅提高搜索性能。
  • 但启发式需要抽取问题相关特征信息,而特征抽取有时困难 → 盲目搜索仍是有用的策略。

好的搜索策略应满足

  • 引起运动——避免原地踏步;
  • 系统——避免兜圈;
  • 运用启发函数——缓解组合爆炸。



📋 本章速览补充:以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。

3 问题求解与无信息搜索

问题建模,BFS,UCS,DFS,DLS,IDS,手画搜索树

目录:0. 快速定位 · 1. 基本概念 · 2. 无信息搜索算法 · 3. 建模与手算模板 · 4. 考试速查

0. 快速定位

  • 题目问"怎样表示问题":看"问题形式化五要素"。
  • 题目问"哪个算法最优/完备/省空间":看"搜索算法对比表"。
  • 题目给搜索树问下一步扩展谁:看"队列规则"。
  • 题目要求自己建模,如 2020 三位数变换题:看"状态必须包含什么"。

1. 基本概念

1.1. 问题求解智能体

问题求解智能体通常是 goal-based agent:先给出目标,再把当前世界抽象成状态空间,在状态空间中搜索一条从初始状态到目标状态的行动序列。

课件特别强调:这是 offline problem solving,即先搜索完整计划,再闭眼执行。若执行中才获得新信息,则属于 online problem solving,不是本章重点。

1.2. 问题形式化五要素

一个良定义问题通常包含:

  1. 状态空间 (state space):所有可能状态的集合。
  2. 初始状态 (initial state):搜索起点。
  3. 行动/后继函数 (actions/successor function):在某状态能做什么,做完到哪里。
  4. 目标测试 (goal test):判断状态是否满足目标。
  5. 路径代价 (path cost):路径总代价,通常是单步代价累加。

标准写法:Problem=(States, InitialState, Actions, TransitionModel, GoalTest, PathCost)\text{Problem} = (\text{States, InitialState, Actions, TransitionModel, GoalTest, PathCost})。课件有时把后继函数写成:S(x)=⟨action, successor state⟩,…S(x) = \langle \text{action, successor state} \rangle, \dots,其中单步代价写作 c(x,a,y)≥0c(x, a, y) \geq 0。

1.2.1. 状态与节点不要混淆

  • 状态 (state):世界的一种配置,例如"人在 Arad",“水壶水量为 (0,8,3)(0,8,3)”。
  • 节点 (node):搜索树中的数据结构,通常包含:state、parent、action、path-cost g(n)g(n)、depth。

同一个状态可能在搜索树中出现多次,因为它可能由不同路径到达。

考试常见坑:如果题目有"上一步不能操作同一位"之类限制,这个限制会影响未来后继,因此必须放进状态,而不只是节点注释。

例:2020 三位数搜索题。状态不能只写三位数 567,还要写"上一次改变的是哪一位":

1
state = (number, last_changed_digit)

初始状态可写:(567, None),否则无法判断下一步是否违反"连续两步不可操作同一位"。

1.3. 搜索树与状态空间图

状态空间图:每个状态是一个节点;每个合法行动是边;图可能有环。

搜索树:根是初始状态;每条从根到某节点的路径表示一个候选计划;节点可以重复包含同一个状态;实际问题通常无法展开整棵树。

  • 树搜索不检查重复状态,容易陷入环。
  • 图搜索使用 explored/closed 集合,避免重复扩展。

1.4. 通用搜索框架

1
2
3
4
5
6
7
8
9
10
11
12
frontier = [initial node]
explored = empty
while frontier not empty:
n = choose_node(frontier, strategy)
if goal_test(n.state): return solution_path(n)
add n.state to explored
for each successor s of n.state:
if s not in explored/frontier:
add child node to frontier
else if new path is better:
update frontier
return failure

不同搜索算法本质区别在于 choose_node 和 frontier 的组织方式。

  • 生成 (Generate):计算出一个后继节点,并把它放进 frontier 里等待。
  • 扩展 (Expand):从 frontier 中按照 choose_node 取出要扩展的节点,并计算它所有的后继节点。

1.5. 评价搜索策略的四个指标

  • 完备性 (completeness):若存在解,是否一定能找到。
  • 最优性 (optimality):是否保证找到最低路径代价的解。
  • 时间复杂度:通常用分支因子 bb、最浅目标深度 dd、最大深度 mm 表示。
  • 空间复杂度:搜索过程中最多存多少节点。

符号:

  • bb:branching factor,每个节点最多后继数。
  • dd:最浅目标深度。
  • mm:搜索树最大深度,可能无限。
  • C∗C^*:最优解代价。
  • ε\varepsilon:最小正单步代价。

2. 无信息搜索算法

2.1. 无信息搜索算法对比表

无信息搜索仅使用从问题定义中获取到的信息(初始状态,状态转移规则,目标状态测试条件),没有任何其他启发式信息。

算法 选择规则 完备 最优 时间 空间 适用
BFS 最浅节点,FIFO 是,若 bb 有限 是,若单步代价相同 O(bd+1)O(b^{d+1}) O(bd+1)O(b^{d+1}) 单位代价最短步数
UCS 最小 g(n)g(n) 是,若代价 ≥ε\geq \varepsilon 是 O(b1+⌊C∗/ε⌋)O(b^{1+\lfloor C^*/\varepsilon \rfloor}) 同时间量级 非单位代价最优路径
DFS 最深节点,LIFO 否,可能进入无限分支 否 O(bm)O(b^m) O(bm)O(bm) 空间很紧、只想找任意解
DLS 深度限制 ll 的 DFS 若 l≥dl \geq d 是 否 O(bl)O(b^l) O(bl)O(bl) 已知深度上界
IDS 逐步加深 DLS 是 是,若单步代价相同 O(bd)O(b^d) O(bd)O(bd) 单位代价且想省空间
  • 2021 选择题:所有边代价为 1,没有启发式,又要求省空间并保证最优,选迭代加深 DFS。
  • 2020 判断题:BFS 是 UCS 的特例。若每条边单步代价相同,UCS 按 gg 递增扩展,等价于按深度扩展,因此正确。

2.2. 广度优先搜索(BFS)

BFS 用队列:

1
2
1. pop from front
2. push children to back

性质:

  • 按深度逐层扩展。
  • 当所有边代价相同,第一次找到目标就是最浅目标,也是最优解。
  • 空间爆炸严重,因为要保存整层 frontier。

考试手算规则:

  1. 从左到右生成子节点。
  2. 同层先生成者先扩展。
  3. 若题目规定并列按字母序,按题目来。

2.3. 代价一致搜索(UCS)

BFS 的升级版,应对每步代价不同的情况。UCS 每次扩展 g(n)g(n) 最小的节点,使用优先队列来选出 g(n)g(n) 最小的节点:

g(n)≜从初始节点到 n 的已知路径代价=父节点 g+cost(p,n)g(n) \triangleq \text{从初始节点到 } n \text{ 的已知路径代价} = \text{父节点 } g + \text{cost}(p, n)

操作步骤:

  1. 初始化:将起点放入优先队列,累计代价设为 0。准备一个空的"已探索集合"(记录去过的地方,防止绕圈)。
  2. 循环检查队列:
    • 如果优先队列空了,说明找不到路,宣告失败。
    • 弹出队列中代价最小的节点。
    • 目标测试:如果这个节点是终点,宣告成功!直接输出到达这里的路径。
  3. 扩展节点:
    • 将刚弹出的节点加入"已探索集合"。
    • 观察它的所有邻居节点,计算到达每个邻居的新累计代价(当前节点累计代价 + 走到邻居的单步代价)。
  4. 状态更新(UCS 最关键的一步):
    • 如果邻居既不在队列里,也不在已探索集合里 → 直接作为新发现加入优先队列。
    • 如果邻居已经在优先队列里,但你刚算出的新代价比队列里记录的代价更低 → 发现了一条抄近道的路!立即更新队列里该节点的代价和父节点信息。
  5. 返回第 2 步继续循环。

性质:

  • 只要所有单步代价非负,且存在最小正代价,就完备。
  • 保证最优。
  • BFS 是"所有单步代价相同"的 UCS。

关键细节:

  • 目标测试应该在弹出 frontier 准备扩展时做,而不是刚生成目标时就停。因为刚生成的目标路径不一定是最低代价。
  • 若发现到同一状态的更低代价路径,需要更新 frontier。

2.4. 深度优先搜索(DFS)

DFS 用栈:

1
2
1. pop from top
2. push children so that leftmost child is expanded first

性质:

  • 空间低,只保存当前路径和旁支。
  • 不完备:无限深路径会卡住。
  • 不最优:先找到的深层解可能代价很差。

适合:状态空间很大但解很深;只需要一个解;有深度上界或不会出现无限分支。

2.5. 深度有限搜索(DLS)

DLS 给 DFS 加深度限制 ll:

  • 深度超过 ll 不再展开。
  • 可以返回三种结果:success、failure、cutoff。
  • 若 l<dl < d,找不到解;若 ll 太大,又退化为 DFS。

2.6. 迭代加深搜索(IDS)

IDS 依次运行:

1
2
3
4
DLS(limit=0)
DLS(limit=1)
DLS(limit=2)
...

为什么重复搜索仍然不亏?因为树中绝大多数节点在最深层,浅层重复展开的代价相对小。

性质:

  • BFS 的完备性和单位代价最优性。
  • DFS 的低空间复杂度。
  • 单位代价搜索中非常常考。

2.7. 双向搜索

思路:同时从初始状态和目标状态搜索,直到两个 frontier 相遇。

复杂度:理想情况下从 O(bd)O(b^d) 降为 O(bd/2)O(b^{d/2})。

限制:

  • 必须能反向生成前驱。
  • 目标状态要明确。
  • 要能快速检测两个 frontier 是否相交。

3. 建模与手算模板

3.1. 状态空间建模模板

3.1.1. 罗马尼亚路径规划

  • 状态:所在城市。
  • 初始状态:Arad。
  • 行动:沿道路开往相邻城市。
  • 转移模型:Result(In(Arad),Go(Sibiu))=In(Sibiu)\text{Result}(\text{In(Arad)}, \text{Go(Sibiu)}) = \text{In(Sibiu)}。
  • 目标测试:是否在 Bucharest。
  • 路径代价:道路距离之和。

3.1.2. 水壶问题

三壶容量为 12、8、3,加水目标 1 加仑:

1
2
3
4
5
6
state = (V12, V8, V3)
0 <= Vi <= Ci
initial = (0,0,0)
goal = any Vi == 1
actions = Fill(i), Empty(i), Pour(i,j)
path cost = 每步 1

倒水动作:

1
2
3
amount = min(Vi, Cj - Vj)
Vi' = Vi - amount
Vj' = Vj + amount

3.1.3. 传教士与野人

1
2
3
state = (M_left, C_left, Boat_left)
initial = (3,3,1)
goal = (0,0,0)

合法状态必须满足两岸安全:

1
2
M_left == 0 or M_left >= C_left
M_right == 0 or M_right >= C_right

动作:Cross(m,c),  1≤m+c≤2\text{Cross}(m, c),\; 1 \leq m + c \leq 2。该题检查重复状态非常必要,因为动作可逆,树搜索会反复过河。

3.2. 2020 三位数 A* 题的状态设计

题意:从三位数 SS 到 GG,每步对某一位加 1 或减 1,不能进位/借位,不能进入 bad 集合,连续两步不能改同一位。

状态必须写:state = (digits, last_position),例如:

1
2
3
(567, None)
(667, hundreds)
(677, tens)

后继函数:

1
2
3
4
5
6
7
8
for pos in {百位, 十位, 个位}:
if pos == last_position: continue
for delta in {-1,+1}:
new_digit = digit[pos] + delta
if 0 <= new_digit <= 9:
new_number = replace(number, pos, new_digit)
if new_number not in bad:
successor = (new_number, pos)

路径代价:

1
2
每步 cost = 1
g(n) = 已移动步数

可采纳启发函数:h(n)=∣当前百位−目标百位∣+∣当前十位−目标十位∣+∣当前个位−目标个位∣h(n) = |\text{当前百位} - \text{目标百位}| + |\text{当前十位} - \text{目标十位}| + |\text{当前个位} - \text{目标个位}|。

理由:每一步只能改变一位且只能改变 1,因此至少需要各位数字差值之和这么多步。bad 集合和"不可连续改同一位"只会增加所需步数,不会让它更少。

若想更紧但仍简单,可考虑由于"不能连续改同一位"造成的额外等待,但考试一般写曼哈顿数字差即可。

3.3. 搜索题手算答题框架

对任何搜索树题:

  1. 写 frontier 的排序依据。
  2. 写已扩展节点。
  3. 对每个 frontier 节点标关键值:
    • BFS/DFS:深度和生成顺序。
    • UCS:g(n)g(n)。
    • Greedy:h(n)h(n)。
    • A*:f(n)=g(n)+h(n)f(n)=g(n)+h(n)。
  4. 选最优先节点。
  5. 并列时按题目规则:左到右、字母序、深度优先等。

3.4. 搜索树绘制

按照题目给定的扩展顺序。扩展一个结点时,给出所有合法的后继结点;节点按照扩展顺序进行标号,只有被扩展的节点标号,目标节点被扩展时停止。

4. 考试速查

4.1. 常见判断题

  • BFS 在单位代价下最优:对。
  • DFS 不一定完备:对,可能无限深。
  • DFS 扩展节点一定不少于 A*:错,具体取决于图和启发式。
  • UCS 可以处理非单位代价并保证最优:对,要求非负代价。
  • 图搜索比树搜索一定更快:不绝对,但避免重复状态通常更稳。

4.2. 最后一分钟版

  • 问题形式化:状态、初始、行动/转移、目标测试、路径代价。
  • 节点比状态多:父节点、动作、路径代价、深度。
  • BFS:单位代价最优,空间爆炸。
  • UCS:按 gg,非负代价最优。
  • DFS:省空间,不完备不最优。
  • IDS:单位代价最优且省空间,考试很爱。
  • 有历史限制的题,历史变量要放入状态。

4 有信息搜索

A*,启发式函数,局部搜索

目录:0. 快速定位 · 1. 最佳优先与 A* 基础 · 2. 启发式性质与证明 · 3. 局部搜索 · 4. 考试速查

0. 快速定位

  • 手算 A*:看"A* 搜索流程"和"罗马尼亚例题模板"。
  • 判断启发式是否 admissible/consistent:看"两个定义"。
  • 多个启发式比较:看"启发式支配关系"。
  • 局部搜索:看"爬山/模拟退火/束搜索/遗传算法"。

1. 最佳优先与 A* 基础

最佳优先搜索维护一个优先队列 frontier,每次扩展评价函数 f(n)f(n) 最小的节点:

1
2
3
4
5
6
7
best_first_search(problem, f):
frontier = priority queue ordered by f
insert initial node
while frontier not empty:
n = pop_min(frontier)
if goal(n): return solution
expand n and insert/update children

不同的 f(n)f(n) 得到不同算法:

  • 贪心最佳优先搜索:f(n)=h(n)f(n)=h(n)。
  • A* 搜索:f(n)=g(n)+h(n)f(n)=g(n)+h(n)。
  • UCS:f(n)=g(n)f(n)=g(n)。

1.2. 启发函数 h(n)

h(n)h(n) 估计从节点 nn 到目标的最小剩余代价,如果 nn 是目标,则 h(n)=0h(n)=0。

例:罗马尼亚地图中,h(n)h(n) 可取城市到 Bucharest 的直线距离。启发式越接近真实剩余代价 h∗(n)h^*(n),搜索越少;但如果高估,A* 最优性可能丢失。

评价函数:f(n)=h(n)f(n) = h(n)。

特点:

  • 只看"离目标看起来多近"。
  • 通常很快。
  • 不保证最优。
  • 在图搜索中若避免重复,有限状态空间下完备;树搜索遇到环或无限空间不一定完备。

常见错误:贪心不看已经走过多远,所以可能为了小 hh 绕远路。

评价函数:f(n)=g(n)+h(n)f(n) = g(n) + h(n),其中:

  • g(n)g(n):从初始状态到 nn 的已知实际路径代价。
  • h(n)h(n):从 nn 到目标的估计最小剩余代价。
  • f(n)f(n):经过 nn 到目标的总路径代价估计。

A* 每次扩展 ff 最小的节点。

1.5. A* 搜索流程

1
2
3
4
5
6
7
8
9
10
11
12
frontier = priority queue by f=g+h
explored = empty
while frontier not empty:
n = pop node with smallest f
if goal(n): return path
add n.state to explored
for each successor child:
compute g(child), h(child), f(child)
if child.state not seen:
push child
else if new g is smaller:
update parent/g/f

若题目要求手算,每个节点写:Node: g=?, h=?, f=g+h=?。并列规则按题目给定;若没给,一般按生成顺序或字母序说明即可。

2. 启发式性质与证明

2.1. 可采纳启发式 Admissible Heuristic

定义:0≤h(n)≤h∗(n)0 \leq h(n) \leq h^*(n),即永不高估真实最小剩余代价。

结论:

  • 树搜索 A* 使用可采纳启发式,保证最优。
  • 图搜索 A* 通常还需要一致性来简单保证最优;若只可采纳但不一致,需要允许节点重开。

典型可采纳例子:

  • 八数码错位块数:不在同一位置的块的数目。
  • 八数码曼哈顿距离,水平竖直移动,由于每次只能移动一个棋子,不能交换两枚棋子的位置。
  • 地图路径中的直线距离。
  • 三位数变换题的各位数字差绝对值之和。

2.2. 一致启发式 Consistent Heuristic

定义,也叫单调性:h(n)≤c(n,a,n′)+h(n′)h(n) \leq c(n, a, n') + h(n')(通过 aa 到达 n′n'),并且 h(goal)=0h(\text{goal}) = 0。

直观:估计距离满足三角不等式。

重要结论:一致性 ⇒ 可采纳。

证明套路:沿着从 nn 到目标的最优路径反复套用三角不等式,中间的 hh 抵消,得到 h(n)≤h∗(n)h(n) \leq h^*(n)。

一致性的好处:

  • A* 图搜索第一次从 frontier 弹出某状态时,该状态的最优 gg 已确定。
  • 不需要重新打开 closed 节点。

2.3. 可采纳但不一致例子

构造路径:A→1B→10GA \xrightarrow{1} B \xrightarrow{10} G

真实代价:h∗(A)=11,  h∗(B)=10,  h∗(G)=0h^*(A) = 11,\; h^*(B) = 10,\; h^*(G) = 0。

定义:h(A)=10,  h(B)=5,  h(G)=0h(A) = 10,\; h(B) = 5,\; h(G) = 0。

  • 可采纳:10≤11,  5≤1010 \leq 11,\; 5 \leq 10。
  • 不一致:

h(A)≤c(A,B)+h(B)10≤1+5(错)h(A) \leq c(A,B) + h(B) \\ 10 \leq 1 + 5 \quad \text{(错)}

2.4. 启发式支配关系(占优)

若两个启发式都可采纳,且对所有节点:h2(n)≥h1(n)h_2(n) \geq h_1(n),则 h2h_2 支配 h1h_1,通常扩展节点不多于 h1h_1,因为它更接近真实代价。

2021 判断题:若 h1h_1、h2h_2 都可采纳:

h3(n)=max⁡(h1(n),h2(n))h4(n)=min⁡(h1(n),h2(n))h_3(n) = \max(h_1(n), h_2(n)) \\ h_4(n) = \min(h_1(n), h_2(n))

h3h_3 仍可采纳,而且支配 h4h_4。所以在 A* 中通常更好。但"更好"若被严格理解为所有情况下扩展节点严格更少,则不一定严格;考试一般判断"max 不差于 min"。

2.5. A* 最优性证明核心

设最优解代价为 C∗C^*。若 hh 可采纳,则最优路径上任意 frontier 节点 nn 有:

f(n)=g(n)+h(n)≤g(n)+h∗(n)=C∗f(n) = g(n) + h(n) \leq g(n) + h^*(n) = C^*

任何次优目标 G′G' 的:f(G′)=g(G′)=C′>C∗f(G') = g(G') = C' > C^*,所以 A* 不会在所有最优路径节点被处理前选中次优目标。

2.6. 加权启发式路径算法

作业题给:f(n)=(2−w)g(n)+wh(n)f(n) = (2-w)g(n) + wh(n)。

若 0≤w<20 \leq w < 2,除以正数 (2−w)(2-w):f′(n)=g(n)+[w/(2−w)]h(n)f'(n) = g(n) + [w/(2-w)]h(n)。

为了保证最优,启发项系数不能超过 1:

w2−w≤1  ⇒  w≤1\frac{w}{2-w} \leq 1 \;\Rightarrow\; w \leq 1

所以 0≤w≤10 \leq w \leq 1 保证最优。

特殊情况:

  • w=0w=0:f=2gf=2g,等价 UCS。
  • w=1w=1:f=g+hf=g+h,标准 A*。
  • w=2w=2:f=2hf=2h,等价贪心搜索。

2.7. 高估不超过 c 的启发式

若:h(n)≤h∗(n)+ch(n) \leq h^*(n) + c,则 A* 返回解代价 C′C' 满足:C′≤C∗+cC' \leq C^* + c。

证明模板:

  1. A* 终止时选择目标 G′G',所以 C′=f(G′)C'=f(G')。
  2. 最优路径上存在 frontier 节点 nn。
  3. f(n)=g(n)+h(n)≤g(n)+h∗(n)+c=C∗+cf(n)=g(n)+h(n) \leq g(n)+h^*(n)+c = C^*+c。
  4. A* 选择 G′G',所以 C′=f(G′)≤f(n)C'=f(G') \leq f(n)。
  5. 得 C′≤C∗+cC' \leq C^*+c。

2.8. 2020 三位数 A* 手算模版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(1) 567(0) [g=0, h=3, f=3]
├── 467(1) [g=1, h=4, f=5]
├── 557(2) [g=1, h=4, f=5]
├── 568(3) [g=1, h=4, f=5]
├── 566(3) [g=1, h=4, f=5]
└── (2) 577(2) [g=1, h=2, f=3]
├── 477(1) [g=2, h=3, f=5]
├── 578(3) [g=2, h=3, f=5]
├── 576(3) [g=2, h=3, f=5]
└── (3) 677(1) [g=2, h=1, f=3]
├── 678(3) [g=3, h=2, f=5]
├── 676(3) [g=3, h=2, f=5]
└── (4) 687(2) [g=3, h=2, f=5] <-- 注:此步 f=5 且 g=3 的节点有三个,这里随机选
├── 587(1) [g=4, h=3, f=7]
├── 688(3) [g=4, h=3, f=7]
├── 686(3) [g=4, h=3, f=7]
└── (5) 787(1) [g=4, h=1, f=5]
├── 797(2) [g=5, h=2, f=7]
├── 788(3) [g=5, h=2, f=7]
├── 786(3) [g=5, h=2, f=7]
└── (6) 777(2) [g=5, h=0, f=5] <-- 目标节点

2.9. 2021 搜索树题通法

题目给一棵已经扩展 A、B 的树,问不同算法下一步扩展谁:

  • DFS:看当前最深、最左/最右规则。
  • UCS:算 g(n)g(n),选最小。
  • Greedy:看 h(n)h(n),选最小。
  • A*:算 f(n)=g(n)+h(n)f(n)=g(n)+h(n),选最小。

注意:题目常规定"子节点从左到右展开;并列按字母序",必须照做。

3. 局部搜索

3.1. Local Search 局部搜索

局部搜索不关心完整路径,只关心当前状态本身。适合:

  • 状态空间巨大。
  • 只要最终配置,不需要行动序列。

典型:N 皇后、排课、布局优化。

核心思想:

1
2
3
current = some state
repeat:
move to a neighbor according to objective function

3.2. Hill-Climbing 爬山法

每步选择邻居中评价最好的状态。

优点:内存极小;实现简单。

缺点:

  • 局部最优 (local maximum/minimum)。
  • 平台 (plateau):邻居评价一样,走不动。
  • 山脊 (ridge):需要一串绕行才能上升,单步贪心困难。

变体:

  • 随机重启爬山:从多个随机初始点开始。
  • first-choice hill climbing:随机看邻居,找到更好就走。
  • stochastic hill climbing:按改进程度概率选择。

3.3. Simulated Annealing 模拟退火

允许以一定概率走向更差状态,避免局部最优。接受更差状态的概率:P=exp⁡(ΔE/T)P = \exp(\Delta E / T)。若是最大化问题,ΔE=value(new)−value(current)\Delta E = \text{value(new)} - \text{value(current)},更差时为负。温度 TT 越高越容易接受坏动作,越低越像爬山。

流程:

1
2
3
4
5
6
7
8
current = initial
for t = 1..:
T = schedule(t)
if T == 0: return current
next = random neighbor
DeltaE = value(next) - value(current)
if DeltaE > 0: current = next
else current = next with probability exp(DeltaE/T)

理论:若降温足够慢,可收敛到全局最优;实际中用于近似优化。

3.4. Local Beam Search 局部束搜索

同时保留 kk 个状态:

1
2
3
4
start with k random states
repeat:
generate all successors of k states
choose best k among all successors

区别于随机重启:

  • 随机重启是多条搜索互不交流。
  • 束搜索中好的状态会占据资源,信息会共享。

缺点:容易所有束集中到同一区域,失去多样性。

3.5. Genetic Algorithm 遗传算法

基本元素:

  • 个体:候选解,通常编码为字符串。
  • 适应度函数 (fitness):评价个体好坏。
  • 选择 (selection):适应度高的更容易繁殖。
  • 交叉 (crossover):两个父代片段组合。
  • 变异 (mutation):随机修改少量基因。

流程:

1
2
3
4
5
6
7
population = random individuals
repeat:
evaluate fitness
select parents
crossover
mutate
form next generation

优点:全局探索能力强。缺点:参数多、收敛慢、不保证最优。

4. 考试速查

4.1. 常见判断题

  • 可采纳启发式永不高估:对。
  • 一致启发式一定可采纳:对。
  • 可采纳启发式一定一致:错。
  • max⁡(h1,h2)\max(h_1, h_2) 若二者可采纳,仍可采纳:对。
  • 贪心最佳优先搜索一定最优:错。
  • A* 中 gg 是已经走过的代价,hh 是估计剩余代价:对。

4.2. 最后一分钟版

  • Greedy:f=hf=h,快但不最优。
  • A*:f=g+hf=g+h,hh 可采纳/一致时保证最优。
  • Admissible:h≤h∗h \leq h^*。
  • Consistent:h(n)≤c(n,n′)+h(n′)h(n) \leq c(n, n') + h(n')。
  • 一致推出可采纳。
  • max 组合启发式比 min 更强。
  • 局部搜索不保路径,只保当前状态;爬山怕局部最优,退火能偶尔走差。

Ch5 约束满足与 SAT (Constraint Satisfaction & SAT)

课件:lec5.pdf (约束满足问题 / CSP) + sat.pdf (SAT 问题)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig),CSP 部分 Ch 6;SAT 部分补充讲义
教师:吉建民,USTC


0. 本章概述

本章把 约束满足问题 (Constraint Satisfaction Problems, CSP) 与 布尔可满足性问题 (Boolean Satisfiability, SAT) 统一在"约束"这一主题下:CSP 给出一种形式化表示语言(变量 + 值域 + 约束),让通用算法比标准搜索更强;SAT 则是 CSP 的一个特例(布尔变量 + 范式约束),也是第一个被证明为 NP-complete 的问题,是当代"通用问题求解中间语言"。二者共享同一族核心技术:回溯搜索、约束传播、冲突驱动学习、局部搜索。

子主题 核心内容 重要程度
CSP 形式化定义 三元组 ⟨X, D, C⟩;赋值/相容/完备/解 ⭐⭐⭐
CSP 分类体系 离散/连续;有限/无限值域;一元/二元/高阶/软约束 ⭐⭐
约束图与问题结构 二元 CSP 约束图;连通分量分解;树结构线性可解 ⭐⭐⭐
回溯搜索 (Backtracking) 可交换性 → 单变量 DFS;n-queens ≈ 25 ⭐⭐⭐
启发式 MRV / 度启发式 / 最少约束值 (LCV) ⭐⭐⭐
前向检验与约束传播 Forward checking;节点/弧/路径相容;AC-3 算法 ⭐⭐⭐
k-相容与强 k-相容 k-consistent / strongly k-consistent;全局约束 Alldiff ⭐⭐
树结构 CSP 算法 拓扑排序 + 反向弧相容 → O(nd²) ⭐⭐⭐
树分解 (Tree Decomposition) 近树结构;分解为连通子问题 ⭐⭐
局部搜索 (min-conflicts) 完全状态 + 最小冲突启发;4-queens / 3-SAT ⭐⭐⭐
SAT 定义与 CNF 布尔/命题可满足性;合取范式;k-SAT ⭐⭐⭐
计算复杂性与相变 Cook 定理;2-SAT (P) / 3-SAT (NPC);相变 c₃≈4.28 ⭐⭐⭐
DPLL 算法 单元传播 + 纯文字消去 + 二叉分支;多项式空间 ⭐⭐⭐
DPLL 增强:预处理 / Look-ahead / Conflict-driven 蕴含图、SCC 化简;MOM/JW/Satz;backjumping、CDCL ⭐⭐⭐
局部搜索求解 SAT GSAT、WalkSAT;不能证明不可满足 ⭐⭐⭐
SAT Solvers GRASP、zChaff、MiniSAT、mach_dl;VSIDS、two-watched-literals ⭐⭐
SAT 应用:硬件验证 Model Checking;BMC 转 SAT;安全/活性性质 ⭐⭐
SAT 扩展 SMT(NP-complete)、QBF(PSPACE-complete) ⭐⭐
计算复杂性补遗 P / NP / NP-hard / NP-complete;图灵机;P ?= NP ⭐⭐

第一部分:约束满足问题 (CSP)

1.1 什么是 CSP

与标准搜索的对比

  • 标准搜索问题 (standard search problem):状态是"黑盒 (black box)"——任何支持目标测试、评价函数、后继函数的数据结构均可。
  • CSP:
    • 状态由变量 XiX_i 及其取自值域 (domain) DiD_i 的值定义;
    • 目标测试是一组约束 (constraints),规定变量子集的合法取值组合;
    • 是一种形式化表示语言 (formal representation language),允许设计通用 (general-purpose,而非问题特定) 的、比标准搜索更强的算法。

⭐ CSP 形式化定义

一个约束满足问题由三个部分 X,D,CX, D, C 构成:

  • XX:变量集 {X1,…,Xn}\{X_1,\dots,X_n\}。
  • DD:值域集 {D1,…,Dn}\{D_1,\dots,D_n\},每个 DiD_i 是 XiX_i 的合法取值集合 {v1,…,vk}\{v_1,\dots,v_k\}。
  • CC:约束集。每个约束 Ci=⟨scope,rel⟩C_i=\langle \text{scope},\text{rel}\rangle:
    • scope:参与该约束的变量元组;
    • rel:定义这些变量可取值组合的关系 (relation)。
    • 关系既可显式枚举所有满足元组,也可表示为一个抽象关系,支持"测试某元组是否属于"和"枚举成员"两种操作。

状态、赋值与解

  • 状态 (state):对部分或全部变量的赋值 {Xi=vi, Xj=vj,… }\{X_i=v_i,\,X_j=v_j,\dots\}。
  • 相容 (consistent / legal) 赋值:不违反任何约束的赋值。
  • 完备赋值 (complete assignment):每个变量都被赋值。
  • 部分赋值 (partial assignment):只给部分变量赋值。
  • ⭐ CSP 的解 (solution) = 相容且完备的赋值 (a consistent, complete assignment)。

1.2 经典示例

地图着色 (Map-Coloring)

  • 变量 X={WA,NT,Q,NSW,V,SA,T}X=\{\text{WA},\text{NT},\text{Q},\text{NSW},\text{V},\text{SA},\text{T}\}(澳大利亚各州)。
  • 值域 Di={red,green,blue}D_i=\{\text{red},\text{green},\text{blue}\}。
  • 约束:相邻区域颜色不同。

    C={SA≠WA, SA≠NT, …, NSW≠V}C=\{\text{SA}\neq\text{WA},\,\text{SA}\neq\text{NT},\,\dots,\,\text{NSW}\neq\text{V}\}

    其中 SA≠WA\text{SA}\neq\text{WA} 是 ⟨(SA,WA), SA≠WA⟩\langle(\text{SA},\text{WA}),\,\text{SA}\neq\text{WA}\rangle 的简写,可枚举为
    {(red,green),(red,blue),(green,red),(green,blue),(blue,red),(blue,green)}\{(\text{red},\text{green}),(\text{red},\text{blue}),(\text{green},\text{red}),(\text{green},\text{blue}),(\text{blue},\text{red}),(\text{blue},\text{green})\}。
  • 解例:{WA=red,NT=green,Q=red,NSW=green,V=red,SA=blue,T=green}\{\text{WA}=\text{red},\text{NT}=\text{green},\text{Q}=\text{red},\text{NSW}=\text{green},\text{V}=\text{red},\text{SA}=\text{blue},\text{T}=\text{green}\}。

约束图 (Constraint Graph)

  • 二元 CSP (Binary CSP):每个约束只涉及两个变量。
  • 约束图:节点 = 变量,弧 = 约束。
  • 通用 CSP 算法利用图结构加速搜索(例:Tasmania 是独立子问题)。

密码算术 (Cryptarithmetic)

  • 高阶约束示例:列约束涉及进位辅助变量 X1,X2,X3X_1,X_2,X_3(十/百/千位的进位)。

1.3 CSP 的分类体系

按变量类型分

类型 值域 规模/可解性
离散变量 / 有限值域 (finite domains) 有限集 nn 变量、值域大小 dd → O(dn)O(d^n) 完备赋值;含 Boolean CSP / SAT (NP-complete)
离散变量 / 无限值域 (infinite domains) 整数、字符串等 需要约束语言;线性约束可解,非线性不可判定 (undecidable);如作业调度
连续变量 (continuous variables) 实数 线性约束可由线性规划 (LP) 在多项式时间求解;如哈勃望远镜观测时刻

按约束种类分

  • 一元约束 (unary):涉及单变量,如 SA≠green\text{SA}\neq\text{green}。
  • 二元约束 (binary):涉及一对变量,如 SA≠WA\text{SA}\neq\text{WA}。
  • 高阶约束 (higher-order):涉及 3 个或更多变量,如密码算术列约束。
  • 偏好 / 软约束 (preferences / soft constraints):带代价,如 “red 优于 green”——导向约束优化问题 (constrained optimization problems)。

现实世界 CSP

分配问题(排课、审稿分配)、时间表、硬件配置、交通调度、工厂排程、平面布置 (floorplanning) 等;许多现实问题含实值变量。


标准搜索的增量形式化 (incremental formulation)

  • 初始状态:空赋值 ∅\emptyset。
  • 后继函数:给某未赋值变量赋一个不与当前赋值冲突的值;无合法值则失败。
  • 目标测试:当前赋值完备。
  • 性质:所有 CSP 一致;解都在深度 nn;路径无关 → 可用 DFS;分支因子 b=(n−l)db=(n-l)d,共 n!⋅dnn!\cdot d^n 叶。

⭐ 可交换性 (commutativity) 与回溯搜索

  • 变量赋值可交换:(WA=red then NT=green)(\text{WA}=\text{red}\,\text{then}\,\text{NT}=\text{green}) 等价于 (NT=green then WA=red)(\text{NT}=\text{green}\,\text{then}\,\text{WA}=\text{red})。
  • 因此每个节点只给单个变量赋值:b=db=d,叶数 dnd^n。
  • ⭐ 回溯搜索 = 对 CSP 的单变量赋值深度优先搜索;是 CSP 的基本无信息算法 (basic uninformed algorithm)。
  • 能力:可解 n≈25n\approx 25 的 n-queens。

1.5 提升回溯效率的启发式

① 选哪个变量?—— 启发式选变量

最小剩余值(MRV, Minimum Remaining Values):

  • 选择合法取值最少的变量(“最受约束的变量”)
  • 思想:早期失败(fail-fast),尽早发现死胡同
    度启发式(Degree Heuristic):
  • 当 MRV 出现平局时,选择对剩余变量约束最多的变量
  • 即优先解决"牵连最多"的变量

② 值的顺序?—— 最少约束值(Least Constraining Value, LCV)

  • 给定变量已选定,选对剩余变量排除值最少的值。
  • 注意:计算此启发式本身需要一定开销。
  • 与 MRV/LCV 组合可使 1000-queens 变得可行。

③ 能否提前检测失败?—— 前向检验 + 约束传播

前向检验 (Forward Checking)
  • 思想:跟踪未赋值变量的剩余合法值;当任何变量无合法值时终止搜索。
  • 比纯回溯更早发现失败,但不能发现所有早期失败(例如 NT 和 SA 不能同为 blue,前向检验不一定能立刻察觉)。
⭐ 约束传播 (Constraint Propagation)
  • 定义:利用约束减少某变量合法值,进而减少其他变量合法值,如此反复。
  • 比前向检验更强:反复在局部强制约束。
一致性层次 含义
节点一致性 变量的所有值满足一元约束
弧一致性(Arc Consistency) 变量 X 对 Y 弧一致:X 的每个取值都能在 Y 中找到满足二元约束的对应值
路径一致性(Path Consistency) 对 {Xi, Xj} 的每个一致赋值,都能找到 Xm 的赋值使其满足所有约束
k-一致性 对任意 k-1 个变量的任何一致赋值,总能给第 k 个变量找到一致的值
强 k-一致性 k-一致且 (k-1)-一致、…、直到 1-一致
全局约束(Global Constraint) 如 Alldiff 约束规定所有参与变量取值各不相同

AC-3 算法详解

核心概念回顾

变量 XX 对变量 YY 弧一致,当且仅当:对于 XX 的域 DXD_X 中的每一个值 xx,都存在 YY 的域 DYD_Y 中的某个值 yy,使得二元约束 C(X,Y)C(X, Y) 被满足。

REVISE 过程

REVISE(X_i, X_j) 是 AC-3 的基本操作:检查 XiX_i 对 XjX_j 是否弧一致,若不成立则删除 XiX_i 中那些在 XjX_j 中找不到支持的值。

1
2
3
4
5
6
7
function REVISE(X_i, X_j) returns boolean
revised := false
for each x in D_i:
if no value y in D_j allows (x, y) to satisfy the constraint between X_i and X_j:
delete x from D_i
revised := true
return revised
  • 返回 true 表示 DiD_i 发生了改变(有值被删)
  • 返回 false 表示 DiD_i 未变(XiX_i 对 XjX_j 已弧一致)
AC-3 主算法

AC-3 维护一个弧队列 (queue),初始包含 CSP 中的所有有向弧(每条二元约束产生两条有向弧:(Xi,Xj)(X_i, X_j) 和 (Xj,Xi)(X_j, X_i))。之后反复从队列取出弧调用 REVISE,若 REVISE 导致某变量的域缩小,则将所有指向该变量的弧重新入队。

1
2
3
4
5
6
7
8
9
10
11
function AC-3(csp) returns (whether consistent, modified domains)
queue := a queue of all arcs (X_i, X_j) where i ≠ j
and there is a constraint between X_i and X_j
while queue is not empty:
(X_i, X_j) := POP(queue)
if REVISE(X_i, X_j):
if D_i is empty:
return false // 无可满足赋值
for each X_k in NEIGHBORS[X_i] \ {X_j}:
PUSH(queue, (X_k, X_i))
return true
为什么 REVISE 后要把 (Xk,Xi)(X_k, X_i) 重新入队?

当 XiX_i 的域缩小后,之前与 XiX_i 弧一致的邻居 XkX_k 可能不再弧一致(因为 XkX_k 中某些值的支持来自 XiX_i 中被删的值)。所以需要重新检查所有 (Xk,Xi)(X_k, X_i) 弧。

算法性质
性质 说明
终止性 每次 REVISE 要么不变,要么至少删一个值;域有限 → 必然终止
正确性 算法结束时,所有弧都是弧一致的;若某域为空则 CSP 无解
唯一性 AC-3 保证得到的弧一致 CSP 与消去弧的次序无关,结果唯一
不完备性 弧一致不等于可满足;弧一致的 CSP 可能仍无解(需更高一致性或搜索)
时间复杂度
  • 每条弧最多入队 dd 次(因为 DiD_i 最多被删 dd 次,每次删除导致指向 XiX_i 的弧重新入队)
  • 共有 O(n2)O(n^2) 条有向弧(二元 CSP 中最多每对变量有一条约束)
  • 每次 REVISE 检查 O(d2)O(d^2) 对值
  • 总复杂度:O(n2d3)O(n^2 d^3)(或更精确地 O(ed3)O(e d^3),其中 ee 为约束数)
AC-3 在搜索中的角色

AC-3 通常作为回溯搜索中的预处理或MAC (Maintaining Arc Consistency) 策略在每个赋值步骤后调用:

  • 预处理:搜索前跑一次 AC-3 缩减全域
  • MAC:每次赋值后调用 AC-3,检测早期失败并进一步传播约束

AC-3 检测的是局部不一致性。检测 CSP 的全部不一致性是 NP-难的 —— 若多项式时间可检测,则 P=NP。


1.7 问题结构与问题分解

独立子问题 (Independent Subproblems)

  • 约束图的连通分量 (connected components) 即独立子问题(如 Tasmania 与澳洲大陆)。
  • 可大幅缩减搜索空间。

子问题分解的收益

  • 设每个子问题含 cc 个变量(共 nn 个),最坏代价:

    nc⋅dc(对 n 线性)\frac{n}{c}\cdot d^c\quad(\text{对 }n\text{ 线性})

  • 例:n=80, d=2, c=20n=80,\,d=2,\,c=20:
    • 整体 2802^{80}:以 10710^7 节点/秒需 40 亿年;
    • 分解为 4⋅2204\cdot 2^{20}:仅需 0.4 秒。

⭐ 树结构 CSP (Tree-structured CSPs)

  • 一般 CSP 最坏时间 O(dn)O(d^n);树结构 CSP 可在 O(nd2)O(n d^2) 线性时间求解。
  • 此性质也适用于逻辑与概率推理——语法限制 (syntactic restrictions) 与推理复杂度关系的重要范例。

树结构 CSP 算法

  1. 任选一变量为根,按拓扑排序使父→子方向一致。
  2. 从 XnX_n 倒序到 X2X_2,对每条父子弧 (Xk,Xi)(X_k,X_i)(Xk=Parent(Xi)X_k=\text{Parent}(X_i))应用弧相容:
    RemoveInconsistent(Parent(X_i), X_i)。
  3. 现在可从 X1X_1 起按剩余值域一次性赋值而不产生冲突:从 i=1i=1 到 nn,XiX_i 与 Parent(Xi)\text{Parent}(X_i) 相容地赋值。
  • 复杂度:O(nd2)O(n d^2)。

近树结构与树分解 (Tree Decomposition)

  • 现实问题常近树结构。树分解:把问题分解为一组连通子问题,两子问题共享约束时相连;独立求解后合并。

注:树分解与割集条件化 (cutset conditioning) 的图示细节,提取文本未完整呈现,需对照原课件查看。


1.8 CSP 的局部搜索 (Iterative Algorithms)

  • 爬山、模拟退火等通常工作于完全状态 (complete states)(所有变量都已赋值)。
  • 应用于 CSP:允许状态违反约束;算子是重赋值某变量。
  • 变量选择:随机选任一冲突变量。
  • ⭐ 值选择:最小冲突 (min-conflicts) 启发式——选造成与其他变量冲突最少的值;即以 h(n)=违反的约束总数h(n)=\text{违反的约束总数} 爬山。

示例:4-Queens 与 3-SAT

  • min-conflicts 对 4-queens 及(可满足的)3-SAT 实例常很有效。

加速手段

  1. 模拟退火 (simulated annealing):以随温度 TT 下降的概率接受"坏"移动,逃出局部极大。
  2. minmax 优化(具体形式课件以图示给出,需对照原课件查看)。

5 约束满足问题

重点是回溯搜索、MRV/LCV、前向检查、AC-3、树结构 CSP。

目录:0. 快速定位 · 1. CSP 基础 · 2. 回溯与约束传播 · 3. 结构与典型题 · 4. 考试速查

0. 快速定位

  • 题目让定义 CSP:看"CSP 三要素"。
  • 手工求解地图染色/密码算术:看"回溯搜索改进"。
  • 题目提 AC-3/弧相容:看"Arc Consistency 和 AC-3"。
  • 问复杂度:看"复杂度常用结论"。

1. CSP 基础

1.1. CSP 三要素

约束满足问题由三部分组成:CSP=(X,D,C)\text{CSP} = (X, D, C)

  • X={X1,…,Xn}X = \{X_1, \dots, X_n\}:变量集合。
  • D={D1,…,Dn}D = \{D_1, \dots, D_n\}:每个变量的取值域。
  • CC:约束集合,限制变量之间可同时取哪些值。

目标:给每个变量赋值,使所有约束同时满足。

例:地图染色

  • 变量:每个地区,如 WA, NT, SA, Q, NSW, V, T。
  • 域:{red,green,blue}\{red, green, blue\}。
  • 约束:相邻地区颜色不同,如 WA≠NTWA \neq NT。

1.2. CSP 与普通搜索的区别

  • 普通搜索状态可能是世界任意配置;CSP 状态通常是部分赋值:WA=red,  NT=greenWA = red,\; NT = green。
  • 行动是给一个尚未赋值变量赋值。
  • 目标测试是所有变量都有值且所有约束满足。
  • CSP 的优势:约束结构明确,可以用通用推理减少搜索。

1.3. 约束类型

  • 一元约束:只涉及一个变量,如 X≠redX \neq red。
  • 二元约束:涉及两个变量,如 WA≠NTWA \neq NT。
  • 高阶约束:涉及多个变量,如 Alldiff(A,B,C,D)\text{Alldiff}(A,B,C,D)。

高阶约束常可转为二元约束,但可能引入额外变量。

2. 回溯与约束传播

2.1. 回溯搜索 Backtracking

朴素 DFS 会考虑变量顺序的排列,浪费巨大。CSP 通常用回溯:

1
2
3
4
5
6
7
8
9
10
11
12
BACKTRACK(assignment):
if assignment complete: return assignment
var = SELECT-UNASSIGNED-VARIABLE(assignment)
for value in ORDER-DOMAIN-VALUES(var):
if value consistent with assignment:
add var=value
inferences = INFERENCE(...)
if inferences not failure:
result = BACKTRACK(assignment + inferences)
if result != failure: return result
remove var=value and inferences
return failure

回溯搜索一次只给一个变量赋值,不重复考虑变量排列。

2.2. 变量选择:MRV

MRV = Minimum Remaining Values,最少剩余值。选择当前合法取值最少的未赋值变量。

直觉:先处理最容易失败的变量,早点剪枝。

例:若 SA 只剩 1 种颜色,Q 还剩 3 种,则先选 SA。

2.3. 变量选择:Degree Heuristic

度启发式选择与最多未赋值变量相连的变量。常作为 MRV 并列时的 tie-breaker。

直觉:约束别人最多的变量越早赋值,越能减少后续分支。

2.4. 值选择:LCV

LCV = Least Constraining Value,最少约束值。选择对其他变量剩余取值删得最少的值。

直觉:保留后续灵活性。

与 MRV 的方向不同:

  • MRV 选变量:优先最危险的变量。
  • LCV 选值:优先最温和的值。

2.5. 前向检查 Forward Checking

每赋值一个变量,就删除邻居变量域中不再合法的值。若某个未赋值变量域变空,立刻回溯。

例:地图染色,赋 WA=redWA=red 后,从 NT 和 SA 的域中删掉 red。

优点:简单有效。缺点:只看一步邻居,不能发现更深层的隐含冲突。

2.6. Arc Consistency 弧相容

对二元约束 Xi→XjX_i \to X_j,若对 XiX_i 域中每个值 xx,都存在 XjX_j 域中某个值 yy 使约束满足,则称弧 Xi→XjX_i \to X_j 相容。

若某个 xx 找不到支持值,就从 DiD_i 中删除 xx。

注意方向性:Xi→XjX_i \to X_j 相容不代表 Xj→XiX_j \to X_i 相容。

2.7. AC-3 算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AC3(csp):
queue = all arcs (Xi, Xj)
while queue not empty:
(Xi, Xj) = pop(queue)
if REVISE(Xi, Xj):
if Di empty: return false
for each Xk in Neighbors(Xi) except Xj:
add (Xk, Xi) to queue
return true

REVISE(Xi, Xj):
revised = false
for x in Di:
if no y in Dj satisfies constraint(Xi=x, Xj=y):
delete x from Di
revised = true
return revised

何时用:

  • 搜索前先跑 AC-3,缩小域。
  • 回溯中每次赋值后维护弧相容,称 MAC。

2.8. AC-3 复杂度

若:nn 个变量;每个变量域大小最多 dd;cc 条二元约束。

  • 每次 REVISE 最多 O(d2)O(d^2),每条弧最多被重新检查 O(d)O(d) 次,常见结论:O(cd3)O(cd^3)。
  • 树结构 CSP 可在线性量级求解,常见教材结论:O(nd2)O(nd^2)。作业题若问"树结构 CSP 上 AC-3 最坏复杂度",通常写 O(nd2)O(nd^2),因为树中边数 O(n)O(n),每条边处理受限。

3. 结构与典型题

3.1. 树结构 CSP

若约束图是树,可以不回溯地求解:

  1. 任选根,给变量排序,使父节点在子节点之前。
  2. 从叶子到根,对每条边执行 RemoveInconsistent(Parent, Child)。
  3. 从根到叶依次赋值:父节点定值后,给子节点选任一与父值相容的值。

复杂度:O(nd2)O(nd^2)。

若约束图不是树,可以考虑:

  • cutset conditioning:枚举少量变量,使剩余图变成树。
  • tree decomposition:树分解。

3.2. 局部搜索解 CSP

常用 min-conflicts:

1
2
3
4
5
start with complete random assignment
repeat:
if assignment satisfies all constraints: return it
choose a conflicted variable
assign it a value minimizing number of conflicts

适合 N 皇后等大规模 CSP。缺点:不保证最优,也可能卡住,需要随机重启。

3.3. 密码算术题思路

例如:

1
2
3
  SEND
+ MORE
= MONEY
  • 变量:S, E, N, D, M, O, R, Y。
  • 域:数字 0–9。
  • 约束:
    • Alldiff(S,E,N,D,M,O,R,Y)\text{Alldiff}(S,E,N,D,M,O,R,Y)。
    • 首字母 S≠0,  M≠0S \neq 0,\; M \neq 0。
    • 每列加法和进位约束。

求解技巧:先写进位变量;使用 MRV(例如最高位常能推 M=1M=1);使用前向检查删域。

4. 考试速查

4.1. 常见考试问法

4.1.1. MRV、Degree、LCV 分别是什么?

  • MRV:选剩余合法值最少的变量。
  • Degree:选约束最多的变量。
  • LCV:选排除别人合法值最少的值。

4.1.2. 前向检查与 AC-3 区别?

  • 前向检查只在已赋值变量到未赋值邻居之间删值。
  • AC-3 维护所有相关弧相容,能传播更远。

4.1.3. 弧相容是否保证全局一致?

不保证。弧相容只是局部一致,仍可能无解。

4.1.4. 为什么 CSP 回溯比普通 DFS 少?

因为赋值顺序的排列不会被当作不同路径重复搜索;同一部分赋值只考虑一次。

4.2. 最后一分钟版

  • CSP = 变量 + 域 + 约束。
  • 状态 = 部分赋值。
  • MRV 选变量,LCV 选值。
  • Forward checking:赋值后删邻居域。
  • AC-3:维护弧相容,REVISE 删没有支持的值。
  • 树结构 CSP 可 O(nd2)O(nd^2) 求解。

Ch6 博弈搜索与蒙特卡洛树搜索 (Adversarial Search & MCTS)

课件:lec6.pdf (Game Playing, 2026/03/25) + MCTS.pdf (蒙特卡洛树搜索简介)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig), Ch5 (Adversarial Search and Games)
教师:吉建民,USTC


0. 本章概述

本章承接第 3–5 章的(单智能体)搜索,转向多智能体对抗环境下的搜索——“博弈搜索 (Adversarial Search)”。核心问题:当环境中存在目标与我方相反的对手时,如何选择一个策略 (strategy / contingency plan),使得无论对手如何应对,我方都能保证一个尽量好的收益。

本章分两大块:

  1. 经典博弈搜索(lec6):博弈类型分类 → Minimax 最优策略 → α-β 剪枝 → 资源受限下的启发式评估 → 期望极小极大(含随机性)→ 不完全信息博弈。
  2. 蒙特卡洛树搜索 MCTS(MCTS.pdf):以随机抽样替代精确遍历,用 UCB1/UCT 平衡探索与利用,四步循环 (Selection / Expansion / Simulation / Backpropagation);并以 AlphaGo (PUCT) 为代表讲深度 MCTS。
子主题 核心内容 重要程度
博弈分类 确定/随机、完全/不完全信息、零和;正常形式与扩展式博弈 ⭐⭐⭐
正常形式博弈与 Nash 均衡 元组定义、最优反应、Nash 均衡存在性 ⭐⭐
Minimax 算法 MAX/MIN 节点、最优策略、复杂度 O(bm)O(b^m) ⭐⭐⭐
α-β 剪枝 α/β 含义、剪枝条件 β<α、完美排序 O(bm/2)O(b^{m/2}) ⭐⭐⭐
启发式评估 + IDS 评估函数、序数效用、迭代加深 ⭐⭐⭐
随机博弈 (Expectiminimax) CHANCE 节点、期望效用原则 ⭐⭐⭐
不完全信息博弈 期望极小极大 (期望 over 发牌) ⭐⭐
蒙特卡洛方法 起源、求 π/积分、大数定律/中心极限定理 ⭐⭐
探索-利用与 UCB1 ε-贪心 / 乐观初值 / UCB1 (Hoeffding) ⭐⭐⭐
MCTS 四步 + UCT Selection/Expansion/Simulation/Backprop ⭐⭐⭐
AlphaGo (PUCT) 策略网络 + 价值网络 + MCTS ⭐⭐

第一部分:博弈与博弈搜索 (lec6)

6.1 为什么研究博弈 (Game Playing)

博弈长期被视为 AI 研究的好问题:

  • 非平凡:需要非平凡的智能决策
  • 需要"类人"智能:玩家需要推理、规划和策略
  • 复杂度高:象棋(Chess)和围棋(Go)的状态空间极其庞大
  • 有限时间内决策:必须在时间限制下做出选择
  • 环境优良:定义清晰、可重复、完全可观察、环境受限
  • 可直接比较:人类与计算机的直接对抗提供了明确的能力衡量标准

博弈 vs. 普通搜索问题

维度 普通搜索 博弈
环境 单智能体、可预测 不可预测的对手 (unpredictable opponent)
解 一条动作序列 一个策略:对对手每种回应都指定应对
时间 可找到目标 有时间限制,必须近似
失败惩罚 —— “游戏对低效率有严厉惩罚”

历史脉络

  • 1846 — Babbage 提出计算机考虑可能的走法路线
  • 1912/1944 — Zermelo / Von Neumann 提出完美博弈算法
  • 1945–1950 — Zuse/Wiener/Shannon 提出有限深度 + 近似评估
  • 1951 — Turing 编写第一个国际象棋程序
  • 1952–57 — Samuel 使用机器学习改进评估精度
  • 1956 — McCarthy 提出剪枝以允许更深搜索

一些棋类的复杂度(量级)

  • 围棋 (Go):分支因子 b>300b>300(19×19 棋盘),博弈树规模 >10170>10^{170};
  • 国际象棋 (Chess):b≈35b\approx 35,合理对局深度 m≈100m\approx 100。

6.2 博弈的分类 (Types of Games)

按两个维度划分(4 类):

完全信息 (Perfect) 不完全信息 (Imperfect)
确定性 (Deterministic) Chess、Checkers、Go、 tic-tac-toe 卡牌游戏(桥牌、德州扑克)
随机性 (Chance) 西洋双陆棋 (Backgammon)、飞行棋 部分纸牌游戏(含随机发牌+隐藏信息)

MCTS.pdf 给出更细的术语:

  • 双人零和 (Two-Player Zero-Sum):双方收益之和为零,一方收益 = −(另一方收益)。其纳什均衡"唯一"且"易计算"。
  • 完全信息 (Full Information):所有玩家都能看到全部状态与历史行动,无隐藏信息或不确定性。
  • 扩展式博弈 (Extensive Form):博弈是时序的、分步的,可用博弈树 (Game Tree) 描述:从根节点(初始状态)出发,每一层对应一个玩家的行动,叶子节点(Terminal State)给出收益。
  • 例:国际象棋、中国象棋、围棋属于"双人零和完全信息扩展式博弈";扑克(不完全信息+随机性)、飞行棋(随机性)不属于。

6.3 博弈论基础:正常形式博弈

正常形式博弈 (Normal-Form Game)

⭐ 正常形式(矩阵)博弈定义为元组 (n, A1…n, R1…n)(n,\,A_{1\ldots n},\,R_{1\ldots n}):

  • nn:智能体数;
  • AiA_i:玩家 ii 的动作集;联合动作集 A=A1×⋯×AnA=A_1\times\cdots\times A_n;
  • Ri:A→RR_i:A\to\mathbb{R}:玩家 ii 的奖励函数。

每个玩家 ii 选择策略 πi:Ai→[0,1]\pi_i:A_i\to[0,1](πi∈PD(Ai)\pi_i\in PD(A_i),即动作上的概率分布),以概率 πi(ai)\pi_i(a_i) 取动作 aia_i,获得效用 Ri(a1,…,an)R_i(a_1,\ldots,a_n)。给定策略组合 ⟨π1,…,πn⟩\langle\pi_1,\ldots,\pi_n\rangle,玩家 ii 的期望效用为:

Ri(π1,…,πn)=∑a∈ARi(a)∏j=1nπj(aj)R_i(\pi_1,\ldots,\pi_n)=\sum_{a\in A} R_i(a)\prod_{j=1}^{n}\pi_j(a_j)

所有玩家都想最大化自己的期望效用。这是一次性交互 (one-shot),可表示为 nn 维收益矩阵。

经典例子:囚徒困境 (Prisoners’ Dilemma)、石头剪刀布 (Rock-Paper-Scissors)。(收益矩阵见原课件图,需对照原课件查看。)

最优性概念 (Optimality Concepts)

  • 最优反应 (Best-Response Function):给定其他玩家当前策略,使自身效用最大的策略集。

πi∗∈BRi(π−i)  iff  ∀πi∈PD(Ai), Ri(⟨πi∗,π−i⟩)≥Ri(⟨πi,π−i⟩)\pi_i^{*}\in BR_i(\pi_{-i})\ \ \text{iff}\ \ \forall\pi_i\in PD(A_i),\ R_i(\langle\pi_i^{*},\pi_{-i}\rangle)\ge R_i(\langle\pi_i,\pi_{-i}\rangle)

  • ⭐ 纳什均衡 (Nash Equilibrium):所有玩家都在使用最优反应策略。

∀i=1…n,  πi∈BRi(π−i)\forall i=1\ldots n,\ \ \pi_i\in BR_i(\pi_{-i})

  • 定理:所有正常形式博弈至少存在一个 Nash 均衡(可能为混合策略)。

双人零和博弈

  • 两对手对抗;对称奖励(始终和为零)。
  • 通常只有一个均衡;若存在多个,则它们可互换 (interchangeable):若 ⟨π1,π2⟩\langle\pi_1,\pi_2\rangle 和 ⟨μ1,μ2⟩\langle\mu_1,\mu_2\rangle 都是 Nash 均衡,则 ⟨π1,μ2⟩\langle\pi_1,\mu_2\rangle、⟨μ1,π2⟩\langle\mu_1,\pi_2\rangle 也是,且效用相等。
  • Minimax 定理:在策略空间上,

max⁡π∈PD(A)min⁡o∈O∑a∈Aπ(a) R(a,o)\max_{\pi\in PD(A)}\min_{o\in O}\sum_{a\in A}\pi(a)\,R(a,o)

可形式化为一个线性规划 (Linear Program) 求解。注意:同时出招使得确定性策略失效,必须用混合策略。


6.4 Minimax 搜索 ⭐⭐⭐

基本设定

针对确定性、完全信息、双人、轮流、零和博弈(如 tic-tac-toe、Chess、Checkers):

  • 博弈是一棵状态空间搜索树 (game tree),玩家交替落子;
  • 每一层(ply,一"层"= 一个玩家的一回合);
  • 一方(MAX)最大化结果,另一方(MIN)最小化结果。

Minimax 原理

  • 假设双方都按最优策略行棋;
  • 我方走完后,假设对手会选择使结果最小化的着法;
  • 我方在选择时,要同时考虑自己的着法和对手的最优应对。

Minimax 值与定义

⭐ Minimax 值 (minimax value):在对手也使用最优策略的条件下,能导致至少不比其它策略差的结果——即"best achievable payoff against best play"。

Minimax(s)={Utility(s)若 s 为终局max⁡aMinimax(Result(s,a))若 s 为 MAX 节点min⁡aMinimax(Result(s,a))若 s 为 MIN 节点\text{Minimax}(s)=\begin{cases}\text{Utility}(s) & \text{若 }s\text{ 为终局}\\[2pt]\displaystyle\max_{a}\text{Minimax}(\text{Result}(s,a)) & \text{若 }s\text{ 为 MAX 节点}\\[2pt]\displaystyle\min_{a}\text{Minimax}(\text{Result}(s,a)) & \text{若 }s\text{ 为 MIN 节点}\end{cases}

  • MAX 优先选有极大值的状态;MIN 优先选有极小值的状态。

Minimax 算法(伪代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function MINIMAX-DECISION(state):
v = -∞
best = None
for each a in ACTIONS(state):
v2 = MIN-VALUE(RESULT(state, a))
if v2 > v:
v, best = v2, a
return best

function MAX-VALUE(state): # MAX 节点:返回可达最大值
if TERMINAL(state): return UTILITY(state)
v = -∞
for each a in ACTIONS(state):
v = max(v, MIN-VALUE(RESULT(state, a)))
return v

function MIN-VALUE(state): # MIN 节点:返回可达最小值
if TERMINAL(state): return UTILITY(state)
v = +∞
for each a in ACTIONS(state):
v = min(v, MAX-VALUE(RESULT(state, a)))
return v

Minimax 性质 ⭐

性质 结论
完备性 (Complete) 是(若博弈树有限;国际象棋对此有专门规则)
最优性 (Optimal) 是(对最优对手而言);对非最优对手则不一定
时间复杂度 O(bm)O(b^m)(bb=分支因子,mm=最大深度)
空间复杂度 O(bm)O(bm)(深度优先探索)

对国际象棋 b≈35, m≈100b\approx35,\ m\approx100 → 精确求解完全不可行。引出剪枝需求。


6.5 α-β 剪枝 ⭐⭐⭐

动机

“If you have an idea that is surely bad, don’t take the time to see how truly awful it is.” — Pat Winston

面对聪明的对手,博弈树中有些分支根本不会被走到——可剪除。

α 与 β 的定义 ⭐

  • α:当前路径上 MAX 目前已确保 (assured of) 的最小分数(即 MAX 的下界)。
  • β:当前路径上 MIN 目前已确保 的最大分数(即 MIN 的上界,等价于 MAX 的上界)。
  • ⭐ 剪枝条件:每当 β < α,MAX 不必再考虑该节点的其余后代——它们在实际博弈中永不会到达。

课件原文:α 是"到目前为止在路径上的任意选择点发现的 MAX 的最佳(最大值)选择";若某值 vv 比 α 还差,MAX 会回避它,故可停止考察 vv 的其余子节点。β 对 MIN 类似定义。

α-β 算法(伪代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function ALPHA-BETA-SEARCH(state):
v, best = MAX-VALUE(state, -∞, +∞)
return best

function MAX-VALUE(state, α, β):
if TERMINAL(state): return UTILITY(state)
v = -∞
for each a in ACTIONS(state):
v = max(v, MIN-VALUE(RESULT(state, a), α, β))
if v ≥ β: return v # β 剪枝:MIN 不会让这分支发生
α = max(α, v)
return v

function MIN-VALUE(state, α, β):
if TERMINAL(state): return UTILITY(state)
v = +∞
for each a in ACTIONS(state):
v = min(v, MAX-VALUE(RESULT(state, a), α, β))
if v ≤ α: return v # α 剪枝:MAX 不会让这分支发生
β = min(β, v)
return v

α-β 性质 ⭐

  • 剪枝不影响最终结果:被剪掉的分支注定不影响决策,结果与完整 Minimax 完全一致。
  • 效果取决于后继的考察顺序:先考察最好的后继时剪枝最有效。
    • 最坏情况:无任何剪枝,与穷举相同 O(bm)O(b^m);
    • 最好情况 / 完美排序 (perfect ordering):⭐ 时间复杂度 =O(bm/2)=O(b^{m/2}) → 可搜索深度翻倍;
    • 实际中性能更接近最好情况。
  • 这是"元推理 (metareasoning)“——推理"哪些计算是相关的”——的一个简单例子。
  • 即便如此,国际象棋 355035^{50} 仍不可能穷举 → 还需启发式评估。

课件中 α-β 剪枝的多张分步示例图(Minimax 值回填、剪枝发生过程)以图示为主,需对照原课件查看。


6.6 资源受限下的近似评估

评估函数 (Evaluation Function)

当无法搜索到终局时,在深度限制 (depth limit) 处用一个启发式评估函数 EVAL(s) 估计当前局面对我方的好坏。

⭐ 线性评估函数 (linear weighted sum of features):

EVAL(s)=w1f1(s)+w2f2(s)+w3f3(s)+⋯\text{EVAL}(s)=w_1 f_1(s)+w_2 f_2(s)+w_3 f_3(s)+\cdots

  • fif_i 为特征 (features)(由领域专家构造,如国际象棋的子力、王安全、兵形等);
  • wiw_i 为权重,越重要的特征权重越大(可人工设定或学习得到,参见 Samuel 1952–57);
  • 棋艺质量直接取决于评估函数的质量。

序数效用 (Ordinal Utility) —— 确定性博弈中精确值不重要

⭐ 行为在任何对 EVAL 的单调变换 (monotonic transformation) 下保持不变;只有值的顺序 (order) 重要:

payoff 在确定性博弈中起的是序数效用 (ordinal utility) 函数的作用\text{payoff 在确定性博弈中起的是序数效用 (ordinal utility) 函数的作用}

应对时间限制:迭代加深搜索 (IDS)

  • 实际对局有每步时间上限 TT;α-β 不能中途停下使用结果。
  • 做法:迭代加深搜索 (Iterative Deepening Search, IDS)——以递增的深度限制反复运行 α-β;时钟到点时,使用最后一次完整完成的 α-β 搜索的结果(最深的那次)。
  • 优点:充分利用时间,且浅层结果可用于指导深层排序(move ordering)。

实战里程碑

程序 成就 技术
Deep Blue 1997 六番棋击败世界冠军 Kasparov (2 胜 3 负 1 和) “暴力 (brute force)”:2 亿局面/秒;minimax + α-β + 复杂启发式 + 部分线搜到 40 ply;相对少用"类人直觉"
Chinook 1994 终结人类西洋跳棋冠军 Tinsley 40 年统治;2007 西洋跳棋被求解 (solved):完美对弈为和棋
Othello 人类冠军拒绝与计算机对弈(机器太强) ——
AlphaGo 首个在 19×19 围棋击败人类职业棋手的程序 深度神经网络 + MCTS(见第二部分)

6.7 含随机性的博弈:随机博弈 (Stochastic Games)

随机博弈定义

随机博弈 (Stochastic Game) 是正常形式博弈与 MDP 的推广——多状态、多智能体环境。定义为元组 (n,S,A1,…,n,T,R1,…,n)(n,S,A_{1,\ldots,n},T,R_{1,\ldots,n}):

  • nn:智能体数;
  • SS:状态集;
  • AiA_i:玩家 ii 的动作集,A=A1×⋯×AnA=A_1\times\cdots\times A_n 为联合动作集;
  • T:S×A×S→[0,1]T:S\times A\times S\to[0,1]:转移函数,依赖所有玩家的动作;
  • R:S×A×S→RR:S\times A\times S\to\mathbb{R}:奖励函数(期望值),同样依赖所有玩家的动作。

每个玩家 ii 选择策略 πi:S→PD(Ai)\pi_i:S\to PD(A_i)(πi(ai∣s)\pi_i(a_i\mid s)),联合策略 π=⟨πi,π−i⟩\pi=\langle\pi_i,\pi_{-i}\rangle。它具有马尔可夫性 (Markovian),但从单个玩家视角看并非马尔可夫(因他人策略未知)。

最优性概念(带折扣)

考虑折扣累积奖励(同 MDP):

Vπi(s)=E ⁣[∑k=0∞γkrt+k+1i | st=s,π]=∑aπ(s,a)∑s′T(s,a,s′)[Ri(s,a,s′)+γVπi(s′)]V^{\pi_i}(s)=\mathbb{E}\!\left[\sum_{k=0}^{\infty}\gamma^{k}r^{i}_{t+k+1}\,\middle|\,s_t=s,\pi\right]=\sum_{a}\pi(s,a)\sum_{s'}T(s,a,s')\big[R^{i}(s,a,s')+\gamma V^{\pi_i}(s')\big]

Qπi(s,a)=∑s′T(s,a,s′)[Ri(s,a,s′)+γVπi(s′)]Q^{\pi_i}(s,a)=\sum_{s'}T(s,a,s')\big[R^{i}(s,a,s')+\gamma V^{\pi_i}(s')\big]

  • 最优反应 (Best-Response):以状态价值为参考,
    πi∗∈BRi(π−i)\pi_i^{*}\in BR_i(\pi_{-i}) iff ∀πi,∀s∈S: Vi⟨πi∗,π−i⟩(s)≥Vi⟨πi,π−i⟩(s)\forall\pi_i,\forall s\in S:\ V_i^{\langle\pi_i^{*},\pi_{-i}\rangle}(s)\ge V_i^{\langle\pi_i,\pi_{-i}\rangle}(s)。
  • Nash 均衡:所有玩家都使用最优反应策略。

⭐ 最大期望效用原则 (Maximum Expected Utility)

“Why should we average utilities? Why not minimax?”

最大期望效用原则:智能体应在自身知识下选择最大化期望效用的动作。这是决策的一般原则,常被视为理性的定义,将贯穿全课程。

Expectiminimax 算法

对随机博弈(如西洋双陆棋 Backgammon),博弈树中引入第三种节点 CHANCE(机会节点),按各结果的概率取期望:

Expectiminimax(s)={Utility(s)终局max⁡aExpectiminimax(Result(s,a))MAXmin⁡aExpectiminimax(Result(s,a))MIN∑rP(r) Expectiminimax(Result(s,r))CHANCE\text{Expectiminimax}(s)=\begin{cases}\text{Utility}(s) & \text{终局}\\[2pt]\max_{a}\text{Expectiminimax}(\text{Result}(s,a)) & \text{MAX}\\[2pt]\min_{a}\text{Expectiminimax}(\text{Result}(s,a)) & \text{MIN}\\[2pt]\displaystyle\sum_{r}P(r)\,\text{Expectiminimax}(\text{Result}(s,r)) & \text{CHANCE}\end{cases}

⚠️ 随机博弈中"精确值重要"

与确定性博弈(6.6,序数效用)相反:在含随机性的博弈中,精确的数值确实重要 (Exact values DO matter)——因为 CHANCE 节点要对不同分支做加权平均,数值的相对大小(而非仅顺序)直接影响期望。


6.8 不完全信息博弈 (Games of Imperfect Information)

例:桥牌、德州扑克等纸牌游戏——对手初始手牌未知。通常可为每种发牌计算一个概率。

思路:期望极小极大 (Expectiminimax over deals)

在评价一个有未知牌的给定行动过程时,首先计算出每副可能牌的出牌行动的极小极大值,然后再用每副牌的概率计算得到对所有发牌情况的期望值。

形式化:对所有可能的"发牌 (deal)" dd(概率 P(d)P(d)):

  1. 计算每个动作 aa 在该 deal 下的极小极大值 MinimaxValue(a,d)\text{MinimaxValue}(a,d);
  2. 选择 arg⁡max⁡a∑dP(d)⋅MinimaxValue(a,d)\arg\max_a\sum_d P(d)\cdot\text{MinimaxValue}(a,d)。

直觉上相当于在博弈开始时引入一次大的随机掷骰(发牌)。

课件示例:四张牌的桥牌/红心大战

  • MAX 先出,知道对手另 3 张牌中除第一张外的牌;
  • 规则:有同花色必出同花色;比大小;赢一轮得一分,算总数。
  • 分别讨论:第一张牌为红桃 4、方块 4、花色未知三种情形下的最优决策(详见原课件图,需对照原课件查看)。
  • 应用:计算机德州扑克 (Texas Hold’em) 已达到/超越人类顶尖水平。

6.9 搜索方法小结(回顾全章搜索主题)

  • 无信息搜索:BFS、一致代价、DFS、深度受限、迭代加深 (IDS)。
  • 有信息搜索:最佳优先——贪心、A*;局部搜索——爬山、模拟退火等。
  • 约束满足 (CSP):回溯 = 每节点赋一个变量的 DFS;增强:变量/值排序启发、前向检查、约束传播。
  • 对抗搜索(本章):Minimax、α-β、Expectiminimax、MCTS。

作业(第三版):5.9、5.8、5.13。



📋 本章速览补充:以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。

6 博弈

Minimax,alpha-beta 剪枝

目录:0. 快速定位 · 1. 博弈建模与 Minimax · 2. Alpha-Beta 剪枝 · 3. 资源限制与扩展 · 4. 考试速查

0. 快速定位

  • 给博弈树求值:看"Minimax 手算规则"。
  • 问剪枝叶子:看"Alpha-Beta 手算规则"。
  • 深度限制和评估函数:看"资源限制搜索"。
  • MCTS:考试重点写不考,只保留概念。

1. 博弈建模与 Minimax

1.1. 博弈问题定义

问题定义:

  • 两人轮流行动:玩家(MAX)试图最大化游戏结果,玩家(MIN)则试图最小化游戏结果。
  • 零和:输、赢、平。
  • 完全信息:两人都可以看到整个游戏的全部状态。
  • 确定性:行动的结果是确定的。

例如井字棋、国际象棋、围棋。

形式化包含:

  • 初始状态。
  • 当前状态 ss,游戏中棋盘或环境的当前配置。
  • 当前行动方 Player(s)\text{Player}(s)。
  • 合法行动 Actions(s)\text{Actions}(s)。
  • 转移模型 Result(s,a)\text{Result}(s,a),表示 ss 经过 aa 的后继状态。
  • 终止测试 Terminal-Test(s)\text{Terminal-Test}(s),用于判断游戏是否已经到达终局。
  • 效用函数 Utility(s,player)\text{Utility}(s, \text{player}),当游戏结束时,用于评估当前终止状态的 player 最终得分或收益。

零和意味着:Utility(s,MAX)+Utility(s,MIN)=0\text{Utility}(s, \text{MAX}) + \text{Utility}(s, \text{MIN}) = 0。

1.2. Minimax 原理

Minimax 算法是一个悲观算法,其假设对手非常强大,招招致命,为了让自己死得不太难看,选择能够最优化最坏结果的策略。

  • 输入:当前状态 ss,游戏规则 rule。
  • 输出:下一步的行动 aa,该行动能够让我的最低收益最大化,选择其他行动的最坏结果不可能比这个好。

操作:

  1. 从 ss,根据 rule 推导出全部的对局可能(博弈树)。
  2. 从叶子节点往上,算出所有节点的 Minimax 值。
  3. return arg⁡max⁡aMinimaxValue(Result(s,a))\arg\max_a \text{MinimaxValue}(\text{Result}(s, a))。

MinimaxValue 计算方式:

  1. 叶子节点:其效用值就是 Minimax 值。
  2. Max 节点:取子节点中的最大值作为 Minimax 值。
  3. Min 节点:取子节点中的最小值作为 Minimax 值。

1.3. Minimax 特性

  • 完备性:如果博弈树是有限的,该算法是完备的。
  • 最优性:当对手采用最优策略时,该算法保证能找到最优解。
  • 时间复杂度:O(bm)O(b^m),其中 bb 是分支因子,mm 是树的最大深度。
  • 空间复杂度:因为该算法基于深度优先探索,空间复杂度为 O(bm)O(bm)。

2. Alpha-Beta 剪枝

2.1. 原理

Alpha-beta 返回与 minimax 完全相同的结果,但不展开不可能影响最终决策的分支。

含义:

  • alpha:记录 Max 当前在探索博弈树的过程中,所能取得到的最好的最坏结果(最大值),如果探索某分支时发现所能取得的最好的最坏结果比 alpha 还小,直接剪掉该分支。
  • beta:记录 Min 当前探索中,所能取得到的最好的最坏结果(最小值),若比 beta 大,则剪掉。

Minimax 的推导,采用深度优先遍历,有一个向下传递(给子节点提供初值)和向上汇报(给父节点提供更新依据)的过程。

初值:

  • 根节点:α=−∞,  β=+∞\alpha = -\infty,\; \beta = +\infty。
  • 其他节点:父节点提供初值。

更新:

  • Max:α=max⁡(α,Min 返回值)\alpha = \max(\alpha, \text{Min 返回值}),比 α\alpha 大就更新。
  • Min:β=min⁡(β,Max 返回值)\beta = \min(\beta, \text{Max 返回值}),比 β\beta 小就更新。

剪枝:

  • 一句话:当在一个节点得到子节点返回值 vv 并更新后,若 α≥β\alpha \geq \beta,该节点不再探索后续子节点,也不向父节点返回值。
  • 两句话:
    • MAX 节点:若当前值 v≥βv \geq \beta,剪掉剩余子节点。
    • MIN 节点:若当前值 v≤αv \leq \alpha,剪掉剩余子节点。

2.2. Alpha-Beta 手算规则

从左到右搜索时:

  1. 根节点:α=−∞,  β=+∞\alpha = -\infty,\; \beta = +\infty。
  2. 下传当前 (α,β)(\alpha, \beta) 窗口。
  3. 从左到右依次看子节点的值 vv。
  4. MAX 节点不断更新 α=max⁡(α,v)\alpha = \max(\alpha, v)。
  5. MIN 节点不断更新 β=min⁡(β,v)\beta = \min(\beta, v)。
  6. 一旦 α≥β\alpha \geq \beta,当前节点后面没看的兄弟分支全部剪掉,该节点不用返回值,返回也不会导致父节点更新。
  7. 若没有发生剪枝,照常返回 Minimax 值,更新父节点的 α\alpha 或 β\beta。

答题时要注意:

  • 看清当前节点是 Max 还是 Min,不要更新错了,尤其是回传的时候对父节点的更新。
  • 哪个节点处剪枝。
  • 被剪掉的是哪些叶子或子树。
  • 已经访问过的节点不能算剪枝。

2.3. 正确性分析

若在 MIN 节点发现 v≤αv \leq \alpha:

  • MAX 的祖先已经有一个选择能保证至少 α\alpha。
  • 当前 MIN 节点最终值只会更小或相等。
  • MAX 永远不会选择这条路,所以剩余子节点无关。

若在 MAX 节点发现 v≥βv \geq \beta:

  • MIN 的祖先已经有一个选择能把结果压到至多 β\beta。
  • 当前 MAX 节点最终值只会更大或相等。
  • MIN 永远不会允许这条路,所以剩余子节点无关。

2.4. 剪枝效率

  • 最坏排序:几乎不剪,O(bm)O(b^m)。
  • 最优排序:约 O(bm/2)O(b^{m/2}),相当于深度翻倍。

所以实际程序常先用启发式排序,把看起来好的行动放前面。

3. 资源限制与扩展

3.1. 资源限制搜索

完整 minimax 太深时,用深度限制:

1
2
Cutoff-Test(s, depth)
Eval(s)

当达到深度限制或状态足够稳定时,用评估函数估计效用。

典型写法:

1
2
3
4
H-Minimax(s, depth):
if terminal(s): return utility(s)
if depth == 0: return Eval(s)
...

2020 题问深度为 3 和深度为 4 时选择不同,原因通常是:深度限制下叶子值只是评估值,不一定等于真实终局效用;看得更深后会修正浅层误判。

3.2. 评估函数

评估函数应:

  • 与真实胜率/效用相关。
  • 计算快。
  • 对非终局状态给出合理排序。

井字棋作业例子:Eval(s)=3X2(s)+X1(s)−(3O2(s)+O1(s))\text{Eval}(s) = 3X_2(s) + X_1(s) - (3O_2(s) + O_1(s))

其中:

  • XnX_n:恰好有 nn 个 X 且无 O 的行/列/对角线数。
  • OnO_n:恰好有 nn 个 O 且无 X 的行/列/对角线数。

3.3. Horizon Effect 水平线效应

深度限制可能把必然发生的坏事推到搜索边界之外,导致评估函数看不见。

缓解:

  • quiescence search:在局面剧烈变化时继续搜到稳定局面。
  • iterative deepening:逐步加深并保留当前最好结果。

3.4. 随机博弈 Expectiminimax

若有随机事件,如掷骰子,加入 chance 节点。递归:

  • MAX 节点取最大。
  • MIN 节点取最小。
  • Chance 节点取期望:∑iP(i)∗value(childi)\sum_i P(i) * \text{value}(\text{child}_i)。

低概率考,记住 chance 节点不是 max/min,而是加权平均。

3.5. 不完全信息博弈

如牌类游戏,玩家不知道完整状态。核心概念:

  • belief state:对可能真实状态的概率分布。
  • information set:玩家无法区分的一组状态。

本课只需概念了解。

3.6. MCTS 蒙特卡洛树搜索(不考)

来源:隔壁班 MCTS.pdf。考试重点写"蒙特卡洛不考",这里只保留概念。

MCTS 四步:

  1. Selection:从根按策略选择到叶子。
  2. Expansion:扩展一个新节点。
  3. Simulation/Rollout:随机模拟到终局。
  4. Backpropagation:把结果回传更新访问次数和价值。

常用 UCB/UCT 平衡探索与利用:UCT=exploitation+exploration\text{UCT} = \text{exploitation} + \text{exploration}。

直观:

  • exploitation:选择平均回报高的动作。
  • exploration:给访问次数少的动作机会。

AlphaGo 使用过 MCTS,但细节不作为本课考试重点。

4. 考试速查

4.1. 常见判断题

  • Minimax 假设对手也最优:对。
  • Alpha-beta 会改变 minimax 的最终值:错。
  • Alpha-beta 剪枝效果与节点顺序无关:错。
  • MAX 节点取子节点最大值,MIN 节点取最小值:对。
  • 随机节点取最大值:错,应取期望。

4.2. 最后一分钟版

  • Minimax:MAX 取 max,MIN 取 min,自底向上回传。
  • Alpha:MAX 已知最好下界;Beta:MIN 已知最好上界。
  • 剪枝条件:α≥β\alpha \geq \beta。
  • MAX 节点 v≥βv \geq \beta 可剪;MIN 节点 v≤αv \leq \alpha 可剪。
  • Alpha-beta 不改变答案,只减少展开。
  • 深度限制时叶子值是评估值,不一定是真实终局值。

Ch7-8 逻辑推理 (Logical Reasoning)

课件:lec7.pdf (117 页, 逻辑 Agent/命题逻辑) + lec8.pdf (91 页, 一阶逻辑/FOL 推理) + pl_fol.pdf (56 页, 命题与一阶逻辑补充)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig), Ch7 (Logical Agents) & Ch8 (First-Order Logic) & Ch9 (Inference in FOL)
教师:吉建民,USTC


0. 本章概述

本章是"知识、推理与规划"模块的开端,由命题逻辑与一阶逻辑两部分合并。逻辑是 1990 年代前 AI 的主导范式——它用形式化语言刻画知识,并借助保真 (truth-preserving) 的推理规则紧凑地导出新结论。命题逻辑以"事实 (facts)"为本体论约定,表达能力有限;一阶逻辑 (FOL) 引入对象、关系、函数与量词,表达能力大幅增强,但推理变为半可判定 (semidecidable)。后续章节的不确定性推理(贝叶斯网)与学习可视为对逻辑"确定性、难微调"两大缺点的回应。

子主题 核心内容 重要程度
知识库 Agent / 逻辑 Agent KB + 推理机;TELL/ASK 循环;三层次 ⭐⭐⭐
Wumpus 世界 PEAS;局部感知下的 KB 推理 ⭐⭐
逻辑一般概念 syntax/semantics/entailment/inference;soundness/completeness ⭐⭐⭐
命题逻辑语法/语义 命题符号、联结词、模型、解释函数、M(f)M(f) ⭐⭐⭐
命题逻辑形式系统 Hilbert 公理 (L1)-(L3)+MP;形式证明/推导 ⭐⭐
逻辑等值律 交换/结合/双否/逆否/蕴含消去/De Morgan/分配 ⭐⭐⭐
Horn/确定子句 定义;Modus Ponens 在 Horn 上完备且线性 ⭐⭐⭐
前向链/反向链 数据驱动 vs 目标驱动;线性时间 ⭐⭐⭐
命题归结 (Resolution) CNF;归结规则;反演:KB⊨p  ⟺  KB∧¬p\text{KB}\models p\iff\text{KB}\land\lnot p 不可满足 ⭐⭐⭐
FOL 语法/语义 常量/谓词/函数/变量/量词;项/原子句/复合句;模型+解释 ⭐⭐⭐
量词性质 ∀⇒, ∃∧\forall\Rightarrow,\ \exists\land 搭配;对偶;顺序 ⭐⭐⭐
UI/EI 与命题化 全称/存在实例化;Skolem 常数;Herbrand 定理;半可判定 ⭐⭐⭐
合一 (Unification)/MGU 置换;最一般合一唯一;标准化分离 ⭐⭐⭐
广义假言推理 GMP 形式;对确定子句完备 ⭐⭐⭐
FOL 前束范式/CNF 转换 6 步;Skolem 化 ⭐⭐⭐
FOL 归结 谓词归结规则;可靠完备 ⭐⭐⭐
知识工程七步 / 领域建模 亲属/集合/Wumpus/电路域 ⭐⭐
逻辑程序设计 Prolog;Herbrand 域/基/模型;极小模型;SLD ⭐⭐

第一部分:逻辑 Agent 与命题逻辑 (lec7)

1.1 动机:为什么需要逻辑?

三类建模范式

范式 应用 思考方式
State-based models(搜索、MDP、博弈) 寻路、博弈 states, actions, costs
Variable-based models(CSP、贝叶斯网) 调度、医疗诊断 variables, factors
Logic-based models(命题/一阶逻辑) 定理证明、验证、推理 logical formulas, inference rules

逻辑推理 (logical inference) 与模型检测 (model checking) 的区别:前者施加一组保真规则紧凑地推导(如由 X1+X2=10, X1−X2=4X_1+X_2=10,\ X_1-X_2=4 直接推 X1=7X_1=7);后者直接枚举赋值验证。

逻辑的历史地位

  • 1990 年代前是 AI 主导范式。
  • 缺点 1:确定性 (deterministic),不处理不确定性 → 概率论解决。
  • 缺点 2:规则化,难从数据微调 → 机器学习解决。
  • 优点:紧凑的表达能力 (expressivity)——尚未被概率/ML 完全取代。

两个目标:Elaboration Tolerance 与统一表示

  • Elaboration Tolerance (McCarthy, 1998):形式化应方便地修改以纳入新现象/新情况。
  • 统一问题表示:问题实例 II 表示为事实集 PIP_I,问题类 CC 表示为规则集 PCP_C,PCP_C 可解 CC 中所有实例——即知识驱动软件 (knowledge-driven software)。

语言三层级

类型 例
自然语言(非形式) 汉语"二能除偶数";English “Two divides even numbers.”
编程语言(过程性、形式) def even(x): return x%2==0
逻辑语言(形式) ∀x. Even(x)⇒Divides(x,2)\forall x.\ \text{Even}(x)\Rightarrow\text{Divides}(x,2)

1.2 知识库 Agent (Knowledge-Based Agent)

⭐ 知识库 (Knowledge Base, KB):关于世界知识的集合,每条知识对应一个语句 (sentence),用某种知识表示语言 (knowledge representation language) 表达。

  • 推理机 (Inference System):根据 KB 推出隐含知识。例 KB={下雨, 下雨⇒地湿}\text{KB}=\{\text{下雨},\ \text{下雨}\Rightarrow\text{地湿}\} ⟹ 推出"地湿"。

逻辑 Agent 操作循环:

  1. TELL KB 新观察/新知识;
  2. ASK KB 下一步采取什么行动;
  3. 执行行动,并 TELL KB 结果。

Agent 三层次(pl_fol 补充)

层次 内容 可佳机器人例
知识层次 (Knowledge Level) 最抽象,智能体拥有的知识 知道操作微波炉可加热食物
逻辑层次 (Logical Level) 知识编码为语句 process(micro,food)⇒het(food)\text{process(micro,food)}\Rightarrow\text{het(food)}
执行层次 (Implementation Level) 具体算法与数据结构 ASP 规则实现

KR 假设(Levesque 1986 引 Leibniz)

思维可理解作符号表示上的机械操作。如同算术有保值 (value-preserving) 演算,思想可有保真 (truth-preserving) 演算。

KR 根本问题:平衡表达能力 (expressiveness) 与推理效率 (tractability)。


1.3 Wumpus 世界 (Wumpus World)

PEAS 描述

维度 内容
Performance 抓金 +1000;被 Wumpus 吃/掉坑 −1000;每步 −1;射箭 −10
Environment 4×4 洞穴;Wumpus(相邻格发臭 stench)、陷阱 pit(相邻格微风 breeze)、金子(同格闪烁 glitter);Wumpus 与 pit 不动
Actuators Forward / TurnLeft / TurnRight / Grab / Shoot
Sensors stench / breeze / glitter / bump / scream

环境表征

  • Partially observable(仅局部感知当前格)、Deterministic、Sequential、Static、Discrete、Single-agent(Wumpus 实为自然特征)。

KB 推理示例

感知 breeze ⟹ 相邻方格可能有 pit;感知 stench ⟹ 相邻可能有 wumpus。据此标记安全方格并规划路径。(探索过程图示见原课件 lec7.pdf,需对照查看。)


1.4 逻辑的一般概念 (Ingredients of a Logic)

⭐ 一个逻辑由三要素构成:

要素 定义 例
语法 (Syntax) 合法公式集合 Rain∧Wet\text{Rain}\land\text{Wet}
语义 (Semantics) 每公式指定一组模型(世界赋值/配置) —
推理规则 (Inference rules) 由 ff 得保证成立的 gg Modus Ponens

核心关系

  • 蕴涵 (Entailment):KB⊨α\text{KB}\models\alpha iff α\alpha 在所有 KB 为真的世界中为真 iff M(KB)⊆M(α)M(\text{KB})\subseteq M(\alpha)。
  • 推理 (Inference):KB⊢α\text{KB}\vdash\alpha iff α\alpha 可由某过程从 KB 推出(派生 derived)。
  • 可靠性 (Soundness):若 KB⊢α\text{KB}\vdash\alpha 则 KB⊨α\text{KB}\models\alpha(推出的都真)。
  • 完备性 (Completeness):若 KB⊨α\text{KB}\models\alpha 则 KB⊢α\text{KB}\vdash\alpha(真的都能推出)。

逻辑谱系(表达能力递增)

Horn 命题逻辑 < 命题逻辑 < 模态逻辑 (Modal) < 一阶 Horn < 一阶逻辑 (FOL) < 二阶逻辑 < 非单调逻辑(Default / Autoepistemic / Circumscription / MKNF)。

本体论约定 (ontological commitment) 与认识论约定 (epistemological commitment) 对比(lec8):

语言 本体论(世界中存在) 认识论(智能体相信)
命题逻辑 事实 (facts) 真/假/未知
一阶逻辑 事实、对象、关系 真/假/未知
时序逻辑 (Temporal) 事实、对象、关系、时间 真/假/未知
概率逻辑 事实 信度 ∈[0,1]\in[0,1]

1.5 命题逻辑语法 (Propositional Logic Syntax)

  • 命题符号 (Propositional symbols / 原子公式):A,B,C,…A,B,C,\dots
  • 联结词 (Logical connectives):¬, ∧, ∨, →, ↔\lnot,\ \land,\ \lor,\ \to,\ \leftrightarrow
  • 递归构造:若 f,gf,g 是公式,则 ¬f, f∧g, f∨g, f→g, f↔g\lnot f,\ f\land g,\ f\lor g,\ f\to g,\ f\leftrightarrow g 也是公式。
  • 公式本身只是符号(语法),尚无含义(语义)。

术语

术语 定义
Atom(原子) 原子公式(命题符号)
Literal(文字) 原子或其否定,如 A, ¬AA,\ \lnot A
Clause(子句) 文字的析取,如 A∨¬B∨CA\lor\lnot B\lor C

形式系统 LL(pl_fol,Hilbert 系统)

  • 联结词 ¬,→\lnot,\to 为基本;∧,∨,↔\land,\lor,\leftrightarrow 为辅助,定义为:
    • p∧q =df ¬(p→¬q)p\land q\ =_{df}\ \lnot(p\to\lnot q)
    • p∨q =df ¬p→qp\lor q\ =_{df}\ \lnot p\to q
    • p↔q =df ¬((p→q)→¬(q→p))p\leftrightarrow q\ =_{df}\ \lnot((p\to q)\to\lnot(q\to p))
  • 公理模式:
    • (L1) p→(q→p)p\to(q\to p)
    • (L2) (p→(q→r))→((p→q)→(p→r))(p\to(q\to r))\to((p\to q)\to(p\to r))
    • (L3) (¬p→¬q)→(q→p)(\lnot p\to\lnot q)\to(q\to p)
  • 推理规则 (MP):从 p, p→qp,\ p\to q 推出 qq。

形式证明与推导(pl_fol)

  • 形式证明:pp 的序列 p1,…,pn=pp_1,\dots,p_n=p,每步是公理或由前序 pi,pj(=pi→pk)p_i,p_j(=p_i\to p_k) 经 MP。记 ⊢p\vdash p(pp 是 LL 的内定理)。
  • 形式推导(从 Γ\Gamma):每步是公理、或属于 Γ\Gamma、或经 MP。记 Γ⊢p\Gamma\vdash p。

1.6 命题逻辑语义 (Semantics)

⭐ 模型 (Model):ww 是对命题符号的真值赋值。nn 个命题符号 ⟹ 2n2^n 个模型。

⭐ 解释函数 (Interpretation function) I(f,w)∈{true(1),false(0)}I(f,w)\in\{\text{true}(1),\text{false}(0)\}:

  • 基例:I(p,w)=w(p)I(p,w)=w(p)。
  • 递归:
    • I(¬f,w)=¬I(f,w)I(\lnot f,w)=\lnot I(f,w)
    • I(f∧g,w)=I(f,w)∧I(g,w)I(f\land g,w)=I(f,w)\land I(g,w)
    • I(f∨g,w)=I(f,w)∨I(g,w)I(f\lor g,w)=I(f,w)\lor I(g,w)
    • I(f→g,w)=¬I(f,w)∨I(g,w)I(f\to g,w)=\lnot I(f,w)\lor I(g,w)
    • I(f↔g,w)=(I(f,w)↔I(g,w))I(f\leftrightarrow g,w)=(I(f,w)\leftrightarrow I(g,w))

⭐ M(f)={w∣I(f,w)=1}M(f)=\{w\mid I(f,w)=1\}:公式 ff 满足的模型集。

⭐ 知识库:M(KB)=⋂f∈KBM(f)M(\text{KB})=\bigcap_{f\in\text{KB}} M(f)(合取 / 交)。直觉:KB 给世界施加约束,M(KB)M(\text{KB}) 是满足约束的所有世界。


1.7 核心语义关系

关系 定义 例
蕴涵 (Entailment) KB⊨f\text{KB}\models f M(f)⊇M(KB)M(f)\supseteq M(\text{KB})(ff 未添加新信息) Rain∧Snow⊨Snow\text{Rain}\land\text{Snow}\models\text{Snow}
矛盾 (Contradiction) M(KB)∩M(f)=∅M(\text{KB})\cap M(f)=\emptyset Rain∧Snow\text{Rain}\land\text{Snow} 与 ¬Snow\lnot\text{Snow}
偶然 (Contingency) ∅⊂M(KB)∩M(f)⊂M(KB)\emptyset\subset M(\text{KB})\cap M(f)\subset M(\text{KB}) Rain\text{Rain} 与 Snow\text{Snow}
可满足 (Satisfiable) M(KB)≠∅M(\text{KB})\neq\emptyset —

命题:KB contradicts ff iff KB⊨¬f\text{KB}\models\lnot f。

⭐ 核心等价(贯穿全章):

 KB⊨f   ⟺   KB∧¬f 不可满足 \boxed{\ \text{KB}\models f\ \iff\ \text{KB}\land\lnot f\ \text{不可满足}\ }

  • TELL:把新句加入 KB;ASK:查询是否蕴涵某句。

1.8 有效性与可满足(pl_fol 补充)

  • 有效 (valid):所有模型为真。重言式 (tautology),如 p→p, (¬p→p)→pp\to p,\ (\lnot p\to p)\to p。
  • 可满足 (satisfiable):某些模型为真。
  • 不可满足 (unsatisfiable):无模型为真。永假式 (contradiction),如 p∧¬pp\land\lnot p。
  • pp 有效 iff ¬p\lnot p 不可满足。

复杂性(pl_fol)

  • 判定 KB⊨p\text{KB}\models p:coNP-complete。
  • 判定 pp(或 KB∧¬p\text{KB}\land\lnot p)可满足:NP-complete。

可靠性与完备性

  • ⊢\vdash 可靠:Γ⊢p⇒Γ⊨p\Gamma\vdash p\Rightarrow\Gamma\models p。
  • ⊢\vdash 完备:Γ⊨p⇒Γ⊢p\Gamma\models p\Rightarrow\Gamma\vdash p。

1.9 逻辑等值律 (Logical Equivalences) ⭐⭐⭐

若 ⊨p↔q\models p\leftrightarrow q,则 pp 与 qq 逻辑等值。等值替换规则:若 ⊨q↔q′\models q\leftrightarrow q',则在 pp 中用 q′q' 替换子公式 qq 得 p′p',则 ⊨p↔p′\models p\leftrightarrow p'。

名称 等值式
∧\land 交换律 (commutativity) (p∧q)↔(q∧p)(p\land q)\leftrightarrow(q\land p)
∨\lor 交换律 (p∨q)↔(q∨p)(p\lor q)\leftrightarrow(q\lor p)
∧\land 结合律 (associativity) ((p∧q)∧r)↔(p∧(q∧r))((p\land q)\land r)\leftrightarrow(p\land(q\land r))
∨\lor 结合律 ((p∨q)∨r)↔(p∨(q∨r))((p\lor q)\lor r)\leftrightarrow(p\lor(q\lor r))
双否消去 (double-negation) ¬¬p↔p\lnot\lnot p\leftrightarrow p
逆否 (contraposition) (p→q)↔(¬q→¬p)(p\to q)\leftrightarrow(\lnot q\to\lnot p)
蕴含消去 (implication elim.) (p→q)↔(¬p∨q)(p\to q)\leftrightarrow(\lnot p\lor q)
双条件消去 (biconditional elim.) (p↔q)↔((p→q)∧(q→p))(p\leftrightarrow q)\leftrightarrow((p\to q)\land(q\to p))
De Morgan ¬(p∧q)↔(¬p∨¬q)\lnot(p\land q)\leftrightarrow(\lnot p\lor\lnot q);¬(p∨q)↔(¬p∧¬q)\lnot(p\lor q)\leftrightarrow(\lnot p\land\lnot q)
∧\land 对 ∨\lor 分配 (distributivity) (p∧(q∨r))↔((p∧q)∨(p∧r))(p\land(q\lor r))\leftrightarrow((p\land q)\lor(p\land r))
∨\lor 对 ∧\land 分配 (p∨(q∧r))↔((p∨q)∧(p∨r))(p\lor(q\land r))\leftrightarrow((p\lor q)\land(p\lor r))

1.10 合取范式 (CNF / DNF)

术语 定义
文字 (literal) 原子或其否定,如 x, ¬xx,\ \lnot x
子句 (clause) 文字析取,如 x1∨¬x2∨x3x_1\lor\lnot x_2\lor x_3
合取范式 CNF (Conjunctive Normal Form) 子句的合取,如 (x1∨¬x2)∧(x2∨¬x3∨¬x4)(x_1\lor\lnot x_2)\land(x_2\lor\lnot x_3\lor\lnot x_4)
析取范式 DNF 文字合取项的析取

转 CNF 三步

  1. 消去 →\to 和 ↔\leftrightarrow(用蕴含消去 + 双条件消去);
  2. ¬\lnot 深入(用 De Morgan + 双否消去);
  3. 对 ∧\land 和 ∨\lor 分配整理。

例:(x1∧(x2→x3))→x2(x_1\land(x_2\to x_3))\to x_2

  • 消 →\to:¬(x1∧(¬x2∨x3))∨x2\lnot(x_1\land(\lnot x_2\lor x_3))\lor x_2
  • ¬\lnot 深入:(¬x1∨(x2∧¬x3))∨x2(\lnot x_1\lor(x_2\land\lnot x_3))\lor x_2
  • 分配律:(¬x1∨x2)∧(¬x1∨x2∨¬x3)(\lnot x_1\lor x_2)\land(\lnot x_1\lor x_2\lor\lnot x_3)

1.11 模型检测 (Model Checking)

SAT(可满足性)= CSP 的特例(变量=命题符号,域 {T,F}\{T,F\},约束=子句)。

算法 特点
真值表枚举 O(2n)O(2^n) 时间,O(n)O(n) 空间
DPLL 回溯搜索 + 剪枝
WalkSat 随机局部搜索(可靠但不完备)

1.12 推理规则与证明方法

Modus Ponens (MP)

p,p→qq\frac{p,\quad p\to q}{q}

推理规则一般式:f1,…,fkg\dfrac{f_1,\dots,f_k}{g}。派生 (Derivation):KB⊢f\text{KB}\vdash f iff ff 最终加入 KB。

期望性质 (Desiderata)

可靠 (sound)、完备 (complete)、高效 (efficient)。

证明方法两大类

  1. 推理规则应用:证明=推理规则应用序列;可作搜索问题(后继函数=规则所有可能应用);常需转正规形式。
  2. 模型检测:真值表枚举 O(2n)O(2^n);改进回溯 DPLL;启发式搜索(可靠但不完备,如 min-conflicts 爬山)。

1.13 Horn 子句与确定子句 ⭐

⭐ 确定子句 (Definite clause):(p1∧⋯∧pk)→q(p_1\land\dots\land p_k)\to q,其中 pip_i(k≥0k\ge 0)与 qq 是命题符号。

  • 例:(Rain∧Snow)→Traffic(\text{Rain}\land\text{Snow})\to\text{Traffic};Traffic\text{Traffic}(k=0k=0)。
  • 非例:Rain∧Snow\text{Rain}\land\text{Snow}(非蕴涵)、¬Traffic\lnot\text{Traffic}(含否定)、(Rain∧Snow)→(Traffic∨Peaceful)(\text{Rain}\land\text{Snow})\to(\text{Traffic}\lor\text{Peaceful})(结论为析取)。

⭐ Horn 子句 (Horn clause):确定子句 或 目标子句 (p1∧⋯∧pk)→⊥(p_1\land\dots\land p_k)\to\bot(等价 ¬(p1∧⋯∧pk)\lnot(p_1\land\dots\land p_k))。

Modus Ponens on Horn clauses

p1,…,pk,(p1∧⋯∧pk)→qq\frac{p_1,\dots,p_k,\quad (p_1\land\dots\land p_k)\to q}{q}

⭐ 定理(Horn 上完备):若 KB 只含 Horn 子句且 pp 是被蕴涵的命题符号,则 MP 必能推出 pp。即

KB⊨p   ⟺   KB⊢p\text{KB}\models p\ \iff\ \text{KB}\vdash p

  • MP 仅能生成命题符号(非否定),故只能答 “yes” 或 “I don’t know”——因为全真赋值恒为模型,永不答 “no”。

1.14 前向链与反向链 ⭐⭐⭐

前向链 (Forward Chaining)

  • 数据驱动:从已知事实出发,反复触发前提已满足的确定子句,加入新结论,直到无新事实或得到查询。
  • 性质(Horn KB):
    • 可靠:每次推理本质是 MP 的一次应用。
    • 完备:每个被蕴含的原子语句终被生成。
    • 线性时间。
  • 完备性证明思路:设最小模型(所有可推出原子为真),任何被蕴含原子必在其中。

反向链 (Backward Chaining)

  • 目标驱动:从查询目标出发,反向找以该目标为头的规则,递归证明其前提。

前向 vs 反向

维度 前向链 反向链
驱动方式 数据驱动 目标驱动
适用 事实少、规则多 查询少、规则多
Prolog — 核心机制

1.15 命题归结 (Resolution) ⭐⭐⭐

⭐ 归结规则:

  • Unit Resolution:α∨β,¬βα\dfrac{\alpha\lor\beta,\quad \lnot\beta}{\alpha}
  • General Resolution:α∨β,¬β∨γα∨γ\dfrac{\alpha\lor\beta,\quad \lnot\beta\lor\gamma}{\alpha\lor\gamma}

归结算法

  1. 将公式化为子句集合(CNF);
  2. 反复使用归结规则;
  3. 无可添加新子句 ⟹ 可满足;出现空子句 □\square ⟹ 不可满足。

⭐ 归结反演:证明 KB⊨p\text{KB}\models p ⟺ 证明 KB∧¬p\text{KB}\land\lnot p 不可满足 ⟺ 转 CNF 后归结出空子句。

  • 命题逻辑中归结算法可靠、完备。
  • 时间复杂度:指数级(子句数与归结步数)。

第二部分:一阶逻辑 (First-Order Logic, lec8)

2.1 为何需要 FOL?

命题逻辑的优缺点

优点:

  • 陈述性 (declarative):知识与推理分离,且推理完全不依赖领域(对比程序设计语言的过程性)。
  • 支持部分/析取/否定信息(不像大多数数据库)。
  • 组合性 (compositional):复合句含义是各部分含义的函数。
  • 上下文无关 (context-independent)(不像自然语言)。

缺点:表达力弱。不能说"陷阱在相邻方格引起微风",只能逐格写 B1,1↔(P1,2∨P2,1)B_{1,1}\leftrightarrow(P_{1,2}\lor P_{2,1})。缺对象/关系与量词/变量。

FOL 的本体论约定

命题逻辑假设世界含事实 (facts);一阶逻辑(如自然语言)假设世界含:

  • 对象 (Objects):人、房屋、数、颜色、棒球赛、战争…
  • 关系 (Relations):red、round、prime;brother of、bigger than、part of…
  • 函数 (Functions):father of、best friend、one more than、plus…

谓词描述个体(可独立存在事物)间的关系或属性。


2.2 FOL 语法 (Syntax)

⭐ 基本元素:

元素 例
常量 (Constants) KingJohn, 2, USTC\text{KingJohn},\ 2,\ \text{USTC}
谓词 (Predicates) Brother, >\text{Brother},\ >
函数 (Functions) Sqrt, LeftLegOf\text{Sqrt},\ \text{LeftLegOf}
变量 (Variables) x,y,a,bx,y,a,b
联结词 ¬,⇒,∧,∨,⇔\lnot,\Rightarrow,\land,\lor,\Leftrightarrow
等词 (Equality) ==
量词 (Quantifiers) ∀, ∃\forall,\ \exists

⭐ 项 (Term) == 函数(项1,…,_1,\dots,项n_n) 或 常量 或 变量。

⭐ 原子句 (Atomic sentence) == 谓词(项1,…,_1,\dots,项n_n) 或 项1=_1=项2_2。

  • 例:Brother(KingJohn,Richard)\text{Brother}(\text{KingJohn},\text{Richard});>(Length(LeftLegOf(Richard)),Length(LeftLegOf(KingJohn)))>(\text{Length}(\text{LeftLegOf}(\text{Richard})),\text{Length}(\text{LeftLegOf}(\text{KingJohn})))。

⭐ 复合句 (Complex sentence):用联结词连接原子句。例 Sibling(KingJohn,Richard)⇒Sibling(Richard,KingJohn)\text{Sibling}(\text{KingJohn},\text{Richard})\Rightarrow\text{Sibling}(\text{Richard},\text{KingJohn})。

形式系统 KK(pl_fol)

符号表:

  • 逻辑符号:个体变元 x1,x2,…x_1,x_2,\dots;联结词 ¬,→,∧,∨,↔\lnot,\to,\land,\lor,\leftrightarrow;量词 ∀,∃\forall,\exists。
  • 非逻辑符号:个体常元 a1,a2,…a_1,a_2,\dots;函项符号 fn,mf_{n,m}(按元数);谓词符号 Pn,mP_{n,m}。

形成规则:

  • 项:(1) 变元/常元是项;(2) ff 是 nn 元函项符号,tit_i 是项 ⟹ f(t1,…,tn)f(t_1,\dots,t_n) 是项。
  • 公式:(1) PP 是 nn 元谓词,tit_i 项 ⟹ P(t1,…,tn)P(t_1,\dots,t_n) 原子公式;(2) ¬p,p→q,p∧q,p∨q,p↔q\lnot p, p\to q, p\land q, p\lor q, p\leftrightarrow q 复合公式;(3) ∀x p, ∃x p\forall x\,p,\ \exists x\,p 量化公式。

术语(pl_fol)

  • 子公式;自由/约束出现(∀x p\forall x\,p 中 xx 约束,pp 为辖域);闭项/开项(不含/含变元);闭公式/开公式(无/有自由变元);项 tt 对 p(x)p(x) 中 xx 自由(替换后 tt 中变元仍自由)。

公理系统 KK

  • (K1) p→(q→p)p\to(q\to p)
  • (K2) (p→(q→r))→((p→q)→(p→r))(p\to(q\to r))\to((p\to q)\to(p\to r))
  • (K3) (¬p→¬q)→(q→p)(\lnot p\to\lnot q)\to(q\to p)
  • (K4) ∀x p(x)→p(t)\forall x\,p(x)\to p(t)(项 tt 对 p(x)p(x) 中 xx 自由)
  • (K5) ∀x(p→q)→(p→∀x q)\forall x(p\to q)\to(p\to\forall x\,q)(xx 不在 pp 自由出现)
  • 推理规则:(MP) p,p→q⊢qp,p\to q\vdash q;(UG, Universal Generalization) p⊢∀x pp\vdash\forall x\,p。

2.3 FOL 语义 (Semantics)

⭐ 语句真值由一个模型 (model) 和解释 (interpretation) 判定。

  • 模型含对象(域元素 domain elements)及其间关系。
  • 解释指定指代 (referents):
    • 常量符号 ⟶ 对象
    • 谓词符号 ⟶ 关系
    • 函数符号 ⟶ 函数关系
  • 原子句 predicate(t1,…,tn)\text{predicate}(t_1,\dots,t_n) 为真 iff tit_i 指代的对象处于 predicate 指代的关系中。

形式语义(pl_fol)

  • 一阶结构 M=(D,F,P)M=(D,F,P):论域 DD(非空);DD 上函数集 FF;DD 上关系集 PP。
    • 常元 a↦aM∈Da\mapsto a^M\in D;nn 元函数符号 ↦fM:Dn→D\mapsto f^M:D^n\to D;nn 元谓词 ↦PM⊆Dn\mapsto P^M\subseteq D^n。
  • 个体变元指派 V:Y→DV:Y\to D;一阶解释 I=(M,V)I=(M,V)。
  • 赋值:
    • I(x)=V(x)I(x)=V(x);I(f(t1,…,tn))=fM(I(t1),…,I(tn))I(f(t_1,\dots,t_n))=f^M(I(t_1),\dots,I(t_n))。
    • P(t1,…,tn)P(t_1,\dots,t_n) 真 iff (I(t1),…,I(tn))∈PM(I(t_1),\dots,I(t_n))\in P^M。
    • ∀x p\forall x\,p 真 iff 对所有 d∈Dd\in D,Ix=d(p)I_{x=d}(p) 真。
    • ∃x p\exists x\,p 真 iff ¬∀x ¬p\lnot\forall x\,\lnot p 真。
    • Ix=d=(M,V∣x=d)I_{x=d}=(M,V|_{x=d}),V∣x=d(y)={dy=xV(y)otherwiseV|_{x=d}(y)=\begin{cases}d&y=x\\V(y)&\text{otherwise}\end{cases}。

模型与有效性(pl_fol)

  • MM 有效:对一切 VV,pp 在 (M,V)(M,V) 真 ⟹ M⊨pM\models p。
  • 逻辑有效:对一切结构 MM,M⊨pM\models p,记 ⊨p\models p。
  • 模型:M⊨ΓM\models\Gamma(对 Γ\Gamma 中所有 pp,M⊨pM\models p)。
  • 语义后承 Γ⊨p\Gamma\models p:对一切 MM,M⊨Γ⇒M⊨pM\models\Gamma\Rightarrow M\models p。
  • FOL 公理系统与语义可靠、完备。

FOL 模型无穷多

枚举 FOL 模型不可行:域个数 n:1→∞n:1\to\infty → 每个 kk 元谓词的关系 → 每个常量指代… ⟹ 通过枚举模型检验蕴涵不可行。

FOL 的局限(pl_fol)

无法刻画极小、传递闭包等关系(如仅靠 parent 公理无法定义 ancestor 传递闭包,需归纳/不动点)。


2.4 量词 (Quantifiers) ⭐⭐⭐

全称量词 (Universal) ∀\forall

∀x At(x,USTC)⇒Smart(x)\forall x\ \text{At}(x,\text{USTC})\Rightarrow\text{Smart}(x)

  • “∀x P\forall x\,P” 在模型 mm 中为真 iff 对每个对象 xx,PP 为真。≈ 实例的合取式。

⚠️ 常见错误:∀\forall 与 ∧\land 搭配——∀x At(x,USTC)∧Smart(x)\forall x\,\text{At}(x,\text{USTC})\land\text{Smart}(x) 意为"所有人都在 USTC 且都聪明"。正确:∀\forall 配 ⇒\Rightarrow。

存在量词 (Existential) ∃\exists

∃x At(x,USTC)∧Smart(x)\exists x\ \text{At}(x,\text{USTC})\land\text{Smart}(x)

  • “∃x P\exists x\,P” 真 iff PP 对某对象为真。≈ 实例的析取式。

⚠️ 常见错误:∃\exists 与 ⇒\Rightarrow 搭配——∃x At(x,USTC)⇒Smart(x)\exists x\,\text{At}(x,\text{USTC})\Rightarrow\text{Smart}(x),只要有人不在 USTC 即真!正确:∃\exists 配 ∧\land。

量词性质

  • ∀x∀y=∀y∀x\forall x\forall y = \forall y\forall x;∃x∃y=∃y∃x\exists x\exists y = \exists y\exists x。
  • 但 ∃x∀y≠∀y∃x\exists x\forall y \neq \forall y\exists x:
    • ∃x∀y Loves(x,y)\exists x\forall y\,\text{Loves}(x,y):“存在一人爱所有人”。
    • ∀y∃x Loves(x,y)\forall y\exists x\,\text{Loves}(x,y):“每人被至少一人爱”。

⭐ 量词对偶 (Duality):

∀x P≡¬∃x ¬P∃x P≡¬∀x ¬P\forall x\,P \equiv \lnot\exists x\,\lnot P\qquad \exists x\,P \equiv \lnot\forall x\,\lnot P

等词 (Equality)

term1=term2\text{term}_1=\text{term}_2 为真 iff 指代同一对象。

Sibling 定义:

∀x,y Sibling(x,y)⇔[¬(x=y)∧∃m,f ¬(m=f)∧Parent(m,x)∧Parent(f,x)∧Parent(m,y)∧Parent(f,y)]\forall x,y\ \text{Sibling}(x,y)\Leftrightarrow\big[\lnot(x=y)\land\exists m,f\ \lnot(m=f)\land\text{Parent}(m,x)\land\text{Parent}(f,x)\land\text{Parent}(m,y)\land\text{Parent}(f,y)\big]


2.5 使用 FOL:领域建模

亲属域 (Kinship)

  • ∀x,y Brother(x,y)⇒Sibling(x,y)\forall x,y\ \text{Brother}(x,y)\Rightarrow\text{Sibling}(x,y)
  • Sibling 对称:∀x,y Sibling(x,y)⇒Sibling(y,x)\forall x,y\ \text{Sibling}(x,y)\Rightarrow\text{Sibling}(y,x)
  • ∀x,y Mother(x,y)⇔(Female(x)∧Parent(x,y))\forall x,y\ \text{Mother}(x,y)\Leftrightarrow(\text{Female}(x)\land\text{Parent}(x,y))
  • ∀x,y Cousin(x,y)⇔∃p,ps Parent(p,x)∧Sibling(ps,p)∧Parent(ps,y)\forall x,y\ \text{Cousin}(x,y)\Leftrightarrow\exists p,ps\ \text{Parent}(p,x)\land\text{Sibling}(ps,p)\land\text{Parent}(ps,y)

集合域 (Set)

  • ∀s Set(s)⇔(s={})∨(∃x,s2 Set(s2)∧s={x∣s2})\forall s\ \text{Set}(s)\Leftrightarrow(s=\{\})\lor(\exists x,s_2\ \text{Set}(s_2)\land s=\{x|s_2\})
  • 空集不可分解:¬∃x,s {x∣s}={}\lnot\exists x,s\ \{x|s\}=\{\}
  • 子集:∀s1,s2 s1⊆s2⇔(∀x x∈s1⇒x∈s2)\forall s_1,s_2\ s_1\subseteq s_2\Leftrightarrow(\forall x\ x\in s_1\Rightarrow x\in s_2)
  • 相等:∀s1,s2 (s1=s2)⇔(s1⊆s2∧s2⊆s1)\forall s_1,s_2\ (s_1=s_2)\Leftrightarrow(s_1\subseteq s_2\land s_2\subseteq s_1)
  • 交:∀x,s1,s2 x∈(s1∩s2)⇔(x∈s1∧x∈s2)\forall x,s_1,s_2\ x\in(s_1\cap s_2)\Leftrightarrow(x\in s_1\land x\in s_2)
  • 并:∀x,s1,s2 x∈(s1∪s2)⇔(x∈s1∨x∈s2)\forall x,s_1,s_2\ x\in(s_1\cup s_2)\Leftrightarrow(x\in s_1\lor x\in s_2)

Wumpus 域 FOL KB

  • 感知:∀t,s,b Percept([s,b,Glitter],t)⇒Glitter(t)\forall t,s,b\ \text{Percept}([s,b,\text{Glitter}],t)\Rightarrow\text{Glitter}(t)
  • 反射:∀t Glitter(t)⇒BestAction(Grab,t)\forall t\ \text{Glitter}(t)\Rightarrow\text{BestAction}(\text{Grab},t)
  • 带内部状态:∀t AtGold(t)∧¬Holding(Gold,t)⇒BestAction(Grab,t)\forall t\ \text{AtGold}(t)\land\lnot\text{Holding}(\text{Gold},t)\Rightarrow\text{BestAction}(\text{Grab},t)

⭐ 诊断规则 (Diagnostic) vs 因果规则 (Causal):

  • 诊断(由果推因):∀s Breezy(s)⇒∃r Adjacent(r,s)∧Pit(r)\forall s\ \text{Breezy}(s)\Rightarrow\exists r\ \text{Adjacent}(r,s)\land\text{Pit}(r)

  • 因果(由因推果):∀r,s Adjacent(r,s)∧Pit(r)⇒Breezy(s)\forall r,s\ \text{Adjacent}(r,s)\land\text{Pit}(r)\Rightarrow\text{Breezy}(s)

  • Breezy 定义:∀s Breezy(s)⇔∃r Adjacent(r,s)∧Pit(r)\forall s\ \text{Breezy}(s)\Leftrightarrow\exists r\ \text{Adjacent}(r,s)\land\text{Pit}(r)

  • Adjacent:∀x,y,a,b Adjacent([x,y],[a,b])⇔[a,b]∈{[x+1,y],[x−1,y],[x,y+1],[x,y−1]}\forall x,y,a,b\ \text{Adjacent}([x,y],[a,b])\Leftrightarrow[a,b]\in\{[x+1,y],[x-1,y],[x,y+1],[x,y-1]\}

与 FOL KB 交互(置换/substitution)

  • Tell(KB,Percept([Smell,Breeze,None],5))\text{Tell}(\text{KB},\text{Percept}([\text{Smell},\text{Breeze},\text{None}],5))
  • Ask(KB,a BestAction(a,5))\text{Ask}(\text{KB},a\ \text{BestAction}(a,5)) ⟹ 答 {a/Shoot}\{a/\text{Shoot}\}(绑定表 binding list)。
  • 给定句子 SS 与置换 σ\sigma,SσS\sigma 为代入结果。Ask(KB,S)\text{Ask}(\text{KB},S) 返回部分/所有使 KB⊨Sσ\text{KB}\models S\sigma 的 σ\sigma。

2.6 知识工程 (Knowledge Engineering) 七步

  1. 确定任务 (Identify the task)。
  2. 搜集相关知识 (Assemble relevant knowledge)。
  3. 确定词汇表 (vocabulary):谓词/函数/常量。
  4. 编码通用域知识 (Encode general knowledge)。
  5. 编码特定问题实例 (Encode specific instance)。
  6. 提交查询获取答案 (Pose queries)。
  7. 调试 KB (Debug)。

电路域 (Electronic Circuits) 例——一位全加器

  • 任务:电路验证(是否正确相加)。
  • 相关知识:由导线 (wires) 和门 (gates) 组成;门类型 AND/OR/XOR/NOT;忽略大小/形状/颜色。
  • 词汇表:Type(X1)=XOR\text{Type}(X_1)=\text{XOR} 或 Type(X1,XOR)\text{Type}(X_1,\text{XOR}) 或 XOR(X1)\text{XOR}(X_1)。
  • 通用知识公理:
    • ∀t1,t2 Connected(t1,t2)⇒Signal(t1)=Signal(t2)\forall t_1,t_2\ \text{Connected}(t_1,t_2)\Rightarrow\text{Signal}(t_1)=\text{Signal}(t_2)
    • ∀t Signal(t)=1∨Signal(t)=0\forall t\ \text{Signal}(t)=1\lor\text{Signal}(t)=0;1≠01\neq 0
    • Connected 可交换:∀t1,t2 Connected(t1,t2)⇒Connected(t2,t1)\forall t_1,t_2\ \text{Connected}(t_1,t_2)\Rightarrow\text{Connected}(t_2,t_1)
    • OR 门:∀g Type(g)=OR⇒Signal(Out(1,g))=1⇔∃n Signal(In(n,g))=1\forall g\ \text{Type}(g)=\text{OR}\Rightarrow\text{Signal}(\text{Out}(1,g))=1\Leftrightarrow\exists n\ \text{Signal}(\text{In}(n,g))=1
    • AND 门:输出 0 iff 某 输入 0
    • XOR 门:输出 1 iff 两输入不同
    • NOT 门:输出与输入相反
  • 查询:∃i1,i2,i3,o1,o2 Signal(In(1,C1))=i1∧⋯∧Signal(Out(2,C1))=o2\exists i_1,i_2,i_3,o_1,o_2\ \text{Signal}(\text{In}(1,C_1))=i_1\land\dots\land\text{Signal}(\text{Out}(2,C_1))=o_2。
  • 调试:可能遗漏 1≠01\neq 0 等断言。

第三部分:FOL 推理 (Inference in FOL)

3.1 命题化 (Reduction to Propositional Inference)

⭐ 全称实例化 (UI, Universal Instantiation):

∀v αSubst({v/g},α)\frac{\forall v\ \alpha}{\text{Subst}(\{v/g\},\alpha)}

对任意变量 vv 和基项 (ground term) gg。

  • 例 ∀x King(x)∧Greedy(x)⇒Evil(x)\forall x\ \text{King}(x)\land\text{Greedy}(x)\Rightarrow\text{Evil}(x) 得 King(John)∧Greedy(John)⇒Evil(John)\text{King}(\text{John})\land\text{Greedy}(\text{John})\Rightarrow\text{Evil}(\text{John}) 等。
  • UI 可多次应用;新 KB 与旧 KB 逻辑等价。

⭐ 存在实例化 (EI, Existential Instantiation):

∃v αSubst({v/k},α)\frac{\exists v\ \alpha}{\text{Subst}(\{v/k\},\alpha)}

kk 为不出现在 KB 他处的新常量符号,称 Skolem 常数 (Skolem constant)。

  • 例 ∃x Crown(x)∧OnHead(x,John)\exists x\ \text{Crown}(x)\land\text{OnHead}(x,\text{John}) ⟹ Crown(C1)∧OnHead(C1,John)\text{Crown}(C_1)\land\text{OnHead}(C_1,\text{John})。
  • EI 只能应用一次;新 KB 不等价于旧 KB,但可满足性等价(satisfiable iff)。

命题化与 Herbrand 定理

命题化 KB 与查询,应用归结,返回结果。

⚠️ 问题:有函数符号时基项无穷(如 Father(Father(Father(John)))\text{Father}(\text{Father}(\text{Father}(\text{John}))))。

⭐ Herbrand 定理 (1930):若语句 α\alpha 被 FOL KB 蕴涵,则存在仅涉及命题化 KB 有限子集的证明。

  • 算法:n=0→∞n=0\to\infty,用深度 nn 项命题化,查是否蕴涵。
  • 问题:α\alpha 被蕴涵则停;不被蕴涵则死循环。

⭐ 半可判定 (Semidecidable)(Turing 1936, Church 1936):FOL 蕴涵半可判定——存在算法对每个被蕴涵语句答 yes,但不存在算法对每个非蕴涵语句答 no。

命题化的问题

  • 生成大量无关语句(如 Greedy(Richard)\text{Greedy}(\text{Richard}) 与结论无关)。
  • pp 个 kk 元谓词 + nn 常量 ⟹ p⋅nkp\cdot n^k 实例;有函数符号更糟。

3.2 合一 (Unification) ⭐⭐⭐

⭐ 若存在置换 θ\theta 使 αθ=βθ\alpha\theta=\beta\theta,则 θ\theta 合一 α,β\alpha,\beta,记 Unify(α,β)=θ\text{Unify}(\alpha,\beta)=\theta。
示例(Knows(John,x)\text{Knows}(\text{John},x) 与):

pp qq θ\theta
Knows(John,x)\text{Knows}(\text{John},x) Knows(John,Jane)\text{Knows}(\text{John},\text{Jane}) {x/Jane}\{x/\text{Jane}\}
Knows(John,x)\text{Knows}(\text{John},x) Knows(y,OJ)\text{Knows}(y,\text{OJ}) {x/OJ,y/John}\{x/\text{OJ},y/\text{John}\}
Knows(John,x)\text{Knows}(\text{John},x) Knows(y,Mother(y))\text{Knows}(y,\text{Mother}(y)) {y/John,x/Mother(John)}\{y/\text{John},x/\text{Mother}(\text{John})\}
Knows(John,x)\text{Knows}(\text{John},x) Knows(x,OJ)\text{Knows}(x,\text{OJ}) fail(xx 同时=John 和 OJ)

⭐ 标准化分离 (Standardizing apart):换名消除变量重叠,如 Knows(z17,OJ)\text{Knows}(z_{17},\text{OJ})。

⭐ 最一般合一 (MGU):对变量限制最少的合一者;对每个表达式对,MGU 唯一(至变量换名)。

  • 例 Knows(John,x)\text{Knows}(\text{John},x) 与 Knows(y,z)\text{Knows}(y,z),MGU ={y/John,x/z}=\{y/\text{John},x/z\}(比 {y/John,x/John,z/John}\{y/\text{John},x/\text{John},z/\text{John}\} 更一般)。

置换与合成(pl_fol 形式定义)

  • 置换 (substitution) θ={v1/t1,…,vn/tn}\theta=\{v_1/t_1,\dots,v_n/t_n\}:viv_i 变量,ti≠vit_i\neq v_i 的项,vi≠vjv_i\neq v_j。
  • EθE\theta:同时替换 EE 中所有 viv_i 为 tit_i。
    • 例 E=P(x,y,f(a))E=P(x,y,f(a)),θ={x/b,y/x}\theta=\{x/b,y/x\} ⟹ Eθ=P(b,x,f(a))E\theta=P(b,x,f(a))。
  • 合成 θσ\theta\sigma:先用 θ\theta 再用 σ\sigma。
    • θ={x/f(y),y/z}\theta=\{x/f(y),y/z\},σ={x/a,y/b,z/y}\sigma=\{x/a,y/b,z/y\} ⟹ θσ={x/f(b),z/y}\theta\sigma=\{x/f(b),z/y\}。

合一者与 MGU(pl_fol)

  • 合一者 (unifier) θ\theta:S1θ=⋯=SkθS_1\theta=\dots=S_k\theta。例 {P(f(x),z),P(y,a)}\{P(f(x),z),P(y,a)\} 合一者 σ={y/f(a),x/a,z/a}\sigma=\{y/f(a),x/a,z/a\}。
  • mgu:对任意合一 σ\sigma 存在 γ\gamma 使 σ=θγ\sigma=\theta\gamma。例 mgu ={y/f(x),z/a}=\{y/f(x),z/a\},σ=θ{x/a}\sigma=\theta\{x/a\}。
  • mgu(等价)唯一。
  • 分歧集 (disagreement set):最左符号分歧处抽取的子表达式集合。例 S={P(f(x),h(y),a),P(f(x),z,a),P(f(x),h(y),b)}S=\{P(f(x),h(y),a),P(f(x),z,a),P(f(x),h(y),b)\} ⟹ {h(y),z}\{h(y),z\}。
  • 合一算法:σ0=ϵ\sigma_0=\epsilon;若 σk\sigma_k 是 SS 合一则停(σk\sigma_k 为 mgu);否则找 SσkS\sigma_k 分歧集 DkD_k;若 DkD_k 含变量 vv 与不含 vv 的项 tt,σk+1=σk{v/t}\sigma_{k+1}=\sigma_k\{v/t\};否则不可合一。

3.3 广义假言推理 (Generalized Modus Ponens, GMP) ⭐⭐⭐

⭐ GMP:

p1′,p2′,…,pn′,(p1∧p2∧⋯∧pn⇒q)qθ\frac{p'_1,p'_2,\dots,p'_n,\quad (p_1\land p_2\land\dots\land p_n\Rightarrow q)}{q\theta}

其中 pi′θ=piθp'_i\theta=p_i\theta 对所有 ii。
例:

p1′=King(John)p'_1=\text{King}(\text{John}) p1=King(x)p_1=\text{King}(x)
p2′=Greedy(y)p'_2=\text{Greedy}(y) p2=Greedy(x)p_2=\text{Greedy}(x)
θ={x/John,y/John}\theta=\{x/\text{John},y/\text{John}\} q=Evil(x)q=\text{Evil}(x)
qθ=Evil(John)q\theta=\text{Evil}(\text{John})
  • 用于确定子句 (definite clauses) KB(恰一个正文字);所有变量默认全称量化。

半可判定

FOL(即使限制 Horn 子句)半可判定:若 KB 蕴涵 ff,存在算法有限步证明;若不蕴涵,无算法有限步显示。

GMP 可靠性证明

需证 p1′,…,pn′,(p1∧⋯∧pn⇒q)⊨qθp'_1,\dots,p'_n,(p_1\land\dots\land p_n\Rightarrow q)\models q\theta(给定 pi′θ=piθp'_i\theta=p_i\theta)。

  • 引理:对任意 pp,p⊨pθp\models p\theta。
  1. (p1∧⋯∧pn⇒q)⊨(p1∧⋯∧pn⇒q)θ=(p1θ∧⋯∧pnθ⇒qθ)(p_1\land\dots\land p_n\Rightarrow q)\models(p_1\land\dots\land p_n\Rightarrow q)\theta=(p_1\theta\land\dots\land p_n\theta\Rightarrow q\theta)
  2. p1′,…,pn′⊨p1′∧⋯∧pn′⊨p1′θ∧⋯∧pn′θp'_1,\dots,p'_n\models p'_1\land\dots\land p'_n\models p'_1\theta\land\dots\land p'_n\theta
  3. 由 1、2 经普通 MP 得 qθq\theta。

GMP 完备性

  • 对一般 FOL 不完备(非每句可转 Horn 形式)。
  • 对确定子句 FOL KB 完备。

3.4 FOL 前向链 (Forward Chaining)

经典例:West 犯罪 KB

1
2
3
4
5
6
7
American(x) ∧ Weapon(y) ∧ Sells(x,y,z) ∧ Hostile(z) ⇒ Criminal(x)
Owns(Nono,M1), Missile(M1) (由 ∃ 实例化)
Missile(x) ∧ Owns(Nono,x) ⇒ Sells(West,x,Nono)
Missile(x) ⇒ Weapon(x)
Enemy(x,America) ⇒ Hostile(x)
American(West)
Enemy(Nono,America)

前向链推导 ⟹ Criminal(West)\text{Criminal}(\text{West})。

性质

  • 对一阶确定子句可靠且完备(证明类似命题逻辑)。
  • Datalog = 一阶确定子句 + 无函数(如犯罪 KB)⟹ FC 多项式迭代终止(至多 p⋅nkp\cdot n^k 文字)。
  • 一般情况 α\alpha 不被蕴涵时可能不终止(不可避免,因确定子句蕴涵半可判定)。

效率

  • 无需在迭代 kk 重新匹配前提未在 k−1k-1 新增的规则。
  • DB 索引允许 O(1)O(1) 检索已知事实(如查 Missile(x)\text{Missile}(x) 检索 Missile(M1)\text{Missile}(M_1))。
  • 匹配合取前提与已知事实是 NP-hard。

3.5 FOL 反向链 (Backward Chaining)

  • 深度优先递归证明搜索:空间线性于证明大小。

  • 不完备(无限循环)⟹ 检查当前目标是否在栈中。

  • 低效(重复子目标)⟹ 缓存先前结果(额外空间)。

  • 广泛用于逻辑程序设计 (logic programming)(如 Prolog)。

  • FC/BC 对 Horn KB 完备,但对一般 FOL 不完备。


3.6 前束范式 (Prenex Normal Form)(pl_fol)

形式 Q1x1⋯Qnxn pQ_1 x_1\cdots Q_n x_n\,p,pp 无量词(母式 matrix)。

转换规则(Q∗Q^* 为 QQ 对偶量词):

  1. 改名:∣=Qx p(x)↔Qy p(y)|= Qx\,p(x)\leftrightarrow Qy\,p(y)(条件)。
  2. 移量词:xx 不在 pp 自由 ⟹ ∣=(p→Qx q)↔Qx(p→q)|=(p\to Qx\,q)\leftrightarrow Qx(p\to q);xx 不在 qq 自由 ⟹ ∣=(Qx p→q)↔Q∗x(p→q)|=(Qx\,p\to q)\leftrightarrow Q^*x(p\to q)。
  3. ¬\lnot 内移:∣=¬Qx p↔Q∗x ¬p|=\lnot Qx\,p\leftrightarrow Q^*x\,\lnot p。
  4. ∣=(∀x p∧∀x q)↔∀x(p∧q)|=(\forall x\,p\land\forall x\,q)\leftrightarrow\forall x(p\land q)。
  5. ∣=(∃x p∨∃x q)↔∃x(p∨q)|=(\exists x\,p\lor\exists x\,q)\leftrightarrow\exists x(p\lor q)。
  6. xx 不在 pp 自由 ⟹ ∣=(p∨∀x q)↔∀x(p∨q)|=(p\lor\forall x\,q)\leftrightarrow\forall x(p\lor q),∣=(p∧∃x q)↔∃x(p∧q)|=(p\land\exists x\,q)\leftrightarrow\exists x(p\land q)。

3.7 FOL 转 CNF ⭐⭐⭐

⭐ 六步(示例"爱所有动物者被某人爱" ∀x[∀y Animal(y)⇒Loves(x,y)]⇒[∃y Loves(y,x)]\forall x[\forall y\,\text{Animal}(y)\Rightarrow\text{Loves}(x,y)]\Rightarrow[\exists y\,\text{Loves}(y,x)]):

  1. 消等价/蕴含 (Eliminate ↔,⇒\leftrightarrow,\Rightarrow):
    ∀x[¬∀y ¬Animal(y)∨Loves(x,y)]∨[∃y Loves(y,x)]\forall x[\lnot\forall y\,\lnot\text{Animal}(y)\lor\text{Loves}(x,y)]\lor[\exists y\,\text{Loves}(y,x)]
  2. ¬\lnot 内移 (Move ¬\lnot inwards):¬∀x p≡∃x ¬p\lnot\forall x\,p\equiv\exists x\,\lnot p,¬∃x p≡∀x ¬p\lnot\exists x\,p\equiv\forall x\,\lnot p
    ∀x[∃y Animal(y)∧¬Loves(x,y)]∨[∃y Loves(y,x)]\forall x[\exists y\,\text{Animal}(y)\land\lnot\text{Loves}(x,y)]\lor[\exists y\,\text{Loves}(y,x)]
  3. 变量标准化 (Standardize variables):各量词不同变量
    ∀x[∃y Animal(y)∧¬Loves(x,y)]∨[∃z Loves(z,x)]\forall x[\exists y\,\text{Animal}(y)\land\lnot\text{Loves}(x,y)]\lor[\exists z\,\text{Loves}(z,x)]
  4. Skolem 化 (Skolemize):存在变量 ⟹ 所辖全称变量的 Skolem 函数
    ∀x[Animal(F(x))∧¬Loves(x,F(x))]∨Loves(G(x),x)\forall x[\text{Animal}(F(x))\land\lnot\text{Loves}(x,F(x))]\lor\text{Loves}(G(x),x)
  5. 去全称量词 (Drop universal quantifiers):
    [Animal(F(x))∧¬Loves(x,F(x))]∨Loves(G(x),x)[\text{Animal}(F(x))\land\lnot\text{Loves}(x,F(x))]\lor\text{Loves}(G(x),x)
  6. ∨\lor 分配到 ∧\land (Distribute ∨\lor over ∧\land):
    [Animal(F(x))∨Loves(G(x),x)]∧[¬Loves(x,F(x))∨Loves(G(x),x)][\text{Animal}(F(x))\lor\text{Loves}(G(x),x)]\land[\lnot\text{Loves}(x,F(x))\lor\text{Loves}(G(x),x)]

Skolem 化细则(pl_fol)

前束范式中:

  • ∃x\exists x 左无 ∀\forall ⟹ 母式中 xx 替换为新常量 aa;
  • ∃x\exists x 左有 ∀x1⋯∀xm\forall x_1\cdots\forall x_m ⟹ 替换为 f(x1,…,xm)f(x_1,\dots,x_m)(新 nn 元函数符号)。
  • 例:∀x∃y,z ((Animal(y)∧¬Loves(x,y))∨Loves(z,x))\forall x\exists y,z\,((\text{Animal}(y)\land\lnot\text{Loves}(x,y))\lor\text{Loves}(z,x)) ⟹ ∀x((Animal(f(x))∧¬Loves(x,f(x)))∨Loves(g(x),x))\forall x((\text{Animal}(f(x))\land\lnot\text{Loves}(x,f(x)))\lor\text{Loves}(g(x),x))。

性质:pp 不可满足 iff 其 CNF ss 不可满足;∣=s→p|=s\to p 但 ∤ ⁣=p→s\not|\!=p\to s。


3.8 FOL 归结 (Resolution) ⭐⭐⭐

⭐ 归结反演基础:KB⊨α\text{KB}\models\alpha iff (KB∧¬α)(\text{KB}\land\lnot\alpha) 不可满足。

算法:

  1. 所有公式转 CNF;
  2. 反复应用归结规则;
  3. 返回不可满足 iff 导出 false(空子句)。

⭐ 全一阶归结规则:

l1∨⋯∨lk,m1∨⋯∨mnl1∨⋯∨li−1∨li+1∨⋯∨mj−1∨mj+1∨⋯∨mnθ\frac{l_1\lor\dots\lor l_k,\quad m_1\lor\dots\lor m_n}{l_1\lor\dots\lor l_{i-1}\lor l_{i+1}\lor\dots\lor m_{j-1}\lor m_{j+1}\lor\dots\lor m_n}\theta

其中 Unify(li,¬mj)=θ\text{Unify}(l_i,\lnot m_j)=\theta。两子句须标准化分离(无共享变量)。

例:¬Rich(x)∨Unhappy(x)\lnot\text{Rich}(x)\lor\text{Unhappy}(x),Rich(Ken)\text{Rich}(\text{Ken}) ⊢\vdash Unhappy(Ken)\text{Unhappy}(\text{Ken}),θ={x/Ken}\theta=\{x/\text{Ken}\}。

对 CNF(KB∧¬α)\text{CNF}(\text{KB}\land\lnot\alpha) 归结,对 FOL 完备。

谓词归结规则(pl_fol)

α∨p,¬q∨γ(α∨γ)θ\frac{\alpha\lor p,\quad \lnot q\lor\gamma}{(\alpha\lor\gamma)\theta}

pp 与 qq 的 mgu 为 θ\theta,两子句标准化分离。

  • 例 C1=P(x)∨Q(f(x))C_1=P(x)\lor Q(f(x)),C2=R(g(y))lor¬Q(f(a))C_2=R(g(y))lor\lnot Q(f(a)),mgu σ={x/a}\sigma=\{x/a\} ⟹ 归结式 P(a)∨R(g(y))P(a)\lor R(g(y))。

归结过程:KB⊨α\text{KB}\models\alpha ⟺ KB∧¬α\text{KB}\land\lnot\alpha 不可满足 ⟺ CNF ⟺ 标准化分离得子句集 EE ⟺ 对 EE 归结 ⟹ 归结式放入 EE,反复 ⟹ 空子句 ⟹ 得证。

  • 谓词归结可靠、完备。

3.9 FOL 推理总结

命题逻辑 一阶逻辑
模型检测 真值表 / DPLL / WalkSat 不可行(模型无穷)→ 命题化
Modus Ponens Horn 子句 MP++(Horn 子句,加合一/置换)
归结 一般 归结++(一般,加合一/置换)

++ = unification and substitution。关键思想:FOL 中变量带来紧凑的知识表示。

FOL 不可判定性(pl_fol)

  • FOL 不可判定(停机问题):不存在程序判定任意公式 pp 是否有效 / 是否为任意 Γ\Gamma 的逻辑结论。
  • FOL 有效性半可判定:有效公式可证明(有限步)。
  • 很多 KR 语言(OWL、描述逻辑 description logic)是 FOL 的可判定子集。
  • 模型检测:不可行(解释无穷)。
  • 推理规则法:归结 (resolution)、Tableaux 方法等。

第四部分:逻辑程序设计 (Logic Programming, pl_fol)

4.1 基本观点

⭐ Algorithm = Logic + Control

  • Logic:要解决的问题是什么。
  • Control:如何解决问题。
传统程序设计(C/C++) 逻辑程序设计(Prolog)
关注 Control,掩盖 Logic 只写 Logic,系统自动 Control

特点:

  • Logic 与 Control 分离:Logic 通用,Control 可用不同方法改进。
  • 纯 Logic 便于验证,保证可靠性。
  • 高层次编程:只告诉系统做什么 (What),不需如何做 (How)。
  • 相对效率较低。

4.2 语法

  • 规则 A←A1,A2,…,AmA\leftarrow A_1,A_2,\dots,A_m:AA 为头(原子),AiA_i 为体(原子合取)。
  • m=0m=0 为事实(无体,往往省略 ←\leftarrow)。
  • 一条规则 A←A1,…,AmA\leftarrow A_1,\dots,A_m 代表 Horn 子句 A∨¬A1∨⋯∨¬AmA\lor\lnot A_1\lor\dots\lor\lnot A_m(至多一正文字)。
  • 所有变元默认全称量化:∀x1,…,xn A∨¬A1∨⋯∨¬Am\forall x_1,\dots,x_n\ A\lor\lnot A_1\lor\dots\lor\lnot A_m。

4.3 Herbrand 域/基/常例

  • 常项 (ground term):由 PP 中常元和函数符号复合的项。
  • Herbrand 域 U(P)U(P):所有常项集合。例 P1={p(1).,q(2).,q(x)←p(x).}P_1=\{p(1).,q(2).,q(x)\leftarrow p(x).\} ⟹ U(P1)={1,2}U(P_1)=\{1,2\}。
  • 常原子:常项 + 谓词符号。Herbrand 基 B(P)B(P) = 所有常原子集合。例 B(P1)={p(1),p(2),q(1),q(2)}B(P_1)=\{p(1),p(2),q(1),q(2)\}。
  • 常例 (ground instance):对规则变元代入常项所得无变元规则。有函数符号时 Herbrand 域可数无穷,常例也可能无穷。

4.4 Herbrand 解释与模型

  • Herbrand 解释 IHI_H:论域 =U(P)=U(P),VHV_H 把常项/常原子映射为自身;指派集合 M(P)⊆B(P)M(P)\subseteq B(P),常原子 pp 真 iff p∈M(P)p\in M(P)。
  • 规则真值:IH(R)=tI_H(R)=t iff 对所有常例 R∗R^*,IH(R∗)=tI_H(R^*)=t;R∗=A←A1,…,AmR^*=A\leftarrow A_1,\dots,A_m 真 iff A∈M(P)A\in M(P) 或某 Ai∉M(P)A_i\notin M(P)。
  • Herbrand 模型:所有规则在该解释下为真。例 P1P_1 有两 Herbrand 模型 {p(1),q(1),q(2)}\{p(1),q(1),q(2)\} 与 {p(1),p(2),q(1),q(2)}\{p(1),p(2),q(1),q(2)\}。

⭐ 性质:

  • SS 不可满足 iff SS 无 Herbrand 模型。
  • 任何逻辑程序都有 Herbrand 模型。
  • 两 Herbrand 模型交集也是模型。
  • ⟹ 存在唯一极小 Herbrand 模型 MPM_P(least Herbrand model)。
  • P1⊆P2⇒MP1⊆MP2P_1\subseteq P_2\Rightarrow M_{P_1}\subseteq M_{P_2}。

4.5 SLD 归结规则

令 H←B1,…,BnH\leftarrow B_1,\dots,B_n 为程序规则,←A1,…,Am\leftarrow A_1,\dots,A_m 为目标(已重命名变量),θ\theta 为 AiA_i 与 HH 的 mgu:

←A1,…,AmH←B1,…,Bn←(A1,…,Ai−1,B1,…,Bn,Ai+1,…,Am)θ\frac{\leftarrow A_1,\dots,A_m\quad H\leftarrow B_1,\dots,B_n}{\leftarrow (A_1,\dots,A_{i-1},B_1,\dots,B_n,A_{i+1},\dots,A_m)\theta}

SLD 归结是 Prolog 的核心执行机制。


推理规则速查

规则 形式 适用
Modus Ponens (MP) p, p→q⊢qp,\ p\to q\vdash q 命题/Horn
Modus Ponens (Horn) p1,…,pk, (p1∧⋯∧pk)→q⊢qp_1,\dots,p_k,\ (p_1\land\dots\land p_k)\to q\vdash q Horn,完备
Generalized MP (GMP) p1′,…,pn′, (p1∧⋯∧pn⇒q)⊢qθp'_1,\dots,p'_n,\ (p_1\land\dots\land p_n\Rightarrow q)\vdash q\theta FOL 确定子句
Unit Resolution (α∨β), ¬β⊢α(\alpha\lor\beta),\ \lnot\beta\vdash\alpha 命题
General Resolution (α∨β), (¬β∨γ)⊢α∨γ(\alpha\lor\beta),\ (\lnot\beta\lor\gamma)\vdash\alpha\lor\gamma 命题/FOL
UG (Universal Generalization) p⊢∀x pp\vdash\forall x\,p FOL 公理系统

等值律速查(见 §1.9 完整表)

双否 / 逆否 / 蕴含消去 / 双条件消去 / De Morgan / 分配律 / 交换结合律。

算法速查

算法 输入 思想 完备性
DPLL CNF 回溯+剪枝 完备
WalkSat CNF 随机局部搜索 可靠不完备
前向链 Horn KB 数据驱动,反复触发规则 Horn 完备,线性
反向链 Horn KB 目标驱动,递归证明 Horn 完备
命题归结 CNF 归结反演,空子句=不可满足 完备
FOL 归结 CNF(含 Skolem) 合一+归结反演 完备
合一算法 原子集 分歧集+置换迭代 得 MGU

范式速查

范式 形式 转换
CNF 子句合取 消→↔ / ¬深入 / 分配
前束范式 Q1x1⋯Qnxn pQ_1x_1\cdots Q_nx_n\,p 改名/移量词/¬内移
FOL CNF 前束→Skolem→去∀→CNF 6 步

核心关系速查 ⭐

KB⊨f  ⟺  M(f)⊇M(KB)  ⟺  KB∧¬f 不可满足\text{KB}\models f\iff M(f)\supseteq M(\text{KB})\iff\text{KB}\land\lnot f\text{ 不可满足}

p 有效  ⟺  ¬p 不可满足∀x P≡¬∃x ¬Pp\text{ 有效}\iff\lnot p\text{ 不可满足}\qquad \forall x\,P\equiv\lnot\exists x\,\lnot P




📋 本章速览补充:以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。

逻辑大抄

目录:0. 一句话地图 · 1. 逻辑智能体 · 2. 语法/语义/模型/蕴涵/推理 · 3. 命题逻辑 · 4. Horn 子句/前后向链 · 5. 命题归结和 CNF · 6. 命题→一阶逻辑 · 7. 一阶逻辑语法语义 · 8. 量词 · 9. 自然语言翻译模板 · 10. 一阶逻辑知识工程 · 11. 一阶逻辑实例化 · 12. 合一与代换 · 13. GMP · 14. 一阶前后向链 · 15. 一阶 CNF/Skolem/归结 · 16. 完整证明例题 · 17. 考试速查 · 18. 最后一页压缩版

0. 一句话地图

逻辑智能体的核心是:把环境知识写进知识库 KB,再用推理算法从 KB 中推出隐藏事实和行动。

这三章实际是一条线:

  1. 命题逻辑:先把"语法、语义、模型、蕴涵、可靠性、完备性、归结"等基本概念讲清楚。
  2. 一阶逻辑:把命题内部拆成对象、关系、函数、量词,让知识表示更紧凑。
  3. 一阶逻辑推理:因为有变量和量词,所以推理要用实例化、合一、GMP、链式推理、Skolem 化和一阶归结。

最终你要会三件事:

  1. 把自然语言写成逻辑公式。
  2. 判断一个结论是否由知识库蕴涵。
  3. 把证明题规整成 KB 加否定目标,再用 CNF 与归结推出空子句。

1. 逻辑智能体

1.1 三类建模范式

课件开头把 AI 里的模型大致分成三类:

  • 状态模型:搜索、博弈。重点是状态、动作、代价。
  • 变量模型:CSP、贝叶斯网络。重点是变量及变量间约束或概率依赖。
  • 逻辑模型:命题逻辑、一阶逻辑。重点是逻辑公式和推理规则。

逻辑模型适合定理证明、验证、知识推理,因为它能把"知道什么"和"怎么推"拆开。

1.2 知识库与 TELL/ASK

知识库 KB 是形式语言中的语句集合。基于知识的智能体通常这样运转:

1
2
3
4
TELL(KB, percept)
action = ASK(KB, query)
TELL(KB, action)
return action
  • TELL:把新感知、新事实、新行动写入知识库。
  • ASK:询问当前知识库是否蕴涵某个结论,或是否存在满足查询的对象。

知识库有两个层次:

  • 知识层:智能体知道什么,不关心内部怎样实现。
  • 实现层:知识库的数据结构和操作算法。

一个逻辑智能体必须能表示状态和动作,加入新感知,更新内部世界模型,推出不可直接观察的隐藏性质,并推出合适行动。

1.3 Wumpus 世界为什么适合讲逻辑

Wumpus 世界是"部分可观察环境中进行知识推理"的经典例子。

PEAS 描述:

  • 性能:拿到金子 +1000,死亡 −1000,每步 −1,射箭 −10。
  • 环境:4 × 4 网格;智能体从 [1,1] 出发;金子和 Wumpus 随机分布;非 [1,1] 的格子有陷阱的概率为 0.2。
  • 执行器:左转、右转、前进、抓取、射箭。
  • 传感器:臭气 Stench、微风 Breeze、闪光 Glitter、撞墙 Bump、Wumpus 死亡时的哀嚎 Scream。

环境性质:部分可观察;确定;序贯;静态;离散;单智能体(Wumpus 更像自然环境的一部分)。

Wumpus 世界需要表达不完整信息、否定信息、析取信息和分类讨论,例如"如果 [1,1] 没有微风,则相邻格子没有陷阱"。

2. 语法、语义、模型、蕴涵、推理

2.1 语法和语义

逻辑是一种形式语言:

  • 语法规定哪些符号串是合法语句。
  • 语义规定语句在某个世界或模型中如何判定真假。

例如算术中,x+2≥yx + 2 \geq y 是合法语句,而残缺的 x2+y>x^2 + y > 不是合法语句。前者在 x=7,y=1x=7, y=1 的世界中为真,在 x=0,y=6x=0, y=6 的世界中为假。

2.2 模型

模型是可以判定语句真假的形式化世界。若语句 α\alpha 在模型 mm 中为真,记作 m⊨αm \models \alpha。若 M(α)M(\alpha) 表示所有使 α\alpha 为真的模型集合,则 M(α)={m∣m⊨α}M(\alpha) = \{m \mid m \models \alpha\}。

2.3 蕴涵

KB 蕴涵 α\alpha 的含义是:所有使 KB 为真的模型,也都使 α\alpha 为真。

KB⊨αKB \models \alpha

等价地:M(KB)⊆M(α)M(KB) \subseteq M(\alpha)。

重点:蕴涵是语义概念,讨论所有模型中的必然真;不是算法有没有算出来。

2.4 推理

若推理过程 ii 可以从 KB 导出 α\alpha,记作 KB⊢iαKB \vdash_i \alpha。推理是算法概念。考试里最常考两条性质:

  • 可靠性 (soundness):算法推出的都真。KB⊢iα⇒KB⊨αKB \vdash_i \alpha \Rightarrow KB \models \alpha
  • 完备性 (completeness):语义上必然真的都能推出。KB⊨α⇒KB⊢iαKB \models \alpha \Rightarrow KB \vdash_i \alpha

可以这样记:sound = 不会乱推出;complete = 该推出的都能推出。

3. 命题逻辑

3.1 命题逻辑能表达什么

命题逻辑把世界看成一组原子事实,每个命题符号只有真或假。常见命题符号:P,Q,R,P1,2,B2,1P, Q, R, P_{1,2}, B_{2,1}。

命题逻辑连接词:¬S,  S1∧S2,  S1∨S2,  S1⇒S2,  S1⇔S2\lnot S,\; S_1 \land S_2,\; S_1 \lor S_2,\; S_1 \Rightarrow S_2,\; S_1 \Leftrightarrow S_2。

一个模型给每个命题符号赋真值。例如三个命题符号 A,B,CA, B, C 有 23=82^3 = 8 个模型。

3.2 命题逻辑语义

在模型 mm 中:

  • ¬S1\lnot S_1 为真 ⇔\Leftrightarrow S1S_1 为假
  • S1∧S2S_1 \land S_2 为真 ⇔\Leftrightarrow S1S_1 为真且 S2S_2 为真
  • S1∨S2S_1 \lor S_2 为真 ⇔\Leftrightarrow S1S_1 为真或 S2S_2 为真
  • S1⇒S2S_1 \Rightarrow S_2 为假 ⇔\Leftrightarrow S1S_1 为真且 S2S_2 为假
  • S1⇔S2S_1 \Leftrightarrow S_2 为真 ⇔\Leftrightarrow (S1⇒S2)∧(S2⇒S1)(S_1 \Rightarrow S_2) \land (S_2 \Rightarrow S_1) 为真

3.3 Wumpus 的命题逻辑写法

定义:Pi,jP_{i,j}:[i,j][i,j] 有陷阱;Bi,jB_{i,j}:[i,j][i,j] 有微风。

在局部格子中:

B1,1⇔(P1,2∨P2,1)B_{1,1} \Leftrightarrow (P_{1,2} \lor P_{2,1})

如果感知到 [1,1][1,1] 没有微风 ¬B1,1\lnot B_{1,1},则可推出 ¬P1,2∧¬P2,1\lnot P_{1,2} \land \lnot P_{2,1}。

再如:B2,1⇔(P1,1∨P2,2∨P3,1)B_{2,1} \Leftrightarrow (P_{1,1} \lor P_{2,2} \lor P_{3,1})。

这里命题逻辑的缺点也暴露了:每个格子都要手写一条规则,不能自然表达"任意相邻格子"。

3.4 真值表推理

真值表推理枚举所有模型:

  1. 枚举命题符号的所有真值赋值。
  2. 只看使 KB 为真的行。
  3. 检查这些行中 α\alpha 是否都为真。

性质:可靠;完备;时间复杂度 O(2n)O(2^n);空间复杂度可做到 O(n)O(n),其中 nn 是命题符号个数。课件还指出,命题逻辑的蕴涵判定对应的问题是 co-NP-complete。

3.5 逻辑等价

两个语句在完全相同的模型中为真,就逻辑等价:

α≡β  ⟺  (α⊨β)∧(β⊨α)\alpha \equiv \beta \iff (\alpha \models \beta) \land (\beta \models \alpha)

常用等价律:

α⇒β≡¬α∨β\alpha \Rightarrow \beta \equiv \lnot\alpha \lor \beta

α⇔β≡(α⇒β)∧(β⇒α)\alpha \Leftrightarrow \beta \equiv (\alpha \Rightarrow \beta) \land (\beta \Rightarrow \alpha)

¬¬α≡α\lnot\lnot\alpha \equiv \alpha

¬(α∧β)≡¬α∨¬β\lnot(\alpha \land \beta) \equiv \lnot\alpha \lor \lnot\beta

¬(α∨β)≡¬α∧¬β\lnot(\alpha \lor \beta) \equiv \lnot\alpha \land \lnot\beta

α⇒β≡¬β⇒¬α\alpha \Rightarrow \beta \equiv \lnot\beta \Rightarrow \lnot\alpha

α∨(β∧γ)≡(α∨β)∧(α∨γ)\alpha \lor (\beta \land \gamma) \equiv (\alpha \lor \beta) \land (\alpha \lor \gamma)

α∧(β∨γ)≡(α∧β)∨(α∧γ)\alpha \land (\beta \lor \gamma) \equiv (\alpha \land \beta) \lor (\alpha \land \gamma)

3.6 合法性、可满足性、不可满足性

合法式(永真式)在所有模型中都为真:⊨α\models \alpha。例:A∨¬AA \lor \lnot A,A⇒AA \Rightarrow A,(A∧(A⇒B))⇒B(A \land (A \Rightarrow B)) \Rightarrow B。

  • 可满足:至少存在一个模型使语句为真。
  • 不可满足:没有任何模型使语句为真。例:A∧¬AA \land \lnot A。

最关键的证明转化:

KB⊨α  ⟺  KB∧¬α 不可满足KB \models \alpha \iff KB \land \lnot\alpha \text{ 不可满足}

也就是反证法:想证明 α\alpha,就把 ¬α\lnot\alpha 加进知识库,看能否推出矛盾。

3.7 两类证明方法

课件把证明方法分成两类:

  1. 模型检查:枚举模型、DPLL、模型空间启发式搜索等。
  2. 推理规则:从旧句子可靠地产生新句子,证明是推理规则应用序列。

模型检查通常直接但可能指数复杂;推理规则更像搜索证明路径,常常需要先转成范式。

4. Horn 子句、前向链和后向链

4.1 Horn 子句

Horn 子句是最多只有一个正文字的子句,只有两种形式:单个命题符号,符号合取蕴涵单个符号。确定子句(在 KB 中称为规则)是恰好一个正文字的 Horn 子句,常写为:

P1∧P2∧⋯∧Pm⇒QP_1 \land P_2 \land \dots \land P_m \Rightarrow Q

对应 CNF 子句:¬P1∨¬P2∨⋯∨¬Pm∨Q\lnot P_1 \lor \lnot P_2 \lor \dots \lor \lnot P_m \lor Q。

若没有正文字:P1∧P2∧⋯∧Pm⇒⊥P_1 \land P_2 \land \dots \land P_m \Rightarrow \bot,表示约束或矛盾。

Kowalski 形式就是把规则写成"前提合取推出结论":P1∧⋯∧Pm⇒QP_1 \land \dots \land P_m \Rightarrow Q。

4.2 假言推理(Modus Ponens)

命题逻辑的分离规则:

P,P⇒QQ\frac{P,\quad P \Rightarrow Q}{Q}

对 Horn KB,Modus Ponens 是完备的。

4.3 前向链

前向链是数据驱动:从已知事实出发,规则前提满足就触发规则,把结论加入知识库。

典型思路:

1
2
3
4
5
6
7
agenda = 已知事实
while agenda 非空:
取出一个事实 p
若 p 是查询,返回 true
对每条包含 p 的规则,减少未满足前提计数
若某条规则所有前提都已满足,把结论加入 agenda
return false

性质:

  • 对 Horn KB 可靠。
  • 对 Horn KB 完备。
  • 命题 Horn KB 中运行时间线性。
  • 可能推出许多与目标无关的事实。

4.4 后向链

后向链是目标驱动:从查询 qq 出发,找所有能推出 qq 的规则,再递归证明这些规则的前提。证明 qq 时:

  1. 若 qq 已知为真,成功。
  2. 找所有形如 p1,…,pkp_1, \dots, p_k 推出 qq 的规则。
  3. 递归证明 p1,…,pkp_1, \dots, p_k。

需要避免两个问题:

  • 循环:新子目标若已在目标栈中,就不要继续展开。
  • 重复工作:缓存已经成功或失败的子目标。

4.5 前向链与后向链对比

规则形式 主要推理 复杂度倾向 表达能力
Horn 子句 假言推理 线性 较弱
任意子句 归结 指数 较强
  • 前向链:数据驱动;适合事实不断进入、需要自动推出所有后果的系统;可能做很多与查询无关的工作。
  • 后向链:目标驱动;适合查询少且目标明确的问题;复杂度可能远小于知识库大小;深度优先搜索容易因递归规则陷入循环。

5. 命题逻辑归结和 CNF

5.1 CNF 合取范式

CNF 是若干子句的合取,每个子句是若干文字的析取。例:(A∨¬B)∧(B∨¬C∨¬D)(A \lor \lnot B) \land (B \lor \lnot C \lor \lnot D)。文字是原子命题或其否定。子句是文字析取。

5.2 命题归结规则

若两个子句含有互补文字,可以删去互补文字并合并剩余部分:

P∨Q,¬Q∨RP∨R\frac{P \lor Q,\quad \lnot Q \lor R}{P \lor R}

若归结得到空子句 □\square,则表示矛盾。命题逻辑中,归结是可靠且完备的。

5.3 命题 CNF 转换

把公式转 CNF:

  1. 消去双向蕴涵:A⇔B≡(A⇒B)∧(B⇒A)A \Leftrightarrow B \equiv (A \Rightarrow B) \land (B \Rightarrow A)
  2. 消去蕴涵:A⇒B≡¬A∨BA \Rightarrow B \equiv \lnot A \lor B
  3. 否定内移:¬(A∧B)≡¬A∨¬B\lnot(A \land B) \equiv \lnot A \lor \lnot B,¬(A∨B)≡¬A∧¬B\lnot(A \lor B) \equiv \lnot A \land \lnot B
  4. 用分配律把析取分配到合取内部:A∨(B∧C)≡(A∨B)∧(A∨C)A \lor (B \land C) \equiv (A \lor B) \land (A \lor C)
  5. 拆成子句集合。

5.4 归结证明模板(反证法)

要证明 KB⊨αKB \models \alpha,做法:

  1. 把 KB 转为 CNF 子句(A∨BA \lor B)。
  2. 把目标否定 ¬α\lnot\alpha 加入。
  3. 不断归结:将子句合并。
  4. 若推出空子句 □\square,则 KB⊨αKB \models \alpha。

这就是:KB⊨α  ⟺  KB∧¬αKB \models \alpha \iff KB \land \lnot\alpha 不可满足。

6. 命题逻辑 → 一阶逻辑

6.1 命题逻辑的优点

命题逻辑有几个重要优点:

  • 陈述性:知识和推理分开。
  • 能表示不完整信息、析取信息、否定信息。
  • 合成性:复合句含义由子句含义决定。
  • 上下文无关:不像自然语言那样高度依赖语境。

6.2 命题逻辑的缺点

命题逻辑表达力弱,不能自然表达对象、关系、函数和量词。例如"所有学生都懂算术",命题逻辑只能枚举:

StudentAlice⇒KnowsArithmeticAlice\text{StudentAlice} \Rightarrow \text{KnowsArithmeticAlice}

StudentBob⇒KnowsArithmeticBob\text{StudentBob} \Rightarrow \text{KnowsArithmeticBob}

一阶逻辑可以写成:∀x (Student(x)⇒Knows(x,Arithmetic))\forall x\, (\text{Student}(x) \Rightarrow \text{Knows}(x, \text{Arithmetic}))。

Wumpus 世界中的"相邻格子有陷阱当且仅当当前格子有微风"也不应为每个格子手写,而应抽象成对象和关系。

6.3 一阶逻辑的世界观

命题逻辑假设世界由事实组成。一阶逻辑假设世界包含:

  • 对象:人、数字、课程、格子、门电路。
  • 关系:红色、兄弟关系、大于、相邻、拥有。
  • 函数:父亲、左腿、平方根、加一。
逻辑 世界中存在什么 智能体对事实的态度
命题逻辑 事实 真、假、未知
一阶逻辑 事实、对象、关系 真、假、未知
时序逻辑 事实、对象、关系、时间 真、假、未知
概率逻辑 事实 信度在 [0,1][0,1]

7. 一阶逻辑的语法和语义

7.1 基本符号

一阶逻辑的基本元素:

  • 常量:指代具体对象,如 Robbie、Bob、USTC。
  • 变量:如 x,y,zx, y, z,由量词绑定。
  • 函数:从对象到对象,如 Mother(x)\text{Mother}(x)、Father(Bob)\text{Father}(\text{Bob})。
  • 谓词:返回真或假,如 Robot(x)\text{Robot}(x)、Owns(x,y)\text{Owns}(x, y)。
  • 等号:表示两个项指代同一对象。
  • 量词:全称量词 ∀\forall、存在量词 ∃\exists。
  • 连接词:¬,∧,∨,⇒,⇔\lnot, \land, \lor, \Rightarrow, \Leftrightarrow。

7.2 项和原子语句

项指代对象:x,  Bob,  Mother(x),  Father(Father(x))x,\; \text{Bob},\; \text{Mother}(x),\; \text{Father}(\text{Father}(x))。

原子语句由谓词作用于项,或由两个项用等号连接:Robot(Robbie),  Loves(Bob,Mother(Bob)),  Father(x)=John\text{Robot}(\text{Robbie}),\; \text{Loves}(\text{Bob}, \text{Mother}(\text{Bob})),\; \text{Father}(x) = \text{John}。

函数项不能单独为真或假。谓词公式才能为真或假。

7.3 一阶逻辑模型和解释

一阶逻辑中的模型包含域元素以及它们之间的关系。解释负责说明符号指代什么:

  • 常量符号指向域中的对象。
  • 谓词符号指向域上的关系。
  • 函数符号指向域上的函数关系。

原子语句 Predicate(t1,…,tn)\text{Predicate}(t_1, \dots, t_n) 为真,当且仅当 t1,…,tnt_1, \dots, t_n 指代的对象确实处在该谓词指代的关系中。

FOL 的模型远多于命题逻辑:域大小可以从 1 到无穷;每个谓词都可解释为不同关系;常量也可指向不同对象。因此直接枚举一阶模型通常不可行。

8. 量词

8.1 全称量词

全称量词 ∀x P(x)\forall x\, P(x) 表示域中每个对象都使 P(x)P(x) 成立。它大致相当于所有实例的合取:P(a1)∧P(a2)∧…P(a_1) \land P(a_2) \land \dots。

"所有 A 都是 B"的标准模板:∀x (A(x)⇒B(x))\forall x\, (A(x) \Rightarrow B(x))。

不要写成 ∀x (A(x)∧B(x))\forall x\, (A(x) \land B(x)),后者表示世界中每个对象都是 A 且都是 B,太强。

8.2 存在量词

存在量词 ∃x P(x)\exists x\, P(x) 表示至少有一个对象使 P(x)P(x) 成立。它大致相当于所有实例的析取:P(a1)∨P(a2)∨…P(a_1) \lor P(a_2) \lor \dots。

"有些 A 是 B"的标准模板:∃x (A(x)∧B(x))\exists x\, (A(x) \land B(x))。

不要写成 ∃x (A(x)⇒B(x))\exists x\, (A(x) \Rightarrow B(x)),因为只要选到一个不是 A 的对象,蕴涵就可能为真,表达会太弱。

8.3 量词交换和对偶

同类量词可交换:

∀x∀y P(x,y)≡∀y∀x P(x,y)\forall x \forall y\, P(x,y) \equiv \forall y \forall x\, P(x,y)

∃x∃y P(x,y)≡∃y∃x P(x,y)\exists x \exists y\, P(x,y) \equiv \exists y \exists x\, P(x,y)

不同类量词一般不可交换:

  • ∃x∀y Loves(x,y)\exists x \forall y\, \text{Loves}(x,y) 表示"存在某个人爱所有人"。
  • ∀y∃x Loves(x,y)\forall y \exists x\, \text{Loves}(x,y) 表示"每个人都至少被某个人爱"。

量词对偶:

¬∀x P(x)≡∃x ¬P(x)\lnot \forall x\, P(x) \equiv \exists x\, \lnot P(x)

¬∃x P(x)≡∀x ¬P(x)\lnot \exists x\, P(x) \equiv \forall x\, \lnot P(x)

∀x P(x)≡¬∃x ¬P(x)\forall x\, P(x) \equiv \lnot \exists x\, \lnot P(x)

∃x P(x)≡¬∀x ¬P(x)\exists x\, P(x) \equiv \lnot \forall x\, \lnot P(x)

变量名本身不重要,但改名必须避免变量捕获。

8.4 等号

等号表示两个项指代同一对象:t1=t2t_1 = t_2。常用于唯一性、计数、不同对象约束:x≠yx \neq y。

Sibling 例子可以写成:

∀x∀y (Sibling(x,y)⇔(x≠y∧∃m∃f (m≠f∧Parent(m,x)∧Parent(f,x)∧Parent(m,y)∧Parent(f,y))))\forall x \forall y\, (\text{Sibling}(x,y) \Leftrightarrow (x \neq y \land \exists m \exists f\, (m \neq f \land \text{Parent}(m,x) \land \text{Parent}(f,x) \land \text{Parent}(m,y) \land \text{Parent}(f,y))))

9. 自然语言翻译模板

  • 9.1 所有 A 都是 B:∀x (A(x)⇒B(x))\forall x\, (A(x) \Rightarrow B(x))
  • 9.2 有些 A 是 B:∃x (A(x)∧B(x))\exists x\, (A(x) \land B(x))
  • 9.3 没有 A 是 B:∀x (A(x)⇒¬B(x))\forall x\, (A(x) \Rightarrow \lnot B(x)),等价于 ¬∃x (A(x)∧B(x))\lnot \exists x\, (A(x) \land B(x))
  • 9.4 每个 A 都有一个 B:∀x (A(x)⇒∃y (B(y)∧R(x,y)))\forall x\, (A(x) \Rightarrow \exists y\, (B(y) \land R(x,y)))
    • 例:“每个哺乳动物都有一个家长”:∀x (Mammal(x)⇒∃y Parent(y,x))\forall x\, (\text{Mammal}(x) \Rightarrow \exists y\, \text{Parent}(y, x))
  • 9.5 存在一个 B 被所有 A 关联:∃y (B(y)∧∀x (A(x)⇒R(x,y)))\exists y\, (B(y) \land \forall x\, (A(x) \Rightarrow R(x,y)))
    • 对比:∀x∃y R(x,y)\forall x \exists y\, R(x,y)(每个 xx 可以对应不同 yy);∃y∀x R(x,y)\exists y \forall x\, R(x,y)(同一个 yy 对所有 xx 适用)。
  • 9.6 每个 A 都爱自己的母亲或父亲,正确写法:

∀x (Child(x)⇒(Loves(x,Mother(x))∨Loves(x,Father(x))))\forall x\, (\text{Child}(x) \Rightarrow (\text{Loves}(x, \text{Mother}(x)) \lor \text{Loves}(x, \text{Father}(x))))

错误直觉是把 Mother(x)\text{Mother}(x) 和 Father(x)\text{Father}(x) 当成能析取的命题。它们是函数项,是对象,不是真假句子。

  • 9.7 只有一个、至多一个、恰好两个:
    • “只有一个对象满足 PP”:∃x (P(x)∧∀y (P(y)⇒y=x))\exists x\, (P(x) \land \forall y\, (P(y) \Rightarrow y = x))
    • “至多一个对象满足 PP”:∀x∀y ((P(x)∧P(y))⇒x=y)\forall x \forall y\, ((P(x) \land P(y)) \Rightarrow x = y)
    • “恰好两个对象满足 PP”:∃x∃y (x≠y∧P(x)∧P(y)∧∀z (P(z)⇒(z=x∨z=y)))\exists x \exists y\, (x \neq y \land P(x) \land P(y) \land \forall z\, (P(z) \Rightarrow (z = x \lor z = y)))

9.8 函数还是谓词

  • 若每个对象唯一对应另一个对象,用函数:Mother(x)\text{Mother}(x)。
  • 若关系可能一对多、零个或多个,用谓词:Friend(x,y)\text{Friend}(x, y)。

"母亲"通常可作为函数;"朋友"通常不应写成函数。

10. 一阶逻辑知识工程

10.1 七步法

课件给出的一阶逻辑知识工程流程:

  1. 确定任务。
  2. 搜集相关知识。
  3. 决定谓词、函数、常量的词汇表。
  4. 编码领域通用知识。
  5. 编码具体问题实例。
  6. 向推理过程提交查询并获取答案。
  7. 调试知识库。

考试翻译题最关键的是第 3 步:先定义一致的谓词表,后面不要混用关系方向。

10.2 与 FOL KB 交互

在一阶逻辑知识库中,ASK 常返回一个代换。例如 Ask(KB,∃a BestAction(a,5))\text{Ask}(\text{KB}, \exists a\, \text{BestAction}(a, 5)) 可能返回 {a↦Shoot}\{a \mapsto \text{Shoot}\}。

给定语句 SS 和代换 σ\sigma,SσS\sigma 表示把 σ\sigma 代入 SS。例如 S=Smarter(x,y),  σ={x↦Hillary,y↦Bill}S = \text{Smarter}(x,y),\; \sigma = \{x \mapsto \text{Hillary}, y \mapsto \text{Bill}\},则 Sσ=Smarter(Hillary,Bill)S\sigma = \text{Smarter}(\text{Hillary}, \text{Bill})。

10.3 Wumpus 的 FOL 写法

  • 感知规则:∀t∀s∀b (Percept([s,b,Glitter],t)⇒Glitter(t))\forall t \forall s \forall b\, (\text{Percept}([s, b, \text{Glitter}], t) \Rightarrow \text{Glitter}(t))
  • 反射规则:∀t (Glitter(t)⇒BestAction(Grab,t))\forall t\, (\text{Glitter}(t) \Rightarrow \text{BestAction}(\text{Grab}, t))
  • 带内部状态的反射:∀t (AtGold(t)∧¬Holding(Gold,t)⇒BestAction(Grab,t))\forall t\, (\text{AtGold}(t) \land \lnot \text{Holding}(\text{Gold}, t) \Rightarrow \text{BestAction}(\text{Grab}, t))
  • 相邻定义:∀x∀y∀a∀b (Adjacent([x,y],[a,b])⇔[a,b]∈{[x+1,y],[x−1,y],[x,y+1],[x,y−1]})\forall x \forall y \forall a \forall b\, (\text{Adjacent}([x,y], [a,b]) \Leftrightarrow [a,b] \in \{[x+1,y], [x-1,y], [x,y+1], [x,y-1]\})
  • 从感知得到格子性质:∀s∀t (At(Agent,s,t)∧Breeze(t)⇒Breezy(s))\forall s \forall t\, (\text{At}(\text{Agent}, s, t) \land \text{Breeze}(t) \Rightarrow \text{Breezy}(s))
  • 诊断规则(从结果猜原因):∀s (Breezy(s)⇒∃r (Adjacent(r,s)∧Pit(r)))\forall s\, (\text{Breezy}(s) \Rightarrow \exists r\, (\text{Adjacent}(r, s) \land \text{Pit}(r)))
  • 因果规则(从原因推结果):∀r∀s (Adjacent(r,s)∧Pit(r)⇒Breezy(s))\forall r \forall s\, (\text{Adjacent}(r, s) \land \text{Pit}(r) \Rightarrow \text{Breezy}(s))
  • 定义式最完整:∀s (Breezy(s)⇔∃r (Adjacent(r,s)∧Pit(r)))\forall s\, (\text{Breezy}(s) \Leftrightarrow \exists r\, (\text{Adjacent}(r, s) \land \text{Pit}(r)))

注意:只写向右、向上的相邻会漏掉方向;没有边界约束会生成不存在的格子;x+1x+1 需要语言支持算术项。

10.4 亲属关系领域

  • 兄弟是手足:∀x∀y (Brother(x,y)⇒Sibling(x,y))\forall x \forall y\, (\text{Brother}(x,y) \Rightarrow \text{Sibling}(x,y))
  • 手足关系对称:∀x∀y (Sibling(x,y)⇔Sibling(y,x))\forall x \forall y\, (\text{Sibling}(x,y) \Leftrightarrow \text{Sibling}(y,x))
  • 母亲是女性家长:∀x∀y (Mother(x,y)⇔(Female(x)∧Parent(x,y)))\forall x \forall y\, (\text{Mother}(x,y) \Leftrightarrow (\text{Female}(x) \land \text{Parent}(x,y)))
  • 堂表亲是父母手足的孩子:∀x∀y (Cousin(x,y)⇔∃p∃ps (Parent(p,x)∧Sibling(ps,p)∧Parent(ps,y)))\forall x \forall y\, (\text{Cousin}(x,y) \Leftrightarrow \exists p \exists ps\, (\text{Parent}(p,x) \land \text{Sibling}(ps,p) \land \text{Parent}(ps,y)))

10.5 集合领域

  • 集合的递归构造:∀s (Set(s)⇔(s={}∨∃x∃s2 (Set(s2)∧s={x∣s2})))\forall s\, (\text{Set}(s) \Leftrightarrow (s = \{\} \lor \exists x \exists s_2\, (\text{Set}(s_2) \land s = \{x \mid s_2\})))
  • 空集不能分解:¬∃x∃s ({x∣s}={})\lnot \exists x \exists s\, (\{x \mid s\} = \{\})
  • 元素属于集合的递归定义:∀x∀s (x∈s⇔∃y∃s2 (s={y∣s2}∧(x=y∨x∈s2)))\forall x \forall s\, (x \in s \Leftrightarrow \exists y \exists s_2\, (s = \{y \mid s_2\} \land (x = y \lor x \in s_2)))
  • 子集:∀s1∀s2 (s1⊆s2⇔∀x (x∈s1⇒x∈s2))\forall s_1 \forall s_2\, (s_1 \subseteq s_2 \Leftrightarrow \forall x\, (x \in s_1 \Rightarrow x \in s_2))
  • 集合相等:∀s1∀s2 (s1=s2⇔(s1⊆s2∧s2⊆s1))\forall s_1 \forall s_2\, (s_1 = s_2 \Leftrightarrow (s_1 \subseteq s_2 \land s_2 \subseteq s_1))
  • 交集:∀x∀s1∀s2 (x∈(s1∩s2)⇔(x∈s1∧x∈s2))\forall x \forall s_1 \forall s_2\, (x \in (s_1 \cap s_2) \Leftrightarrow (x \in s_1 \land x \in s_2))
  • 并集:∀x∀s1∀s2 (x∈(s1∪s2)⇔(x∈s1∨x∈s2))\forall x \forall s_1 \forall s_2\, (x \in (s_1 \cup s_2) \Leftrightarrow (x \in s_1 \lor x \in s_2))

10.6 电路领域

课件用一位全加器说明知识工程。

  • 任务:验证电路是否正确相加。
  • 相关知识:电路由导线和门组成;门类型包括 AND、OR、XOR、NOT;门的大小、颜色、成本通常无关。

词汇表有不同选择:Type(X1)=XOR\text{Type}(X_1) = \text{XOR} / Type(X1,XOR)\text{Type}(X_1, \text{XOR}) / XOR(X1)\text{XOR}(X_1)。

通用公理:

  • 相连端口信号相同:∀t1∀t2 (Connected(t1,t2)⇒Signal(t1)=Signal(t2))\forall t_1 \forall t_2\, (\text{Connected}(t_1, t_2) \Rightarrow \text{Signal}(t_1) = \text{Signal}(t_2))
  • 信号只能是 0 或 1:∀t (Signal(t)=1∨Signal(t)=0)\forall t\, (\text{Signal}(t) = 1 \lor \text{Signal}(t) = 0),并且 1≠01 \neq 0。
  • 连接关系对称:∀t1∀t2 (Connected(t1,t2)⇒Connected(t2,t1))\forall t_1 \forall t_2\, (\text{Connected}(t_1, t_2) \Rightarrow \text{Connected}(t_2, t_1))
  • 或门:∀g (Type(g)=OR⇒(Signal(Out(1,g))=1⇔∃n (Signal(In(n,g))=1)))\forall g\, (\text{Type}(g) = \text{OR} \Rightarrow (\text{Signal}(\text{Out}(1, g)) = 1 \Leftrightarrow \exists n\, (\text{Signal}(\text{In}(n, g)) = 1)))
  • 与门:∀g (Type(g)=AND⇒(Signal(Out(1,g))=0⇔∃n (Signal(In(n,g))=0)))\forall g\, (\text{Type}(g) = \text{AND} \Rightarrow (\text{Signal}(\text{Out}(1, g)) = 0 \Leftrightarrow \exists n\, (\text{Signal}(\text{In}(n, g)) = 0)))
  • 异或门:∀g (Type(g)=XOR⇒(Signal(Out(1,g))=1⇔Signal(In(1,g))≠Signal(In(2,g))))\forall g\, (\text{Type}(g) = \text{XOR} \Rightarrow (\text{Signal}(\text{Out}(1, g)) = 1 \Leftrightarrow \text{Signal}(\text{In}(1, g)) \neq \text{Signal}(\text{In}(2, g))))
  • 非门:∀g (Type(g)=NOT⇒Signal(Out(1,g))≠Signal(In(1,g)))\forall g\, (\text{Type}(g) = \text{NOT} \Rightarrow \text{Signal}(\text{Out}(1, g)) \neq \text{Signal}(\text{In}(1, g)))

调试知识库时要特别注意补上 1≠01 \neq 0,否则 XOR 等规则可能不能按预期工作。

11. 一阶逻辑实例化

11.1 为什么一阶推理比命题推理难

命题逻辑中命题符号固定;一阶逻辑中有变量、量词和函数项。因此推理常要先回答:哪些对象能让两个谓词匹配?这就是合一。

11.2 全称实例化

全称语句蕴涵它的所有实例。若有 ∀v α\forall v\, \alpha 则任意基项 gg 都可实例化。例:

∀x (King(x)∧Greedy(x)⇒Evil(x))\forall x\, (\text{King}(x) \land \text{Greedy}(x) \Rightarrow \text{Evil}(x))

可推出 King(John)∧Greedy(John)⇒Evil(John)\text{King}(\text{John}) \land \text{Greedy}(\text{John}) \Rightarrow \text{Evil}(\text{John}),也可推出 King(Father(John))∧Greedy(Father(John))⇒Evil(Father(John))\text{King}(\text{Father}(\text{John})) \land \text{Greedy}(\text{Father}(\text{John})) \Rightarrow \text{Evil}(\text{Father}(\text{John}))。

全称实例化可以多次应用;加入实例后与原知识库在逻辑上等价。

11.3 存在实例化

若有 ∃v α\exists v\, \alpha,可引入一个全新的 Skolem 常量 kk:Subst({v↦k},α)\text{Subst}(\{v \mapsto k\}, \alpha)。例:

∃x (Crown(x)∧OnHead(x,John))\exists x\, (\text{Crown}(x) \land \text{OnHead}(x, \text{John}))

可替换为 Crown(C1)∧OnHead(C1,John)\text{Crown}(C_1) \land \text{OnHead}(C_1, \text{John}),前提是 C1C_1 是新常量。

重要区别:

  • 全称实例化可以反复添加实例。
  • 存在实例化一般用一次,并用新式子替代原存在语句。
  • 替换后的 KB 不与原 KB 逻辑等价,但与原 KB 可满足性等价。

因此 ∃x AsHighAs(x,Everest)\exists x\, \text{AsHighAs}(x, \text{Everest}) 不能随便实例化为 AsHighAs(Everest,Everest)\text{AsHighAs}(\text{Everest}, \text{Everest}),因为存在量词只保证某个对象存在,不保证就是已有常量 Everest。

11.4 命题化

一阶逻辑可通过实例化变成命题逻辑。例如知识库:

∀x (King(x)∧Greedy(x)⇒Evil(x))\forall x\, (\text{King}(x) \land \text{Greedy}(x) \Rightarrow \text{Evil}(x))

King(John)\text{King}(\text{John})

Greedy(John)\text{Greedy}(\text{John})

命题化后有命题符号 King(John),  Greedy(John),  Evil(John)\text{King}(\text{John}),\; \text{Greedy}(\text{John}),\; \text{Evil}(\text{John})。

课件结论:每个一阶知识库都可以命题化以保持蕴涵。基础语句被原 KB 蕴涵,当且仅当被命题化 KB 蕴涵。若有函数符号,基项无限多,例如 Father(Father(Father(John)))\text{Father}(\text{Father}(\text{Father}(\text{John})))。

Herbrand 定理:若一阶 KB 蕴涵 α\alpha,则存在命题化 KB 的某个有限子集已经蕴涵 α\alpha。推理思路:

  1. 按项深度 0, 1, 2, … 逐步命题化。
  2. 对每个有限命题化 KB 做命题推理。
  3. 若 α\alpha 被蕴涵,最终会找到证明。
  4. 若不被蕴涵,可能永远停不下来。

这就是一阶逻辑蕴涵的半可判定性:被蕴涵的结论存在算法最终回答"是";不被蕴涵的结论不存在通用算法保证有限时间回答"否"。

命题化还会产生大量无关实例。若有 pp 个 kk 元谓词和 nn 个常量,基础原子数量可达 p⋅nkp \cdot n^k;有函数符号时更糟。

12. 合一与代换

12.1 代换

代换是变量到项的映射:θ={x↦John,y↦Father(John)}\theta = \{x \mapsto \text{John}, y \mapsto \text{Father}(\text{John})\}。应用代换:

Knows(x,y)θ=Knows(John,Father(John))\text{Knows}(x, y)\theta = \text{Knows}(\text{John}, \text{Father}(\text{John}))

12.2 合一

合一寻找一个代换 θ\theta,使两个表达式变得相同:Unify(α,β)=θ\text{Unify}(\alpha, \beta) = \theta 当且仅当 αθ=βθ\alpha\theta = \beta\theta。

最一般合一 MGU 是限制最少、最通用的合一;对每对可合一表达式,MGU 在变量改名意义下唯一。例:

Unify(Knows(John,x),Knows(John,Jane))={x↦Jane}\text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(\text{John}, \text{Jane})) = \{x \mapsto \text{Jane}\}

Unify(Knows(John,x),Knows(y,OJ))={x↦OJ,y↦John}\text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(y, \text{OJ})) = \{x \mapsto \text{OJ}, y \mapsto \text{John}\}

Unify(Knows(John,x),Knows(y,Mother(y)))={y↦John,x↦Mother(John)}\text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(y, \text{Mother}(y))) = \{y \mapsto \text{John}, x \mapsto \text{Mother}(\text{John})\}

而 Unify(Knows(John,x),Knows(x,OJ))\text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(x, \text{OJ})) 失败,因为它要求 xx 同时匹配 John 和 OJ。

12.3 合一规则

可合一的情况:

  • 相同常量与相同常量:成功。
  • 变量与不含自身的项:绑定变量。
  • 同名谓词或函数:参数逐一合一。

失败的情况:

  • 不同常量。
  • 不同谓词名。
  • 元数不同。
  • occurs check 失败,即变量要绑定到包含自己的项。

occurs check 例:x=f(x)x = f(x) 失败。

常见不可合一选择题:p(x,x)p(x, x) 与 p(y,f(y))p(y, f(y))。若合一,需要 x=y∧x=f(y)x = y \land x = f(y),推出 y=f(y)y = f(y),变量出现在自己的函数项中,失败。

12.4 标准化分离

两个子句归结或规则匹配前,若变量名可能冲突,需要标准化分离,把不同句子的变量改成彼此不同。例如把一个句子里的 xx 改名为 z17z_{17}。变量名不重要,作用域才重要。

13. 一般化分离规则 GMP

13.1 GMP 形式

命题 Modus Ponens:

P,P⇒QQ\frac{P,\quad P \Rightarrow Q}{Q}

一阶逻辑的 GMP 加上了合一。若有事实 p1′,…,pn′p'_1, \dots, p'_n 和规则 p1∧p2∧⋯∧pn⇒qp_1 \land p_2 \land \dots \land p_n \Rightarrow q,存在代换 θ\theta 使每个前提匹配 pi′θ=piθp'_i \theta = p_i \theta,则可推出 qθq\theta。

例:

King(x)∧Greedy(x)⇒Evil(x)\text{King}(x) \land \text{Greedy}(x) \Rightarrow \text{Evil}(x)

King(John)\text{King}(\text{John})

Greedy(John)\text{Greedy}(\text{John})

代换 θ={x↦John}\theta = \{x \mapsto \text{John}\},推出 Evil(John)\text{Evil}(\text{John})。

13.2 GMP 的边界

GMP 通常用于确定子句 KB,所有变量默认全称量化。课件结论:

  • GMP 可靠。
  • GMP 对一阶确定子句 KB 完备。
  • GMP 对一般 FOL 不完备,因为并非所有句子都能化成 Horn 形式。
  • 即使限制在 Horn 子句,一阶逻辑仍是半可判定的。

14. 一阶前向链与后向链

14.1 一阶前向链

一阶前向链从事实出发,用 GMP 不断推出新事实。性质:

  • 对一阶确定子句可靠。
  • 对一阶确定子句完备。
  • 若没有函数符号,即 Datalog,可在多项式轮数内终止。Datalog 中最多产生 p⋅nkp \cdot n^k 个基础文字。
  • 一般一阶确定子句若含函数符号,当前查询不被蕴涵时可能不终止。

效率要点:

  • 没必要每轮匹配所有规则,只需检查前一轮新增事实涉及的规则。
  • 数据库索引可让已知事实检索接近 O(1)O(1)。
  • 合取前提与事实集匹配本身是 NP-hard。

14.2 一阶后向链

一阶后向链从查询出发,找能推出该查询的规则,再用合一生成子目标。Prolog 风格:

  1. 查询 qq。
  2. 找规则结论 q′q'。
  3. 合一 qq 与 q′q'。
  4. 在代换下递归证明规则前提。

性质:深度优先递归证明搜索;空间与证明大小线性相关;因无限循环可能不完备;可通过检查目标栈避免直接循环;可用缓存减少重复子目标;广泛用于逻辑程序设计。

14.3 FC/BC 对一般 FOL 的不完备

前向链和后向链对 Horn KB 完备,但对一般 FOL KB 不完备。原因是一般 FOL 可以包含非 Horn 子句、析取结论、复杂否定等结构,不能只靠确定子句上的 GMP 覆盖所有有效推理。要覆盖一般 FOL,使用一阶归结。

15. 一阶 CNF、Skolem 化与归结

15.1 一阶 CNF 标准化流程

要用归结,先把 FOL 公式转成子句集:

  1. 消去双向蕴涵。
  2. 消去蕴涵。
  3. 否定内移。
  4. 标准化变量名,使不同量词使用不同变量。
  5. Skolem 化消去存在量词。
  6. 去掉全称量词。
  7. 用分配律得到 CNF。
  8. 拆成子句。

15.2 Skolem 化

存在量词不在任何全称量词作用域内:∃x P(x)\exists x\, P(x) 变为 P(A)P(A),其中 AA 是新的 Skolem 常量。

存在量词在全称量词作用域内:∀x∃y Parent(y,x)\forall x \exists y\, \text{Parent}(y, x),这里 yy 依赖于 xx,变为 ∀x Parent(F(x),x)\forall x\, \text{Parent}(F(x), x),其中 FF 是新的 Skolem 函数。

一般规律:Skolem 函数的参数是包住该存在变量的所有全称变量。

15.3 课件 CNF 例题

原句:

∀x ((∀y (Animal(y)⇒Loves(x,y)))⇒∃y Loves(y,x))\forall x\, ((\forall y\, (\text{Animal}(y) \Rightarrow \text{Loves}(x, y))) \Rightarrow \exists y\, \text{Loves}(y, x))

意思:每个爱所有动物的人,都被某个人爱。

  • 消去蕴涵:∀x (¬∀y (¬Animal(y)∨Loves(x,y))∨∃y Loves(y,x))\forall x\, (\lnot \forall y\, (\lnot \text{Animal}(y) \lor \text{Loves}(x, y)) \lor \exists y\, \text{Loves}(y, x))
  • 否定内移:∀x (∃y (Animal(y)∧¬Loves(x,y))∨∃y Loves(y,x))\forall x\, (\exists y\, (\text{Animal}(y) \land \lnot \text{Loves}(x, y)) \lor \exists y\, \text{Loves}(y, x))
  • 标准化变量:∀x (∃y (Animal(y)∧¬Loves(x,y))∨∃z Loves(z,x))\forall x\, (\exists y\, (\text{Animal}(y) \land \lnot \text{Loves}(x, y)) \lor \exists z\, \text{Loves}(z, x))
  • Skolem 化:∀x ((Animal(F(x))∧¬Loves(x,F(x)))∨Loves(G(x),x))\forall x\, ((\text{Animal}(F(x)) \land \lnot \text{Loves}(x, F(x))) \lor \text{Loves}(G(x), x))
  • 去掉全称量词:(Animal(F(x))∧¬Loves(x,F(x)))∨Loves(G(x),x)(\text{Animal}(F(x)) \land \lnot \text{Loves}(x, F(x))) \lor \text{Loves}(G(x), x)
  • 分配:(Animal(F(x))∨Loves(G(x),x))∧(¬Loves(x,F(x))∨Loves(G(x),x))(\text{Animal}(F(x)) \lor \text{Loves}(G(x), x)) \land (\lnot \text{Loves}(x, F(x)) \lor \text{Loves}(G(x), x))

得到两个子句:

Animal(F(x))∨Loves(G(x),x)\text{Animal}(F(x)) \lor \text{Loves}(G(x), x)

¬Loves(x,F(x))∨Loves(G(x),x)\lnot \text{Loves}(x, F(x)) \lor \text{Loves}(G(x), x)

15.4 一阶归结规则

若两个子句中有可合一的互补文字:

L1∨⋯∨Lk和M1∨⋯∨MnL_1 \lor \dots \lor L_k \quad \text{和} \quad M_1 \lor \dots \lor M_n

且 Unify(Li,¬Mj)=θ\text{Unify}(L_i, \lnot M_j) = \theta,则推出:

(L1∨⋯∨Li−1∨Li+1∨⋯∨Lk∨M1∨⋯∨Mj−1∨Mj+1∨⋯∨Mn)θ(L_1 \lor \dots \lor L_{i-1} \lor L_{i+1} \lor \dots \lor L_k \lor M_1 \lor \dots \lor M_{j-1} \lor M_{j+1} \lor \dots \lor M_n)\theta

归结前两个子句要标准化分离,避免共享变量名造成误绑定。

例:

¬Rich(x)∨Unhappy(x)\lnot \text{Rich}(x) \lor \text{Unhappy}(x)

Rich(Ken)\text{Rich}(\text{Ken})

合一 θ={x↦Ken}\theta = \{x \mapsto \text{Ken}\},推出 Unhappy(Ken)\text{Unhappy}(\text{Ken})。

一阶归结应用于 CNF(KB∧¬α)\text{CNF}(\text{KB} \land \lnot\alpha),对 FOL 是完备的。

16. 完整证明例题

16.1 Robbie 友好证明

知识库:

Robot(Robbie)\text{Robot}(\text{Robbie})

Owner(Bob,Robbie)\text{Owner}(\text{Bob}, \text{Robbie})

∀x∀y ((Robot(x)∧Owner(y,x))⇒FriendlyTo(x,y))\forall x \forall y\, ((\text{Robot}(x) \land \text{Owner}(y, x)) \Rightarrow \text{FriendlyTo}(x, y))

目标:FriendlyTo(Robbie,Bob)\text{FriendlyTo}(\text{Robbie}, \text{Bob})。

规则转 CNF:¬Robot(x)∨¬Owner(y,x)∨FriendlyTo(x,y)\lnot \text{Robot}(x) \lor \lnot \text{Owner}(y, x) \lor \text{FriendlyTo}(x, y)

加入否定目标:¬FriendlyTo(Robbie,Bob)\lnot \text{FriendlyTo}(\text{Robbie}, \text{Bob})

归结:

  1. 规则与 Robot(Robbie)\text{Robot}(\text{Robbie}) 归结,代换 θ1={x↦Robbie}\theta_1 = \{x \mapsto \text{Robbie}\},得到 ¬Owner(y,Robbie)∨FriendlyTo(Robbie,y)\lnot \text{Owner}(y, \text{Robbie}) \lor \text{FriendlyTo}(\text{Robbie}, y)。
  2. 与 Owner(Bob,Robbie)\text{Owner}(\text{Bob}, \text{Robbie}) 归结,代换 θ2={y↦Bob}\theta_2 = \{y \mapsto \text{Bob}\},得到 FriendlyTo(Robbie,Bob)\text{FriendlyTo}(\text{Robbie}, \text{Bob})。
  3. 与否定目标归结:□\square

因此 KB⊨FriendlyTo(Robbie,Bob)KB \models \text{FriendlyTo}(\text{Robbie}, \text{Bob})。

16.2 为什么不能证明 Bob 聪明

若知识库只有:

Robot(Robbie)\text{Robot}(\text{Robbie})

Owner(Bob,Robbie)\text{Owner}(\text{Bob}, \text{Robbie})

∃y∃x (Owns(y,x)∧Robot(x)∧Smart(y))\exists y \exists x\, (\text{Owns}(y, x) \land \text{Robot}(x) \land \text{Smart}(y))

不能推出 Smart(Bob)\text{Smart}(\text{Bob})。原因:

  • 存在句只说"某个拥有机器人的人聪明",不是"所有拥有机器人的人聪明"。
  • Bob 是 Robbie 的主人,不代表 Bob 就是存在句中的那个人。
  • 缺少规则:∀y ((∃x (Owns(y,x)∧Robot(x)))⇒Smart(y))\forall y\, ((\exists x\, (\text{Owns}(y, x) \land \text{Robot}(x))) \Rightarrow \text{Smart}(y))。

如果题目只给存在句,不要擅自把存在对象绑定到 Bob。

16.3 West 犯罪例题

自然语言:美国人向敌对国家出售武器是犯罪。Nono 是美国的敌人,有一些导弹;它所有导弹都是美国人 West 卖给它的。证明 West 是罪犯。

知识库:

∀x∀y∀z (American(x)∧Weapon(y)∧Sells(x,y,z)∧Hostile(z)⇒Criminal(x))\forall x \forall y \forall z\, (\text{American}(x) \land \text{Weapon}(y) \land \text{Sells}(x, y, z) \land \text{Hostile}(z) \Rightarrow \text{Criminal}(x))

Nono 有某个导弹,Skolem 化为:Owns(Nono,M1)\text{Owns}(\text{Nono}, M_1),Missile(M1)\text{Missile}(M_1)。

  • Nono 的导弹由 West 出售:∀x (Missile(x)∧Owns(Nono,x)⇒Sells(West,x,Nono))\forall x\, (\text{Missile}(x) \land \text{Owns}(\text{Nono}, x) \Rightarrow \text{Sells}(\text{West}, x, \text{Nono}))
  • 导弹是武器:∀x (Missile(x)⇒Weapon(x))\forall x\, (\text{Missile}(x) \Rightarrow \text{Weapon}(x))
  • 美国的敌人是敌对国家:∀x (Enemy(x,America)⇒Hostile(x))\forall x\, (\text{Enemy}(x, \text{America}) \Rightarrow \text{Hostile}(x))
  • 事实:American(West)\text{American}(\text{West}),Enemy(Nono,America)\text{Enemy}(\text{Nono}, \text{America})

推理链:

Missile(M1)⇒Weapon(M1)\text{Missile}(M_1) \Rightarrow \text{Weapon}(M_1)

Missile(M1)∧Owns(Nono,M1)⇒Sells(West,M1,Nono)\text{Missile}(M_1) \land \text{Owns}(\text{Nono}, M_1) \Rightarrow \text{Sells}(\text{West}, M_1, \text{Nono})

Enemy(Nono,America)⇒Hostile(Nono)\text{Enemy}(\text{Nono}, \text{America}) \Rightarrow \text{Hostile}(\text{Nono})

于是犯罪规则四个前提都满足:

American(West)∧Weapon(M1)∧Sells(West,M1,Nono)∧Hostile(Nono)\text{American}(\text{West}) \land \text{Weapon}(M_1) \land \text{Sells}(\text{West}, M_1, \text{Nono}) \land \text{Hostile}(\text{Nono})

推出 Criminal(West)\text{Criminal}(\text{West})。

17. 考试速查

17.1 概念判断

  • KB⊨αKB \models \alpha 是语义蕴涵,不是算法运行结果。
  • KB⊢iαKB \vdash_i \alpha 是推理过程 ii 的导出关系。
  • 可靠性:导出的都被蕴涵。
  • 完备性:被蕴涵的都能导出。
  • 命题逻辑归结可靠且完备。
  • 一阶归结对 FOL 完备。
  • GMP 对一阶确定子句完备,对一般 FOL 不完备。
  • 前向链和后向链对 Horn KB 完备,对一般 FOL 不完备。
  • 一阶逻辑蕴涵半可判定。

17.2 翻译题

  • "所有"通常主连接词是 ⇒\Rightarrow。
  • "存在"通常主连接词是 ∧\land。
  • ∀x∃y\forall x \exists y 与 ∃y∀x\exists y \forall x 一般不同。
  • 函数返回对象,谓词返回真假。
  • 函数项不能单独放在公式里当命题。
  • 先定义谓词表,注意参数顺序。
  • 用等号表达唯一性、至多一个、恰好几个。

17.3 合一题

检查顺序:

  1. 谓词名是否相同。
  2. 元数是否相同。
  3. 常量是否冲突。
  4. 函数名是否冲突。
  5. 变量绑定是否违反 occurs check。
  6. 是否需要标准化分离。

常见失败:x=f(x)x = f(x)。常见 MGU 不是"越具体越好",而是"限制越少越好"。

17.4 CNF 与 Skolem

CNF 流程:消去 ⇔\Leftrightarrow → 消去 ⇒\Rightarrow → ¬\lnot 内移 → 变量标准化 → Skolem 化 → ∀\forall 删除 → ∨\lor 分配到 ∧\land → 拆子句。

Skolem:

  • 不依赖全称变量:新常量。
  • 依赖全称变量:新函数。
  • 存在实例化或 Skolem 化一定要用新符号。

17.5 归结证明

证明 KB⊨αKB \models \alpha,就做 CNF(KB∧¬α)\text{CNF}(\text{KB} \land \lnot\alpha),然后归结出 □\square。每一步写清:选择哪两个子句;哪两个文字互补;MGU 是什么;得到的新子句是什么。检查空子句是否真的来自互补文字全部消去。

18. 最后一页压缩版

  • 逻辑智能体:TELL(KB, percept),  ASK(KB, query)\text{TELL}(\text{KB, percept}),\; \text{ASK}(\text{KB, query})
  • 蕴涵:KB⊨α  ⟺  M(KB)⊆M(α)KB \models \alpha \iff M(KB) \subseteq M(\alpha)
  • 可靠与完备:KB⊢iα⇒KB⊨αKB \vdash_i \alpha \Rightarrow KB \models \alpha;KB⊨α⇒KB⊢iαKB \models \alpha \Rightarrow KB \vdash_i \alpha
  • 反证归结:KB⊨α  ⟺  KB∧¬αKB \models \alpha \iff KB \land \lnot\alpha 不可满足
  • 命题 CNF:(A∨¬B)∧(¬A∨C)(A \lor \lnot B) \land (\lnot A \lor C)
  • Horn 子句:P1∧⋯∧Pm⇒QP_1 \land \dots \land P_m \Rightarrow Q
  • 所有 A 是 B:∀x (A(x)⇒B(x))\forall x\, (A(x) \Rightarrow B(x))
  • 有些 A 是 B:∃x (A(x)∧B(x))\exists x\, (A(x) \land B(x))
  • 每个 A 有一个 B:∀x (A(x)⇒∃y (B(y)∧R(x,y)))\forall x\, (A(x) \Rightarrow \exists y\, (B(y) \land R(x,y)))
  • 合一:Unify(α,β)=θ  ⟺  αθ=βθ\text{Unify}(\alpha, \beta) = \theta \iff \alpha\theta = \beta\theta
  • GMP:p1′,…,pn′,  p1∧⋯∧pn⇒q  ⇒  qθp'_1, \dots, p'_n,\; p_1 \land \dots \land p_n \Rightarrow q \;\Rightarrow\; q\theta,其中 pi′θ=piθp'_i \theta = p_i \theta
  • 一阶归结:Unify(Li,¬Mj)=θ\text{Unify}(L_i, \lnot M_j) = \theta,推出删去互补文字后的合并子句,并整体应用 θ\theta。

记住:命题逻辑靠枚举模型或归结;FOL 由于变量和量词,要先处理实例化、合一、Skolem 化。前向链和后向链适合 Horn 子句;一般 FOL 证明靠一阶归结。


Ch10 不确定性与贝叶斯网络 (Uncertainty & Bayesian Networks)

课件:lec10.pdf (96 页) + bnet.pdf (60 页)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig),Ch13 (Quantifying Uncertainty) & Ch14 (Probabilistic Reasoning)
教师:吉建民,USTC


0. 本章概述

不确定性是真实世界的常态:传感器有噪声、动作结果不可预知、环境部分可观测。纯逻辑方法在例外情况下要么"冒着说错的风险",要么"结论过弱无法决策"。概率论 (Probability theory) 提供了处理不确定知识的严密形式化方法,而贝叶斯网络 (Bayesian Networks) 则用概率论与图论的联姻,把指数级爆炸的联合概率分布分解为局部、紧凑的模块,是现代 AI 中不确定性推理的核心工具。

本章由"不确定性/概率基础"与"贝叶斯网络"两部分合并:前者建立概率公理、条件独立与贝叶斯规则;后者给出网络的定义、语义、构造、d-分离、精确推理(枚举 / 变量消元 / 团树传播)、近似推理(重要性抽样 / 拒绝采样 / 似然加权 / Gibbs-MCMC)以及朴素贝叶斯模型。

子主题 核心内容 重要程度
为什么用概率 惰性 + 无知;主观/频率解释;决策理论 = 概率 + 效用 ⭐⭐
概率基础 随机变量、原子事件、联合/边缘/条件分布、概率公理 ⭐⭐⭐
全概率工具 乘法规则、链式法则、全概率公式、归一化 ⭐⭐⭐
独立与条件独立 X⊥YX\perp Y、X⊥Y∣ZX\perp Y\mid Z;条件独立把表示从指数降为线性 ⭐⭐⭐
期望与方差 E, Var\mathbb{E},\,\text{Var} 定义与性质 ⭐⭐
贝叶斯规则 P(Cause∣Effect)=αP(Effect∣Cause)P(Cause)P(\text{Cause}\mid\text{Effect})=\alpha P(\text{Effect}\mid\text{Cause})P(\text{Cause}) ⭐⭐⭐
枚举推理 Enumeration-Ask 固定证据、对隐藏变量求和;O(dn)O(d^n) ⭐⭐⭐
贝叶斯网络定义/语义 DAG + CPT;P=∏iP(Xi∣Parents(Xi))P=\prod_i P(X_i\mid\text{Parents}(X_i)) ⭐⭐⭐
网络构造与紧致性 因果顺序优先;O(n⋅2k)O(n\cdot 2^k) vs O(2n)O(2^n) ⭐⭐⭐
条件独立与 d-分离 顺连/分连/汇连三情形;整体马尔可夫性 ⭐⭐⭐
变量消元 VE 因子 (factor);按消元顺序右乘左求和 ⭐⭐⭐
团树传播 共享中间结果;VE 的另一组织形式 ⭐⭐
近似推理 拒绝采样、似然加权、Gibbs/MCMC ⭐⭐⭐
朴素贝叶斯 P(Cause,Effects)=P(Cause)∏iP(Effecti∣Cause)P(\text{Cause},\text{Effects})=P(\text{Cause})\prod_i P(\text{Effect}_i\mid\text{Cause}) ⭐⭐⭐
MAP / MPE 最大后验假设 / 最大可能解释 ⭐⭐

第一部分:不确定性与概率基础

1.1 为什么需要不确定性

以"提前 tt 分钟出发去机场能否按时到"为例,纯逻辑方法的问题:

  • 部分可观测性 (partial observability):路况、他人计划未知;
  • 噪声传感器 (noisy sensors):交通报道不准;
  • 动作结果的不确定性 (uncertain outcomes):可能爆胎;
  • 建模与预测的巨大复杂性。

纯逻辑要么 risk falsehood(冒错误风险):“A25 一定能准时到”,要么 结论过弱:“A25 能准时到,前提是桥上没事故、不下雨、轮胎完好……”。而概率方法可给出 P(A25 到达 ∣ 无事故报道)=0.04P(A25\text{ 到达 }\mid\text{ 无事故报道})=0.04 这样的信度 (degree of belief)。

概率方法的两大动因

概率断言概括了两类来源的不确定性:

  • Laziness(惰性):懒得穷举所有例外 (exceptions)、限定条件 (qualifications);
  • Ignorance(无知):缺乏相关事实、初始条件等。

概率的两种解释

解释 含义 局限
频率解释 (Frequentist) P(A)=n/NP(A)=n/N,长期重复试验中的相对频率;大数定律保证 N→∞N\to\infty 时频率趋于概率 无法处理一次性事件(如第三次世界大战、总统竞选结果)
贝叶斯/主观解释 (Bayesian/Subjective) 概率是人在不完全知识下对事件发生的个人信度 (置信度) 主观;但须满足 Kolmogorov 公理,否则可构造必输赌局

⭐ 本课/教材采用主观概率:概率把命题与智能体自身的知识状态相联系,而非对世界的客观断言。例如 P(A25∣无事故报道)=0.06P(A25\mid\text{无事故报道})=0.06,而补充"早上 5 点"后变为 P(A25∣无事故报道,5a.m.)=0.15P(A25\mid\text{无事故报道},5\text{a.m.})=0.15。

决策理论

 决策理论 (Decision theory) = 概率理论 (Probability) + 效用理论 (Utility theory) \boxed{\,\text{决策理论 (Decision theory) = 概率理论 (Probability) + 效用理论 (Utility theory)}\,}

  • 选择哪个动作取决于对"误机"vs"等待时间"等的偏好 (preferences),由效用函数刻画。

1.2 概率的语法 (Syntax)

随机变量 (Random Variable)

基本元素,类似于命题逻辑中的命题,取值定义"可能世界 (possible worlds)"。

  • 布尔随机变量 (Boolean):如 Cavity(有无牙洞)∈ {true, false};
  • 离散随机变量 (Discrete):如 Weather ∈ ⟨sunny, rainy, cloudy, snow⟩。取值必须穷尽 (exhaustive) 且互斥 (mutually exclusive);
  • 连续随机变量 (Continuous):如 Temp = 21.6。

原子事件 (Atomic Event)

对智能体无法确定的世界状态的一个完整详细描述(即对所有随机变量的一组完整赋值)。原子事件互斥且穷尽。

例:世界仅含两个布尔变量 Cavity、Toothache 时有 4 个原子事件:
{C ⁣= ⁣f∧T ⁣= ⁣f,  C ⁣= ⁣f∧T ⁣= ⁣t,  C ⁣= ⁣t∧T ⁣= ⁣f,  C ⁣= ⁣t∧T ⁣= ⁣t}\{C\!=\!f\wedge T\!=\!f,\; C\!=\!f\wedge T\!=\!t,\; C\!=\!t\wedge T\!=\!f,\; C\!=\!t\wedge T\!=\!t\}。

概率公理 (Kolmogorov Axioms)

对任意命题 A,BA,B:

  1. 0≤P(A)≤10\le P(A)\le 1(非负性);
  2. P(true)=1P(\text{true})=1,P(false)=0P(\text{false})=0(规范性,P(Ω)=1P(\Omega)=1);
  3. P(A∨B)=P(A)+P(B)−P(A∧B)P(A\vee B)=P(A)+P(B)-P(A\wedge B);若 A∩B=∅A\cap B=\varnothing 则 P(A∪B)=P(A)+P(B)P(A\cup B)=P(A)+P(B)(有限可加性)。

形式化地,概率测度是 P:2Ω→[0,1]P:2^{\Omega}\to[0,1] 的映射。


1.3 联合、边缘、先验分布

先验/无条件概率 (Prior / Unconditional Probability)

在没有任何其它信息存在时对命题的信度。例:P(Cavity=true)=0.1P(\text{Cavity}=true)=0.1。

概率分布 (Probability distribution) 给出一个随机变量所有可能取值的概率(归一化,和为 1):

P(Weather)=⟨0.72, 0.1, 0.08, 0.1⟩P(\text{Weather})=\langle 0.72,\,0.1,\,0.08,\,0.1\rangle

联合概率分布 (Joint Probability Distribution)

给出随机变量集所有取值组合的概率,即每个原子事件(样本点)的概率:

P(Weather,Cavity)=sunnyrainycloudysnowCavity=t0.1440.020.0160.02Cavity=f0.5760.080.0640.08P(\text{Weather},\text{Cavity})=\begin{array}{c|cccc} & \text{sunny} & \text{rainy} & \text{cloudy} & \text{snow}\\\hline \text{Cavity}=t & 0.144 & 0.02 & 0.016 & 0.02\\ \text{Cavity}=f & 0.576 & 0.08 & 0.064 & 0.08 \end{array}

⭐ 任何关于该领域的问题都可以由联合分布回答,因为每个事件都是样本点之和。

对 nn 个变量,联合分布表含 ∏i∣ΩXi∣\prod_i|\Omega_{X_i}| 个状态组合(二元变量即 2n−12^n-1 个独立参数),随变量数指数增长。

边缘化 (Marginalization)

设 X={X1,…,Xn}X=\{X_1,\dots,X_n\},Y⊂XY\subset X,Z=X∖YZ=X\setminus Y,则 YY 的边缘分布 (marginal distribution):

P(Y)=∑ZP(X1,…,Xn)=∑zP(Y,z)P(Y)=\sum_{Z} P(X_1,\dots,X_n)=\sum_{z} P(Y,z)

连续变量

  • 用参数化密度函数表示,如均匀分布 U[18,26]U[18,26]、正态分布 N(μ,σ2)N(\mu,\sigma^2);
  • PP 是密度 (density),积分等于 1;P(X=20.5)=0.125P(X=20.5)=0.125 表示 lim⁡dx→0P(20.5≤X≤20.5+dx)/dx=0.125\lim_{dx\to0}P(20.5\le X\le 20.5+dx)/dx=0.125。

1.4 条件概率与全概率工具

条件概率 (Conditional Probability)

后验概率 (posterior probability):P(a∣b)P(a\mid b),给定 bb 时 aa 的概率。

⭐ 定义(P(b)>0P(b)>0):

 P(a∣b)=P(a∧b)P(b) \boxed{\,P(a\mid b)=\dfrac{P(a\wedge b)}{P(b)}\,}

乘法规则 (Product Rule)

P(a∧b)=P(a∣b)P(b)=P(b∣a)P(a)P(a\wedge b)=P(a\mid b)P(b)=P(b\mid a)P(a)

分布形式:P(Weather,Cavity)=P(Weather∣Cavity)P(Cavity)P(\text{Weather},\text{Cavity})=P(\text{Weather}\mid\text{Cavity})P(\text{Cavity})。

链式法则 (Chain Rule)

对乘法规则反复应用:

P(X1,…,Xn)=P(X1) P(X2∣X1)⋯P(Xn∣X1,…,Xn−1)=∏i=1nP(Xi∣X1,…,Xi−1)P(X_1,\dots,X_n)=P(X_1)\,P(X_2\mid X_1)\cdots P(X_n\mid X_1,\dots,X_{n-1})=\prod_{i=1}^{n}P(X_i\mid X_1,\dots,X_{i-1})

全概率公式 (Law of Total Probability)

由边缘化 + 乘法规则得:

P(a)=∑bP(a,b)=∑bP(a∣b)P(b)P(a)=\sum_{b}P(a,b)=\sum_{b}P(a\mid b)P(b)

(先按 bb 分解、再求和消去 bb。)

归一化 (Normalization)

分母可视为归一化常数 α\alpha:

P(Cavity∣toothache)=α P(Cavity,toothache)=α⟨0.12, 0.08⟩=⟨0.6, 0.4⟩P(\text{Cavity}\mid\text{toothache})=\alpha\,P(\text{Cavity},\text{toothache})=\alpha\langle 0.12,\,0.08\rangle=\langle 0.6,\,0.4\rangle

期望与方差 (Expectation & Variance)

  • 期望 (Expectation):E[X]=∑xx P(X=x)\mathbb{E}[X]=\sum_x x\,P(X=x)(离散)/ ∫x p(x) dx\int x\,p(x)\,dx(连续)。
  • 方差 (Variance):Var(X)=E[(X−E[X])2]=E[X2]−(E[X])2\text{Var}(X)=\mathbb{E}\big[(X-\mathbb{E}[X])^2\big]=\mathbb{E}[X^2]-(\mathbb{E}[X])^2。
  • 线性性:E[aX+b]=aE[X]+b\mathbb{E}[aX+b]=a\mathbb{E}[X]+b;Var(aX+b)=a2Var(X)\text{Var}(aX+b)=a^2\text{Var}(X)。
  • 若 X,YX,Y 独立:E[XY]=E[X]E[Y]\mathbb{E}[XY]=\mathbb{E}[X]\mathbb{E}[Y],Var(X+Y)=Var(X)+Var(Y)\text{Var}(X+Y)=\text{Var}(X)+\text{Var}(Y)。

注:期望/方差在 lec10/bnet 课件正文中着墨较少,按标准概率论补充;属一般考点。


1.5 独立性与条件独立性 ⭐

边缘独立 (Marginal Independence)

AA 与 BB 独立 iff:

P(A∣B)=P(A)或P(B∣A)=P(B)或P(A,B)=P(A)P(B)P(A\mid B)=P(A)\quad\text{或}\quad P(B\mid A)=P(B)\quad\text{或}\quad P(A,B)=P(A)P(B)

记作 A⊥BA\perp B 或 X⊥YX\perp Y。例:掷两颗骰子 P(1,3)=16⋅16=136P(1,3)=\tfrac{1}{6}\cdot\tfrac{1}{6}=\tfrac{1}{36}。

绝对独立功能强大但罕见。例如牙科领域数百个变量几乎两两不独立。

条件独立 (Conditional Independence) ⭐⭐⭐

⭐ XX 与 YY 在给定 ZZ 时条件独立,记 X⊥Y∣ZX\perp Y\mid Z:

 P(X,Y∣Z)=P(X∣Z) P(Y∣Z)    ⟺    P(X∣Y,Z)=P(X∣Z) \boxed{\,P(X,Y\mid Z)=P(X\mid Z)\,P(Y\mid Z)\;\iff\;P(X\mid Y,Z)=P(X\mid Z)\,}

例:探针是否卡住 (Catch) 与牙疼 (Toothache) 在给定是否有牙洞 (Cavity) 后条件独立:

P(catch∣toothache,cavity)=P(catch∣cavity)P(\text{catch}\mid\text{toothache},\text{cavity})=P(\text{catch}\mid\text{cavity})

⭐ 等价刻画(7 条相互等价,给定 P(Z)>0P(Z)>0):

  1. P(X,Y∣Z)=P(X∣Z)P(Y∣Z)P(X,Y\mid Z)=P(X\mid Z)P(Y\mid Z);
  2. P(X∣Y,Z)=P(X∣Z)P(X\mid Y,Z)=P(X\mid Z);
  3. P(X,Y∣Z)=f(X,Z) g(Y,Z)P(X,Y\mid Z)=f(X,Z)\,g(Y,Z);
  4. P(X∣Y,Z)=f(X,Z)P(X\mid Y,Z)=f(X,Z);
  5. P(X,Y,Z)=P(X∣Z)P(Y∣Z)P(Z)P(X,Y,Z)=P(X\mid Z)P(Y\mid Z)P(Z);
  6. P(X,Y,Z)=P(X,Z) P(Y,Z)P(Z)P(X,Y,Z)=\dfrac{P(X,Z)\,P(Y,Z)}{P(Z)};
  7. P(X,Y,Z)=f(X,Z) g(Y,Z)P(X,Y,Z)=f(X,Z)\,g(Y,Z)。

条件独立降低复杂度 ⭐⭐⭐

利用条件独立,牙科三变量联合分布可写为:

P(Toothache,Catch,Cavity)=P(Toothache∣Cavity) P(Catch∣Cavity) P(Cavity)P(\text{Toothache},\text{Catch},\text{Cavity})=P(\text{Toothache}\mid\text{Cavity})\,P(\text{Catch}\mid\text{Cavity})\,P(\text{Cavity})

独立参数从 23−1=72^3-1=7 降到 2+2+1=52+2+1=5。

⭐ 在大多数情况下,使用条件独立性能将全联合概率的表示由 nn 的指数关系减为 nn 的线性关系。

条件独立性是我们关于不确定环境的最基本、最稳健的知识形式 (our most basic and robust form of knowledge about uncertain environments)。


1.6 贝叶斯规则 (Bayes’ Rule) ⭐⭐⭐

由乘法规则 P(a∣b)P(b)=P(b∣a)P(a)P(a\mid b)P(b)=P(b\mid a)P(a) 直接得:

 P(a∣b)=P(b∣a) P(a)P(b) ,分布形式:P(Y∣X)=α P(X∣Y)P(Y) \boxed{\,P(a\mid b)=\dfrac{P(b\mid a)\,P(a)}{P(b)}\,,\quad\text{分布形式:}P(Y\mid X)=\alpha\,P(X\mid Y)P(Y)\,}

用途:从因果概率 (causal probability) 评估诊断概率 (diagnostic probability):

P(Cause∣Effect)=P(Effect∣Cause) P(Cause)P(Effect)P(\text{Cause}\mid\text{Effect})=\dfrac{P(\text{Effect}\mid\text{Cause})\,P(\text{Cause})}{P(\text{Effect})}

例 1:脑膜炎诊断

MM=脑膜炎,SS=脖子僵硬:P(s∣m)=0.8,  P(m)=110000,  P(s)=0.1P(s\mid m)=0.8,\;P(m)=\tfrac{1}{10000},\;P(s)=0.1。

P(m∣s)=0.8×0.00010.1=0.0008P(m\mid s)=\dfrac{0.8\times 0.0001}{0.1}=0.0008

后验概率仍极小!

例 2:流感 vs 头痛(易错点)

HH=头痛,FF=流感:P(H)=110,  P(F)=140,  P(H∣F)=12P(H)=\tfrac{1}{10},\;P(F)=\tfrac{1}{40},\;P(H\mid F)=\tfrac{1}{2}。
"50% 流感伴随头痛 ⇒ 我有 50% 概率得流感"是错的:

P(F∣H)=P(H∣F)P(F)P(H)=(1/2)(1/40)1/10=18=0.125  ≠  P(H∣F)=0.5P(F\mid H)=\dfrac{P(H\mid F)P(F)}{P(H)}=\dfrac{(1/2)(1/40)}{1/10}=\dfrac{1}{8}=0.125\;\neq\;P(H\mid F)=0.5

先验 vs 后验

  • 先验概率 (prior) P(H=h)P(H=h):考虑证据 E=eE=e 之前;
  • 后验概率 (posterior) P(H=h∣E=e)P(H=h\mid E=e):考虑证据之后。

1.7 概率分布从何而来?

  1. 领域专家 (Domain experts) 主观给出;
  2. 用更简单的概率事实 + 代数(链式规则 + 独立性假设)推导联合分布;
  3. 从数据学习 (Learn from data)——大量机器学习研究本质就是在学习各种形式的概率分布。

第二部分:贝叶斯网络 (Bayesian Networks)

2.1 概率图模型 (Graphical Models) 概述

⭐ 概率图模型 = 概率论 + 图论:用图直观表示概率分布的结构。

  • 图 (graph):节点 (nodes/vertices) + 连接 (links/edges/arcs)。
    • 每个节点代表一个(或一组)随机变量;
    • 边表达变量间的概率关系。
  • 模块性 (modularity):复杂系统由简单部分组合;概率论作为"粘合剂"保证整体一致并提供数据接口;图论提供直观接口与高效通用算法的数据结构。
  • 经典多元概率模型都是其特例:混合模型 (mixture models)、因子分析 (factor analysis)、隐马尔可夫模型 (HMM)、卡尔曼滤波器 (Kalman filters) 等。

图的方向性

类型 特点 适用
有向图模型 (Directed) 带箭头;贝叶斯网络;表达因果关系 AI、统计更常用
无向图模型 (Undirected) 无箭头;马尔可夫随机场 (Markov random fields);表达变量间软约束 计算机视觉、物理更常用

2.2 贝叶斯网络的定义与语义 ⭐⭐⭐

⭐ 贝叶斯网络是一种简单的、图形化的数据结构,用于表示变量之间的依赖关系(条件独立性),为任何全联合概率分布提供一种简明的规范。

语法 (Syntax):

  1. 一组节点,每个节点对应一个变量;
  2. 一个有向 (directed)、无环 (acyclic) 图(边 ≈ “直接影响”);
  3. 每个节点附有给定其父节点时的条件分布 P(Xi∣Parents(Xi))P(X_i\mid\text{Parents}(X_i))——量化父节点对该节点的影响。

最简单情形下,条件分布表示为条件概率表 (Conditional Probability Table, CPT),给出父节点每种取值组合下 XiX_i 的分布。

全局语义 (Global Semantics) ⭐⭐⭐

⭐ 全联合分布 = 所有局部条件分布的乘积:

 P(x1,…,xn)=∏i=1nP(xi∣parents(Xi)) \boxed{\,P(x_1,\dots,x_n)=\prod_{i=1}^{n}P\big(x_i\mid\text{parents}(X_i)\big)\,}

例(防盗网络):P(j∧m∧a∧¬b∧¬e)=P(j∣a)P(m∣a)P(a∣¬b,¬e)P(¬b)P(¬e)P(j\wedge m\wedge a\wedge\lnot b\wedge\lnot e)=P(j\mid a)P(m\mid a)P(a\mid\lnot b,\lnot e)P(\lnot b)P(\lnot e)
=0.9×0.7×0.001×0.999×0.998≈0.00063=0.9\times 0.7\times 0.001\times 0.999\times 0.998\approx 0.00063。

局部语义 (Local Semantics)

每个节点在给定其父节点后,与它的非后代节点 (nondescendants) 条件独立:

P(Xi∣Parents(Xi), Nondescendants(Xi))=P(Xi∣Parents(Xi))P(X_i\mid\text{Parents}(X_i),\,\text{Nondescendants}(X_i))=P(X_i\mid\text{Parents}(X_i))

⭐ 定理:局部语义   ⟺  \iff 全局语义(二者等价)。


2.3 经典示例:防盗 (Burglary) 网络

变量:Burglary(入室行窃)、Earthquake(地震)、Alarm(警报)、JohnCalls、MaryCalls。网络拓扑反映因果知识:盗贼/地震可触发警报;警报导致 John/Mary 打电话。

拓扑结构编码了条件独立性断言:

  • Weather 与其它变量独立;
  • 给定 Cavity,Toothache 与 Catch 条件独立。

2.4 紧致性 (Compactness) ⭐

一个布尔变量 XiX_i 有 kk 个布尔父节点时,其 CPT 有 2k2^k 行(父节点取值组合),每行需指定 Xi=trueX_i=true 的概率 pp(Xi=falseX_i=false 即 1−p1-p)。

⭐ 若每个变量至多有 kk 个父节点,整个网络只需 O(n⋅2k)O(n\cdot 2^k) 个数——随 nn 线性增长;而完整联合分布需 O(2n)O(2^n) 个数。

防盗网络:1+1+4+2+2=101+1+4+2+2=10 个数(vs 全联合分布 25−1=312^5-1=31)。


2.5 贝叶斯网络的构造 ⭐⭐⭐

需要一种方法使得局部条件独立关系能保证全局语义成立。

构造算法:

  1. 选定一组刻画问题的随机变量 {X1,…,Xn}\{X_1,\dots,X_n\};
  2. 选择变量次序 α=⟨X1,…,Xn⟩\alpha=\langle X_1,\dots,X_n\rangle;
  3. 从空图出发,按次序逐个加入 XiX_i:
    • 利用背景知识,在 X1,…,Xi−1X_1,\dots,X_{i-1} 中选一个尽可能小的子集 π(Xi)\pi(X_i)(即父节点集),使得"给定 π(Xi)\pi(X_i),XiX_i 与图中其它变量条件独立"合理;
    • 从 π(Xi)\pi(X_i) 中每个节点画一条指向 XiX_i 的有向边。

为何这样保证全局语义:

P(X1,…,Xn)=∏i=1nP(Xi∣X1,…,Xi−1)  (链式规则)=∏i=1nP(Xi∣π(Xi))  (由构造)P(X_1,\dots,X_n)=\prod_{i=1}^{n}P(X_i\mid X_1,\dots,X_{i-1})\;(\text{链式规则})=\prod_{i=1}^{n}P(X_i\mid\pi(X_i))\;(\text{由构造})

⭐ 添加节点的正确次序:先加"根本原因"节点,再加受其直接影响的变量,以此类推——即按因果顺序 (causal order),原因在前、结果在后。

变量顺序的影响

反例(防盗网络选次序 M,J,A,B,EM,J,A,B,E):每次都要判断条件独立,在非因果 (noncausal) 方向上判断条件独立很困难(人对因果与条件独立似乎"硬连线"),且得到的网络更不紧凑:需 1+2+4+2+4=131+2+4+2+4=13 个数(vs 因果顺序的 10)。

关于变量顺序的不同主张:

  • Smith (1989):以模型复杂性为标准;
  • Howard & Matheson (1984):以条件概率评估的难易程度为标准;
  • Pearl (2000):用因果关系决定变量顺序(建议)。

因果关系与因果马尔可夫假设

因果关系尚无被广泛接受的严格定义。实用中:若"上帝介入改变 XX 的状态会影响对 YY 的信度",且反过来不成立,则称 XX 是 YY 的原因。利用因果关系建网实际上是在做条件独立假设,可归纳为因果马尔可夫假设 (causal Markov assumption)。

确定网络参数

通过数据分析或从问题特性直接得到(参数学习见 §4.7)。


2.6 推理任务分类 (Inference Tasks)

⭐ 贝叶斯网推理 (inference) 是通过计算回答查询的过程,主要有三大类:

任务 形式 说明
后验概率问题 P(Q∣E=e)P(Q\mid E=e) 从结果到原因的诊断推理、从原因到结果的预测推理、同一结果的不同原因间的原因关联推理、混合推理
最大后验假设 (MAP) h∗=arg⁡max⁡hP(H=h∣E=e)h^*=\arg\max_h P(H=h\mid E=e) 给定证据,求部分变量的后验最大的状态组合
最大可能解释 (MPE) arg⁡max⁡全部非证据变量P(⋅∣E=e)\arg\max_{\text{全部非证据变量}}P(\cdot\mid E=e) 网络全部变量的、与证据相一致的状态组合中概率最大者;可视作 MAP 的特例(假设变量 = 所有非证据变量)

简单查询例:P(NoGas∣Gauge=empty, Lights=on, Starts=false)P(\text{NoGas}\mid\text{Gauge=empty, Lights=on, Starts=false})。


第三部分:图分隔与变量独立 (d-Separation)

3.1 三种连接结构 ⭐⭐⭐

变量 XX 和 YY 通过第三个变量 ZZ 间接相连,有三种情形(决定信息能否在 X,YX,Y 间传递):

结构 图示 ZZ 未知时 ZZ 已知时
顺连 (Serial / Chain) X→Z→YX\to Z\to Y 链式 信息从 XX 经 ZZ 传到 YY,X,YX,Y 关联 阻断:了解 XX 不影响对 YY 的信度,X⊥Y∣ZX\perp Y\mid Z
分连 (Diverging / Common Cause) X←Z→YX\leftarrow Z\to Y 共同原因 信息可在 X,YX,Y 间传递,关联 阻断:X⊥Y∣ZX\perp Y\mid Z
汇连 (Converging / Common Effect / V-structure) X→Z←YX\to Z\leftarrow Y 共同结果(多因一果) 信息从 XX(或 YY)经 ZZ “漏掉”,X⊥YX\perp Y 激活:"漏洞"被堵上,X,YX,Y 变得相关(即使本无条件独立)

⭐ 关键反直觉点:汇连(V 结构)情形下,观察 ZZ 反而使原本独立的 X,YX,Y 变得相关(“explaining away” 现象)。不仅如此,观察 ZZ 的任一后代也会激活该通路。


3.2 d-分隔判据 (d-Separation) ⭐⭐⭐

设 ZZ 为一节点集合,X,YX,Y 是不在 ZZ 中的两个节点。考虑 XX 和 YY 之间的一条通路 (path) α\alpha(在忽略方向的无向图中)。

⭐ 通路 α\alpha 被 ZZ 阻塞 (blocked) 当且仅当满足下列条件之一:

  1. α\alpha 上有一个在 ZZ 中的顺连节点(chain,中间节点 ZZ 已知 → 阻断);
  2. α\alpha 上有一个在 ZZ 中的分连节点(common cause,中间节点 ZZ 已知 → 阻断);
  3. α\alpha 上有一个汇连节点 WW,且 WW 及其所有后代节点均不在 ZZ 中(V 结构未被观察 → 阻断;反之若 WW 或其后代被观察则激活)。

⭐ d-分隔定义:若 XX 和 YY 之间的所有通路都被 ZZ 阻塞,则称 ZZ 有向分隔 (d-separate) XX 和 YY,简称 d-分隔 (d-separation)。

整体马尔可夫性 (Global Markov Property) ⭐⭐⭐

定理:设 X,YX,Y 为贝叶斯网中的两个变量,ZZ 为不包含 X,YX,Y 的节点集合。若 ZZ d-分隔 XX 和 YY,则

 X⊥Y∣Z \boxed{\,X\perp Y\mid Z\,}

即 XX 与 YY 在给定 ZZ 时条件独立。

d-分隔是图论概念,条件独立是概率论概念;该定理揭示了贝叶斯网图论侧面与概率论侧面之间的深刻联系。

d-分隔举例(参课件图)

  • 设 Z=∅Z=\varnothing:节点 A,EA,E 间通路 A→D→B→EA\to D\to B\to E 未被阻塞 → A,EA,E 不被 d-分隔;而 A,CA,C 间所有通路都有汇连节点且其及后代不在 ZZ 中 → A,CA,C 被 d-分隔。
  • 设 Z={B,M}Z=\{B,M\}:考察 A,CA,C,通路中 2 条在 BB 处顺连被阻塞,另 2 条在 KK 处汇连,但 KK 有后代 M∈ZM\in Z 故不被阻塞 → A,CA,C 不被 d-分隔。

3.3 马尔可夫边界与端正图

马尔可夫边界 (Markov Boundary)

⭐ 节点 XX 的马尔可夫边界 mb(X)mb(X) 包括:父节点、子节点、以及子节点的其它父节点(配偶)。

推论:给定 mb(X)mb(X),则 XX 条件独立于网络中所有其它变量。

端正图 (Moral Graph)

将有向无环图 GG 中每个节点的不同父节点"结婚"(在父节点之间加边),再去掉所有边的方向,所得无向图称为 GG 的端正图 (moral graph)。

有向分隔与无向分隔的等价定理

设 X,Y,ZX,Y,Z 是有向无圈图 GG 中三个两两不相交的节点集。(Gan(X∪Y∪Z))m(G_{\text{an}(X\cup Y\cup Z)})_m 表示把 GG 限制在 an(X∪Y∪Z)\text{an}(X\cup Y\cup Z)(含 X∪Y∪ZX\cup Y\cup Z 的最小祖先闭集)上、再端正化得到的无向图。

定理:ZZ 在 GG 中 d-分隔 XX 和 YY   ⟺  \iff ZZ 在 (Gan(X∪Y∪Z))m(G_{\text{an}(X\cup Y\cup Z)})_m 中 u-分隔 (undirected separate) XX 和 YY(即去掉 ZZ 后 X,YX,Y 间无通路)。


第四部分:贝叶斯网络中的推理 (Inference)

4.1 枚举推理 (Inference by Enumeration / Enumeration-Ask) ⭐⭐⭐

从全联合分布出发,不显式构造联合分布表地求和消去变量。

基本思想

对任意命题 φ\varphi,其概率等于所有使其为真的原子事件的概率和:

P(φ)=∑ω:ω⊨φP(ω)P(\varphi)=\sum_{\omega:\omega\models\varphi}P(\omega)

查询的一般框架 ⭐⭐⭐

设查询变量为 YY,证据变量 E=eE=e,隐藏变量 H=X−Y−EH=X-Y-E(Y,E,HY,E,H 构成所有变量的完整集合):

 P(Y∣E=e)=α P(Y,E=e)=α∑hP(Y,E=e,H=h) \boxed{\,P(Y\mid E=e)=\alpha\,P(Y,E=e)=\alpha\sum_{h}P(Y,E=e,H=h)\,}

其中 α\alpha 是归一化常数(1/P(E=e)1/P(E=e))。

在贝叶斯网中的应用

将联合分布写成 CPT 乘积 ∏iP(Xi∣Parents(Xi))\prod_i P(X_i\mid\text{Parents}(X_i)),通过"计算条件概率乘积并求和"回答查询。

防盗网络例:

P(B∣j,m)=αP(B,j,m)=α∑e∑aP(B) P(e) P(a∣B,e) P(j∣a) P(m∣a)P(B\mid j,m)=\alpha P(B,j,m)=\alpha\sum_{e}\sum_{a}P(B)\,P(e)\,P(a\mid B,e)\,P(j\mid a)\,P(m\mid a)

=α P(B)∑eP(e)∑aP(a∣B,e) P(j∣a) P(m∣a)=\alpha\,P(B)\sum_{e}P(e)\sum_{a}P(a\mid B,e)\,P(j\mid a)\,P(m\mid a)

复杂度与缺陷 ⭐

  • 递归深度优先枚举:O(n)O(n) 空间,O(dn)O(d^n) 时间(dd 为最大取值数);
  • 枚举低效:存在大量重复计算(如对 ee 的每个取值都重复计算 P(j∣a)P(m∣a)P(j\mid a)P(m\mid a));
  • 全联合分布存储:空间 O(dn)O(d^n);且 O(dn)O(d^n) 个表项的数字从何而来?

变量消元法正是为消除这种重复计算而设计。


4.2 变量消元算法 (Variable Elimination, VE) ⭐⭐⭐

⭐ 核心思想:把求和从右到左进行,存储中间结果(因子 factor),避免重复计算。本质上是边缘化过程的局部化。

因子 (Factor)

因子是多元函数 f(X1,…,Xk)f(X_1,\dots,X_k),以表的形式存储。VE 中因子来自 CPT 或中间运算结果 ψ\psi。因子运算有两类:

  • 因子乘积 (pointwise product):f1⊗f2f_1\otimes f_2;
  • 因子边缘化(变量求和消去):∑Xf\sum_X f。

算法步骤

给定消元顺序 ρ\rho,证据 E=eE=e:

  1. 设置证据:把因子中的证据变量固定为 ee;
  2. 按 ρ\rho 依次消去变量 XX:
    • 收集所有含 XX 的因子 {f1,…,fk}\{f_1,\dots,f_k\};
    • 计算乘积 g=∏ifig=\prod_i f_i;
    • 对 XX 求和得新因子 ψ=∑Xg\psi=\sum_X g;
    • 用 ψ\psi 替换原因子集。
  3. 对剩余因子求乘积 hh;
  4. 归一化:P(Q∣e)=h∑QhP(Q\mid e)=\dfrac{h}{\sum_Q h}。

完整举例(参 bnet 课件)

贝叶斯网给出分解 F={P(A),P(B),P(C),P(D∣A,B),P(E∣B,C),P(F∣D,E)}\mathcal{F}=\{P(A),P(B),P(C),P(D\mid A,B),P(E\mid B,C),P(F\mid D,E)\},证据 F=0F=0,求 P(A∣F=0)P(A\mid F=0),消元顺序 ρ=⟨C,E,B,D⟩\rho=\langle C,E,B,D\rangle:

  1. 设置证据:F={P(A),P(B),P(C),P(D∣A,B),P(E∣B,C),P(F=0∣D,E)}\mathcal{F}=\{P(A),P(B),P(C),P(D\mid A,B),P(E\mid B,C),P(F=0\mid D,E)\};
  2. 消去 CC:ψ1(B,E)=∑CP(C)P(E∣B,C)\psi_1(B,E)=\sum_C P(C)P(E\mid B,C);
  3. 消去 EE:ψ2(B,D)=∑EP(F=0∣D,E)ψ1(B,E)\psi_2(B,D)=\sum_E P(F=0\mid D,E)\psi_1(B,E);
  4. 消去 BB:ψ3(A,D)=∑BP(B)P(D∣A,B)ψ2(B,D)\psi_3(A,D)=\sum_B P(B)P(D\mid A,B)\psi_2(B,D);
  5. 消去 DD:ψ4(A)=∑Dψ3(A,D)\psi_4(A)=\sum_D \psi_3(A,D);
  6. h(A)=P(A) ψ4(A)h(A)=P(A)\,\psi_4(A);
  7. 返回 P(A∣F=0)=h(A)∑Ah(A)P(A\mid F=0)=\dfrac{h(A)}{\sum_A h(A)}。

消元顺序与复杂度

  • ⭐ 不同消元顺序导致不同计算复杂度;寻找最优消元顺序是 NP-hard。
  • 启发式:最大势搜索 (max-cardinality search)、最小缺边搜索 (min-fill search)。

精确推理的复杂度 ⭐

网络类型 定义 复杂度
单联通网络 (Singly connected / polytree) 任意两节点间至多一条(无向)路径 时间、空间均 O(dkn)O(d^k n),与网络规模线性
多联通网络 (Multiply connected) 一般网络 精确推理可归约自 3SAT → NP-hard;计数版本 → #P-complete

4.3 团树传播算法 (Clique Tree / Junction Tree Propagation) ⭐⭐

实际中常需在同一网络进行多次推理,不同推理之间存在相同步骤。团树传播利用步骤共享加速推理。

团树 (Clique Tree)

一种无向树,每个节点代表一个变量集合,称为团 (clique)。须满足变量连通性 (running intersection):若两团 C1,C2C_1,C_2 同时含变量 XX,则连接它们的通路上所有团都含 XX。

团树 JJ 覆盖贝叶斯网 NN 当:

  1. 对 NN 中任一变量 XX,JJ 中存在团 CC 使 X∈CX\in C 且 π(X)⊆C\pi(X)\subseteq C;
  2. 所有团的并集恰为 NN 的全部变量。

算法步骤

  1. 将贝叶斯网转化为团树;
  2. 初始化:把贝叶斯网的概率函数分配到各团节点存储;
  3. 设置证据:改变相应团中存储的概率函数;
  4. 选含查询变量 QQ 的团 CQC_Q 作为枢纽节点 (pivot);
  5. 对 CQC_Q 的相邻节点逐一调用 CollectMessage(从相邻节点收集信息);
  6. 据收到的信息及自身概率函数,得到关于 CQC_Q 的函数;
  7. 消去 CQC_Q 中除 QQ 外的变量,归一化得 P(Q∣e)P(Q\mid e)。

性质

  • 团树传播本质与变量消元没有区别,是 VE 的另一种组织形式(精确推理);
  • 优点:清楚看到两次推理间的共享步骤,可用 SaveMessage/RetrieveMessage 存取中间结果实现计算共享。

4.4 近似推理:随机抽样 (Stochastic Sampling) ⭐⭐⭐

当网络节点众多且连接稠密时,精确推理复杂度过高,转用近似推理。随机抽样 (stochastic sampling / Monte Carlo) 基本思想:从某概率分布随机抽样生成一组样本,再由样本近似估计要计算的量。

分为两大类:重要性抽样 (importance sampling) 与 马尔可夫链蒙特卡洛 (MCMC)。

4.4.1 重要性抽样 (Importance Sampling) ⭐⭐

考虑积分 I=∫ΩXf(X) dXI=\int_{\Omega_X} f(X)\,dX,改写为期望:

I=∫ΩXf(X)p(X) p(X) dXI=\int_{\Omega_X}\dfrac{f(X)}{p(X)}\,p(X)\,dX

(要求:若 f(X=x)≠0f(X=x)\neq 0 则 p(X=x)≠0p(X=x)\neq 0)。从 p(X)p(X) 独立抽取 mm 个样本 D1,…,DmD_1,\dots,D_m,估计:

 I^m=1m∑i=1mf(Di)p(Di) \boxed{\,\hat{I}_m=\dfrac{1}{m}\sum_{i=1}^{m}\dfrac{f(D_i)}{p(D_i)}\,}

当 m→∞m\to\infty 时 I^m\hat{I}_m 几乎必然收敛于 II。

4.4.2 概率推理中的采样方法

定义示性函数 χY=y(W)={1,Y=y0,否则\chi_{Y=y}(W)=\begin{cases}1,&Y=y\\0,&\text{否则}\end{cases},则条件概率可写为期望比:

P(Q=q∣E=e)=P(Q=q,E=e)P(E=e)=∑XχQ=q(X)χE=e(X)P(X)∑XχE=e(X)P(X)P(Q=q\mid E=e)=\dfrac{P(Q=q,E=e)}{P(E=e)}=\dfrac{\sum_X\chi_{Q=q}(X)\chi_{E=e}(X)P(X)}{\sum_X\chi_{E=e}(X)P(X)}

(a) 拒绝采样 (Rejection Sampling) ⭐⭐

  • 用先验分布(网络本身)生成样本;丢弃所有与证据 E=eE=e 不一致的样本;
  • 在保留的样本中统计 Q=qQ=q 的频率来估计 P(Q=q∣E=e)P(Q=q\mid E=e)。
  • ⚠️ 缺点:当证据概率很小时(稀有证据),绝大多数样本被拒绝,效率极低。

(b) 逻辑抽样 (Logic Sampling) ⭐

  • bnet 课件术语:选择 P(X)P(X) 本身作为重要性分布时的重要性抽样,即称为逻辑抽样 (logic sampling)。它与拒绝采样在精神上一致——按网络先验向前采样。
  • 权重 w=f(Di)/p(Di)w=f(D_i)/p(D_i);对一致样本权重为 1(退化为拒绝采样的频率统计)。

© 似然加权 (Likelihood Weighting) ⭐⭐⭐

  • 为避免拒绝样本:固定证据变量 E=eE=e,只对非证据变量按 CPT 向前采样;每固定一个证据变量 EjE_j,把其 CPT 项 P(Ej=ej∣Parents(Ej))P(E_j=e_j\mid\text{Parents}(E_j)) 乘入样本权重。
  • ⭐ 样本权重:

 w=∏jP(Ej=ej∣Parents(Ej)=采样值) \boxed{\,w=\prod_{j}P(E_j=e_j\mid\text{Parents}(E_j)=\text{采样值})\,}

  • 估计:P(Q=q∣E=e)≈∑i:Qi=qwi∑iwiP(Q=q\mid E=e)\approx\dfrac{\sum_{i:Q_i=q}w_i}{\sum_i w_i}(带权频率)。
  • 优点:不丢弃样本,每个样本都用上;缺点:当证据变量很多或位于网络下游时,权重方差大、效率下降。

4.4.3 MCMC / 吉布斯抽样 (Gibbs Sampling) ⭐⭐⭐

  • 重要性抽样中样本相互独立;MCMC 中不同样本不独立(形成马尔可夫链)。
  • 吉布斯抽样步骤:
    1. 随机生成一个与证据 E=eE=e 一致的起始样本 D1D_1;
    2. 此后每个样本 DiD_i 依赖前一个 Di−1D_{i-1},且 DiD_i 与 Di−1D_{i-1} 至多只有一个非证据变量取值不同,记被改变的变量为 XX(可随机选或按固定顺序轮流);
    3. XX 的新值由如下分布抽样:

 P(X∣Di−1∖X)=P(X∣mb(X)Di−1) \boxed{\,P(X\mid D_{i-1}\setminus X)=P\big(X\mid mb(X)_{D_{i-1}}\big)\,}

其中 mb(X)Di−1mb(X)_{D_{i-1}} 是 XX 的马尔可夫边界在 Di−1D_{i-1} 中的当前取值。

  • ⭐ 收敛性:由马氏链理论保证,当样本数趋于无穷时算法返回的结果收敛于真正的后验概率。
  • ⚠️ 缺点:收敛速度慢,马氏链往往需很长时间才真正达到平稳分布 (stationary distribution);且样本间相关使估计方差分析更复杂。

4.5 朴素贝叶斯模型 (Naïve Bayes) ⭐⭐⭐

⭐ 朴素贝叶斯模型:单一父变量(原因 Cause)+ 一组子变量(效果 Effect1,…,_1,\dots,Effectn_n),子变量在给定父变量后彼此条件独立。

 P(Cause,Effect1,…,Effectn)=P(Cause)∏i=1nP(Effecti∣Cause) \boxed{\,P(\text{Cause},\text{Effect}_1,\dots,\text{Effect}_n)=P(\text{Cause})\prod_{i=1}^{n}P(\text{Effect}_i\mid\text{Cause})\,}

由贝叶斯规则 + 条件独立:

P(Cause∣Effect1,…,Effectn)=α P(Cause)∏iP(Effecti∣Cause)P(\text{Cause}\mid\text{Effect}_1,\dots,\text{Effect}_n)=\alpha\,P(\text{Cause})\prod_{i}P(\text{Effect}_i\mid\text{Cause})

⭐ 总参数个数关于 nn 线性。

经典应用

  1. 垃圾邮件检测 (Spam detection):变量 Caps(标题是否全大写)、Free(是否含"free")、Spam。模型 P(Free,Caps,Spam)=P(Spam)P(Caps∣Spam)P(Free∣Spam)P(\text{Free},\text{Caps},\text{Spam})=P(\text{Spam})P(\text{Caps}\mid\text{Spam})P(\text{Free}\mid\text{Spam})。
  2. 文本分类 (20 Newsgroups):查询变量 = 文档类别;效果变量 = 每个词是否出现。先验 P(Category=c)P(\text{Category}=c) = 该类文档占比;P(wordi=true∣c)P(\text{word}_i=\text{true}\mid c) = cc 类中含词 ii 的文档占比。朴素贝叶斯达 89% 分类准确率。
  3. 数字识别 (Digit Recognizer):每个像素 (i,j)(i,j) 一布尔特征 FijF_{ij}(强度是否 >0.5>0.5):

P(Y∣F0,0,…,F15,15)∝P(Y)∏i,jP(Fi,j∣Y)P(Y\mid F_{0,0},\dots,F_{15,15})\propto P(Y)\prod_{i,j}P(F_{i,j}\mid Y)

评价 ⭐

  • 通过强条件独立假设使概率推理变得可行;
  • 尽管假设强,实际效果相当好,与其它分类方法在标准数据集上颇具竞争力;
  • 在文本分类(如垃圾邮件过滤)中尤其流行。

4.6 概率分布的来源与变分法

除 §1.7 三种来源外,近似推理还包括变分法 (variational methods)——把推理转化为优化问题(求近似分布逼近真实后验),与随机抽样并列。


4.7 贝叶斯网络的学习 (Bayesian Network Learning)

⭐ 从数据获得贝叶斯网的过程分两类:

  • 结构学习 (Structure learning):发现变量之间的图关系(即网络拓扑);
  • 参数学习 (Parameter learning):在结构已知的前提下,决定变量间关联的量化关系(CPT 表项)。

当数据足够多时,主观先验对数据分析的影响不大。

贝叶斯网应用领域

医疗诊断、故障诊断(工业设备/计算机系统/垃圾邮件过滤)、金融分析、模式识别(分类/语义理解)、军事(目标识别/多目标跟踪/身份识别)、生态学(人类活动对环境与动物的影响)、生物信息学(基因连锁分析)、编码学、机器学习(分类/聚类)、时序数据与动态模型(如 HMM)。


4.8 TF-IDF(文本相关补充)

  • 词频 (Term Frequency):TFw=某类中词 w 出现次数该类所有词条数\text{TF}_w=\dfrac{\text{某类中词 }w\text{ 出现次数}}{\text{该类所有词条数}};
  • 逆文档频率 (Inverse Document Frequency):IDFw=log⁡ ⁣(语料库文档总数含词 w 的文档数+1)\text{IDF}_w=\log\!\left(\dfrac{\text{语料库文档总数}}{\text{含词 }w\text{ 的文档数}+1}\right);
  • TFIDFw=TFw×IDFw\text{TFIDF}_w=\text{TF}_w\times\text{IDF}_w:高词频 + 低文档频率 → 高权重。PRTFIDF 是由 TFIDF 衍生的概率分类器。

4.9 概率论与人工智能的历史联系

  • 不确定性是 AI 系统的核心难题:观测不完备/有误差、推理前提因例外难完全满足、复杂领域缺完备理论、客观规律本身随机。
  • 早期 AI 用非单调逻辑(默认逻辑、自认知逻辑、限定逻辑)或为规则附加数字(确定因子、模糊隶属度)处理不确定性,但计算复杂度太高、结果正确性无保证。
  • 自 1980s 起,概率论渐成主流:贝叶斯解释使频率数据缺乏时也能用概率;决策论(最大期望效用)与 AI 结合推动概率论复兴;80 年代初发现利用问题结构可分解联合分布,极大降低复杂度——这正是贝叶斯网络的起源。



📋 本章速览补充:以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。

概率与贝叶斯网络大抄

主线:现实中的智能体不能只靠"真/假/未知"行动;概率给出信念程度,完整联合分布原则上能回答所有概率查询,但规模太大;独立性和条件独立性压缩联合分布;贝叶斯网络把条件独立结构画成图,并用枚举、变量消元、朴素贝叶斯等方法做推理和分类。

目录:0. 一句话总图 · 1. 为什么 AI 需要概率 · 3. 概率分布 · 4. 条件概率/乘法/链式 · 5. 用完整联合分布做推理 · 7. 条件独立 · 8. 贝叶斯公式 · 9. 多证据贝叶斯和朴素贝叶斯 · 10. 概率分布从哪里来 · 11. 贝叶斯网络 · 12. d-separation · 13. 如何构建贝叶斯网络 · 14. 精确推理 · 15. 按图写联合分布和按图判独立 · 16. 朴素贝叶斯作为贝叶斯网络 · 17. 考试速查 · 18. 常见坑 · 19. 最后一页压缩版

0. 一句话总图

逻辑推理问的是:KB⊨αKB \models \alpha

概率推理问的是:P(α∣e)P(\alpha \mid e)

也就是"已经看到证据 ee 后,结论 α\alpha 有多可信"。第 13 章先给概率语言本身,第 14 章再给一种紧凑表示概率分布的图模型:贝叶斯网络。

这两章的知识可以串成一条链:

  1. 不确定性来自部分可观察、传感器噪声、行动结果不确定、模型太复杂、惰性和无知。
  2. 概率把"不确定的命题"变成 [0,1][0, 1] 中的信念程度。
  3. 完整联合分布能回答一切查询,但对 nn 个布尔变量需要指数规模。
  4. 边缘化、条件化、乘法规则、链式法则是概率推理的代数工具。
  5. 独立和条件独立能把巨大联合分布分解成小块。
  6. 贝叶斯网络用有向无环图表达条件独立,用每个节点的 CPT 定义完整联合分布。
  7. 查询时用枚举或变量消元把隐藏变量求和消去,最后归一化。
  8. 朴素贝叶斯是最简单的贝叶斯网络之一,用强条件独立假设换取高效分类。

1. 为什么 AI 需要概率

1.1 逻辑不够用的地方

现实智能体很少能完全确定世界状态。例如出发去机场时,智能体要考虑路况、其他司机、天气、轮胎、交通报告和许多无法完整建模的因素。

如果只用逻辑规则,容易出现两个极端:

  • 规则太强,会推出错误结论,例如"提前 25 分钟出发一定能赶上飞机"。
  • 规则太弱,必须列出所有例外,最后得到难以行动的条件句,例如"如果桥上没事故、不下雨、轮胎没坏、路上不堵……那么可以赶上"。

概率推理把这种问题改写成:

P(OnTime∣Leave25,e)=0.04P(\text{OnTime} \mid \text{Leave25}, e) = 0.04

这句话不保证一定到达,也不说完全不知道,而是给出在当前证据 ee 下的信念程度。

课件开头用三个任务提醒你:手写数字识别、文本分类、图像分割本质上都不是"确定地套规则",而是在证据不完整、特征有噪声、类别边界不绝对清楚时做判断。概率模型就是给这些分类判断提供统一语言。

1.2 不确定性的来源

课件把不确定性来源分成几类:

  • 真实随机性:有些过程本身就是概率性的,例如掷骰子、抛硬币。
  • 惰性:严格列举所有例外太费劲,规则太大也难以使用。
  • 理论无知:领域没有完整一致的理论,例如医学诊断。
  • 实践无知:理论上相关因素存在,但当前个案没有收集到所有信息。
  • 传感器噪声:观测结果不一定等于真实状态。
  • 行动结果不确定:同一行动在不同隐藏状态下可能产生不同结果。

所以概率不是"世界必然随机"的同义词,它也可以表示智能体因为信息不足而产生的主观信念。

1.3 频率主义与贝叶斯观点

频率主义把概率看作长期重复试验中的极限频率:

P(A)=lim⁡N→∞nANP(A) = \lim_{N \to \infty} \frac{n_A}{N}

其中 nAn_A 是事件 AA 在 NN 次机会中发生的次数。这个解释适合抛硬币、抽样检测等可重复实验。

贝叶斯观点把概率看作在不完整知识下对事件可信度的度量。例如"第三次世界大战发生的概率"无法靠大量重复试验定义,但仍可以讨论给定证据下的主观可信度。

AI 中常用贝叶斯观点,因为智能体面对的往往是单次决策、单个病人、单封邮件或单张图片。

1.4 概率和效用分工

概率回答"我相信什么":P(ArriveOnTime∣a,e)P(\text{ArriveOnTime} \mid a, e)

效用回答"我偏好什么":U(arrive, wait, miss)U(\text{arrive, wait, miss})

决策论把二者合起来:

Decision theory=Probability theory+Utility theory\text{Decision theory} = \text{Probability theory} + \text{Utility theory}

如果提前 1440 分钟出发几乎一定赶上飞机,但要在机场过夜,是否值得取决于效用,而不只取决于概率。

3. 概率分布

3.1 先验概率和概率分布

先验概率是在没有新证据时对命题的信念:P(Cavity=true)=0.1P(\text{Cavity} = \text{true}) = 0.1。

一个随机变量的概率分布给出它所有可能取值的概率。例如:

P(Weather)=⟨0.72,0.10,0.08,0.10⟩P(\text{Weather}) = \langle 0.72, 0.10, 0.08, 0.10 \rangle

它是归一化的:∑wP(Weather=w)=1\sum_w P(\text{Weather} = w) = 1。

3.2 完整联合分布

完整联合分布给出一组随机变量每种完整赋值的概率。若变量为 X1,…,XnX_1, \dots, X_n,完整联合分布就是:

P(X1,…,Xn)P(X_1, \dots, X_n)

对 nn 个布尔变量,需要 2n2^n 个原子事件概率;因为总和必须为 1,独立参数数目是:2n−12^n - 1。

完整联合分布的优点是原则上能回答所有查询。缺点也非常致命:变量稍多就无法存储、无法人工填写、无法高效求和。

3.3 边缘分布和边缘化

边缘化就是把不关心的变量求和消掉。若有联合分布 P(A,B)P(A, B),则:

P(A)=∑bP(A,b)P(A) = \sum_b P(A, b)

若变量更多:

P(A)=∑b∑cP(A,b,c)P(A) = \sum_b \sum_c P(A, b, c)

更一般地,对命题 φ\varphi:

P(φ)=∑ω: ω⊨φP(ω)P(\varphi) = \sum_{\omega:\, \omega \models \varphi} P(\omega)

其中 ω\omega 是原子事件。

4. 条件概率、乘法规则和链式法则

4.1 条件概率

条件概率表示在证据 BB 已知为真后,对 AA 的信念:

P(A∣B)=P(A,B)P(B)P(A \mid B) = \frac{P(A, B)}{P(B)}

前提是:P(B)>0P(B) > 0。条件概率也满足概率公理。例如 0≤P(A∣e)≤10 \leq P(A \mid e) \leq 1。对变量 AA 的所有取值 a1,…,aka_1, \dots, a_k:∑i=1kP(A=ai∣e)=1\sum_{i=1}^{k} P(A = a_i \mid e) = 1。布尔变量有:P(¬a∣e)=1−P(a∣e)P(\lnot a \mid e) = 1 - P(a \mid e)。

4.2 乘法规则

条件概率定义可改写为乘法规则:

P(A∧B)=P(A∣B)P(B)P(A \land B) = P(A \mid B)P(B)

也可以写成:P(A∧B)=P(B∣A)P(A)P(A \land B) = P(B \mid A)P(A)。因此:P(A∣B)P(B)=P(B∣A)P(A)P(A \mid B)P(B) = P(B \mid A)P(A)。

4.3 链式法则

链式法则由乘法规则反复使用得到:

P(X1,…,Xn)=∏i=1nP(Xi∣X1,…,Xi−1)P(X_1, \dots, X_n) = \prod_{i=1}^{n} P(X_i \mid X_1, \dots, X_{i-1})

例如:

P(A,B,C)=P(A∣B,C) P(B∣C) P(C)P(A, B, C) = P(A \mid B, C)\,P(B \mid C)\,P(C)

也可以按其他顺序写:P(A,B,C)=P(C∣A,B) P(B∣A) P(A)P(A, B, C) = P(C \mid A, B)\,P(B \mid A)\,P(A)。

没有独立性假设时,不能随便把联合概率拆成 P(A)P(B)P(C)P(A)P(B)P(C)。但链式法则永远成立,只是条件项可能很复杂。

5. 用完整联合分布做推理

5.1 枚举推理思想

如果手里有完整联合分布,任何查询都可以通过枚举原子事件来做。查询 P(Y∣E=e)P(Y \mid E = e),设隐藏变量为 H=X−Y−EH = X - Y - E,则:

P(Y∣E=e)=α P(Y,E=e)P(Y \mid E = e) = \alpha\, P(Y, E = e)

其中:

P(Y,E=e)=∑hP(Y,E=e,H=h)P(Y, E = e) = \sum_h P(Y, E = e, H = h)

归一化常数 α\alpha 让查询变量所有取值的概率和为 1。

5.2 归一化

很多推理题不必先算分母,可以先算未归一化向量。例如:

P(Cavity∣t)=α P(Cavity,t)P(\text{Cavity} \mid t) = \alpha\, P(\text{Cavity}, t)

若求和得到 P(Cavity,t)=⟨0.12,0.08⟩P(\text{Cavity}, t) = \langle 0.12, 0.08 \rangle,则归一化:

α=10.12+0.08=5\alpha = \frac{1}{0.12 + 0.08} = 5

所以:P(Cavity∣t)=⟨0.6,0.4⟩P(\text{Cavity} \mid t) = \langle 0.6, 0.4 \rangle。

考试中常写成 Q(x)=P(x,e)Q(x) = P(x, e),再用:

P(x∣e)=Q(x)∑x′Q(x′)P(x \mid e) = \frac{Q(x)}{\sum_{x'} Q(x')}

5.3 完整联合分布推理的问题

若最大变量取值数为 dd,变量数为 nn,枚举完整联合分布最坏时间复杂度为 O(dn)O(d^n),存储完整联合分布也需要 O(dn)O(d^n)。

此外还要问:这些 O(dn)O(d^n) 个概率从哪里来?这直接引出独立性、条件独立性和贝叶斯网络。

7. 条件独立

7.1 条件独立的定义

AA 和 BB 在给定 CC 后条件独立,记为 A⊥B∣CA \perp B \mid C,等价写法:

P(A∣B,C)=P(A∣C)P(A \mid B, C) = P(A \mid C)

P(B∣A,C)=P(B∣C)P(B \mid A, C) = P(B \mid C)

P(A,B∣C)=P(A∣C)P(B∣C)P(A, B \mid C) = P(A \mid C)P(B \mid C)

含义:在已经知道 CC 后,BB 不再给 AA 提供额外信息。

7.2 条件独立不等于独立

报警器例子:

  • JohnCalls:John 打电话。
  • MaryCalls:Mary 打电话。
  • Alarm:警报响。

不观测警报时,John 打电话会提高 Mary 打电话的概率,因为它暗示警报可能响了:

P(MaryCalls∣JohnCalls)≠P(MaryCalls)P(\text{MaryCalls} \mid \text{JohnCalls}) \neq P(\text{MaryCalls})

但若已经知道警报状态,John 是否打电话不再影响 Mary 是否打电话:

P(MaryCalls∣Alarm, JohnCalls)=P(MaryCalls∣Alarm)P(\text{MaryCalls} \mid \text{Alarm, JohnCalls}) = P(\text{MaryCalls} \mid \text{Alarm})

所以二者不独立,但在给定 Alarm 后条件独立。

8. 贝叶斯公式

8.1 贝叶斯公式

由乘法规则 P(A∧B)=P(A∣B)P(B)=P(B∣A)P(A)P(A \land B) = P(A \mid B)P(B) = P(B \mid A)P(A) 得到贝叶斯公式:

P(A∣B)=P(B∣A)P(A)P(B)P(A \mid B) = \frac{P(B \mid A)P(A)}{P(B)}

若把假设写成 HH,证据写成 ee:

P(H∣e)=P(e∣H)P(H)P(e)P(H \mid e) = \frac{P(e \mid H)P(H)}{P(e)}

其中:

  • P(H)P(H) 是先验。
  • P(e∣H)P(e \mid H) 是似然。
  • P(H∣e)P(H \mid e) 是后验。
  • P(e)P(e) 是证据概率,也是归一化分母。

常用归一化写法:P(H∣e)=α P(e∣H)P(H)P(H \mid e) = \alpha\, P(e \mid H)P(H)。

8.2 为什么贝叶斯公式重要

很多领域中,因果概率容易给出,诊断概率才是我们想问的。

  • 因果方向:P(Effect∣Cause)P(\text{Effect} \mid \text{Cause})
  • 诊断方向:P(Cause∣Effect)P(\text{Cause} \mid \text{Effect})

贝叶斯公式把二者联系起来:

P(Cause∣Effect)=P(Effect∣Cause)P(Cause)P(Effect)P(\text{Cause} \mid \text{Effect}) = \frac{P(\text{Effect} \mid \text{Cause})P(\text{Cause})}{P(\text{Effect})}

这也是为什么很多 AI 系统(如语音识别和机器翻译)会把难求的后验转为更容易估计的似然和先验。

8.3 全概率公式展开分母

若 B1,…,BkB_1, \dots, B_k 构成互斥完备划分,则:

P(A)=∑iP(A∣Bi)P(Bi)P(A) = \sum_i P(A \mid B_i)P(B_i)

布尔情形:P(A)=P(A∣B)P(B)+P(A∣¬B)P(¬B)P(A) = P(A \mid B)P(B) + P(A \mid \lnot B)P(\lnot B)。

贝叶斯题里分母通常就是用全概率公式展开。

9. 多证据贝叶斯和朴素贝叶斯

9.1 多证据贝叶斯

若一个原因 CC 产生多个证据 E1,…,EnE_1, \dots, E_n,贝叶斯公式给出:

P(C∣E1,…,En)=α P(E1,…,En∣C)P(C)P(C \mid E_1, \dots, E_n) = \alpha\, P(E_1, \dots, E_n \mid C)P(C)

如果给定原因 CC 后,各证据条件独立 Ei⊥Ej∣CE_i \perp E_j \mid C,则:

P(E1,…,En∣C)=∏iP(Ei∣C)P(E_1, \dots, E_n \mid C) = \prod_i P(E_i \mid C)

于是:

P(C∣E1,…,En)=α P(C)∏iP(Ei∣C)P(C \mid E_1, \dots, E_n) = \alpha\, P(C) \prod_i P(E_i \mid C)

这就是朴素贝叶斯的核心。

9.2 朴素贝叶斯假设

朴素贝叶斯假设是:给定类别 YY 后,所有属性 X1,…,XnX_1, \dots, X_n 条件独立。

P(X1,…,Xn∣Y)=∏iP(Xi∣Y)P(X_1, \dots, X_n \mid Y) = \prod_i P(X_i \mid Y)

分类时:

y^=arg⁡max⁡yP(y∣x1,…,xn)\hat{y} = \arg\max_y P(y \mid x_1, \dots, x_n)

由贝叶斯公式:

y^=arg⁡max⁡yP(y)∏iP(xi∣y)\hat{y} = \arg\max_y P(y) \prod_i P(x_i \mid y)

注意:朴素贝叶斯不是说特征无条件独立,而是说它们在给定类别后条件独立。

9.3 文本分类

文本分类中:

  • CC:文档类别。
  • WiW_i:第 ii 个词是否出现。

模型参数:P(C=c)P(C = c)、P(Wi=true∣C=c)P(W_i = \text{true} \mid C = c)。

训练时:

P(C=c)=#{类别为 c 的文档}#{全部文档}P(C = c) = \frac{\#\{\text{类别为 } c \text{ 的文档}\}}{\#\{\text{全部文档}\}}

P(Wi=true∣C=c)=#{类别 c 中包含词 i 的文档}#{类别为 c 的文档}P(W_i = \text{true} \mid C = c) = \frac{\#\{\text{类别 } c \text{ 中包含词 } i \text{ 的文档}\}}{\#\{\text{类别为 } c \text{ 的文档}\}}

分类新文档:

score(c)=P(C=c)∏iP(Wi=wi∣C=c)\text{score}(c) = P(C = c) \prod_i P(W_i = w_i \mid C = c)

为避免连乘下溢,实际常取对数:

log⁡score(c)=log⁡P(C=c)+∑ilog⁡P(Wi=wi∣C=c)\log \text{score}(c) = \log P(C = c) + \sum_i \log P(W_i = w_i \mid C = c)

需要平滑,否则某个词从未出现会让整个乘积变成 0。最常见是拉普拉斯平滑:

P(Wi=true∣C=c)=Nic+1Nc+2P(W_i = \text{true} \mid C = c) = \frac{N_{ic} + 1}{N_c + 2}

其中 NicN_{ic} 是类别 cc 中包含词 ii 的文档数,NcN_c 是类别 cc 的文档数,布尔词特征有两个取值。

9.4 数字识别例子

手写数字识别可以把每个像素位置作为一个特征:Fij∈{on, off}F_{ij} \in \{\text{on, off}\},类别是数字 D∈{0,1,…,9}D \in \{0, 1, \dots, 9\}。

朴素贝叶斯模型:

P(D,F11,F12,… )=P(D)∏i,jP(Fij∣D)P(D, F_{11}, F_{12}, \dots) = P(D) \prod_{i,j} P(F_{ij} \mid D)

要学习的是类别先验 P(D)P(D) 和每个数字下每个像素亮灭的条件概率表。它忽略了相邻像素之间的相关性,但换来了非常简单的学习和推理。

10. 概率分布从哪里来

10.1 三种来源

课件给了三种来源:

  1. 专家给出:例如医生、工程师或领域专家直接估计条件概率。
  2. 简单概率事实加代数推导:用乘法规则、链式法则、独立假设组合出联合分布。
  3. 从数据中学习:机器学习的很大一部分就是学习概率模型的参数或结构。

专家估计并不简单,例如问"冷天时下雨概率是多少"就可能很难稳定回答。

10.2 最大似然估计

估计一个离散随机变量 XX 的分布时,最大似然估计使用经验频率:

P^(X=x)=NxN\hat{P}(X = x) = \frac{N_x}{N}

其中 NxN_x 是观测到 X=xX = x 的次数,NN 是总观测次数。这个估计最大化观测数据出现的似然:L(θ)=P(D∣θ)L(\theta) = P(D \mid \theta)。

10.3 最大似然的问题和先验

如果只抛一次硬币且结果为正面,最大似然会给 P^(Heads)=1\hat{P}(\text{Heads}) = 1,这显然过于激进。课件强调一个基本思想:

  • 证据很少时,估计应更多受先验影响。
  • 证据很多时,估计应更多听数据。

这也是平滑和贝叶斯参数估计的动机。朴素贝叶斯中文本分类必须加平滑,就是为了避免小样本下把未见事件估为 0。

11. 贝叶斯网络

11.1 图模型是什么

概率图模型把概率分布和图论结合起来:

  • 节点表示随机变量或变量组。
  • 边表示变量之间的概率关系。

图结构帮助人理解模型,也帮助算法设计高效推理。图模型的价值:

  1. 可视化复杂概率模型结构。
  2. 从图中读出条件独立性质。
  3. 把复杂推理和学习变成图上的操作。

有向图模型包括贝叶斯网络;无向图模型包括马尔可夫随机场。贝叶斯网络更常用于表示因果关系,马尔可夫随机场更适合表示软约束。

11.2 贝叶斯网络的语法

贝叶斯网络是一个有向无环图,即 DAG。它包含:

  • 一组节点,每个节点对应一个随机变量。
  • 有向边,A→BA \to B 表示 AA 直接影响 BB,AA 是 BB 的父亲。
  • 如果两个节点之间没有直接的边相连,这意味着它们在给定某些其他变量的条件下是条件独立的。

每个节点有一个条件概率分布:P(Xi∣Parents(Xi))P(X_i \mid \text{Parents}(X_i))。注意是 P(Xi∣Parents(Xi))P(X_i \mid \text{Parents}(X_i)) 即所有父亲的组合条件概率。离散情形中,这个条件概率分布通常写成 CPT(条件概率表),若没有父亲,就是先验概率。

11.3 贝叶斯网络的全局语义

贝叶斯网络的拓扑结构和所有 CPT 一起定义完整联合分布:

P(X1,…,Xn)=∏iP(Xi∣Parents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))

这是贝叶斯网络最常用公式。题目给图和 CPT,要求写联合概率时,先按每个节点的父节点列出这一乘积。

例:若图为 A→C←B,  C→DA \to C \leftarrow B,\; C \to D,则:

P(A,B,C,D)=P(A) P(B) P(C∣A,B) P(D∣C)P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C)

若求某个具体原子事件,如 P(a,¬b,c,d)P(a, \lnot b, c, d),就把对应真假值代入每个 CPT;遇到假值要用补概率:P(¬X∣u)=1−P(X∣u)P(\lnot X \mid u) = 1 - P(X \mid u)。

11.4 参数量优势

完整联合分布对 nn 个布尔变量需要 2n−12^n - 1 个独立参数。

若每个布尔节点最多有 kk 个布尔父节点,每个 CPT 有 2k2^k 行,每行只需一个参数:O(n⋅2k)O(n \cdot 2^k)。如果 kk 很小,贝叶斯网络随变量数近似线性增长。

课件的报警器网络有五个布尔变量:Burglary、Earthquake、Alarm、JohnCalls、MaryCalls。完整联合分布需要 25−1=312^5 - 1 = 31 个独立参数。按因果网络:

  • Burglary → Alarm
  • Earthquake → Alarm
  • Alarm → JohnCalls
  • Alarm → MaryCalls

参数数目为:1+1+4+2+2=101 + 1 + 4 + 2 + 2 = 10。这就是结构化表示的威力。

11.5 贝叶斯网络的局部语义

局部语义:给定父节点后,一个节点与它的所有非后代节点条件独立。若节点为 XiX_i,父节点为 Parents(Xi)\text{Parents}(X_i),非后代集合为 NonDescendants(Xi)\text{NonDescendants}(X_i),则:

Xi⊥NonDescendants(Xi)∣Parents(Xi)X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)

课件结论:local semantics ⟺ global semantics。也就是说,局部条件独立断言和全联合分布的乘积分解是等价的。

12. 贝叶斯网络节点独立性判断(d-separation)

12.1 链式结构

结构:X→Y→ZX \to Y \to Z

不观测 YY 时,XX 可能影响 ZZ,二者通常相关。给定 YY 后,路径被阻断:X⊥Z∣YX \perp Z \mid Y。

直觉:如果已经知道中间状态 YY,更早的原因 XX 对更晚结果 ZZ 不再提供额外信息。

12.2 共同原因结构

结构:X←Y→ZX \leftarrow Y \to Z

YY 是 XX 和 ZZ 的共同原因。不观测 YY 时,XX 和 ZZ 通常相关;给定 YY 后,路径被阻断:X⊥Z∣YX \perp Z \mid Y。

直觉:如果已经知道共同原因,两个结果之间的相关性被解释掉。

12.3 共同结果结构

结构:X→Y←ZX \to Y \leftarrow Z

YY 是 collider,也叫共同结果或 V-structure。

  • 不观测 YY 及其后代时,路径阻断:X⊥ZX \perp Z。
  • 但若观测 YY 或 YY 的后代,路径被打开:X⊥̸Z∣YX \not\perp Z \mid Y。

这叫 explaining away。例子:下雨和球赛都会导致交通堵塞;若看到堵车,知道有球赛会降低"下雨导致堵车"的后验概率。

12.4 d-separation 判断步骤

判断 AA 与 BB 在给定证据集合 EE 后是否条件独立:

  1. 把有向图当成无向图,列出 AA 到 BB 的所有路径。
  2. 对每条路径检查是否被阻断。
  3. 链式节点和共同原因节点若被观测,则阻断路径。
  4. collider 节点若自身及其后代都未被观测,则阻断路径。
  5. 只有所有路径都被阻断,才有条件独立。

考试记忆:

  • 链和 fork:观测中间点会堵住。
  • collider:默认堵住,观测它或它的后代会打开。

12.5 马尔可夫毯

一个节点的马尔可夫毯包括:父节点;子节点;子节点的其他父节点。

给定马尔可夫毯后,该节点与网络中其他所有节点条件独立:

X⊥rest∣MB(X)X \perp \text{rest} \mid MB(X)

这是贝叶斯网络中局部推理和采样算法的重要概念;若考试只考概念,记清楚"父、子、子之父"。

13. 如何构建贝叶斯网络

13.1 一般构建算法

课件给出构建网络的方法:

  1. 选择变量顺序:X1,…,XnX_1, \dots, X_n。
  2. 对 i=1i = 1 到 nn,把 XiX_i 加入网络。
  3. 从更早变量 X1,…,Xi−1X_1, \dots, X_{i-1} 中选择父节点,使:

P(Xi∣Parents(Xi))=P(Xi∣X1,…,Xi−1)P(X_i \mid \text{Parents}(X_i)) = P(X_i \mid X_1, \dots, X_{i-1})

  1. 尽量选择满足这个条件的最小父集。

这样做保证:

P(X1,…,Xn)=∏iP(Xi∣X1,…,Xi−1)=∏iP(Xi∣Parents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid X_1, \dots, X_{i-1}) = \prod_i P(X_i \mid \text{Parents}(X_i))

第一步来自链式法则,第二步来自父节点选择。

13.2 为什么因果顺序通常更好

若网络反映真实因果模式,通常:节点父节点更少;人更容易判断条件概率;专家更容易给出 CPT;网络更紧凑,推理可能更高效。

报警器例子用因果方向只需 10 个参数。如果采用非因果顺序(如先加 MaryCalls、再加 JohnCalls、再加 Alarm 等),判断条件独立会更难,参数可能增加到 13 个。

13.3 箭头不一定等于因果

贝叶斯网络的箭头真正编码的是条件独立结构,不一定是世界中的真实因果关系。如果模型里缺少关键变量,或者领域本身没有清晰因果结构,箭头可能只是在表达相关性。正确态度是:

  • 因果方向常常更自然、更紧凑。
  • 但 BN 的数学语义是联合分布分解和条件独立,不是因果干预语义。

13.4 望远镜作业题

变量:

  • NN:真实恒星数。
  • F1,F2F_1, F_2:两个望远镜是否失焦。
  • M1,M2M_1, M_2:两次测量结果。

合理因果结构:N→M1,  F1→M1,  N→M2,  F2→M2N \to M_1,\; F_1 \to M_1,\; N \to M_2,\; F_2 \to M_2。

真实恒星数影响观测结果,望远镜状态也影响观测结果。不要把观测值画成真实恒星数的原因。给定 N,F1,F2N, F_1, F_2 后:M1⊥M2∣N,F1,F2M_1 \perp M_2 \mid N, F_1, F_2。若只给定 NN,还要看 F1F_1 和 F2F_2 是否独立以及图中是否有其他路径。

14. 贝叶斯网络中的概率计算

14.1 常见概率计算

  • 简单查询:P(Xi∣E=e)P(X_i \mid E = e),例如 P(NoGas∣Gauge=empty, Lights=on, Starts=false)P(\text{NoGas} \mid \text{Gauge} = \text{empty, Lights} = \text{on, Starts} = \text{false})。
  • 联合查询:P(Xi,Xj∣E=e)P(X_i, X_j \mid E = e),可以分解为 P(Xi,Xj∣E=e)=P(Xi∣E=e) P(Xj∣Xi,E=e)P(X_i, X_j \mid E = e) = P(X_i \mid E = e)\,P(X_j \mid X_i, E = e)。
  • 决策网络还会加入效用信息,但仍需要概率推理来计算 P(Outcome∣Action, Evidence)P(\text{Outcome} \mid \text{Action, Evidence})。

14.2 用例

为了把概率计算讲清楚,下面都用同一个贝叶斯网络:A→C,  B→C,  C→DA \to C,\; B \to C,\; C \to D,其中 A,BA, B 是根节点,CC 的父节点是 A,BA, B,DD 的父节点是 CC。这张图的联合分布分解为:

P(A,B,C,D)=P(A) P(B) P(C∣A,B) P(D∣C)P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C)

这一个式子是所有概率计算的起点。考试时不管问什么,第一步都应先写出这个联合分解,再决定哪些变量代入、哪些变量求和、是否需要归一化。

四类变量身份:

  • 查询变量:题目最终要你求分布的变量,例如 AA。
  • 证据变量:条件竖线右边已经观测到的变量,例如 dd。
  • 隐藏变量:既不是查询,也不是证据,但网络里存在,必须求和消掉,例如求 P(A∣d)P(A \mid d) 时的 B,CB, C。
  • 被固定变量:在完整联合事件中已经给定取值的变量,例如 P(a,¬b,c,d)P(a, \lnot b, c, d) 中四个变量都被固定。

判断一道 BN 概率题怎么做,其实就是先给每个变量分身份。

14.3 第一类:完整联合概率怎么计算

完整联合概率指所有变量都给了具体取值,例如 P(a,¬b,c,d)P(a, \lnot b, c, d)。这种题不用求和,也不用归一化,只要按图分解并代入 CPT:

P(a,¬b,c,d)=P(a) P(¬b) P(c∣a,¬b) P(d∣c)P(a, \lnot b, c, d) = P(a)\,P(\lnot b)\,P(c \mid a, \lnot b)\,P(d \mid c)

如果 CPT 只给 P(b)P(b),没有直接给 P(¬b)P(\lnot b),就用补概率:P(¬b)=1−P(b)P(\lnot b) = 1 - P(b)。如果 CPT 只给 P(c∣a,¬b)P(c \mid a, \lnot b),而题目要 P(¬c∣a,¬b)P(\lnot c \mid a, \lnot b),也用补概率:P(¬c∣a,¬b)=1−P(c∣a,¬b)P(\lnot c \mid a, \lnot b) = 1 - P(c \mid a, \lnot b)。

考试口诀:完整联合概率就是"每个节点查一次表,根节点查先验,非根节点查父节点条件下的 CPT,然后全部相乘"。

14.4 第二类:边缘概率怎么计算

边缘概率是只问某些变量,不关心其他变量。例如 P(d)P(d)。网络里还有 A,B,CA, B, C,它们没有出现在查询中,也不是证据,所以都是隐藏变量。完整写法是:

P(d)=∑a∑b∑cP(a,b,c,d)P(d) = \sum_a \sum_b \sum_c P(a, b, c, d)

再代入 BN 分解:

P(d)=∑a∑b∑cP(a) P(b) P(c∣a,b) P(d∣c)P(d) = \sum_a \sum_b \sum_c P(a)\,P(b)\,P(c \mid a, b)\,P(d \mid c)

如果 A,B,CA, B, C 都是布尔变量,展开共有八种情况。这就是"边缘化":把没有问、没有观测的变量全部枚举并加起来。

14.5 第三类:部分联合概率怎么计算

部分联合概率给了一部分变量的取值,但没有竖线,例如 P(a,d)P(a, d)。这里 A,DA, D 被固定,B,CB, C 没出现,所以 B,CB, C 是隐藏变量:

P(a,d)=∑b∑cP(a,b,c,d)P(a, d) = \sum_b \sum_c P(a, b, c, d)

代入 BN 分解:

P(a,d)=∑b∑cP(a) P(b) P(c∣a,b) P(d∣c)P(a, d) = \sum_b \sum_c P(a)\,P(b)\,P(c \mid a, b)\,P(d \mid c)

展开 b,cb, c 所有情况。注意:部分联合概率没有条件竖线,因此最后不需要归一化;它本身就是一个普通概率。

14.6 第四类:条件概率怎么计算

条件概率最原始的定义是:

P(X∣e)=P(X,e)P(e)P(X \mid e) = \frac{P(X, e)}{P(e)}

在 BN 题里通常不用直接算大分母,而是用归一化:P(X∣e)=α P(X,e)P(X \mid e) = \alpha\, P(X, e),其中 α\alpha 让 XX 的所有取值加起来等于 1。

例如求 P(c∣a,b,d)P(c \mid a, b, d),查询变量是 CC,证据是 a,b,da, b, d。没有隐藏变量,因为四个变量都已经出现在查询或证据中。先算两个未归一化值:

q(c)=P(c,a,b,d)=P(a) P(b) P(c∣a,b) P(d∣c)q(c) = P(c, a, b, d) = P(a)\,P(b)\,P(c \mid a, b)\,P(d \mid c)

q(¬c)=P(¬c,a,b,d)=P(a) P(b) P(¬c∣a,b) P(d∣¬c)q(\lnot c) = P(\lnot c, a, b, d) = P(a)\,P(b)\,P(\lnot c \mid a, b)\,P(d \mid \lnot c)

归一化:

P(c∣a,b,d)=q(c)q(c)+q(¬c)=P(c∣a,b) P(d∣c)P(c∣a,b) P(d∣c)+P(¬c∣a,b) P(d∣¬c)P(c \mid a, b, d) = \frac{q(c)}{q(c) + q(\lnot c)} = \frac{P(c \mid a, b)\,P(d \mid c)}{P(c \mid a, b)\,P(d \mid c) + P(\lnot c \mid a, b)\,P(d \mid \lnot c)}

上下都有 P(a)P(b)P(a)P(b),可以约掉。这一步很重要:证据中有些项会在归一化时抵消,但不要一开始凭感觉删,先写联合分解,再看哪些因子在查询变量不同取值下相同。

14.7 第五类:有隐藏变量的后验怎么计算

考试最常见的是这种:问一个变量的后验,但网络里有隐藏变量。例如 P(A∣c,d)P(A \mid c, d),查询变量是 AA,证据是 c,dc, d,隐藏变量是 BB。

第一步,条件概率转联合概率:

P(A∣c,d)=α P(A,c,d)P(A \mid c, d) = \alpha\, P(A, c, d)

第二步,展开隐藏变量求:

P(A,c,d)=∑bP(A,b,c,d)P(A, c, d) = \sum_b P(A, b, c, d)

第三步,代入 BN 分解:

P(A,c,d)=∑bP(A) P(b) P(c∣A,b) P(d∣c)P(A, c, d) = \sum_b P(A)\,P(b)\,P(c \mid A, b)\,P(d \mid c)

第四步,把与隐藏变量无关的概率提出来,其中由证据变量确定的常数概率可以在归一化时消掉:

P(A,d)=P(A) P(d∣c)∑bP(b)∑cP(c∣A,b)P(A, d) = P(A)\,P(d \mid c) \sum_b P(b) \sum_c P(c \mid A, b)

第五步,分别计算 A=aA = a 和 A=¬aA = \lnot a 的未归一化值(P(d∣c)P(d \mid c) 省略):

q(a)=P(a)∑bP(b) P(c∣a,b)q(a) = P(a) \sum_b P(b)\,P(c \mid a, b)

q(¬a)=P(¬a)∑bP(b) P(c∣¬a,b)q(\lnot a) = P(\lnot a) \sum_b P(b)\,P(c \mid \lnot a, b)

第六步,归一化:

P(a∣d)=q(a)q(a)+q(¬a),P(¬a∣d)=q(¬a)q(a)+q(¬a)P(a \mid d) = \frac{q(a)}{q(a) + q(\lnot a)}, \quad P(\lnot a \mid d) = \frac{q(\lnot a)}{q(a) + q(\lnot a)}

如果题目只问 P(a∣d)P(a \mid d),也必须计算 q(¬a)q(\lnot a),因为它在分母里。除非题目给了 P(d)P(d),否则不能跳过归一化分母。

14.8 第六类:证据概率怎么计算

有时题目会问证据本身概率,例如 P(d)P(d),就是把所有非证据变量求和:

P(d)=∑a∑b∑cP(a,b,c,d)P(d) = \sum_a \sum_b \sum_c P(a, b, c, d)

或者利用上一节的未归一化值:P(d)=q(a)+q(¬a)P(d) = q(a) + q(\lnot a),其中 q(a)=P(a,d)q(a) = P(a, d),q(¬a)=P(¬a,d)q(\lnot a) = P(\lnot a, d)。所以后验计算中的归一化分母其实就是证据概率:

P(a∣d)=P(a,d)P(d),P(d)=P(a,d)+P(¬a,d)P(a \mid d) = \frac{P(a, d)}{P(d)}, \quad P(d) = P(a, d) + P(\lnot a, d)

14.9 第七类:多个查询变量怎么计算

如果问 P(A,C∣d)P(A, C \mid d),查询变量是二元组 (A,C)(A, C),证据是 dd,隐藏变量是 BB。

先写未归一化:P(A,C∣d)=α P(A,C,d)P(A, C \mid d) = \alpha\, P(A, C, d)。对隐藏变量 BB 求和:

P(A,C,d)=∑bP(A) P(b) P(C∣A,b) P(d∣C)P(A, C, d) = \sum_b P(A)\,P(b)\,P(C \mid A, b)\,P(d \mid C)

然后要对查询变量 (A,C)(A, C) 的所有组合归一化。若 A,CA, C 都是布尔变量,则需要四个未归一化值:q(a,c),  q(a,¬c),  q(¬a,c),  q(¬a,¬c)q(a, c),\; q(a, \lnot c),\; q(\lnot a, c),\; q(\lnot a, \lnot c)。

归一化分母是四者之和:

P(a,c∣d)=q(a,c)q(a,c)+q(a,¬c)+q(¬a,c)+q(¬a,¬c)P(a, c \mid d) = \frac{q(a, c)}{q(a, c) + q(a, \lnot c) + q(\lnot a, c) + q(\lnot a, \lnot c)}

多变量查询不是只算一个数,而是算一个联合后验分布。

14.10 什么时候可以消掉某个证据

不是所有证据都会影响查询。是否能消掉,要看条件独立。例如在示例网络中 A→C→DA \to C \to D 并且 B→CB \to C。如果已经给定 CC,那么 DD 是 CC 的子节点,DD 对 AA 的信息会被 CC 阻断:A⊥D∣CA \perp D \mid C,所以 P(A∣c,d)=P(A∣c)P(A \mid c, d) = P(A \mid c)。

从代数上也能看出来:

P(A,c,d)=∑bP(A) P(b) P(c∣A,b) P(d∣c)P(A, c, d) = \sum_b P(A)\,P(b)\,P(c \mid A, b)\,P(d \mid c)

因为 P(d∣c)P(d \mid c) 与 AA 和 bb 都无关,对不同 AA 取值只是共同常数,归一化时会抵消:

P(A∣c,d)=α P(d∣c) P(A)∑bP(b) P(c∣A,b)P(A \mid c, d) = \alpha\, P(d \mid c)\, P(A) \sum_b P(b)\,P(c \mid A, b)

抵消后:P(A∣c,d)=α′P(A)∑bP(b) P(c∣A,b)=P(A∣c)P(A \mid c, d) = \alpha' P(A) \sum_b P(b)\,P(c \mid A, b) = P(A \mid c)。

考试中可以用 d-separation 快速判断,也可以用这种"写出联合,看公共因子是否抵消"的方法验证。

14.11 变量消元

枚举推理会重复计算。变量消元把 CPT 看成因子,逐个消去隐藏变量,保存中间结果。步骤:

  1. 把每个 CPT 写成因子。
  2. 代入证据,删除或固定与证据不一致的行。
  3. 选择一个隐藏变量 ZZ。
  4. 收集所有包含 ZZ 的因子。
  5. 将这些因子相乘。
  6. 对 ZZ 求和,得到不含 ZZ 的新因子。
  7. 重复直到隐藏变量消完。
  8. 剩余因子相乘并归一化。

核心操作:

g(U)=∑z∏jfj(z,Uj)g(U) = \sum_z \prod_j f_j(z, U_j)

其中 fjf_j 是包含 ZZ 的因子,求和后新因子 gg 不再含 ZZ。

14.12 变量消元完整推导:计算 P(A|d)

仍用示例网络:P(A,B,C,D)=P(A) P(B) P(C∣A,B) P(D∣C)P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C),要求 P(A∣d)P(A \mid d)。

第一步:写初始因子。

fA(A)=P(A)f_A(A) = P(A)

fB(B)=P(B)f_B(B) = P(B)

fC(C,A,B)=P(C∣A,B)f_C(C, A, B) = P(C \mid A, B)

fD(D,C)=P(D∣C)f_D(D, C) = P(D \mid C)

第二步:代入证据 dd。 DD 已经固定为 dd,所以 fD(D,C)f_D(D, C) 缩成只关于 CC 的因子:fd(C)=P(d∣C)f_d(C) = P(d \mid C)。

现在要计算:

P(A∣d)=α fA(A)∑b∑cfB(b) fC(c,A,b) fd(c)P(A \mid d) = \alpha\, f_A(A) \sum_b \sum_c f_B(b)\, f_C(c, A, b)\, f_d(c)

第三步:选择消元顺序。 隐藏变量是 B,CB, C。选择先消去 CC,再消去 BB。

第四步:消去 CC。 包含 CC 的因子是 fC(C,A,B),  fd(C)f_C(C, A, B),\; f_d(C)。先相乘,再对 CC 求和,得到新因子 h(A,B)h(A, B):

h(A,B)=∑cfC(c,A,B) fd(c)h(A, B) = \sum_c f_C(c, A, B)\, f_d(c)

代回 CPT 记号:

h(A,B)=P(c∣A,B) P(d∣c)+P(¬c∣A,B) P(d∣¬c)h(A, B) = P(c \mid A, B)\,P(d \mid c) + P(\lnot c \mid A, B)\,P(d \mid \lnot c)

第五步:消去 BB。 现在包含 BB 的因子是 fB(B),  h(A,B)f_B(B),\; h(A, B)。相乘并对 BB 求和,得到新因子 r(A)r(A):

r(A)=∑bfB(b) h(A,b)=P(b) h(A,b)+P(¬b) h(A,¬b)r(A) = \sum_b f_B(b)\, h(A, b) = P(b)\,h(A, b) + P(\lnot b)\,h(A, \lnot b)

第六步:乘上剩余因子。 剩余关于 AA 的因子是 fA(A)f_A(A),所以未归一化结果为:

q(A)=fA(A) r(A)=P(A) r(A)q(A) = f_A(A)\, r(A) = P(A)\, r(A)

分别取 A=aA = a 和 A=¬aA = \lnot a:q(a)=P(a) r(a)q(a) = P(a)\,r(a),q(¬a)=P(¬a) r(¬a)q(\lnot a) = P(\lnot a)\,r(\lnot a)。

第七步:归一化。

P(a∣d)=q(a)q(a)+q(¬a),P(¬a∣d)=q(¬a)q(a)+q(¬a)P(a \mid d) = \frac{q(a)}{q(a) + q(\lnot a)}, \quad P(\lnot a \mid d) = \frac{q(\lnot a)}{q(a) + q(\lnot a)}

这和枚举推理得到的结果完全相同,只是变量消元把公共中间量 h(A,B)h(A, B) 和 r(A)r(A) 存了下来,避免重复展开。

14.13 变量消元为什么更好

枚举推理像从联合分布中反复算同样的子表达式。变量消元把这些子表达式缓存成因子,避免重复。但变量消元并非总是多项式。复杂度主要由消元过程中产生的最大因子决定,而最大因子大小又取决于图结构和消元顺序。

14.14 精确推理复杂度

  • 单连通网络或多树:任意两个节点之间最多只有一条无向路径。若最大取值数为 dd,相关宽度为 kk,变量数为 nn,变量消元在多树上的时间和空间复杂度可写为 O(dkn)O(d^k n)。当 kk 很小时,它随网络规模近似线性。
  • 多连通网络:一般精确推理是 NP-hard。课件还指出它等价于计数 3SAT 模型,因此也涉及 #P-complete。

结论:贝叶斯网络让很多模型可推理,但一般图上的精确推理仍然很难。

15. 按图写联合分布和按图判独立

15.1 联合分布题模板

拿到 BN 图后,先为每个节点写它的父节点,然后套公式:

P(X1,…,Xn)=∏iP(Xi∣Parents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))

例:I→P,  H→P,  H→L,  P→E,  L→EI \to P,\; H \to P,\; H \to L,\; P \to E,\; L \to E,联合分布:

P(I,H,L,P,E)=P(I) P(H) P(L∣H) P(P∣I,H) P(E∣P,L)P(I, H, L, P, E) = P(I)\,P(H)\,P(L \mid H)\,P(P \mid I, H)\,P(E \mid P, L)

如果题目给具体真假值,如 P(i,h,¬l,p,e)P(i, h, \lnot l, p, e),就写 P(i) P(h) P(¬l∣h) P(p∣i,h) P(e∣p,¬l)P(i)\,P(h)\,P(\lnot l \mid h)\,P(p \mid i, h)\,P(e \mid p, \lnot l),其中 P(¬l∣h)=1−P(l∣h)P(\lnot l \mid h) = 1 - P(l \mid h)。

15.2 条件独立题模板

第一种方法:用局部马尔可夫性。每个节点在给定父节点后,与所有非后代节点条件独立:

Xi⊥NonDescendants(Xi)∣Parents(Xi)X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)

第二种方法:用 d-separation。

  1. 列出两个变量之间的所有无向路径。
  2. 逐条判断路径是否被证据阻断。
  3. 所有路径都阻断才独立。

特别提醒:不要只看两点之间有没有边。条件独立是关于所有路径和给定证据的性质。

15.3 概率计算题型总模板

考试里看到一个概率式,先不要急着代数值,先判断它是哪一类。

  • 类型 1:完整联合概率。 形如 P(x1,x2,…,xn)P(x_1, x_2, \dots, x_n),所有变量都有具体取值。做法是按 BN 分解直接相乘:P(x1,…,xn)=∏iP(xi∣parents(Xi))P(x_1, \dots, x_n) = \prod_i P(x_i \mid \text{parents}(X_i))。不求和,不归一化。
  • 类型 2:部分联合概率。 形如 P(a,d)P(a, d),有些变量没出现。没出现的变量是隐藏变量,要全部求和:P(a,d)=∑hiddenP(a,d,hidden)P(a, d) = \sum_{\text{hidden}} P(a, d, \text{hidden}),再把联合项按 BN 分解。没有条件竖线,所以最后不归一化。
  • 类型 3:边缘概率。 形如 P(d)P(d),它是部分联合概率的特例:只保留 dd,其余全部求和:P(d)=∑all otherP(d,others)P(d) = \sum_{\text{all other}} P(d, \text{others})。它经常作为贝叶斯公式的分母,也就是证据概率。
  • 类型 4:普通条件概率。 形如 P(X∣e)P(X \mid e),先写 P(X∣e)=α P(X,e)P(X \mid e) = \alpha\, P(X, e)。若有隐藏变量 YY:P(X,e)=∑YP(X,e,Y)P(X, e) = \sum_Y P(X, e, Y),最后对 XX 的所有取值归一化:

P(x∣e)=Q(x)∑x′Q(x′),Q(x)=∑YP(x,e,Y)P(x \mid e) = \frac{Q(x)}{\sum_{x'} Q(x')}, \quad Q(x) = \sum_Y P(x, e, Y)

  • 类型 5:多变量条件概率。 形如 P(X1,X2∣e)P(X_1, X_2 \mid e),把 (X1,X2)(X_1, X_2) 当成一个联合查询变量:P(X1,X2∣e)=α P(X1,X2,e)P(X_1, X_2 \mid e) = \alpha\, P(X_1, X_2, e)。若有隐藏变量 YY:Q(x1,x2)=∑YP(x1,x2,e,Y)Q(x_1, x_2) = \sum_Y P(x_1, x_2, e, Y)。归一化时要对查询变量所有组合求和:

P(x1,x2∣e)=Q(x1,x2)∑x1′∑x2′Q(x1′,x2′)P(x_1, x_2 \mid e) = \frac{Q(x_1, x_2)}{\sum_{x'_1} \sum_{x'_2} Q(x'_1, x'_2)}

  • 类型 6:已知完整联合分布时的查询。 如果题目直接给完整联合表,而不是 BN 图,则不用按父节点分解,直接从表中把满足条件的原子事件加起来:P(φ)=∑ω: ω⊨φP(ω)P(\varphi) = \sum_{\omega:\, \omega \models \varphi} P(\omega)。条件概率仍然用 P(φ∣e)=P(φ∧e)P(e)P(\varphi \mid e) = \frac{P(\varphi \land e)}{P(e)},其中分子和分母都从完整联合表中加和得到。

最后检查:

  1. 有没出现但网络里存在的变量?有就求和。
  2. 有没有条件竖线?有就最后归一化。
  3. 是不是完整联合事件?是就直接查 CPT 相乘。
  4. 变量取假值了吗?取假值通常要用 1−p1 - p。
  5. 查询变量有几个取值?每个取值都要算一个未归一化 QQ。

16. 朴素贝叶斯作为贝叶斯网络

16.1 图结构

朴素贝叶斯是一个单父节点模型:C→X1,  C→X2,  …,  C→XnC \to X_1,\; C \to X_2,\; \dots,\; C \to X_n。

联合分布:P(C,X1,…,Xn)=P(C)∏iP(Xi∣C)P(C, X_1, \dots, X_n) = P(C) \prod_i P(X_i \mid C)。总参数量随特征数线性增长。

16.2 为什么朴素贝叶斯常常有效

朴素贝叶斯假设很强,因为真实特征往往相关。例如文本中的词并不独立,图像相邻像素也不独立。但它仍常有不错表现,原因包括:

  • 分类只需要比较类别后验大小,不一定需要精确估计完整联合分布。
  • 条件独立假设极大减少参数,降低过拟合风险。
  • 参数估计简单,小数据下也能工作。
  • 对文本分类、垃圾邮件过滤等高维稀疏任务尤其常用。

课件中的 Twenty Newsgroups 例子给每个新闻组 1000 篇训练文档,用朴素贝叶斯学习类别先验和词条件概率,再分类新文档。课件给出的结果是约 89% 的分类准确率,用来说明即使独立性假设明显过强,朴素贝叶斯仍然能在标准文本分类数据上有竞争力。

17. 考试速查

17.1 概率基础

  • 条件概率:P(A∣B)=P(A∧B)P(B)P(A \mid B) = \dfrac{P(A \land B)}{P(B)}
  • 乘法规则:P(A∧B)=P(A∣B)P(B)P(A \land B) = P(A \mid B)P(B)
  • 链式法则:P(X1,…,Xn)=∏iP(Xi∣X1,…,Xi−1)P(X_1, \dots, X_n) = \prod_i P(X_i \mid X_1, \dots, X_{i-1})
  • 全概率:P(A)=∑iP(A∣Bi)P(Bi)P(A) = \sum_i P(A \mid B_i)P(B_i)
  • 贝叶斯:P(H∣e)=P(e∣H)P(H)P(e)P(H \mid e) = \dfrac{P(e \mid H)P(H)}{P(e)}

17.2 独立性

  • 独立:A⊥B  ⟺  P(A,B)=P(A)P(B)A \perp B \iff P(A, B) = P(A)P(B)
  • 条件独立:A⊥B∣C  ⟺  P(A,B∣C)=P(A∣C)P(B∣C)A \perp B \mid C \iff P(A, B \mid C) = P(A \mid C)P(B \mid C)
  • 条件独立不推出无条件独立,无条件独立也不保证条件独立。

17.3 贝叶斯网络

  • BN 是 DAG 加 CPT。
  • 全局分解:P(X1,…,Xn)=∏iP(Xi∣Parents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))
  • 局部语义:Xi⊥NonDescendants(Xi)∣Parents(Xi)X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)
  • 参数量:2n−12^n - 1 vs. O(n⋅2k)O(n \cdot 2^k)

17.4 三种路径结构

  • 链:X→Y→Z,  X⊥Z∣YX \to Y \to Z,\; X \perp Z \mid Y
  • 共同原因:X←Y→Z,  X⊥Z∣YX \leftarrow Y \to Z,\; X \perp Z \mid Y
  • 共同结果:X→Y←Z,  X⊥ZX \to Y \leftarrow Z,\; X \perp Z,但 X⊥̸Z∣YX \not\perp Z \mid Y

记忆:链和 fork 观测中间点会堵住;collider 默认堵住,观测后打开。

17.5 推理

  • 枚举推理:P(X∣e)=α∑Y∏iP(xi∣parents(Xi))P(X \mid e) = \alpha \sum_Y \prod_i P(x_i \mid \text{parents}(X_i))
  • 变量消元:∑z∏jfj(z,Uj)\sum_z \prod_j f_j(z, U_j),即"包含 zz 的因子相乘,再对 zz 求和"。
  • 复杂度:多树上变量消元可多项式;一般图精确推理 NP-hard,且与 #P 完全问题相关。

17.6 朴素贝叶斯

  • 假设:Xi⊥Xj∣CX_i \perp X_j \mid C
  • 分类:c^=arg⁡max⁡cP(c)∏iP(xi∣c)\hat{c} = \arg\max_c P(c) \prod_i P(x_i \mid c)
  • 对数形式:c^=arg⁡max⁡c(log⁡P(c)+∑ilog⁡P(xi∣c))\hat{c} = \arg\max_c \left(\log P(c) + \sum_i \log P(x_i \mid c)\right)

一定记住:朴素贝叶斯是假设"给定类别后特征条件独立",不是假设特征无条件独立。

18. 常见坑

  1. 把 P(A∣B)P(A \mid B) 和 P(B∣A)P(B \mid A) 混淆。
  2. 贝叶斯题忘记先验 P(H)P(H),只看似然 P(e∣H)P(e \mid H)。
  3. 分母没有用全概率展开。
  4. 把测试准确率当成阳性后患病概率。
  5. 把条件独立当成无条件独立。
  6. BN 联合分布没有按父节点写,漏掉条件项。
  7. CPT 中变量为假时忘记用 1−p1 - p。
  8. d-separation 中忽略 collider,尤其忘记"观测 collider 会打开路径"。
  9. 后验算出未归一化值后忘记除以总和。
  10. 有隐藏变量时忘记求和。
  11. 变量消元时把所有因子一起乘,失去消元带来的好处。
  12. 以为 BN 箭头一定是因果;数学上它编码的是条件独立结构。

19. 最后一页压缩版

  • 概率语言:P(α∣e)P(\alpha \mid e)
  • 完整联合分布能回答所有问题:P(φ)=∑ω: ω⊨φP(ω)P(\varphi) = \sum_{\omega:\, \omega \models \varphi} P(\omega),但完整联合分布太大:2n−12^n - 1
  • 边缘化:P(A)=∑bP(A,b)P(A) = \sum_b P(A, b)
  • 条件概率:P(A∣B)=P(A,B)P(B)P(A \mid B) = \dfrac{P(A, B)}{P(B)}
  • 贝叶斯:P(H∣e)=α P(e∣H)P(H)P(H \mid e) = \alpha\, P(e \mid H)P(H)
  • 独立:P(A,B)=P(A)P(B)P(A, B) = P(A)P(B)
  • 条件独立:P(A,B∣C)=P(A∣C)P(B∣C)P(A, B \mid C) = P(A \mid C)P(B \mid C)
  • 贝叶斯网络:P(X1,…,Xn)=∏iP(Xi∣Parents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))
  • 枚举推理:P(X∣e)=α∑Y∏iP(xi∣parents(Xi))P(X \mid e) = \alpha \sum_Y \prod_i P(x_i \mid \text{parents}(X_i))
  • 变量消元:收集含隐藏变量的因子 → 相乘 → 对隐藏变量求和 → 归一化
  • 朴素贝叶斯:c^=arg⁡max⁡cP(c)∏iP(xi∣c)\hat{c} = \arg\max_c P(c) \prod_i P(x_i \mid c)

整条线记住一句话:概率提供信念程度,联合分布提供完整语义,条件独立提供压缩,贝叶斯网络把这种压缩画成图,推理就是把证据固定、隐藏变量求和、查询变量归一化。


Ch12a 机器学习基础与监督学习 (ML Foundations & Supervised Learning)

课件:lec12_1.pdf (42 页) + lec12_2.pdf (103 页)
教材:Artificial Intelligence: A Modern Approach Ch18–19
教师:吉建民,USTC


0. 本章概述

从"机器学习为什么可能"的理论保证(PAC)出发,介绍监督学习的核心算法:决策树(ID3/C4.5)、KNN、线性回归、Logistic 回归,以及过拟合/正则化/交叉验证/偏差-方差分解等通用概念。

子主题 核心 重要程度
学习智能体 / 三范式 / 学习三要素 表示 + 评价 + 优化;监督/无监督/强化 ⭐⭐⭐
PAC 学习 / Hoeffding / 奥卡姆剃刀 泛化误差界、样本复杂度、1/m1/m vs 1/m1/\sqrt{m} ⭐⭐⭐
决策树 (ID3 / C4.5 / CART) 信息熵、信息增益 / 增益率 / 基尼指数、剪枝 ⭐⭐⭐
KNN / 距离度量 欧氏 / Minkowski / Mahalanobis;惰性学习 ⭐⭐
线性回归 / 最小二乘 正规方程闭式解 w∗=(X⊤X)−1X⊤yw^*=(X^\top X)^{-1}X^\top y ⭐⭐⭐
Logistic 回归 sigmoid, 对数几率, 交叉熵, 极大似然, 梯度下降 ⭐⭐⭐
过拟合 / 正则化 / 交叉验证 / 偏差-方差 L1/L2, k折CV, Bias²+Var+σ² ⭐⭐⭐
集成学习 随机森林 (Bagging) ⭐⭐

第一部分:机器学习基础 (lec12_1)

1.1 学习智能体 (Learning Agents)

学习为何重要 ⭐

  • 未知环境 (unknown environments) 下不可或缺:设计者缺乏全知,无法预先把环境全部细节写进程序 → 智能体须通过学习适应。
  • 作为系统构建方法:与其手工编写规则,不如让智能体暴露于真实环境自行学习。
  • 本质:学习通过修改决策机制 (decision mechanisms) 来提升性能。

AI 中机器学习的应用

课件 p10-17:ML 的应用覆盖语音识别、计算机视觉(目标/人脸/手写识别)、信息检索(网页检索/分类/聚类)、金融预测、医疗诊断、生物信息学(基因微阵列建模/蛋白质结构预测)、机器人、推荐系统(Netflix Prize)等。

学习智能体的四个组件 ⭐

组件 英文 功能
学习元素 learning element 根据反馈改进,更新知识/规则
性能元素 performance element 选择外部行动,即"主体"智能体
评判者 critic 依据固定性能标准评价表现,给出反馈
问题生成器 problem generator 提出探索性行动以获取新经验

学习元素设计受三因素影响:

  1. 性能元素的哪些组件需要学
  2. 可获得的反馈类型
  3. 组件采用的表示形式

1.2 机器学习定义与三种学习范式 ⭐

ML 是交叉学科:研究具有学习、推理和行动能力的系统的数学基础与实际应用。
相关术语:模式识别、神经网络、数据挖掘、统计模型……
思想来源:统计学、计算机科学、工程学、应用数学、认知科学、心理学、计算神经学、经济学。

关键要素流程 ⭐

课件 p19-20:

Data(数据集 D={x1,x2,...,xN}D=\{x_1,x_2,...,x_N\})→ Predictions(基于 DD 对新点 xN+1x_{N+1} 进行预测)→ Model(需对数据分布做出假设,这些假设表达为带参数的模型)→ 从数据中学习模型参数 → 预测新数据点。

三种学习范式

智能体经历感知序列 x1,x2,…x_1,x_2,\dots:

范式 英文 反馈 目标
监督学习 Supervised 给定期望输出 y1,y2,…y_1,y_2,\dots 对新输入 xx 给出正确 yy
无监督学习 Unsupervised 不给 yy 构建 xx 的模型,用于推理/决策/预测/通信
强化学习 Reinforcement 产生动作影响世界,得奖惩 r1,r2,…r_1,r_2,\dots 学习长期最大化累积奖励的策略

学习三要素 (Key Ingredients) ⭐

要素 英文 内容
表示 Representation 确定假设空间 H\mathcal{H}(决策树、线性函数、神经网络……)
评价 Evaluation 选择损失函数衡量优劣
优化 Optimization 在假设空间中搜索得分最高的函数

机器学习 ≈ 寻找一个函数 (Looking for a Function) f∗f^*。


1.3 PAC 学习:机器学习为什么可能 ⭐

PAC (Probably Approximately Correct) 由 Leslie Valiant 于 1984 年提出,开创了计算学习理论子领域。

记号

记号 含义
XX 输入空间 (input space)
YY 标签集合
c:X→Yc:X\to Y 概念 (concept);C\mathcal{C} = 概念类
D\mathcal{D} 固定但未知的分布
H\mathcal{H} 假设集 (hypothesis set),与 C\mathcal{C} 可不重合
i.i.d. 样本独立同分布采样自 D\mathcal{D}

两种误差 ⭐

  • 泛化误差 (generalization error):R(h)=Pr⁡x∼D[h(x)≠c(x)]R(h)=\Pr_{x\sim\mathcal{D}}[h(x)\neq c(x)]
  • 经验误差 (empirical error):R^S(h)=1m∑i=1m1[h(xi)≠c(xi)]\widehat{R}_S(h)=\dfrac{1}{m}\sum_{i=1}^{m}\mathbf{1}[h(x_i)\neq c(x_i)]
  • 关系:ES∼Dm[R^S(h)]=R(h)\mathbb{E}_{S\sim\mathcal{D}^m}[\widehat{R}_S(h)]=R(h)(经验误差是泛化误差的无偏估计)。

三个感兴趣的假设 ⭐

课件 p35:

  1. hSh_S(训练所得假设)— 算法在训练集 SS 上选出的假设
  2. h∗h^*(H\mathcal{H} 中最优假设)— 假设空间中泛化误差最小的假设
  3. hBayesh^{\text{Bayes}}(贝叶斯最优假设)— 所有可能假设中泛化误差最小的(可能不在 H\mathcal{H} 中)

三者关系:R(hBayes)≤R(h∗)≤R(hS)R(h^{\text{Bayes}})\leq R(h^*)\leq R(h_S)。学习的目标是使 hSh_S 接近 hBayesh^{\text{Bayes}}。

PAC 辨识两条件

  1. 近似正确 (Approximately Correct):R(h)≤ϵR(h)\le\epsilon
  2. 可能正确 (Probably Correct):P(R(h)≤ϵ)≥1−δP(R(h)\le\epsilon)\ge 1-\delta
  3. 所需样本数是关于 1/ϵ,1/δ,n,size(c)1/\epsilon,1/\delta,n,\text{size}(c) 的多项式。

PAC 可学习定义(课件 p37 原文) ⭐

概念类 C\mathcal{C} 被称为 PAC 可学习,若存在算法 AA 和多项式函数 poly(⋅)\text{poly}(\cdot),使对任意 ϵ>0\epsilon>0、δ>0\delta>0、任意分布 D\mathcal{D} 及任意目标概念 c∈Cc\in\mathcal{C},只要

m≥poly(1/ϵ,1/δ,n,size(c))m\ge\text{poly}(1/\epsilon,1/\delta,n,\text{size}(c))

就有 PS∼Dm[R(hS)≤ϵ]≥1−δP_{S\sim\mathcal{D}^m}[R(h_S)\le\epsilon]\ge 1-\delta。

若 AA 进一步在 poly(1/ϵ,1/δ,n,size(c))\text{poly}(1/\epsilon,1/\delta,n,\text{size}(c)) 时间内运行,则称高效 PAC 可学。

Hoeffding 不等式 ⭐

设 X1,…,XmX_1,\dots,X_m i.i.d.,Xi∈[0,1]X_i\in[0,1]:

P ⁣(1m∑Xi−1m∑E[Xi]≥ϵ)≤2e−2mϵ2P\!\left(\frac{1}{m}\sum X_i-\frac{1}{m}\sum\mathbb{E}[X_i]\ge\epsilon\right)\le 2e^{-2m\epsilon^2}

应用于经验/泛化误差,令 δ=2e−2mϵ2\delta=2e^{-2m\epsilon^2},则对固定 hh 以至少 1−δ1-\delta 概率:

  R(h)≤R^S(h)+log⁡(2/δ)2m  \boxed{\;R(h)\le\widehat{R}_S(h)+\sqrt{\dfrac{\log(2/\delta)}{2m}}\;}

有限假设集学习界

  • 一致情形(c∈Hc\in\mathcal{H},R^S(hS)=0\widehat{R}_S(h_S)=0):
    以至少 1−δ1-\delta 概率 R(hS)≤ϵR(h_S)\le\epsilon,只要 m≥1ϵ(log⁡∣H∣+log⁡1δ)m\ge\dfrac{1}{\epsilon}\bigl(\log|\mathcal{H}|+\log\tfrac{1}{\delta}\bigr)。
    → 泛化误差界为 1m(log⁡∣H∣+log⁡1δ)\dfrac{1}{m}\bigl(\log|\mathcal{H}|+\log\tfrac{1}{\delta}\bigr),收敛速率 1/m1/m。

  • 不一致情形(c∉Hc\notin\mathcal{H},更常见)⭐:
    以至少 1−δ1-\delta 概率对所有 h∈Hh\in\mathcal{H} 同时:

R(h)≤R^S(h)+log⁡∣H∣+log⁡(2/δ)2m=O ⁣(log⁡∣H∣m)R(h)\le\widehat{R}_S(h)+\sqrt{\dfrac{\log|\mathcal{H}|+\log(2/\delta)}{2m}}=O\!\left(\sqrt{\dfrac{\log|\mathcal{H}|}{m}}\right)

→ 收敛速率 1/m1/\sqrt{m},比一致情形的 1/m1/m 慢;要达到相同保证需平方量级更多样本。

奥卡姆剃刀 (Occam’s Razor) ⭐

如无必要,勿增实体——最简单的解释是最好的。

假设集 ∣H∣|\mathcal{H}| 越小(模型越简单),泛化误差界越紧,越倾向选简单模型。(对于无限假设集,需引入 VC 维,本课未展开。)


第二部分:监督学习 (lec12_2)

2.1 监督学习定义

  • 输入空间 XX、输出/标签空间 YY、未知真实函数 f:X→Yf:X\to Y。
  • 训练样本 {(xi,yi)}i=1N\{(x_i,y_i)\}_{i=1}^{N},目标学 h≈fh\approx f。
  • 分类 (Classification):YY 有限离散;回归 (Regression):YY 连续。
  • ML 范式:选模型类 → 模型选择(交叉验证) → 训练 → 测试(课件 p86)。

2.2 决策树 (Decision Trees) ⭐

课件以 “是否在餐厅等位” 为例:属性含 Alternate/Bar/FriSat/Hungry/Patrons/Price/Raining/Reservation/Type/WaitEstimate

表达能力与假设空间

  • 决策树可表达输入属性的任意函数(真值表每行 = 一条到叶路径)。
  • nn 个布尔属性的不同布尔函数数 = 决策树数:trees=22n\text{trees}=2^{2^n}。例:6 个布尔属性 → 约 1.84×10191.84\times10^{19} 棵树。
  • 学习最小(最简单)决策树是 NP-complete(Hyafil & Rivest, 1976)⇒ 用贪心启发式:从空树开始,选"下一个最佳属性"分裂,递归。

不同大小的树可以表达同一概念

(如 (A∧B)∨(¬A∧C) 可有多棵不同复杂度的树表示)——正因为如此,才需要偏好更紧凑的树。

GrowTree / DTL 算法 ⭐

1
2
3
4
5
6
7
GrowTree(S):
if (y=0 for all ⟨x,y⟩∈S) return new leaf(0)
else if (y=1 for all ⟨x,y⟩∈S) return new leaf(1)
else
choose best attribute x_j
S0 = {⟨x,y⟩∈S | x_j=0}, S1 = {⟨x,y⟩∈S | x_j=1}
return new node(x_j, GrowTree(S0), GrowTree(S1))

⭐ 信息熵 (Entropy)

H(Y)=−∑i=1kP(Y=yi)log⁡2P(Y=yi)H(Y)=-\sum_{i=1}^{k}P(Y=y_i)\log_2 P(Y=y_i)

含 pp 正例、nn 负例的训练集:I ⁣(pp+n,np+n)=−pp+nlog⁡2pp+n−np+nlog⁡2np+nI\!\left(\tfrac{p}{p+n},\tfrac{n}{p+n}\right)=-\tfrac{p}{p+n}\log_2\tfrac{p}{p+n}-\tfrac{n}{p+n}\log_2\tfrac{n}{p+n}。

条件熵:

H(Y∣X)=−∑jP(X=xj)∑iP(Y=yi∣X=xj)log⁡2P(Y=yi∣X=xj)H(Y\mid X)=-\sum_j P(X=x_j)\sum_i P(Y=y_i\mid X=x_j)\log_2 P(Y=y_i\mid X=x_j)

信息论解释:H(Y)H(Y) 是编码随机值 YY 所需的期望比特数(最优编码下)。

⭐ 信息增益 (Information Gain)

IG(A)=H(Y)−H(Y∣X)=I ⁣(pp+n,np+n)−∑i=1vpi+nip+n I ⁣(pipi+ni,nipi+ni)⏟remainder(A)IG(A)=H(Y)-H(Y\mid X)=I\!\left(\tfrac{p}{p+n},\tfrac{n}{p+n}\right)-\underbrace{\sum_{i=1}^{v}\tfrac{p_i+n_i}{p+n}\,I\!\left(\tfrac{p_i}{p_i+n_i},\tfrac{n_i}{p_i+n_i}\right)}_{\text{remainder}(A)}

选信息增益最大的属性:arg⁡max⁡iIG(Xi)=arg⁡max⁡i[H(Y)−H(Y∣Xi)]\arg\max_i IG(X_i)=\arg\max_i[H(Y)-H(Y\mid X_i)]。

示例(等位数据集):p=n=6p=n=6,I(6/12,6/12)=1I(6/12,6/12)=1。IG(Patrons)=0.541IG(\text{Patrons})=0.541 bits,IG(Type)=0IG(\text{Type})=0 bits → Patrons 为根节点。

ID3 vs C4.5 vs CART ⭐

算法 分裂准则 说明
ID3 信息增益 IGIG 偏向取值多的属性
C4.5 信息增益率 IGratio=IG(Y,X)HX(Y)IG_{\text{ratio}}=\dfrac{IG(Y,X)}{H_X(Y)} 深度优先,缓解偏向问题
CART 二叉树,回归用平方误差/分类用基尼指数 Gini=1−∑ipi2\text{Gini}=1-\sum_i p_i^2 二叉树结构

过拟合与剪枝

  • 标准决策树无学习偏置,训练集误差恒 0、方差大 ⇒ 必须引入偏好更简单树的 bias。
  • 避免过拟合策略:
    • 固定深度、每叶最少样本数
    • 获取更多训练数据
    • 去除无关属性
    • 分裂不再统计显著时停止
    • 后剪枝 (post-prune)

Reduced-Error Pruning ⭐

  1. 将训练数据再分为训练集 + 验证集
  2. 训练集上长完满树
  3. 重复直到有害:
    • 评估剪去每个节点(及子树)对验证集准确率的影响
    • 贪心剪掉使验证集准确率提升最多的节点,用单叶替换整棵子树

剪枝用验证集准确率来评估叶子是否比原子树更好(课件 p27-28)。

决策树优缺点

优点 缺点
构建开销低、分类极快 容易过拟合
小树可解释性强 需要剪枝
简单数据集上准确率可比肩其他方法 决策边界轴对齐

2.3 K 近邻 (KNN)

向量空间表示(课件 p34-37)

以文本分类为例:每篇文档是高维向量,每个词是一个维度(可能 10,000+ 维)。文档在向量空间中的位置反映了其语义内容。

关键要素与算法

  • 四要素:距离度量、kk 值、加权函数(可选)、如何利用局部点。
  • 测试:计算 xx 与所有训练样本相似度,归为 kk 个最近样本中多数类。
  • 非参数方法 / 惰性学习 (Instance-based / Lazy learning):几乎不"学习",只存储训练样本。
  • KNN 回归:取 kk 近邻的均值(课件 p66)。

⭐ 距离度量

课件 p39-42 给出了方差、标准差、协方差、相关系数、协方差矩阵的完整定义,为马氏距离铺垫。

度量 公式 说明
欧氏 (Euclidean) ∑i(xi−xi′)2\sqrt{\sum_i(x_i-x_i')^2} 最常用
标准化欧氏 ∑i(xi−xi′)2σi2\sqrt{\sum_i\tfrac{(x_i-x_i')^2}{\sigma_i^2}} 消除量纲影响
Minkowski LpL_p (∑i∣xi−xi′∣p)1/p\left(\sum_i\lvert x_i-x_i'\rvert^p\right)^{1/p} L1L_1 曼哈顿、L2L_2 欧氏、L∞L_\infty 切比雪夫
Hamming 不同属性数 布尔/离散数据
马氏 (Mahalanobis) (x−x′)⊤Σ−1(x−x′)\sqrt{(x-x')^\top\Sigma^{-1}(x-x')} Σ\Sigma 为协方差矩阵;单位阵⇒欧氏,对角阵⇒标准化欧氏

统计学铺垫(课件 p41-42)

  • 方差/标准差:σ2=E[(X−μ)2]\sigma^2=\mathbb{E}[(X-\mu)^2],σ\sigma 为标准化欧氏的分母
  • 协方差:cov(X,Y)=E[(X−μX)(Y−μY)]=E[X⋅Y]−μXμY\text{cov}(X,Y)=\mathbb{E}[(X-\mu_X)(Y-\mu_Y)]=\mathbb{E}[X\cdot Y]-\mu_X\mu_Y
  • 相关系数:ρ=cov(X,Y)var(X)⋅var(Y)\rho=\dfrac{\text{cov}(X,Y)}{\sqrt{\text{var}(X)\cdot\text{var}(Y)}},值域 [−1,1][-1,1]
  • 协方差矩阵:对 nn 维向量 XX,Σi,j=cov(Xi,Xj)\Sigma_{i,j}=\text{cov}(X_i,X_j),对称矩阵

KNN 优缺点

优点 缺点
简单强大、灵活、非参数 内存需求高
易于应用于各类问题 对尺度敏感
需要高效近邻搜索算法

2.4 线性回归 / 最小二乘

线性分类器与替代损失

y^=h(x)=sign(w⊤x+b)\hat y=h(x)=\text{sign}(w^\top x+b)

0/1 损失 {0,h(x)=y1,h(x)≠y\begin{cases}0,&h(x)=y\\1,&h(x)\neq y\end{cases} 非凸非连续 → 替换为:

替代损失 公式
L2L_2 (y−w⊤x−b)2=(1−y(w⊤x+b))2(y-w^\top x-b)^2 = (1-y(w^\top x+b))^2
L1L_1 ∣y−w⊤x−b∣=∣1−y(w⊤x+b)∣\lvert y-w^\top x-b\rvert = \lvert 1-y(w^\top x+b)\rvert
Hinge max⁡(0,1−y(w⊤x+b))\max(0,1-y(w^\top x+b))(SVM 用)

替代损失对比图见 loss_functions.png

⭐ 最小二乘 / 正规方程闭式解

矩阵形式 X∈RN×(d+1)X\in\mathbb{R}^{N\times(d+1)}(首列补 1)、w=[b,w1,…,wd]⊤w=[b,w_1,\dots,w_d]^\top:

Loss=min⁡w(Xw−y)⊤(Xw−y)\text{Loss}=\min_w (Xw-y)^\top(Xw-y)

对 ww 求导置零(矩阵求导公式 ddx(Ax+b)⊤(Ax+b)=2(Ax+b)⊤A\frac{d}{dx}(Ax+b)^\top(Ax+b)=2(Ax+b)^\top A):

  w∗=(X⊤X)−1X⊤y  (X⊤X 满秩)\boxed{\;w^*=(X^\top X)^{-1}X^\top y\;}\qquad(X^\top X\text{ 满秩})

  • Moore-Penrose 伪逆:X+=(X⊤X)−1X⊤X^+=(X^\top X)^{-1}X^\top。
  • 预测:y^=sign(y⊤X(X⊤X)−1[1,x0⊤]⊤)\hat y=\text{sign}\left(y^\top X(X^\top X)^{-1}[1,x_0^\top]^\top\right)。

一元回归闭式解

w=∑yi(xi−xˉ)∑xi2−1m(∑xi)2,b=1m∑(yi−wxi)w=\dfrac{\sum y_i(x_i-\bar x)}{\sum x_i^2-\tfrac{1}{m}(\sum x_i)^2},\qquad b=\tfrac{1}{m}\sum(y_i-wx_i)

导出:先后对 ww、bb 求偏导置零求解。

广义线性模型 ⭐

引入基函数 ϕj(x)\phi_j(x):f(x,w)=b+∑jwjϕj(x)f(x,w)=b+\sum_j w_j\phi_j(x)。ϕj\phi_j 可为多项式、高斯基、sigmoid 等非线性函数。


2.5 Logistic 回归 (Logistic Regression) ⭐

名称误导:本质是分类技术,不是回归。西瓜书称"对数几率回归"。

从概率到对数几率

z=ln⁡p1−p(logit/log odds function)z=\ln\frac{p}{1-p}\quad\text{(logit/log odds function)}

反推:p=11+e−z=σ(z)p=\dfrac{1}{1+e^{-z}}=\sigma(z)。

Standard Logistic Function(课件 p92)

f(x)=L1+e−k(x−x0)f(x)=\frac{L}{1+e^{-k(x-x_0)}}

  • x0x_0:sigmoid 中点(水平平移)
  • LL:曲线最大值(垂直缩放)
  • kk:陡峭程度

标准形式(L=1,k=1,x0=0L=1,k=1,x_0=0):

  σ(x)=11+e−x  \boxed{\;\sigma(x)=\dfrac{1}{1+e^{-x}}\;}

模型

y=σ(w⊤x+b)  ⟺  ln⁡y1−y=w⊤x+by=\sigma(w^\top x+b)\;\Longleftrightarrow\;\ln\dfrac{y}{1-y}=w^\top x+b

⭐ Logistic 回归用线性模型预测结果逼近真实标记的对数几率。

对数几率 (log odds) 特别适合处理微小概率场景(如计算生物学中的多序列比对)。

⭐ 极大似然 → 交叉熵损失

视 y=P(y=1∣x)y=P(y=1\mid x):

P(y=1∣x)=ew⊤x+b1+ew⊤x+b,P(y=0∣x)=11+ew⊤x+bP(y=1\mid x)=\dfrac{e^{w^\top x+b}}{1+e^{w^\top x+b}},\quad P(y=0\mid x)=\dfrac{1}{1+e^{w^\top x+b}}

最大化对数似然 L(w,b)=∑iln⁡P(yi∣xi;w,b)L(w,b)=\sum_i\ln P(y_i\mid x_i;w,b),等价于最小化:

  E(w,b)=−∑i=1m[yiln⁡σ(w⊤xi+b)+(1−yi)ln⁡(1−σ(w⊤xi+b))]  \boxed{\;E(w,b)=-\sum_{i=1}^{m}\Bigl[y_i\ln\sigma(w^\top x_i+b)+(1-y_i)\ln(1-\sigma(w^\top x_i+b))\Bigr]\;}

即二元交叉熵 (Binary Cross-Entropy):

H(p,q)=−∑x∈Xp(x)ln⁡q(x)H(p,q)=-\sum_{x\in X}p(x)\ln q(x)

损失是凸的 (convex)。

⭐ 梯度下降更新

由 σ′(z)=σ(z)(1−σ(z))\sigma'(z)=\sigma(z)(1-\sigma(z)):

推导:∂∂z11+e−z=−1(1+e−z)2⋅(−e−z)=σ(z)2⋅1−σ(z)σ(z)=σ(z)(1−σ(z))\frac{\partial}{\partial z}\frac{1}{1+e^{-z}}=-\frac{1}{(1+e^{-z})^2}\cdot(-e^{-z})=\sigma(z)^2\cdot\frac{1-\sigma(z)}{\sigma(z)}=\sigma(z)(1-\sigma(z))

∂LCE∂w=(σ(w⊤xi+b)−yi)xi  ⇒    w←w−η(σ(w⊤xi+b)−yi)xi  \frac{\partial L_{CE}}{\partial w}=(\sigma(w^\top x_i+b)-y_i)x_i\;\Rightarrow\;\boxed{\;w\leftarrow w-\eta(\sigma(w^\top x_i+b)-y_i)x_i\;}

bb 同理:b←b−η(σ(w⊤xi+b)−yi)b\leftarrow b-\eta(\sigma(w^\top x_i+b)-y_i)。

SGD:每次用一个或小批量样本更新。

优缺点

优点 缺点
概率化输出、自然概率视角 线性决策边界
易扩多类 (multinomial regression)
抗过拟合、训练快、分类极快
系数可解释为特征重要性

2.6 过拟合 / 正则化 / 交叉验证 / 偏差-方差

模型复杂度与过拟合(课件 p71-76 曲线拟合示例)

从 1 阶到高次多项式逐步过拟合的演示:模型越复杂,训练误差越低但测试误差先降后升 → 需要奥卡姆剃刀,选择同时最大化一致性和简洁性的模型。

⭐ 正则化 (Regularization)

w∗=arg⁡min⁡w[Loss+λ⋅penalty(w)]w^*=\arg\min_w\bigl[\text{Loss}+\lambda\cdot\text{penalty}(w)\bigr]

正则化 形式 作用
L2 (Ridge) Loss+λ∥w∥22\text{Loss}+\lambda\lVert w\rVert_2^2 均匀缩小权重、改善数值稳定性
L1 (Lasso) $\text{Loss}+\lambda w

两者都是凸正则化。

L2 正则化最小二乘闭式解 ⭐

min⁡w(Xw−y)2+λ∥w∥2⇒w^=(X⊤X+λI)−1X⊤y\min_w (Xw-y)^2+\lambda\|w\|^2\quad\Rightarrow\quad\hat{w}=(X^\top X+\lambda I)^{-1}X^\top y

课件 p77:L2 使所有权重趋近 0 但不为零;L1 产生稀疏解。

⭐ 交叉验证 (Cross-Validation)

直觉:过拟合的模型对数据扰动敏感——移除部分数据会显著改变拟合结果。因此可留出数据来检测过拟合。

方法 说明
留出法 (Hold-out) 划分训练/测试集
随机子抽样 (Random Subsampling) 多次随机划分取平均
k 折交叉验证 数据分 kk 等份,每次用第 jj 份测试其余训练,循环 kk 次取平均
留一法 (LOO) k=Nk=N 特例

⭐ 偏差-方差分解 (Bias-Variance Decomposition)

E[(y−f^(x))2]=(E[f^(x)]−y)2⏟Bias2+E[(f^(x)−E[f^(x)])2]⏟Variance+σ2⏟噪声\mathbb{E}\bigl[(y-\hat f(x))^2\bigr]=\underbrace{(\mathbb{E}[\hat f(x)]-y)^2}_{\text{Bias}^2}+\underbrace{\mathbb{E}\bigl[(\hat f(x)-\mathbb{E}[\hat f(x)])^2\bigr]}_{\text{Variance}}+\underbrace{\sigma^2}_{\text{噪声}}

分量 含义
Bias²(偏差平方) 模型拟合能力,高偏差对应欠拟合
Variance(方差) 对数据扰动的敏感度,高方差对应过拟合
σ²(噪声) 不可约误差

总误差随复杂度呈 U 形,需权衡。图解见 bias_variance.png

集成学习(课件给出)

  • 随机森林 (Random Forest):Bagging(有放回采样 NN 个样本集)→ 训练 NN 棵决策树 → 投票决定结果,降低方差、缓解过拟合。


Ch12b 支持向量机与无监督学习 (SVM & Unsupervised Learning)

课件:lec12_3.pdf (50 页) + lec12_4.pdf (63 页)
教材:Artificial Intelligence: A Modern Approach Ch18–20
教师:吉建民,USTC


0. 本章概述

SVM 部分从线性分类的间隔最大化出发,通过拉格朗日对偶导出核技巧,涵盖硬间隔/软间隔/核 SVM。无监督学习部分聚焦聚类(K-means)与降维(PCA),辅以 GMM/EM 补充。从"用标签训练"到"从无标签数据找结构"是贯穿本章的主线。

子主题 核心 重要程度
SVM 硬间隔原始/对偶问题 间隔最大化、拉格朗日对偶、KKT 条件 ⭐⭐⭐
SVM 软间隔 & Hinge Loss 松弛变量 ξ\xi、惩罚参数 CC ⭐⭐⭐
核技巧与非线性 SVM 特征映射、RBF 核、Mercer 定理 ⭐⭐⭐
SVM vs Logistic 回归 损失函数、概率输出、稀疏性对比 ⭐⭐⭐
K-means 聚类 失真度量、交替最小化、收敛性证明 ⭐⭐⭐
PCA 降维 协方差特征分解、最大方差=最小重构误差 ⭐⭐⭐
维数灾难 超球/超立方体积比、样本需求指数增长 ⭐⭐
GMM / EM 算法(补充) 隐变量、E 步/M 步、Q 函数 ⭐⭐

第一部分:支持向量机 (SVM, lec12_3) ⭐

1.1 线性分类与间隔

问题:哪个线性分隔面最优?

判别函数 y^(x)=w⊤x+b\hat y(x)=w^\top x+b,决策 y^>0\hat y>0 → 正类、<0<0 → 负类。(课件 p7 图示:多条直线都能分隔,但间隔不同。)

范数定义(课件 p8)

范数 公式
L1L_1 $|\vec{x}|1 := \sum{i=1}^n
L2L_2 ∣x⃗∣2:=∑i=1nxi2|\vec{x}|_2 := \sqrt{\sum_{i=1}^n x_i^2}
LpL_p $|\vec{x}|p := (\sum{i=1}^n
L∞L_\infty $|\vec{x}|_\infty := \max_i

点到超平面的距离推导 ⭐

设超平面 S:w⊤x+b=0S: w^\top x+b=0,点 x0x_0。从 x0x_0 向 SS 作垂线,垂足为 x1x_1(w⊤x1+b=0w^\top x_1+b=0)。

  • 向量 x0x1→\overrightarrow{x_0x_1} 与法向量 ww 平行 ⇒ x0x1→\overrightarrow{x_0x_1} 可分解为 ww 方向的投影
  • 点积:∣w⋅x0x1→∣=∥w∥∥x0x1→∥=∥w∥⋅d|w\cdot\overrightarrow{x_0x_1}|=\|w\|\|\overrightarrow{x_0x_1}\|=\|w\|\cdot d
  • 同时:w⋅x0x1→=w⊤x0−w⊤x1=w⊤x0−(−b)=w⊤x0+bw\cdot\overrightarrow{x_0x_1}=w^\top x_0-w^\top x_1=w^\top x_0-(-b)=w^\top x_0+b

d=∣w⊤x0+b∣∥w∥d=\dfrac{|w^\top x_0+b|}{\|w\|}

⭐ 缩放不变性

w→aw,  b→abw\to aw,\; b\to ab 不改超平面 ⇒ 可规范化:对支持向量令 ∣w⊤xs+b∣=1|w^\top x_s+b|=1,则间隔 m=2∥w∥m=\dfrac{2}{\|w\|}。

支持向量 (Support Vectors):距超平面最近的训练样本。分类间隔 (Margin):两侧支持向量到超平面距离之和 m=2∥w∥m=\dfrac{2}{\|w\|}。


1.2 硬间隔 SVM 原始问题 ⭐

由 m=2∥w∥m=\frac{2}{\|w\|},最大化间隔 ≡ 最小化 ∥w∥\|w\|:

  min⁡w,b 12∥w∥2s.t.yi(w⊤xi+b)≥1, ∀i  \boxed{\;\min_{w,b}\ \frac{1}{2}\|w\|^2\quad\text{s.t.}\quad y_i(w^\top x_i+b)\ge 1,\ \forall i\;}

(二次规划 QP,Q⪰0Q\succeq 0 凸 ⇒ 全局最优。课件 p15-16:可直接用商业 QP 求解器。)


1.3 拉格朗日对偶推导 ⭐

拉格朗日乘子法回顾(课件 p17-18)

  • 等式约束 min⁡f(x)\min f(x) s.t. h(x)=0h(x)=0 → min⁡f(x)+λh(x)\min f(x)+\lambda h(x)
  • 不等式约束 min⁡f(x)\min f(x) s.t. g(x)≤0g(x)\le 0 → min⁡xmax⁡λ≥0f(x)+λg(x)\min_x\max_{\lambda\ge 0} f(x)+\lambda g(x)

原始问题到对偶问题

拉格朗日函数:

L(w,b,α)=12w⊤w−∑i=1nαi[yi(w⊤xi+b)−1],αi≥0L(w,b,\alpha)=\frac{1}{2}w^\top w-\sum_{i=1}^{n}\alpha_i\bigl[y_i(w^\top x_i+b)-1\bigr],\quad\alpha_i\ge 0

原始问题:min⁡w,bmax⁡α≥0L(w,b,α)\min_{w,b}\max_{\alpha\ge 0}L(w,b,\alpha)。

对偶问题:max⁡α≥0min⁡w,bL(w,b,α)\max_{\alpha\ge 0}\min_{w,b}L(w,b,\alpha)。

课件 p19:由于 f(x)f(x) 凸 + 约束线性(满足 Slater 条件)⇒ 强对偶性成立:对偶最优 = 原始最优。

对 w,bw,b 求偏导置零

∂L∂w=w−∑iαiyixi=0⇒w=∑i=1nαiyixi\frac{\partial L}{\partial w}=w-\sum_i\alpha_i y_i x_i=0\quad\Rightarrow\quad w=\sum_{i=1}^{n}\alpha_i y_i x_i

∂L∂b=−∑iαiyi=0⇒∑i=1nαiyi=0\frac{\partial L}{\partial b}=-\sum_i\alpha_i y_i=0\quad\Rightarrow\quad \sum_{i=1}^{n}\alpha_i y_i=0

回代消去 w,bw,b,得对偶目标:

  max⁡α ∑i=1nαi−12∑i,j=1nαiαjyiyj xi⊤xjs.t.αi≥0, ∑iαiyi=0  \boxed{\;\max_{\alpha}\ \sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_j y_i y_j\,x_i^\top x_j\quad\text{s.t.}\quad\alpha_i\ge 0,\ \sum_i\alpha_i y_i=0\;}

KKT 条件(课件 p18)⭐

条件 公式
原始可行性 g(x∗)≤0g(x^*)\le 0
对偶可行性 λ≥0\lambda\ge 0
互补松弛性 λg(x∗)=0\lambda g(x^*)=0
平稳性 ∇f(x∗)+λ∇g(x∗)=0\nabla f(x^*)+\lambda\nabla g(x^*)=0

⚠️ 最优解必满足 KKT;若强对偶成立,KKT 也充分。

对偶推导的三大收益 ⭐

  1. w=∑iαiyixiw=\sum_i\alpha_i y_i x_i:ww 仅为训练样本的加权组合
  2. b=yi−w⊤xib=y_i-w^\top x_i(任取 αi≠0\alpha_i\neq 0);
  3. 数据只以内积 xi⊤xjx_i^\top x_j 形式出现 ⇒ 引出核技巧

稀疏性

  • 严格在间隔外正确分类的样本 ⇒ αi∗=0\alpha_i^*=0(互补松弛:yi(w⊤xi+b)>1y_i(w^\top x_i+b)>1 ⇒ αi=0\alpha_i=0)
  • 只有少量 αi≠0\alpha_i\neq 0 → 支持向量

决策函数:y^=sign ⁣(∑i∈SVαiyi xi⊤x′+b)\hat y=\text{sign}\!\left(\sum_{i\in SV}\alpha_i y_i\,x_i^\top x'+b\right)。

课件 p27-29:ww 不必显式构造,仅由支持向量决定 → 稀疏表示 / 数据压缩。


1.4 软间隔 SVM ⭐

引入松弛变量

若训练集不线性可分,引入 ξi≥0\xi_i\ge 0 允许误分类:

min⁡w,b 12w⊤w+C∑iξis.t.yi(w⊤xi+b)≥1−ξi, ξi≥0\min_{w,b}\ \frac{1}{2}w^\top w+C\sum_i\xi_i\quad\text{s.t.}\quad y_i(w^\top x_i+b)\ge 1-\xi_i,\ \xi_i\ge 0

参数 作用
ξi\xi_i 松弛变量:ξi=0\xi_i=0 无误差;0<ξi≤10<\xi_i\le1 在间隔内;ξi>1\xi_i>1 误分类
CC 惩罚参数,CC 大 ⇒ 接近硬间隔;CC 小 ⇒ 间隔更宽、容忍更多误分

对偶问题(唯一变化:αi≤C\alpha_i\le C)

max⁡α ∑αi−12∑αiαjyiyjxi⊤xjs.t.0≤αi≤C, ∑αiyi=0\max_{\alpha}\ \sum\alpha_i-\frac{1}{2}\sum\alpha_i\alpha_j y_i y_j x_i^\top x_j\quad\text{s.t.}\quad 0\le\alpha_i\le C,\ \sum\alpha_i y_i=0

支持向量分类(课件 p32)

αi\alpha_i 范围 含义
αi=0\alpha_i=0 非支持向量,间隔外正确分类
0<αi<C0<\alpha_i<C 支持向量,恰在间隔边界,ξi=0\xi_i=0
αi=C\alpha_i=C 支持向量,在间隔内或误分类,ξi>0\xi_i>0

⭐ Hinge Loss(合页损失)

ξi=max⁡(0, 1−yi(w⊤xi+b))=[1−yi(w⊤xi+b)]+\xi_i=\max\bigl(0,\ 1-y_i(w^\top x_i+b)\bigr)=\bigl[1-y_i(w^\top x_i+b)\bigr]_{+}

课件 p34:软间隔 SVM 目标 =12w⊤w+C∑ihingei=\frac{1}{2}w^\top w+C\sum_i\text{hinge}_i = 正则项 + hinge loss(等价于 min⁡w,b12Cw⊤w+∑ihingei\min_{w,b}\frac{1}{2C}w^\top w+\sum_i\text{hinge}_i)。

替代损失函数对比图见 loss_functions.png


1.5 非线性 SVM 与核技巧 ⭐

特征映射

若数据在原始空间非线性可分 → 映射 ϕ(⋅)\phi(\cdot) 到更高维空间使其线性可分。

⭐ 核技巧 (Kernel Trick)

由于数据只以内积出现(对偶目标中的 xi⊤xjx_i^\top x_j、决策函数中的 xi⊤x′x_i^\top x'),定义:

K(xi,xj)=ϕ(xi)⊤ϕ(xj)K(x_i,x_j)=\phi(x_i)^\top\phi(x_j)

无需显式计算 ϕ\phi,只需计算核函数。

示例(课件 p39):

ϕ([x1,x2])=[1,2x1,2x2,x12,x22,2x1x2]⊤\phi([x_1,x_2])=[1,\sqrt{2}x_1,\sqrt{2}x_2,x_1^2,x_2^2,\sqrt{2}x_1x_2]^\top

K(x,x′)=(1+x⊤x′)2K(x,x')=(1+x^\top x')^2

常用核 ⭐

核 K(xi,xj)K(x_i,x_j) 说明
线性 xi⊤xjx_i^\top x_j ϕ(x)=x\phi(x)=x,原始空间
多项式 (1+xi⊤xj)p(1+x_i^\top x_j)^p pp 次多项式
高斯 RBF exp⁡ ⁣(−∥xi−xj∥2σ2)\exp\!\left(-\dfrac{\lVert x_i-x_j\rVert^2}{\sigma^2}\right) 对应无限维映射(课件 p40)

核矩阵与 Mercer 定理

核矩阵 Ki,j=K(xi,xj)K_{i,j}=K(x_i,x_j)(n×nn\times n 矩阵)。合法核必须满足:

  1. 对称性:K=K⊤K=K^\top
  2. 半正定性:z⊤Kz≥0, ∀z∈Rnz^\top K z\ge 0,\ \forall z\in\mathbb{R}^n

作业证明:z⊤Kz=∑i,jzizjϕ(xi)⊤ϕ(xj)=∥∑iziϕ(xi)∥2≥0z^\top Kz=\sum_{i,j}z_i z_j\phi(x_i)^\top\phi(x_j)=\|\sum_i z_i\phi(x_i)\|^2\ge 0。

对偶问题的矩阵形式(课件 p42)

max⁡α e⊤α−12α⊤(yy⊤∘K)αs.t.0≤αi≤C, ∑αiyi=0\max_{\alpha}\ e^\top\alpha-\frac{1}{2}\alpha^\top(yy^\top\circ K)\alpha\quad\text{s.t.}\quad 0\le\alpha_i\le C,\ \sum\alpha_i y_i=0


1.6 SVM vs Logistic 回归 ⭐

维度 SVM (Hinge) Logistic (CE)
损失 [1−y(w⊤x+b)]+[1-y(w^\top x+b)]_{+} −log⁡σ(y(w⊤x+b))-\log\sigma(y(w^\top x+b))
概率输出 不给 σ\sigma 给出类别概率
解稀疏性 稀疏(仅支持向量) 一般不稀疏
易分样本 hinge loss = 0(“稳健”) 即使分对也有非零损失

SVM 总结(课件 p44-45)

情形 方法
线性可分 硬间隔 SVM → 原始/对偶 QP
非线性可分 软间隔 SVM → 加松弛 + 上限 CC
非线性 + 不可分 核技巧 + 软间隔 → RBF/多项式核

训练流程:构核矩阵 → 解对偶 QP 得 α\alpha → 恢复 bb → 测试 sign(∑SVαiyiK(xi,x′)+b)\text{sign}(\sum_{SV}\alpha_i y_i K(x_i,x')+b)。


第二部分:无监督学习 (lec12_4) ⭐

2.1 概述与动机

监督成功但瓶颈明显:有标签数据稀缺昂贵(语音、医疗、蛋白质等)。无监督:从廉价海量的无标签数据学习。

任务 说明
聚类 (Clusters) 发现数据中的簇结构
密度估计 (Density Estimation) 估计数据分布
降维 PCA(线性)、流形学习(非线性)
维度 监督 无监督
数据 (xi,yi)(x_i,y_i) 仅 xix_i
目标 学 f:x→yf:x\to y 发现数据结构
任务 分类、回归 聚类、密度估计、降维

2.2 维数灾难 (Curse of Dimensionality) ⭐

为什么需要降维

  • 维数升高 → 数据变得极度稀疏 → 密度和距离概念失去意义
  • 若 N=100N=100 对 1 维已足够密集,则 d=10d=10 维需要 N10=10010N_{10}=100^{10} 样本才能维持同等密度(课件 p33)
  • 大多数高维 ML/DM 技术因维数灾难而不有效
  • 本征维数 (intrinsic dimension) 可能很低(例如:致病基因数远小于全部基因数)

超球/超立方体积比 ⭐

设半径 rr 的 dd 维超球内接于边长 2r2r 的超立方:

  • d=2d=2:V(S2(r))V(H2(2r))≈πr24r2=78.5%\frac{V(S^2(r))}{V(H^2(2r))}\approx\frac{\pi r^2}{4r^2}=78.5\%
  • d=3d=3:V(S3(r))V(H3(2r))≈43πr38r3=52.4%\frac{V(S^3(r))}{V(H^3(2r))}\approx\frac{\frac{4}{3}\pi r^3}{8r^3}=52.4\%
  • d→∞d\to\infty:lim⁡d→∞V(Sd(r))V(Hd(2r))→0\lim_{d\to\infty}\frac{V(S^d(r))}{V(H^d(2r))}\to 0

高维空间中"几乎所有空间都在角落",中心附近几乎为空。

降维的应用(课件 p37)

人脸识别、手写数字识别、文本挖掘、图像检索、微阵列数据分析、蛋白质分类等。


2.3 聚类与 K-means ⭐

聚类定义

簇内高相似、簇间低相似。形式化:输入 D={x1,…,xn}D=\{x_1,\dots,x_n\},输出簇分配 C(i)∈{1,…,k}C^{(i)}\in\{1,\dots,k\}。

⭐ K-means 目标(失真度量 distortion)

  J=∑j=1n∥μC(j)−xj∥2  \boxed{\;J=\sum_{j=1}^{n}\bigl\lVert\mu_{C^{(j)}}-x_j\bigr\rVert^2\;}

目标:min⁡μmin⁡CJ\min_\mu\min_C J。(非凸;全局最优 NP-hard。)

⭐ 交替最小化两步

步骤 名称 操作
Step 1 分配 (Assignment) C(j)=arg⁡min⁡i∥μi−xj∥2C^{(j)}=\arg\min_i\lVert\mu_i-x_j\rVert^2(每点归最近中心)
Step 2 更新 (Re-center) $\mu_i=\dfrac{1}{

每步都使 JJ 不增。

完整算法

  1. 选 kk 个初始中心 μ1,…,μk\mu_1,\dots,\mu_k
  2. 重复直到分配不变:
    • 分配各点到最近中心
    • 新中心 = 各簇均值

每轮复杂度:O(KN)O(KN)(分配)+ O(N)O(N)(更新均值)。

⭐ 收敛性证明 ⭐

定理:K-means 有限步内收敛到局部最优。

证明四步:

  1. 分配步:固定 μ\mu 下为 JJ 选最优分配 ⇒ JJ 不增
  2. 更新步:固定 CC 下簇均值是 JJ 的全局最小 ⇒ JJ 不增
  3. J≥0J\ge 0 有下界,且单调不增
  4. 分配方案数有限 ⇒ JJ 只能在有限步后不再改变

⭐ 性质与局限性

性质 说明
有限步收敛 ✅ 保证(到局部最优)
全局最优 ❌ NP-hard
初始化敏感 不同初始化 → 不同结果;可能"卡住"(课件 p25)
对噪声/离群点 不鲁棒(平方损失放大效应)
非球形簇 可能无法正确聚类(课件 p26:改变距离函数可缓解)

实用技巧

  • K-means++ 初始化:选远离已有中心的点作新中心
  • 多次随机初始化取最佳
  • 选择合适 kk(肘部法则)

2.4 主成分分析 (PCA) ⭐

什么是 PCA?

  • 找一组新的变量(主成分),数量少于原变量,但保留样本大部分信息
  • “信息” = 样本中的变异/方差(由原变量间相关性体现)
  • 新变量互不相关,按保留信息量排序

PCA 目标

给定 dd 维空间的 nn 个点,找投影矩阵 P∈Rd×mP\in\mathbb{R}^{d\times m}(m≪dm\ll d):

x∈Rd→y=P⊤x∈Rmx\in\mathbb{R}^d\to y=P^\top x\in\mathbb{R}^m

两种等价准则(中心化后)

  1. 最大化投影方差 → 使投影后点尽可能分散(课件 p42)
  2. 最小化重构误差 → 使投影再重构的损失最小(课件 p43)

毕达哥拉斯定理 ⇒ 两者等价:投影方差最大化 ≡ 重构误差最小化。

1D 推导

数据中心化 xˉ=1n∑xi\bar x=\frac{1}{n}\sum x_i,令 xi′=xi−xˉx_i'=x_i-\bar x(则 xˉ′=0\bar x'=0)。

协方差矩阵 S=1n∑(xi−xˉ)(xi−xˉ)⊤S=\frac{1}{n}\sum(x_i-\bar x)(x_i-\bar x)^\top。

投影后的方差:1n∑(u1⊤xi′−u1⊤xˉ′)2=u1⊤Su1\frac{1}{n}\sum(u_1^\top x_i'-u_1^\top\bar x')^2=u_1^\top S u_1。

max⁡u1 u1⊤Su1s.t. u1⊤u1=1\max_{u_1}\ u_1^\top S u_1\quad\text{s.t.}\ u_1^\top u_1=1

拉格朗日法:L=u1⊤Su1+λ1(1−u1⊤u1)L=u_1^\top S u_1+\lambda_1(1-u_1^\top u_1) → ∂L∂u1=Su1−λ1u1=0\frac{\partial L}{\partial u_1}=S u_1-\lambda_1 u_1=0 → Su1=λ1u1S u_1=\lambda_1 u_1。

⇒ u1u_1 为 SS 的最大特征值 λ1\lambda_1 对应的特征向量,且 u1⊤Su1=λ1u1⊤u1=λ1u_1^\top S u_1=\lambda_1 u_1^\top u_1=\lambda_1。

第 2 主成分及后续

u2=arg⁡max⁡uu⊤Sus.t. u⊤u=1, u⊤u1=0u_2=\arg\max_{u} u^\top S u\quad\text{s.t.}\ u^\top u=1,\ u^\top u_1=0

即 u2u_2 为 SS 第二大特征值对应特征向量。依此类推,各主成分相互正交。

⭐ PCA 算法步骤

  1. 数据中心化:xi′←xi−xˉx_i'\leftarrow x_i-\bar x
  2. 计算协方差矩阵 S=1n∑xi′xi′⊤S=\frac{1}{n}\sum x_i' x_i'^\top(或矩阵形式 S=1nXX⊤S=\frac{1}{n}XX^\top,X=[x1′,…,xn′]X=[x_1',\dots,x_n'])
  3. 对 SS 特征分解 Sui=λiuiS u_i=\lambda_i u_i,取前 mm 个最大特征值对应特征向量
  4. 构造投影矩阵 P=[u1,…,um]∈Rd×mP=[u_1,\dots,u_m]\in\mathbb{R}^{d\times m}
  5. 投影:y=P⊤xy=P^\top x;重构:x^=PP⊤x\hat x=PP^\top x

保留方差比例

∑i=1mλi∑i=1dλi\frac{\sum_{i=1}^{m}\lambda_i}{\sum_{i=1}^{d}\lambda_i}

⭐ PCA 最优性定理(课件 p52-53)

PCA 在所有大小为 mm 的线性投影中,使重构误差最小。

min⁡P∑i=1n∑j=1d(xij−x^ij)2  ⟺  max⁡Ptrace(X⊤PP⊤X)\min_P \sum_{i=1}^n\sum_{j=1}^d (x_{ij}-\hat x_{ij})^2\;\Longleftrightarrow\; \max_P \text{trace}(X^\top PP^\top X)

用 trace 性质可证,最优 PP 由 SS 前 mm 个特征向量构成。

核 PCA / 非线性降维

关键发现(课件 p55-56):特征向量 uu 满足 u=1nλ∑i(xi⊤u)xiu=\frac{1}{n\lambda}\sum_i(x_i^\top u)x_i,可知特征向量位于数据张成的空间内。

⇒ 可用核函数 k(xi,xj)=ϕ(xi)⊤ϕ(xj)k(x_i,x_j)=\phi(x_i)^\top\phi(x_j) 替代内积,实现非线性 PCA,无需显式计算 ϕ\phi。

Isomap、LLE、Laplacian eigenmap 等非线性降维方法可视为特殊核的核 PCA(课件 p58)。


2.5 混合高斯 GMM 与 EM(补充)⭐

GMM

p(x)=∑c=1Kπc N(x∣μc,Σc),∑cπc=1p(x)=\sum_{c=1}^{K}\pi_c\,\mathcal{N}(x\mid\mu_c,\Sigma_c),\quad\sum_c\pi_c=1

引入隐变量 z∈{1,…,K}z\in\{1,\dots,K\} 表示 xx 来自哪个成分。

⭐ EM 算法

E 步(软分配):

γ(zic)=p(zi=c∣xi)=πcN(xi∣μc,Σc)∑jπjN(xi∣μj,Σj)\gamma(z_{ic})=p(z_i=c\mid x_i)=\dfrac{\pi_c\mathcal{N}(x_i\mid\mu_c,\Sigma_c)}{\sum_j\pi_j\mathcal{N}(x_i\mid\mu_j,\Sigma_j)}

M 步(最大化完整数据对数似然期望 QQ):

μc=∑iγicxi∑iγic,Σc=∑iγic(xi−μc)(xi−μc)⊤∑iγic,πc=1n∑iγic\mu_c=\frac{\sum_i\gamma_{ic}x_i}{\sum_i\gamma_{ic}},\quad \Sigma_c=\frac{\sum_i\gamma_{ic}(x_i-\mu_c)(x_i-\mu_c)^\top}{\sum_i\gamma_{ic}},\quad \pi_c=\frac{1}{n}\sum_i\gamma_{ic}

  • EM 单调提升对数似然
  • 收敛到局部最优(非凸)
  • ⭐ K-means 可视为硬分配 + 球形等协方差 GMM 的 EM 特例


Ch13 神经网络与深度学习 (Neural Networks & Deep Learning)

课件:lec13.pdf (179 页)
教材:Artificial Intelligence: A Modern Approach Ch21;建议配套《动手学深度学习》
教师:吉建民,USTC


0. 本章概述

从"机器学习 ≈ 寻找一个函数"出发,深度学习用多层非线性变换自动学习特征表示。本章覆盖前馈神经网络、反向传播、训练技巧(Dropout/BN/初始化)、CNN(卷积/池化/经典结构)、RNN/LSTM/GRU(序列建模/门控机制)、Transformer(自注意力/位置编码)以及优化器(SGD/Momentum/Adam)。

子主题 核心 重要程度
深度学习三步骤 网络结构 → 损失 → 梯度下降 ⭐⭐⭐
激活函数 Sigmoid/Tanh/ReLU/Leaky/ELU/Softmax ⭐⭐⭐
前馈与反向传播 (BP) 链式法则、δ 递推、参数梯度 ⭐⭐⭐
训练技巧 梯度消失/爆炸对策、Dropout、BN、初始化 ⭐⭐⭐
CNN 局部连接/权重共享/池化;LeNet→ResNet ⭐⭐⭐
RNN / LSTM / GRU 时间展开/BPTT/三门/记忆层次 ⭐⭐⭐
Transformer / 自注意力 Scaled Dot-Product / Multi-Head / 位置编码 ⭐⭐
优化器 SGD / Momentum / RMSProp / Adam ⭐⭐⭐

5.1 深度学习简介

ML = 寻找一个函数

传统 ML 流水线:输入 → 特征工程(人工设计) → 模型。特征表达决定准确性,但极度耗费人工。

⭐ 深度学习 = 自动特征学习 (Unsupervised Feature Learning / Representation Learning):

y=fL(fL−1(⋯f1(x)⋯ ))y=f_L(f_{L-1}(\cdots f_1(x)\cdots))

多层非线性逐层抽象,端到端学习。

⭐ 深度学习三步骤

步骤 名称 内容
① 定义函数集 / 网络结构 确定网络结构 + 参数化函数族 {fθ}\{f_\theta\}(Neural Network)
② 评价函数优劣 定义损失 L(θ)L(\theta)(Goodness of Function)
③ 选出最优函数 梯度下降 θ∗=arg⁡min⁡θL(θ)\theta^*=\arg\min_\theta L(\theta)(Pick the Best Function)

为什么"深"

  • 通用近似定理 (Universal Approximation):足够宽的单隐层前馈网可任意逼近紧支集上的任意连续函数——但不保证可学习性。
  • 深度的好处:模块化 / 层次化 (Modularization):同等表达力下深而窄比浅而宽参数更少、更高效(课件 p19 类比:电路设计中模块复用 vs 全展开)。

5.2 前馈神经网络与反向传播

神经元 / 感知机 (Perceptron)

z=w⊤x+b,a=f(z)z=w^\top x+b,\quad a=f(z)

感知机 y=sign(w⊤x+b)y=\text{sign}(w^\top x+b) 是线性分类器,不能解 XOR。

⭐ 激活函数 (Activation Functions)

激活函数曲线对比图见 activation_functions.png
导数对比图见 activation_derivatives.png

名称 公式 导数 优点 缺点
Sigmoid σ(x)=11+e−x\sigma(x)=\dfrac{1}{1+e^{-x}} σ′(x)=σ(x)(1−σ(x))\sigma'(x)=\sigma(x)(1-\sigma(x)) 输出 (0,1)(0,1) 可作概率 饱和区梯度趋 0(梯度消失);非零均值
Tanh tanh⁡(x)=ex−e−xex+e−x\tanh(x)=\dfrac{e^x-e^{-x}}{e^x+e^{-x}} tanh⁡′(x)=1−tanh⁡2(x)\tanh'(x)=1-\tanh^2(x) 零均值 仍饱和,梯度消失
ReLU max⁡(0,x)\max(0,x) 11 if x>0x>0 else 00 缓解梯度消失、计算快、稀疏激活 负区"死神经元"(Dead ReLU)
Leaky ReLU max⁡(αx,x)\max(\alpha x,x),α≪1\alpha\ll1 11 if x>0x>0 else α\alpha 解决死神经元 需选 α\alpha
PReLU 同上,α\alpha 可学习 — 自适应 增加参数量
ELU xx if x>0x>0 else α(ex−1)\alpha(e^x-1) — 负区平滑、近零均值 含 exp 计算
Softmax(输出层) ezi∑jezj\dfrac{e^{z_i}}{\sum_j e^{z_j}} — 多分类概率化 —

饱和性定义(课件 p62)

类型 定义 示例
软饱和 lim⁡x→∞f′(x)=0\lim_{x\to\infty}f'(x)=0 Sigmoid, Tanh
硬饱和 f′(x)=0f'(x)=0 当 $ x

饱和 → 导数趋 0 → 反向传播链式连乘 → 梯度消失。

⭐ 激活函数导数推导

σ′(x)=ddx11+e−x=−1(1+e−x)2⋅(−e−x)=σ(x)2⋅1−σ(x)σ(x)=σ(x)(1−σ(x))\sigma'(x)=\frac{d}{dx}\frac{1}{1+e^{-x}}=-\frac{1}{(1+e^{-x})^2}\cdot(-e^{-x})=\sigma(x)^2\cdot\frac{1-\sigma(x)}{\sigma(x)}=\sigma(x)(1-\sigma(x))

tanh⁡′(x)=ddxex−e−xex+e−x=1−tanh⁡2(x)\tanh'(x)=\frac{d}{dx}\frac{e^x-e^{-x}}{e^x+e^{-x}}=1-\tanh^2(x)

⭐ 前向传播 (Forward)

第 ll 层:

z(l)=W(l)a(l−1)+b(l),a(l)=fl(z(l))z^{(l)}=W^{(l)}a^{(l-1)}+b^{(l)},\quad a^{(l)}=f_l(z^{(l)})

其中 a(0)=xa^{(0)}=x,W(l)∈Rml×ml−1W^{(l)}\in\mathbb{R}^{m_l\times m_{l-1}},b(l)∈Rmlb^{(l)}\in\mathbb{R}^{m_l}。最后一层 a(L)=y^a^{(L)}=\hat y 为输出。

输出层设计(课件 p22)

任务 输出层激活 损失
二分类 Sigmoid (1 输出) BCE
多分类 Softmax (KK 输出) Categorical CE
回归 线性 (无激活) MSE

⭐ 损失与正则化

J(W,b;x,y)=L(y^,y)+λ∥W∥F2J(W,b;x,y)=\mathcal{L}(\hat y,y)+\lambda\|W\|_F^2

其中 Frobenius 范数(课件 p41):

∥W∥F2=∑l=1L∑i=1ml∑j=1ml−1(Wij(l))2\|W\|_F^2=\sum_{l=1}^{L}\sum_{i=1}^{m_l}\sum_{j=1}^{m_{l-1}}(W^{(l)}_{ij})^2

常用损失:

损失 公式 使用场景
MSE 12∣y^−y∣2\frac{1}{2}|\hat y-y|^2 回归
Cross-Entropy −∑kyklog⁡y^k-\sum_k y_k\log\hat y_k 配 Softmax 多分类
BCE −[ylog⁡y^+(1−y)log⁡(1−y^)]-[y\log\hat y+(1-y)\log(1-\hat y)] 配 Sigmoid 二分类

⭐ 反向传播 (Backpropagation, BP)

核心:链式法则 + 自动微分。现代框架 (TensorFlow 2.0, PyTorch, MindSpore) 自动完成,但须理解原理。

输出层误差项(课件 p46)

δjL=∂J∂zjL=∂J∂ajL fL′(zjL)\delta_j^{L}=\frac{\partial J}{\partial z_j^{L}}=\frac{\partial J}{\partial a_j^{L}}\,f_L'(z_j^{L})

用对角矩阵 diag(fL′(z(L)))\text{diag}(f_L'(z^{(L)})) 批量表示:

δ(L)=∇a(L)J⊙fL′(z(L))\boldsymbol{\delta}^{(L)}=\nabla_{a^{(L)}}J\odot f_L'(z^{(L)})

⭐ 误差反向递推(BP 核心公式)

第 ll 层误差由第 l+1l+1 层算得:

  δ(l)=((W(l+1))⊤δ(l+1))⊙fl′(z(l))  \boxed{\;\boldsymbol{\delta}^{(l)}=\bigl((W^{(l+1)})^\top\boldsymbol{\delta}^{(l+1)}\bigr)\odot f_l'(z^{(l)})\;}

物理含义:第 ll 层误差 = 所有相连的第 l+1l+1 层误差项加权和 × 本层激活函数梯度(课件 p47-48)。

参数梯度

∂J∂W(l)=δ(l)(a(l−1))⊤,∂J∂b(l)=δ(l)\frac{\partial J}{\partial W^{(l)}}=\boldsymbol{\delta}^{(l)}(a^{(l-1)})^\top,\qquad\frac{\partial J}{\partial b^{(l)}}=\boldsymbol{\delta}^{(l)}

训练三步走

  1. 前馈:算各层 z(l),a(l)z^{(l)},a^{(l)}
  2. 反向:算各层 δ(l)\delta^{(l)}(从 LL 往 1 递推)
  3. 更新:梯度 × 学习率修改 W,bW,b

5.3 训练技巧 (Tips for Deep Learning)

过拟合对策

方法 说明
更多数据 / 数据增强 翻转、裁剪、缩放、加噪、MixUp
L2 正则化(权重衰减) λ∣W∣F2\lambda|W|_F^2
Dropout 训练随机失活,推理全开
早停 (Early Stopping) 验证误差回升即停
减模型复杂度 减层/减神经元

⭐ 梯度消失 (Vanishing) 与梯度爆炸 (Exploding)

课件 p62-64:Sigmoid 导数最大值 0.25,多层连乘 ⇒ 指数衰减。爆炸则相反(权重过大或导数 >1 连乘)。

现象 原因 后果
消失 Sigmoid/Tanh 饱和区导数→0,连乘层层衰减 深层学不动,浅层先收敛
爆炸 权重过大或激活导数 >1,连乘指数增长 参数震荡发散

五大对策 ⭐

对策 原理
① ReLU 正区导数恒为 1,不衰减
② Xavier / He 初始化 保持各层方差一致
③ Batch Normalization 归一化层输入,稳定分布
④ 残差连接 (ResNet) y=F(x)+xy=F(x)+x 提供梯度直通捷径
⑤ 梯度裁剪 (Gradient Clipping) RNN 常用,限制梯度模长

权重初始化

  • 全 0 不可行:所有神经元对称,学不到不同特征。
方法 适用 公式
Xavier / Glorot Sigmoid / Tanh W∼U ⁣[−6nin+nout,6nin+nout]W\sim U\!\left[-\sqrt{\frac{6}{n_{in}+n_{out}}},\sqrt{\frac{6}{n_{in}+n_{out}}}\right],Var(W)=2nin+nout\text{Var}(W)=\frac{2}{n_{in}+n_{out}}
He ReLU Var(W)=2nin\text{Var}(W)=\frac{2}{n_{in}},补偿 ReLU 砍掉一半激活

核心目标:保持前向传播和反向传播的方差在各层一致(防止放大或缩小)。

⭐ Batch Normalization (BN)

对每个 mini-batch 的每特征归一化 + 可学习缩放平移:

z^=z−μBσB2+ϵ,z~=γz^+β\hat z=\frac{z-\mu_B}{\sqrt{\sigma_B^2+\epsilon}},\qquad\tilde z=\gamma\hat z+\beta

阶段 统计量来源
训练 使用当前 batch 的 μB,σB2\mu_B,\sigma_B^2
推理 使用训练阶段累积的移动平均 μ,σ2\mu,\sigma^2

作用:缓解内部协变量偏移 (Internal Covariate Shift);允许更大学习率;降低初始化敏感性;轻微正则化效果。

⭐ Dropout

阶段 行为
训练 以概率 pp 随机将神经元输出置 0(每次迭代不同 mask)
推理 全开,无 mask

Inverted Dropout:训练时对保留激活乘 11−p\frac{1}{1-p},推理无需改动 → 保证训练和推理时激活的期望一致。

直觉:每个 mask 配置相当于一个子网络,Dropout 训练等价于集成指数级多的子网络;迫使神经元不依赖个别特征,提升鲁棒性。

Mini-batch SGD / 局部最优

  • Mini-batch 折中:比批量 GD 快、噪声助逃局部最优;比纯 SGD 稳、可 GPU 并行。
  • 高维损失面中鞍点远多于真局部最小(课件 p33-34);动量、自适应学习率、mini-batch 噪声有助于逃离鞍点。

5.4 卷积神经网络 (CNN) ⭐

全连接处理图像两大问题

  1. 参数过多:100×100×3=30,000100\times100\times3=30,000 输入,第一隐层每个神经元需 30,000 权重 → 易过拟合且计算量大(课件 p89)
  2. 局部不变性特征(平移/缩放/旋转):全连接难以高效提取

⭐ CNN 三大核心思想

思想 说明
局部连接 (Local Connectivity) 每神经元只连上层一个局部区域(感受野)
权重共享 (Parameter Sharing) 同一卷积核整张图滑动复用 ⇒ 大幅减参 + 平移等变性
池化 (Pooling / Subsampling) 下采样降分辨率、扩大感受野、提升平移不变性

⭐ 卷积运算

Yi,j=∑u=0k−1∑v=0k−1Xi+u,j+v Wu,v+bY_{i,j}=\sum_{u=0}^{k-1}\sum_{v=0}^{k-1}X_{i+u,j+v}\,W_{u,v}+b

核心参数:

参数 说明
卷积核大小 kk kh×kwk_h\times k_w,控制感受野
步长 stride ss 滑动步长
填充 padding pp valid(缩小输出)/ same(保尺寸)
输出尺寸 O=⌊I−k+2ps⌋+1O=\left\lfloor\dfrac{I-k+2p}{s}\right\rfloor+1

多通道:卷积核深度 = 输入通道数;多个卷积核 ⇒ 多个特征图 (Feature Map)。

扩展卷积类型(课件 p100-111)

类型 说明
空洞卷积 (Dilated) 在卷积核元素间插入空洞,扩大感受野不增参
转置卷积 (Transposed) 上采样/解码器用
深度可分离卷积 (Depthwise Separable) MobileNet 用,先逐通道再逐点

池化层(课件 p112-113)

类型 公式
最大池化 Ym,nd=max⁡i∈Rm,ndxiY_{m,n}^d=\max_{i\in R_{m,n}^d} x_i
平均池化 $Y_{m,n}^d=\frac{1}{

降维、平移不变性、无学习参数。

典型 CNN 结构

网络 年份 关键贡献
LeNet-5 (LeCun) 1998 CNN 开山之作,MNIST 手写数字;Conv-Pool-Conv-Pool-FC-FC
AlexNet (Krizhevsky/Hinton) 2012 首次大规模 ReLU + Dropout + GPU,ImageNet 突破
VGGNet (牛津) 2014 16/19 层,统一 3×33\times3 小卷积堆叠
Inception/GoogLeNet 2014 Inception 模块,多尺度并行卷积
ResNet (何恺明) 2015 残差连接 y=F(x)+xy=F(x)+x,解决深网训练难题 → 152 层可训

ResNet 残差连接:将目标从"直接学 H(x)H(x)“变为"学残差 F(x)=H(x)−xF(x)=H(x)-x”,提供了梯度直通捷径,使超深网络可训练。


5.5 循环神经网络 (RNN) / LSTM / GRU ⭐

为什么需要 RNN

  • 前馈网络输入输出定长,无法处理变长序列(文本、语音、时序)。
  • RNN 图灵完备(Siegelmann & Sontag, 1995),可模拟任意程序。
  • 通过隐藏状态 (hidden state) hth_t 传递历史信息。

⭐ 按时间展开 + BPTT

ht=f(Whhht−1+Wxhxt+bh),yt=g(Whyht+by)h_t=f(W_{hh}h_{t-1}+W_{xh}x_t+b_h),\qquad y_t=g(W_{hy}h_t+b_y)

  • 同一组参数在所有时间步共享。
  • 展开后视为沿时间轴的深层网络,用 BPTT (Backpropagation Through Time) 训练。

⭐ 梯度消失/爆炸(长期依赖问题)

BPTT 梯度沿时间连乘 ∏t∂ht∂ht−1\prod_t\frac{\partial h_t}{\partial h_{t-1}}:

  • 若每个因子模 <1<1 → 指数衰减 → 梯度消失 → 无法学习长程依赖
  • 若每个因子模 >1>1 → 指数增长 → 梯度爆炸

课件 p139:即使改成 ht=ht−1+g(xt,ht−1;θ)h_t=h_{t-1}+g(x_t,h_{t-1};\theta)(线性通路+非线性增量),梯度可恒为 1,但容量有限易饱和,需要选择性遗忘/更新 → LSTM。

⭐ LSTM(长短时记忆)

两点关键设计:

  1. 内部状态 ctc_t (cell state):线性循环通路,梯度可顺畅流动
  2. 门控机制 (gating):三个门 ∈(0,1)\in(0,1) 控制信息比例
门 公式 作用
遗忘门 ftf_t σ(Wf[xt,ht−1]+bf)\sigma(W_f[x_t,h_{t-1}]+b_f) 控制 ct−1c_{t-1} 保留多少
输入门 iti_t σ(Wi[xt,ht−1]+bi)\sigma(W_i[x_t,h_{t-1}]+b_i) 控制候选状态写入多少
输出门 oto_t σ(Wo[xt,ht−1]+bo)\sigma(W_o[x_t,h_{t-1}]+b_o) 控制 ctc_t 输出给 hth_t 多少

⭐ LSTM 核心公式:

ft=σ(Wf[xt,ht−1]+bf)(遗忘门)it=σ(Wi[xt,ht−1]+bi)(输入门)c~t=tanh⁡(Wc[xt,ht−1]+bc)(候选状态)ct=ft⊙ct−1+it⊙c~t(细胞状态更新)ot=σ(Wo[xt,ht−1]+bo)(输出门)ht=ot⊙tanh⁡(ct)(外部隐藏状态)\begin{aligned} f_t&=\sigma(W_f[x_t,h_{t-1}]+b_f) &\text{(遗忘门)}\\ i_t&=\sigma(W_i[x_t,h_{t-1}]+b_i) &\text{(输入门)}\\ \tilde c_t&=\tanh(W_c[x_t,h_{t-1}]+b_c) &\text{(候选状态)}\\ c_t&=f_t\odot c_{t-1}+i_t\odot\tilde c_t &\text{(细胞状态更新)}\\ o_t&=\sigma(W_o[x_t,h_{t-1}]+b_o) &\text{(输出门)}\\ h_t&=o_t\odot\tanh(c_t) &\text{(外部隐藏状态)} \end{aligned}

记忆层次(课件 p143)

记忆类型 载体 特性
短期记忆 hth_t(隐藏状态) 每次更新,变化快
长期记忆 网络参数 W,bW,b 训练后固定
Long Short-Term ctc_t(细胞状态) 线性通路跨时间流动,选择性遗忘/写入 → 介于短/长期之间

⭐ GRU(门控循环单元)

简化 LSTM:合并遗忘门+输入门为更新门 ztz_t,合并 cc 与 hh,加重置门 rtr_t:

zt=σ(Wz[xt,ht−1]),rt=σ(Wr[xt,ht−1])z_t=\sigma(W_z[x_t,h_{t-1}]),\quad r_t=\sigma(W_r[x_t,h_{t-1}])

h~t=tanh⁡(W[xt,rt⊙ht−1]),ht=(1−zt)⊙ht−1+zt⊙h~t\tilde h_t=\tanh(W[x_t,r_t\odot h_{t-1}]),\quad h_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde h_t

  • 参数更少、训练更快,效果与 LSTM 相当。

RNN 变体

变体 说明
堆叠 RNN (Multi-layer) 多层串联提升表达力
双向 RNN (BiRNN / BiLSTM) 同时正向反向,拼接两方向隐藏状态,利用上下文,NLP 常用

5.6 注意力机制与 Transformer ⭐

Transformer 是继 MLP、CNN、RNN 之后的第 4 大类模型(Vaswani et al., “Attention is All You Need”, NeurIPS 2017)。

Transformer Encoder 每层结构(课件 p151)

每层两个子层:

  1. 多头自注意力 (Multi-Head Self-Attention)
  2. 逐位前馈网络 (Position-wise FFN):FFN(x)=max⁡(0,xW1+b1)W2+b2\text{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2

每个子层都加 残差连接 + 层归一化 (Layer Normalization):

output=LayerNorm(x+Sublayer(x))\text{output}=\text{LayerNorm}(x+\text{Sublayer}(x))

输入输出维度相同(dmodeld_{model}),便于堆叠多层。

⭐ Scaled Dot-Product Attention

  Attention(Q,K,V)=softmax ⁣(QK⊤dk)V  \boxed{\;\text{Attention}(Q,K,V)=\text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\;}

矩阵 维度 含义
QQ (Query) n×dkn\times d_k 查询,我要找什么
KK (Key) m×dkm\times d_k 键,我有什么标签
VV (Value) m×dvm\times d_v 值,实际内容
  • QK⊤QK^\top 计算查询与所有键的相似度得分(n×mn\times m 矩阵)
  • dk\sqrt{d_k} 缩放:防止 dkd_k 大时内积过大 → softmax 饱和 → 梯度变小
  • softmax 行归一化为注意力权重
  • 权重 × VV 得加权输出

⭐ Multi-Head Attention

headi=Attention(QWiQ,KWiK,VWiV)\text{head}_i=\text{Attention}(QW_i^Q,KW_i^K,VW_i^V)

MultiHead=Concat(head1,…,headh)WO\text{MultiHead}=\text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O

hh 个注意力头各自学习不同的投影/相似度模式,可一次大矩阵乘法高效并行计算。

多头注意力三种用法(课件 p154)

用法 QQ KK VV 说明
Encoder 自注意力 Encoder 输入 Encoder 输入 Encoder 输入 Q=K=VQ=K=V,每位置关注所有位置
Decoder Masked 自注意力 Decoder 输入 Decoder 输入 Decoder 输入 对"未来"位置加 −∞-\infty(softmax→0),因果掩码
Decoder Cross-Attention Decoder 输出 Encoder 输出 Encoder 输出 QQ 来自 Decoder,K,VK,V 来自 Encoder

⭐ 位置编码 (Positional Encoding)

Attention 对输入置换不变 ⇒ 需显式注入位置信息:

PE(pos,2i)=sin⁡ ⁣(pos100002i/dmodel),PE(pos,2i+1)=cos⁡ ⁣(pos100002i/dmodel)PE_{(pos,2i)}=\sin\!\left(\frac{pos}{10000^{2i/d_{model}}}\right),\quad PE_{(pos,2i+1)}=\cos\!\left(\frac{pos}{10000^{2i/d_{model}}}\right)

输出范围 [−1,1][-1,1],不同频率的正弦/余弦编码不同位置。

应用要点与变体

模型 架构 特点
BERT Transformer Encoder Mask 完形填空式自监督,学双向语言模型
GPT Autoregressive Decoder 每 token 基于前文预测,单向语言模型
ViT Transformer Encoder 图像分 patch 作 token
CLIP / GPT-4 多模态 Transformer 图文联合理解

RNN 串行 → Transformer 可并行化;但 attention 先验假设少 ⇒ 需更多数据 + 更大模型(课件 p156)。


5.7 优化器 (Optimizers) ⭐

SGD

θt+1=θt−η gt,gt=∇θL(θt)\theta_{t+1}=\theta_t-\eta\,g_t,\quad g_t=\nabla_\theta L(\theta_t)

⭐ Momentum

历史梯度指数加权移动平均(“惯性”):

vt=βvt−1+η gt,θt+1=θt−vt(β≈0.9)v_t=\beta v_{t-1}+\eta\,g_t,\quad\theta_{t+1}=\theta_t-v_t\quad(\beta\approx 0.9)

帮助穿过平坦区域和逃离局部最优/鞍点(课件 p79-82)。

Adagrad(课件 p71)

Gt=Gt−1+gt⊙gt,θt+1=θt−ηGt+ϵ⊙gtG_t=G_{t-1}+g_t\odot g_t,\quad\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{G_t+\epsilon}}\odot g_t

  • 稀疏特征获更大学习率
  • 但 GtG_t 单调递增 ⇒ 学习率持续衰减,后期过早停止

RMSProp

E[g2]t=ρE[g2]t−1+(1−ρ)gt2,θt+1=θt−ηE[g2]t+ϵ⊙gt(ρ≈0.9)E[g^2]_t=\rho E[g^2]_{t-1}+(1-\rho)g_t^2,\quad\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{E[g^2]_t+\epsilon}}\odot g_t\quad(\rho\approx 0.9)

  • 指数加权代替 Adagrad 的累积和
  • 解决学习率单调下降问题

⭐ Adam(Adaptive Moment Estimation)

结合 Momentum(一阶矩)+ RMSProp(二阶矩)+ 偏差校正:

mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)gt2m_t=\beta_1 m_{t-1}+(1-\beta_1)g_t,\quad v_t=\beta_2 v_{t-1}+(1-\beta_2)g_t^2

m^t=mt1−β1t,v^t=vt1−β2t\hat m_t=\frac{m_t}{1-\beta_1^t},\quad\hat v_t=\frac{v_t}{1-\beta_2^t}

  θt+1=θt−ηv^t+ϵ⊙m^t  \boxed{\;\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{\hat v_t}+\epsilon}\odot\hat m_t\;}

超参数 典型值 含义
β1\beta_1 0.9 一阶矩衰减率
β2\beta_2 0.999 二阶矩衰减率
ϵ\epsilon 10−810^{-8} 数值稳定
η\eta 0.001 学习率

收敛快、对学习率不敏感,深度学习最常用优化器。

偏差校正:由于 m0=v0=0m_0=v_0=0,初期估计偏小,除以 1−βt1-\beta^t 修正。


5.8 损失函数与正则化方法汇总 ⭐

损失函数

任务 损失 公式
回归 MSE 1N∑∣y^−y∣2\frac{1}{N}\sum|\hat y-y|^2
二分类 BCE −[ylog⁡y^+(1−y)log⁡(1−y^)]-[y\log\hat y+(1-y)\log(1-\hat y)]
多分类 Categorical CE(配 Softmax) −∑kyklog⁡y^k-\sum_k y_k\log\hat y_k

正则化方法对比

方法 机制 训练/推理差异
L2 权重衰减 λ∣W∣F2\lambda|W|_F^2 加在损失中 无差异
Dropout 随机失活 + inverted dropout 训练用 mask,推理全开
Batch Normalization 归一化每层输入 训练用 batch 统计,推理用移动平均
Layer Normalization 沿特征维归一化(不依赖 batch) 训练推理一致(Transformer/RNN 用)
数据增强 翻转/裁剪/颜色抖动 仅训练
早停 验证误差回升即停 —

6. 公式速查

名称 公式
Sigmoid σ(x)=1/(1+e−x)\sigma(x)=1/(1+e^{-x}),σ′=σ(1−σ)\sigma'=\sigma(1-\sigma)
Tanh tanh⁡(x)\tanh(x),tanh⁡′=1−tanh⁡2\tanh'=1-\tanh^2
ReLU max⁡(0,x)\max(0,x),导数 1(x>0)1(x>0) else 00
Softmax ezi/∑jezje^{z_i}/\sum_j e^{z_j}
前馈 a(l)=fl(W(l)a(l−1)+b(l))a^{(l)}=f_l(W^{(l)}a^{(l-1)}+b^{(l)})
BP 递推 δ(l)=((W(l+1))⊤δ(l+1))⊙fl′(z(l))\boldsymbol{\delta}^{(l)}=((W^{(l+1)})^\top\boldsymbol{\delta}^{(l+1)})\odot f_l'(z^{(l)})
参数梯度 ∂J/∂W(l)=δ(l)(a(l−1))⊤\partial J/\partial W^{(l)}=\boldsymbol{\delta}^{(l)}(a^{(l-1)})^\top,∂J/∂b(l)=δ(l)\partial J/\partial b^{(l)}=\boldsymbol{\delta}^{(l)}
Frobenius 范数 ∣W∣F2=∑l∑i,j(Wij(l))2|W|_F^2=\sum_l\sum_{i,j}(W^{(l)}_{ij})^2
Xavier 初始化 Var(W)=2/(nin+nout)\text{Var}(W)=2/(n_{in}+n_{out})
He 初始化 Var(W)=2/nin\text{Var}(W)=2/n_{in}
BN z~=γz−μBσB2+ϵ+β\tilde z=\gamma\frac{z-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta
卷积输出尺寸 O=⌊(I−k+2p)/s⌋+1O=\lfloor(I-k+2p)/s\rfloor+1
LSTM ct=ft⊙ct−1+it⊙c~tc_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t,ht=ot⊙tanh⁡(ct)h_t=o_t\odot\tanh(c_t)
GRU ht=(1−zt)⊙ht−1+zt⊙h~th_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde h_t
Scaled Dot-Product softmax(QK⊤/dk)V\text{softmax}(QK^\top/\sqrt{d_k})V
Multi-Head Concat(head1,…,headh)WO\text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O
位置编码 PEpos,2i=sin⁡(pos/100002i/d)PE_{pos,2i}=\sin(pos/10000^{2i/d}),PEpos,2i+1=cos⁡(pos/100002i/d)PE_{pos,2i+1}=\cos(pos/10000^{2i/d})
Momentum vt=βvt−1+ηgtv_t=\beta v_{t-1}+\eta g_t
RMSProp E[g2]t=ρE[g2]t−1+(1−ρ)gt2E[g^2]_t=\rho E[g^2]_{t-1}+(1-\rho)g_t^2
Adam θt+1=θt−ηv^t+ϵ⊙m^t\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{\hat v_t}+\epsilon}\odot\hat m_t



📋 本章速览补充:以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。

机器学习与深度学习大抄

复习权重:经典机器学习必考,尤其是决策树、kNN、最小二乘、K-Means、SVM;逻辑回归中高概率;深度学习有概率考,重点掌握前馈网络、BP、CNN,RNN/Attention 属于隔壁班补充。

目录:0. 一句话主线 · 1. 任务总览 · 2. 泛化主线 · 3. 决策树 · 4. kNN · 5. 线性预测和最小二乘 · 6. 逻辑回归 · 7. SVM · 8. 核方法 · 9. K-Means · 10. PCA · 11. PAC 学习 · 12. 神经网络 · 13. CNN · 14. RNN 和 Attention · 16. 常考证明和计算模板 · 17. 判断题速查 · 18. 最后一页压缩版 · 19. 线性代数速补

方法总览:

方法 输入 输出 核心模型 目标/准则 重点题型
决策树 带标签属性样本 类别 属性测试树 最大信息增益 熵、信息增益、过拟合判断
kNN 训练样本和新样本 类别或数值 最近邻投票/平均 距离最小 k 影响、边界识别
最小二乘 X,yX, y 参数 ww XwXw 最小平方误差 闭式解、加权/正则推导
逻辑回归 x,y∈{0,1}x, y \in \{0,1\} 概率 σ(wTx+b)\sigma(w^T x + b) 最大似然/交叉熵 sigmoid、log odds、梯度
SVM x,y∈{−1,+1}x, y \in \{-1,+1\} 分类超平面 sign(wTx+b)\text{sign}(w^T x + b) 最大间隔 手算超平面、对偶、核
K-Means 无标签样本 簇和中心 最近中心分配 最小类内平方和 中心更新、收敛证明
PCA 无标签高维样本 低维表示 主成分投影 最大方差/最小重构误差 去噪、步骤
神经网络 向量/图像/序列 按任务而定 多层复合函数 损失最小 BP、激活、CNN 概念

0. 一句话主线:学习就是用数据选择函数

机器学习题目基本都可以按同一条链理解:

数据→特征表示→模型/假设空间→损失函数→优化算法→泛化评估\text{数据} \to \text{特征表示} \to \text{模型/假设空间} \to \text{损失函数} \to \text{优化算法} \to \text{泛化评估}

也就是课件反复出现的框架:

Learning=Representation+Evaluation+Optimization\text{Learning} = \text{Representation} + \text{Evaluation} + \text{Optimization}

其中:

  • Representation:用什么函数表示规律,例如决策树、线性函数、SVM、神经网络。
  • Evaluation:用什么标准评价函数好坏,例如信息增益、平方误差、交叉熵、hinge loss。
  • Optimization:怎样找到最优函数,例如递归划分、闭式解、梯度下降、二次规划。

1. 任务总览:输入、输出和学习目标

1.1 机器学习定义:用经验改进任务表现

Tom Mitchell 定义:若一个程序在任务 TT 上,随着经验 EE 的积累,其性能度量 PP 提高,则称该程序从经验 EE 中学习。

搜索引擎例子:

  • TT:对用户查询返回有序网页列表。
  • EE:用户点击、停留、跳出等行为记录。
  • PP:排序准确率、用户满意度或点击相关性。

1.2 样本和特征:机器能处理的是向量

一个对象或实例通常表示为特征向量:x=(x1,x2,…,xd)∈Rdx = (x_1, x_2, \dots, x_d) \in \mathbb{R}^d。每个维度称为一个 feature/attribute。特征可以是连续的,也可以是离散的。特征向量是对真实对象的抽象,只保留对任务有用的信息。

常见表示:

  • 文本:词袋向量、词频、词嵌入。
  • 图像:像素、颜色直方图、卷积特征。
  • 用户/账户:年龄、余额、信用评分、交易次数。

1.3 监督学习

有标签地学输入到输出的映射。训练数据 D={(xi,yi)}i=1nD = \{(x_i, y_i)\}_{i=1}^n,其中 xix_i 是输入特征,yiy_i 是期望输出。目标是学习函数 f:X→Yf: \mathcal{X} \to \mathcal{Y},使得新样本 xnewx_{\text{new}} 的预测 y^=f(xnew)\hat{y} = f(x_{\text{new}}) 尽可能正确。

  • 分类任务:输入样本特征 x∈Xx \in \mathcal{X};输出离散标签 y∈{1,…,K}y \in \{1, \dots, K\} 或 y∈{−1,+1}y \in \{-1, +1\}。含义:判断样本属于哪个类别,例如 spam/not spam、良性/恶性肿瘤。
  • 回归任务:输入样本特征 x∈Xx \in \mathcal{X};输出连续数值 y∈Ry \in \mathbb{R}。含义:预测一个数值,例如房价、温度、股票收益。

1.4 无监督学习

没有标签地发现结构。训练数据 D={xi}i=1nD = \{x_i\}_{i=1}^n,没有给定正确输出。目标不是拟合 x↦yx \mapsto y,而是发现数据内部结构。典型任务:

  • 聚类:输入样本集合,输出每个样本的簇编号。
  • 降维:输入高维向量,输出低维表示。
  • 密度估计:输入样本,输出数据分布模型。

1.5 半监督和自监督

半监督学习同时使用少量有标签数据和大量无标签数据。自监督学习从无标签数据中自动构造监督任务,例如遮住文本中的词再预测它。

1.6 学习智能体

学习智能体包含:

  • Performance element:直接执行任务的组件。
  • Learning element:根据经验改进 performance element。
  • Critic:根据反馈评价表现。
  • Problem generator:产生探索性行动,帮助智能体获得有价值经验。

设计 learning element 时要问:学习 performance element 的哪个部分?能获得什么反馈?用什么表示形式?

1.7 机器学习应用:概念题识别即可

课件列举的应用包括信息检索、机器翻译、计算机视觉、语音识别、金融预测、医学诊断、电影推荐等。这些例子共同说明:当规则难以手写、数据量很大、人工分析昂贵时,机器学习可以从经验中拟合模型或发现结构。

这些应用通常不考细节,但可能用来问 T,E,PT, E, P。答题时按 Mitchell 定义拆分:任务 TT 是系统要完成的预测或决策,经验 EE 是可获得的数据或反馈,性能 PP 是正确率、误差、排序质量、用户满意度等指标。

1.8 朴素贝叶斯:监督分类器中的概率基线

AI18/SVM 课件的监督学习列表中会把 Naive Bayes 和决策树、kNN、最小二乘分类放在一起。朴素贝叶斯的详细概率推理放在"概率与贝叶斯网络大抄",这里记住它作为分类器的输入输出和核心假设。

  • 输入:样本特征 x=(x1,…,xd)x = (x_1, \dots, x_d);类别标签 y∈{1,…,K}y \in \{1, \dots, K\}。
  • 输出:y^=arg⁡max⁡yP(y∣x)\hat{y} = \arg\max_y P(y \mid x)。用贝叶斯公式 P(y∣x)∝P(y)P(x∣y)P(y \mid x) \propto P(y)P(x \mid y)。
  • 朴素条件独立假设:P(x∣y)=∏j=1dP(xj∣y)P(x \mid y) = \prod_{j=1}^{d} P(x_j \mid y)
  • 所以分类规则:y^=arg⁡max⁡yP(y)∏j=1dP(xj∣y)\hat{y} = \arg\max_y P(y) \prod_{j=1}^{d} P(x_j \mid y)

2021 选择题常考:Naive Bayes 假设是在给定类别标签后,各属性条件独立。

2. 泛化主线:模型不是越复杂越好

2.1 三种误差:训练、测试、泛化

训练误差是模型在训练集上的错误:

Etrain=1n∑i=1nℓ(f(xi),yi)E_{\text{train}} = \frac{1}{n} \sum_{i=1}^{n} \ell(f(x_i), y_i)

测试误差是在独立测试集上的错误。泛化误差是模型在同分布新样本上的期望错误:

Egen=E(x,y)∼P[ℓ(f(x),y)]E_{\text{gen}} = \mathbb{E}_{(x,y) \sim P}[\ell(f(x), y)]

考试中"泛化好"指新样本表现好,不是只在训练集上表现好。

2.2 欠拟合、过拟合和奥卡姆剃刀

模型复杂度从低到高时,常见现象:

  • 太简单:欠拟合,训练误差和测试误差都高。
  • 适中:能抓住主要规律,测试误差最低。
  • 太复杂:过拟合,训练误差很低,测试误差升高。

奥卡姆剃刀原则:在解释数据能力相近时,优先选择更简单的假设。因为复杂模型更容易把噪声当规律。

2021 填空图常考:模型复杂度从低到高依次对应欠拟合、理想复杂度、过拟合。

2.3 训练集、验证集、测试集的分工

  • 训练集:用于学习参数。
  • 验证集:用于选模型结构和超参数,例如 kk、树深度、正则化系数 λ\lambda、SVM 的 CC。
  • 测试集:最后一次评估泛化能力,不应参与调参。

2.4 交叉验证:用数据稳定地选模型

交叉验证的直觉:如果模型过拟合,它对训练数据的细微变化会很敏感;拿掉一部分数据后,拟合结果会明显变化。

K 折交叉验证步骤:

  1. 把数据分成 K 份。
  2. 每次拿 K − 1 份训练,剩下 1 份验证。
  3. 重复 K 次,取平均验证误差。
  4. 选择平均验证误差最小的模型或超参数。

3. 决策树

用信息增益递归地问最有用的问题

3.1 任务与输入输出

决策树主要用于分类,也可扩展到回归树。

  • 输入:属性向量 x=(x1,…,xd)x = (x_1, \dots, x_d),属性可以是布尔、离散或连续。
  • 输出:类别标签 yy。
  • 学到的东西:一棵树。内部节点测试属性,分支对应属性取值,叶子节点给出类别。

餐厅例子中,输入属性包括是否有替代餐厅、是否周五/周六、是否饥饿、顾客数量、价格、是否下雨、是否预约、餐厅类型、等待时间等;输出是是否等待。

3.2 表达能力:能表示任意离散函数,但不一定泛化

决策树可以表达任意输入属性上的离散函数。对布尔函数来说,真值表中的每一行都可以对应树中的一条路径。

但"能表示"不等于"泛化好"。把每个训练样本单独记成一条路径,可以让训练误差为 0,却可能只是记住训练集,不能预测新样本。

3.3 决策树学习算法:每一步选最能降低不确定性的属性

基本递归逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DecisionTree(examples, attributes):
if examples all have the same class:
return leaf(that class)
if attributes is empty:
return leaf(majority class)
choose attribute A with largest information gain
create a node testing A
for each value v of A:
let S_v be examples with A = v
if S_v is empty:
add leaf(majority class of examples)
else:
add subtree DecisionTree(S_v, attributes - {A})
return tree

核心问题是如何选择属性 AA。

3.4 熵:一个节点有多混乱

二分类中,若节点 SS 中正例数为 pp、负例数为 nn,则熵为:

H(S)=−pp+nlog⁡2pp+n−np+nlog⁡2np+nH(S) = -\frac{p}{p+n} \log_2 \frac{p}{p+n} - \frac{n}{p+n} \log_2 \frac{n}{p+n}

约定 0log⁡20=00 \log_2 0 = 0。性质:

  • 全正或全负:H(S)=0H(S) = 0,节点最纯。
  • 正负各半:H(S)=1H(S) = 1,二分类中最混乱。

多分类中:

H(S)=−∑k=1Kpklog⁡2pkH(S) = -\sum_{k=1}^{K} p_k \log_2 p_k

其中 pkp_k 是类别 kk 的比例。

3.5 信息增益:按属性划分后熵下降多少

属性 AA 把样本集 SS 划分成若干子集 SvS_v。划分后的剩余不确定性为:

Remainder(A)=∑v∈Values(A)∣Sv∣∣S∣H(Sv)\text{Remainder}(A) = \sum_{v \in \text{Values}(A)} \frac{|S_v|}{|S|} H(S_v)

信息增益为:

Gain(S,A)=H(S)−Remainder(A)\text{Gain}(S, A) = H(S) - \text{Remainder}(A)

选择信息增益最大的属性,因为它让类别不确定性下降最多。

餐厅例子中,原始训练集有 6 个正例和 6 个负例:H(S)=1H(S) = 1。课件给出的结果:

Gain(S,Patrons)≈0.541,Gain(S,Type)=0\text{Gain}(S, \text{Patrons}) \approx 0.541, \quad \text{Gain}(S, \text{Type}) = 0

所以根节点选 Patrons 比 Type 更合理。

3.6 Gini 指数:另一种纯度度量

有些教材用 Gini:

Gini(S)=1−∑k=1Kpk2\text{Gini}(S) = 1 - \sum_{k=1}^{K} p_k^2

Gini 越小,节点越纯。本课程重点是 entropy 和 information gain,Gini 只需知道含义。

3.7 无冲突训练集一定存在零训练误差决策树

题目:证明对于不含冲突数据的训练集,必存在与训练集一致的决策树。不含冲突数据指:xi=xj⇒yi=yjx_i = x_j \Rightarrow y_i = y_j。

证明思路是构造法:

  1. 如果当前节点中所有样本类别相同,直接建叶子节点。
  2. 如果当前节点中存在不同类别样本,因为数据无冲突,这些样本的特征向量不可能完全相同。
  3. 因而至少存在某个特征维度,使得不同类别样本在该维度取值不同。
  4. 对离散特征,可按该特征取值继续分支;对连续特征,可选阈值把不同取值分开。
  5. 不断划分,最极端时每个叶子只包含相同特征向量的样本。
  6. 由于无冲突,同一叶子中的样本标签唯一,给叶子标该类别即可。

因此这棵充分生长的树对训练集中每个样本都预测正确,训练误差为 0。

3.8 决策树过拟合和剪枝

决策树容易过拟合,因为深树能记住训练集。处理方法:

  • 预剪枝:生长过程中提前停止,例如限制最大深度、最小叶子样本数、最小信息增益。
  • 后剪枝:先长成较大树,再用验证集删除无益子树。

考试判断:根节点信息增益不一定大于子节点的信息增益。因为根节点和子节点的信息增益是在不同样本子集上算的,不能直接比较。

3.9 决策树边界识别

在二维图上,决策树边界常是轴对齐的分段矩形区域。看到"横平竖直、块状划分",优先想到 decision tree。

4. kNN

不显式训练,靠最近样本投票

4.1 任务与输入输出

kNN 可用于分类和回归。

  • 输入:训练集 D={(xi,yi)}i=1nD = \{(x_i, y_i)\}_{i=1}^n;新样本 xx;邻居数 kk;距离函数 d(⋅,⋅)d(\cdot, \cdot)。
  • 分类输出:y^=majority{yi:xi∈Nk(x)}\hat{y} = \text{majority}\{y_i : x_i \in N_k(x)\},其中 Nk(x)N_k(x) 是距离 xx 最近的 kk 个训练样本。
  • 回归输出:y^=1k∑xi∈Nk(x)yi\hat{y} = \frac{1}{k} \sum_{x_i \in N_k(x)} y_i。

4.2 距离决定"相似"

常用距离:

d2(x,z)=∑j=1d(xj−zj)2d_2(x, z) = \sqrt{\sum_{j=1}^{d}(x_j - z_j)^2}

d1(x,z)=∑j=1d∣xj−zj∣d_1(x, z) = \sum_{j=1}^{d} |x_j - z_j|

若特征尺度差异很大,应先标准化,否则大尺度特征会支配距离。

4.3 k 的影响:小 k 高方差,大 k 高偏差

  • k=1k = 1:边界复杂,训练误差通常最低,容易过拟合。
  • kk 增大:边界更平滑,抗噪声更强。
  • k=nk = n:所有样本共同投票,分类时总预测训练集多数类,通常欠拟合。

2021 判断题:"k 从 1 增加到 n,训练集分类精度始终增加。"答案是错,通常 k=1k = 1 训练精度最高,增大 k 可能降低训练精度。

4.4 kNN 边界识别

最近邻分类边界常是不规则、折线状、围绕训练点形成 Voronoi 风格区域。看到"破碎弯曲、贴着点"的边界,优先想到 nearest neighbor。

5. 线性预测和最小二乘

5.1 线性分类和线性回归的共同形式

线性模型打分:f(x)=wTx+bf(x) = w^T x + b

  • 二分类预测:y^=sign(wTx+b)\hat{y} = \text{sign}(w^T x + b)
  • 回归预测:y^=wTx+b\hat{y} = w^T x + b
  • 决策边界为:wTx+b=0w^T x + b = 0,其中 ww 是超平面的法向量,bb 控制平移。

5.2 线性分类:理想损失是 0/1 loss,但难优化

二分类的 0/1 损失为:ℓ0/1(y^,y)=1[y^≠y]\ell_{0/1}(\hat{y}, y) = \mathbf{1}[\hat{y} \neq y]。直接最小化 0/1 loss 通常很难,所以课件引入替代损失,例如平方损失、hinge loss、logistic loss。

5.3 最小二乘回归:闭式解必须会推

设 X∈Rn×dX \in \mathbb{R}^{n \times d} 的第 ii 行是 xiTx_i^T,y∈Rny \in \mathbb{R}^n 是标签列向量。忽略偏置或把偏置并入第一列全 1 特征,目标为:

J(w)=∥Xw−y∥22J(w) = \|Xw - y\|_2^2

展开:J(w)=(Xw−y)T(Xw−y)J(w) = (Xw - y)^T(Xw - y)。求梯度:∇wJ(w)=2XT(Xw−y)\nabla_w J(w) = 2X^T(Xw - y)。令梯度为 0:2XT(Xw−y)=02X^T(Xw - y) = 0,得到正规方程:

XTXw=XTyX^T X w = X^T y

若 XTXX^T X 可逆:w∗=(XTX)−1XTyw^* = (X^T X)^{-1} X^T y。若不可逆,用 Moore-Penrose 伪逆:w∗=X+yw^* = X^+ y。

5.4 加权最小二乘:2020 大题模板

目标:

min⁡w∑i=1nri(yi−wTxi)2\min_w \sum_{i=1}^{n} r_i (y_i - w^T x_i)^2

令 R=diag(r1,…,rn)R = \text{diag}(r_1, \dots, r_n),矩阵形式:J(w)=(y−Xw)TR(y−Xw)J(w) = (y - Xw)^T R (y - Xw)。因为 RR 是对角权重矩阵,且通常 R=RTR = R^T,求梯度:

∇wJ(w)=−2XTR(y−Xw)=2XTRXw−2XTRy\nabla_w J(w) = -2X^T R (y - Xw) = 2X^T R X w - 2X^T R y

令梯度为 0:XTRXw=XTRyX^T R X w = X^T R y。

  • 若 XTRXX^T R X 可逆:w∗=(XTRX)−1XTRyw^* = (X^T R X)^{-1} X^T R y。
  • 若不可逆:w∗=(XTRX)+XTRyw^* = (X^T R X)^+ X^T R y。

解释:rir_i 越大,第 ii 个样本的误差越重要;ri=0r_i = 0 相当于忽略该样本。

5.5 带 L2 正则的最小二乘

普通 L2 正则:J(w)=∥Xw−y∥22+λ∥w∥22J(w) = \|Xw - y\|_2^2 + \lambda \|w\|_2^2。梯度:∇wJ(w)=2XT(Xw−y)+2λw\nabla_w J(w) = 2X^T(Xw - y) + 2\lambda w。令 0:(XTX+λI)w=XTy(X^T X + \lambda I)w = X^T y。闭式解:

w∗=(XTX+λI)−1XTyw^* = (X^T X + \lambda I)^{-1} X^T y

带对角正则:J(w)=∥Xw−y∥22+λwTDwJ(w) = \|Xw - y\|_2^2 + \lambda w^T D w,其中 DD 为对角矩阵,则 w∗=(XTX+λD)−1XTyw^* = (X^T X + \lambda D)^{-1} X^T y。DjjD_{jj} 越大,对第 jj 个特征权重惩罚越强。

5.6 L1 和 L2 正则区别

  • L2 正则:Ω2(w)=∥w∥22=∑j=1dwj2\Omega_2(w) = \|w\|_2^2 = \sum_{j=1}^{d} w_j^2。优点是容易优化,常有闭式解或平滑梯度。作用是让权重变小,降低过拟合。
  • L1 正则:Ω1(w)=∥w∥1=∑j=1d∣wj∣\Omega_1(w) = \|w\|_1 = \sum_{j=1}^{d} |w_j|。作用是产生稀疏解,使一部分权重精确为 0,相当于自动特征选择。

5.7 多分类最小二乘

若 Y∈Rn×kY \in \mathbb{R}^{n \times k} 是 one-hot 标签矩阵,W∈Rd×kW \in \mathbb{R}^{d \times k},目标为 min⁡W∥XW−Y∥F2\min_W \|XW - Y\|_F^2。正规方程:XTXW=XTYX^T X W = X^T Y。若 XTXX^T X 可逆:W∗=(XTX)−1XTYW^* = (X^T X)^{-1} X^T Y。预测时取最大分量:y^=arg⁡max⁡k(WTx)k\hat{y} = \arg\max_k (W^T x)_k。

5.8 多项式回归:线性是对参数线性,不一定对输入线性

引入基函数:ϕ(x)=(1,x,x2,…,xm)\phi(x) = (1, x, x^2, \dots, x^m),模型 f(x)=wTϕ(x)f(x) = w^T \phi(x)。它对参数 ww 仍是线性的,因此仍可用最小二乘;但对原始输入 xx 是非线性的。多项式次数越高,越容易过拟合。

6. 逻辑回归

线性打分经过 sigmoid 变成概率

6.1 任务与输入输出

逻辑回归用于分类,名字里有 regression 但通常不是做连续值回归。

  • 二分类输入:样本特征 x∈Rdx \in \mathbb{R}^d;标签 y∈{0,1}y \in \{0, 1\}。
  • 输出:P(y=1∣x)P(y = 1 \mid x)。
  • 含义:模型直接估计条件概率,属于 discriminative model。

6.2 Sigmoid 函数

逻辑函数:

σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}

性质:0<σ(z)<10 < \sigma(z) < 1,σ(0)=12\sigma(0) = \frac{1}{2}。导数:σ′(z)=σ(z)(1−σ(z))\sigma'(z) = \sigma(z)(1 - \sigma(z))。

6.3 Logistic 模型和决策边界

令 z=wTx+bz = w^T x + b,模型:

P(y=1∣x)=σ(wTx+b),P(y=0∣x)=1−σ(wTx+b)P(y = 1 \mid x) = \sigma(w^T x + b), \quad P(y = 0 \mid x) = 1 - \sigma(w^T x + b)

预测规则:

y^={1,P(y=1∣x)≥120,P(y=1∣x)<12\hat{y} = \begin{cases} 1, & P(y=1 \mid x) \geq \frac{1}{2} \\ 0, & P(y=1 \mid x) < \frac{1}{2} \end{cases}

由于 σ(z)≥12\sigma(z) \geq \frac{1}{2} 等价于 z≥0z \geq 0,所以决策边界仍是 wTx+b=0w^T x + b = 0。

6.4 Log odds:逻辑回归假设对数几率线性

odds 是事件发生概率与不发生概率之比:odds=p1−p\text{odds} = \frac{p}{1-p}。log odds 为:

logit(p)=log⁡p1−p\text{logit}(p) = \log \frac{p}{1-p}

对逻辑回归:

log⁡P(y=1∣x)P(y=0∣x)=wTx+b\log \frac{P(y=1 \mid x)}{P(y=0 \mid x)} = w^T x + b

所以逻辑回归的核心假设是:类别的对数几率是输入特征的线性函数。

6.5 似然函数和交叉熵损失

对单个样本,令 pi=σ(wTxi+b)p_i = \sigma(w^T x_i + b)。由于 yi∈{0,1}y_i \in \{0,1\},可以统一写:

P(yi∣xi;w,b)=piyi(1−pi)1−yiP(y_i \mid x_i; w, b) = p_i^{y_i}(1 - p_i)^{1-y_i}

数据集似然:L(w,b)=∏i=1npiyi(1−pi)1−yiL(w, b) = \prod_{i=1}^{n} p_i^{y_i}(1-p_i)^{1-y_i}。

对数似然:ℓ(w,b)=∑i=1n[yilog⁡pi+(1−yi)log⁡(1−pi)]\ell(w, b) = \sum_{i=1}^{n} [y_i \log p_i + (1-y_i)\log(1-p_i)]。

训练逻辑回归通常最大化对数似然,等价于最小化负对数似然,即交叉熵:J(w,b)=−ℓ(w,b)J(w, b) = -\ell(w, b)。单样本交叉熵:Li=−[yilog⁡pi+(1−yi)log⁡(1−pi)]L_i = -[y_i \log p_i + (1-y_i)\log(1-p_i)]。

6.6 交叉熵梯度:核心结果是 p − y

单样本设 z=wTx+b,  p=σ(z)z = w^T x + b,\; p = \sigma(z),损失 L=−[ylog⁡p+(1−y)log⁡(1−p)]L = -[y \log p + (1-y)\log(1-p)]。

先对 pp 求导:

∂L∂p=−yp+1−y1−p\frac{\partial L}{\partial p} = -\frac{y}{p} + \frac{1-y}{1-p}

再用 sigmoid 导数 ∂p∂z=p(1−p)\frac{\partial p}{\partial z} = p(1-p),链式法则:

∂L∂z=(−yp+1−y1−p)p(1−p)=−y(1−p)+(1−y)p=p−y\frac{\partial L}{\partial z} = \left(-\frac{y}{p} + \frac{1-y}{1-p}\right) p(1-p) = -y(1-p) + (1-y)p = p - y

因为 ∂z∂wj=xj,  ∂z∂b=1\frac{\partial z}{\partial w_j} = x_j,\; \frac{\partial z}{\partial b} = 1,所以:

∂L∂wj=(p−y)xj,∂L∂b=p−y\frac{\partial L}{\partial w_j} = (p - y)x_j, \quad \frac{\partial L}{\partial b} = p - y

向量形式:∇wL=(p−y)x\nabla_w L = (p - y)x。数据集梯度:∇wJ=∑i=1n(pi−yi)xi\nabla_w J = \sum_{i=1}^{n}(p_i - y_i)x_i,∂J∂b=∑i=1n(pi−yi)\frac{\partial J}{\partial b} = \sum_{i=1}^{n}(p_i - y_i)。

6.7 梯度下降更新

单样本 SGD:w←w−η(p−y)xw \leftarrow w - \eta(p - y)x,b←b−η(p−y)b \leftarrow b - \eta(p - y)。

批量梯度下降:w←w−η∑i=1n(pi−yi)xiw \leftarrow w - \eta \sum_{i=1}^{n}(p_i - y_i)x_i,b←b−η∑i=1n(pi−yi)b \leftarrow b - \eta \sum_{i=1}^{n}(p_i - y_i)。

带 L2 正则:Jreg=J+λ∥w∥22J_{\text{reg}} = J + \lambda \|w\|_2^2,梯度增加 2λw2\lambda w。

6.8 Softmax 回归:多分类扩展

多分类中,每个类别 kk 有参数 wk,bkw_k, b_k:

P(y=k∣x)=exp⁡(wkTx+bk)∑j=1Kexp⁡(wjTx+bj)P(y = k \mid x) = \frac{\exp(w_k^T x + b_k)}{\sum_{j=1}^{K} \exp(w_j^T x + b_j)}

若真实类别为 tt,交叉熵损失为 L=−log⁡P(y=t∣x)L = -\log P(y = t \mid x)。

考试中低概率,记住 softmax 是把多个类别得分归一化成概率分布。

6.9 逻辑回归、线性回归、SVM 对比

线性回归输出任意实数,适合连续值预测;逻辑回归输出概率,适合分类;SVM 输出间隔符号,目标是最大化分类间隔。

关键区别:

  • Logistic regression:概率模型,损失是 cross-entropy/logistic loss,通常所有样本都有梯度贡献。
  • SVM:最大间隔模型,损失是 hinge loss,决策边界主要由支持向量决定。

7. SVM

用最大间隔选择最稳的分离超平面

7.1 任务与输入输出

SVM 主要用于分类。

  • 输入:训练集 D={(xi,yi)}i=1nD = \{(x_i, y_i)\}_{i=1}^n;特征 xi∈Rdx_i \in \mathbb{R}^d;标签 yi∈{−1,+1}y_i \in \{-1, +1\}。
  • 输出:g(x)=sign(wTx+b)g(x) = \text{sign}(w^T x + b)。
  • 核心含义:在能正确分类训练集的超平面中,选择间隔最大的那个。间隔大通常意味着对小扰动更稳,泛化更好。

7.2 函数间隔和几何间隔

线性分类器 f(x)=wTx+bf(x) = w^T x + b,正确分类条件 yi(wTxi+b)>0y_i(w^T x_i + b) > 0。

  • 函数间隔:γ^i=yi(wTxi+b)\hat{\gamma}_i = y_i(w^T x_i + b)
  • 几何间隔(点到超平面的带符号距离):γi=yi(wTxi+b)∥w∥\gamma_i = \dfrac{y_i(w^T x_i + b)}{\|w\|}

因为同时缩放 w,bw, b 不改变决策边界,所以 SVM 规定最近点满足函数间隔 1:yi(wTxi+b)≥1y_i(w^T x_i + b) \geq 1。此时最近点的几何间隔为 γ=1∥w∥\gamma = \frac{1}{\|w\|}。

两条间隔边界:wTx+b=1,  wTx+b=−1w^T x + b = 1,\; w^T x + b = -1,二者之间宽度 2∥w∥\frac{2}{\|w\|}。

7.3 Hard Margin SVM 原问题

线性可分时:

min⁡w,b12∥w∥2s.t.yi(wTxi+b)≥1,  i=1,…,n\min_{w, b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) \geq 1,\; i = 1, \dots, n

最大化间隔 2∥w∥\frac{2}{\|w\|} 等价于最小化 12∥w∥2\frac{1}{2}\|w\|^2,也就是使支持向量的函数间隔刚好为 1 或 -1。

7.4 支持向量:真正决定边界的点

支持向量(在 Hard Margin 下)满足 yi(wTxi+b)=1y_i(w^T x_i + b) = 1,它们落在间隔边界上。远离边界且分类正确的点满足严格不等式,通常不影响 hard margin SVM 解。

7.5 对偶问题:考试概念和证明都要会认

原问题:

min⁡w,b12∥w∥2s.t.yi(wTxi+b)−1≥0\min_{w,b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) - 1 \geq 0

构造拉格朗日函数,αi≥0\alpha_i \geq 0:

L(w,b,α)=12∥w∥2−∑i=1nαi[yi(wTxi+b)−1]L(w, b, \alpha) = \frac{1}{2}\|w\|^2 - \sum_{i=1}^{n} \alpha_i [y_i(w^T x_i + b) - 1]

先对 w,bw, b 最小化。对 ww 求导:

∂L∂w=w−∑i=1nαiyixi\frac{\partial L}{\partial w} = w - \sum_{i=1}^{n} \alpha_i y_i x_i

令其为 0:

w=∑i=1nαiyixiw = \sum_{i=1}^{n} \alpha_i y_i x_i

对 bb 求导:

∂L∂b=−∑i=1nαiyi\frac{\partial L}{\partial b} = -\sum_{i=1}^{n} \alpha_i y_i

令其为 0:

∑i=1nαiyi=0\sum_{i=1}^{n} \alpha_i y_i = 0

代回拉格朗日函数得到对偶问题:

max⁡α∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxiTxj\max_\alpha \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n}\sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j x_i^T x_j

约束:αi≥0,  ∑i=1nαiyi=0\alpha_i \geq 0,\; \sum_{i=1}^{n} \alpha_i y_i = 0。

KKT 互补条件:αi[yi(wTxi+b)−1]=0\alpha_i [y_i(w^T x_i + b) - 1] = 0。因此:

  • 若 αi>0\alpha_i > 0,则 yi(wTxi+b)=1y_i(w^T x_i + b) = 1,该点是支持向量。
  • 若 yi(wTxi+b)>1y_i(w^T x_i + b) > 1,则 αi=0\alpha_i = 0,该点不是支持向量。

如何求 αi\alpha_i:

  1. 利用 ∑i=1nαiyi=0\sum_{i=1}^{n} \alpha_i y_i = 0 表示出 αi\alpha_i 之间的关系,代回 ∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxiTxj\sum_{i=1}^{n} \alpha_i - \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j x_i^T x_j 得到一个只包含 αi\alpha_i 的式子,我们的目标是使这个式子最大。
  2. (结合支持向量约束求出具体 αi\alpha_i 与 w,bw, b。)

7.6 用对偶解做预测

由 w=∑i=1nαiyixiw = \sum_{i=1}^{n} \alpha_i y_i x_i,新样本的打分:

f(x)=wTx+b=∑i=1nαiyixiTx+bf(x) = w^T x + b = \sum_{i=1}^{n} \alpha_i y_i x_i^T x + b

由于非支持向量 αi=0\alpha_i = 0,实际只需要和支持向量做内积。

7.7 Soft Margin SVM:不可分或有噪声时允许违反间隔

引入松弛变量 ξi≥0\xi_i \geq 0:

min⁡w,b,ξ12∥w∥2+C∑i=1nξi\min_{w,b,\xi} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^{n} \xi_i

约束:yi(wTxi+b)≥1−ξiy_i(w^T x_i + b) \geq 1 - \xi_i,ξi≥0\xi_i \geq 0。

含义:

  • ξi=0\xi_i = 0:样本在正确间隔外或间隔边界上。
  • 0<ξi<10 < \xi_i < 1:分类正确,但进入间隔内部。
  • ξi≥1\xi_i \geq 1:样本可能被错分。

CC 控制对违反间隔的惩罚:

  • CC 大:更不愿犯错,更接近 hard margin,间隔可能更窄。
  • CC 小:允许更多违反,间隔更宽,可能泛化更好。

Soft margin 的对偶和 hard margin 很像,只是多了上界:0≤αi≤C0 \leq \alpha_i \leq C。

7.8 Hinge loss:SVM 的损失函数视角

单样本 hinge loss:ℓhinge(xi,yi)=max⁡(0,1−yi(wTxi+b))\ell_{\text{hinge}}(x_i, y_i) = \max(0, 1 - y_i(w^T x_i + b))。

Soft margin SVM 可写成:

min⁡w,b12∥w∥2+C∑i=1nmax⁡(0,1−yi(wTxi+b))\min_{w,b} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^{n} \max(0, 1 - y_i(w^T x_i + b))

若 yif(xi)≥1y_i f(x_i) \geq 1,损失为 0;若分类正确但间隔不足,损失为正;若错分,损失更大。

7.9 手算最大间隔超平面模板

适合二维小样本题。

  1. 画点或观察两类凸包。
  2. 找两类之间最近的点或线段,猜支持向量。
  3. 对正支持向量写:wTxi+b=1w^T x_i + b = 1。
  4. 对负支持向量写:wTxi+b=−1w^T x_i + b = -1。
  5. 解线性方程得到 w,bw, b。
  6. 检查所有样本是否满足:yi(wTxi+b)≥1y_i(w^T x_i + b) \geq 1。
  7. 写分离超平面、间隔边界、分类函数和支持向量。

若只有一对最近点决定边界,最大间隔超平面是这两个点连线的垂直平分面。

7.10 HW10 手算样例

正例:x1=(1,2)T,  x2=(2,3)T,  x3=(3,3)Tx_1 = (1, 2)^T,\; x_2 = (2, 3)^T,\; x_3 = (3, 3)^T

负例:x4=(2,1)T,  x5=(3,2)Tx_4 = (2, 1)^T,\; x_5 = (3, 2)^T

由几何位置猜支持向量为 x1,x3,x5x_1, x_3, x_5。设 w=(w1,w2)Tw = (w_1, w_2)^T,列方程:

{w1+2w2+b=13w1+3w2+b=13w1+2w2+b=−1\begin{cases} w_1 + 2w_2 + b = 1 \\ 3w_1 + 3w_2 + b = 1 \\ 3w_1 + 2w_2 + b = -1 \end{cases}

第二式减第三式:w2=2w_2 = 2。第二式减第一式:2w1+w2=02w_1 + w_2 = 0,所以 w1=−1,  w2=2,  b=−2w_1 = -1,\; w_2 = 2,\; b = -2。

最大间隔超平面:−z1+2z2−2=0-z_1 + 2z_2 - 2 = 0

分类函数:g(z)=sign(−z1+2z2−2)g(z) = \text{sign}(-z_1 + 2z_2 - 2)

支持向量:(1,2)T,  (3,3)T,  (3,2)T(1, 2)^T,\; (3, 3)^T,\; (3, 2)^T

间隔宽度:2∥w∥=25\dfrac{2}{\|w\|} = \dfrac{2}{\sqrt{5}}

7.11 2021 SVM 手算样例

正例:x1=(2,3)T,  x2=(3,3)Tx_1 = (2, 3)^T,\; x_2 = (3, 3)^T

负例:x3=(1,1)Tx_3 = (1, 1)^T

正类凸包是线段 y=3,  x∈[2,3]y = 3,\; x \in [2, 3],离负点最近的正类点是 (2,3)T(2, 3)^T。最大间隔边界由 (2,3)T(2, 3)^T 和 (1,1)T(1, 1)^T 决定。二者中点:

m=(32,2)Tm = \left(\tfrac{3}{2}, 2\right)^T

法向量可取:v=(2,3)T−(1,1)T=(1,2)Tv = (2, 3)^T - (1, 1)^T = (1, 2)^T。分离超平面是垂直平分线:vT(z−m)=0v^T(z - m) = 0,即:

x+2y−112=0x + 2y - \tfrac{11}{2} = 0

规范化到支持向量函数间隔为 1。原打分 f~(x,y)=x+2y−112\tilde{f}(x, y) = x + 2y - \tfrac{11}{2},在 (2,3)(2, 3) 上为 f~(2,3)=52\tilde{f}(2, 3) = \tfrac{5}{2},在 (1,1)(1, 1) 上为 f~(1,1)=−52\tilde{f}(1, 1) = -\tfrac{5}{2}。所以乘以 25\tfrac{2}{5}:

f(x,y)=25x+45y−115f(x, y) = \tfrac{2}{5} x + \tfrac{4}{5} y - \tfrac{11}{5}

即 w=(25,45)T,  b=−115w = (\tfrac{2}{5}, \tfrac{4}{5})^T,\; b = -\tfrac{11}{5}。

分类函数:g(x,y)=sign(25x+45y−115)g(x, y) = \text{sign}(\tfrac{2}{5} x + \tfrac{4}{5} y - \tfrac{11}{5})

等价地也可写:g(x,y)=sign(x+2y−112)g(x, y) = \text{sign}(x + 2y - \tfrac{11}{2})。

7.12 新点是否影响 SVM 边界

  • 若新点被当前 SVM 正确分类且远离边界,通常不影响 hard margin 边界。原因是它不是活跃约束,不是支持向量,对应 α=0\alpha = 0。
  • 若新点被当前边界错分,改用 soft margin 后通常会影响优化目标。原因是它产生正的 hinge loss,可能成为支持向量,优化会重新权衡间隔和误差。严格说是否改变边界还取决于 CC 和数据位置,但考试一般答"会影响,并说明 hinge loss/支持向量原因"。

8. 核方法

不显式升维,也能做非线性分类

8.1 从特征工程到非线性决策边界

线性模型的得分可写为 f(x)=wTϕ(x)+bf(x) = w^T \phi(x) + b,它对参数 ww 和特征 ϕ(x)\phi(x) 是线性的,但对原始输入 xx 可以是非线性的。

例子:ϕ(x)=(1,x,x2)\phi(x) = (1, x, x^2) 可以表示非线性曲线。SVM 课件用体温、身高体重等例子说明:真实关系可能有非单调性、非线性和特征交互,需要构造高维特征。

8.2 Kernel trick

SVM 对偶中样本只以内积形式出现:xiTxjx_i^T x_j。如果先映射到高维空间 ϕ(x)\phi(x),对偶中只需要 ϕ(xi)Tϕ(xj)\phi(x_i)^T \phi(x_j)。定义核函数:

K(xi,xj)=ϕ(xi)Tϕ(xj)K(x_i, x_j) = \phi(x_i)^T \phi(x_j)

这样无需显式计算 ϕ(x)\phi(x),只要能计算 K(xi,xj)K(x_i, x_j)。

8.3 常见核函数

  • 线性核:K(x,z)=xTzK(x, z) = x^T z
  • 多项式核:K(x,z)=(1+xTz)pK(x, z) = (1 + x^T z)^p
  • 高斯 RBF 核:K(x,z)=exp⁡(−∥x−z∥22σ2)K(x, z) = \exp\left(-\dfrac{\|x - z\|^2}{2\sigma^2}\right)

RBF 核对应无限维特征映射,能形成非常灵活的非线性边界。

8.4 核矩阵必须对称半正定

给定样本 x1,…,xnx_1, \dots, x_n,核矩阵 Kij=K(xi,xj)K_{ij} = K(x_i, x_j)。如果 KK 来自某个特征映射内积,则 Kij=ϕ(xi)Tϕ(xj)K_{ij} = \phi(x_i)^T \phi(x_j)。

  • 对称性:Kij=ϕ(xi)Tϕ(xj)=ϕ(xj)Tϕ(xi)=KjiK_{ij} = \phi(x_i)^T \phi(x_j) = \phi(x_j)^T \phi(x_i) = K_{ji}
  • 半正定性:对任意 a∈Rna \in \mathbb{R}^n,

aTKa=∑i=1n∑j=1naiajϕ(xi)Tϕ(xj)=∥∑i=1naiϕ(xi)∥2≥0a^T K a = \sum_{i=1}^{n}\sum_{j=1}^{n} a_i a_j \phi(x_i)^T \phi(x_j) = \left\| \sum_{i=1}^{n} a_i \phi(x_i) \right\|^2 \geq 0

所以有效核函数对应的核矩阵必须对称半正定。

8.5 核 SVM 的训练和预测

训练时把对偶中的内积替换为核函数:

max⁡α∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjK(xi,xj)\max_\alpha \sum_{i=1}^{n} \alpha_i - \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j K(x_i, x_j)

预测新样本:

f(x)=∑i=1nαiyiK(xi,x)+b,g(x)=sign(f(x))f(x) = \sum_{i=1}^{n} \alpha_i y_i K(x_i, x) + b, \quad g(x) = \text{sign}(f(x))

仍然只有支持向量对应的 αi\alpha_i 非零。

8.6 XOR 和二次核

2021 判断题中 XOR 数据:

(1,1)↦+1,(−1,−1)↦+1,(1,−1)↦−1,(−1,1)↦−1(1, 1) \mapsto +1, \quad (-1, -1) \mapsto +1, \quad (1, -1) \mapsto -1, \quad (-1, 1) \mapsto -1

原空间线性不可分,但二次特征中包含交互项 x1x2x_1 x_2。因为:

x1x2>0⇒+1,x1x2<0⇒−1x_1 x_2 > 0 \Rightarrow +1, \quad x_1 x_2 < 0 \Rightarrow -1

所以二次核 K(x,z)=(1+xTz)2K(x, z) = (1 + x^T z)^2 可以把 XOR 分开。

9. K-Means

用交替最小化做聚类

9.1 任务与输入输出

K-Means 是无监督聚类方法。

  • 输入:样本 D={xi}i=1nD = \{x_i\}_{i=1}^n;簇数 KK。
  • 输出:每个样本的簇编号 ci∈{1,…,K}c_i \in \{1, \dots, K\};每个簇的中心 μ1,…,μK\mu_1, \dots, \mu_K。
  • 目标:让同一簇内样本尽量接近自己的中心。

9.2 目标函数

K-Means 最小化类内平方和:

J=∑i=1n∥xi−μci∥2J = \sum_{i=1}^{n} \|x_i - \mu_{c_i}\|^2

其中 cic_i 是样本 xix_i 所属簇编号。

9.3 算法步骤

1
2
3
4
5
6
7
initialize K centers mu_1, ..., mu_K
repeat:
assignment step:
assign each x_i to its nearest center
update step:
set each mu_k to the mean of points assigned to cluster k
until assignments or centers stop changing

分配步骤:ci=arg⁡min⁡k∈{1,…,K}∥xi−μk∥2c_i = \arg\min_{k \in \{1,\dots,K\}} \|x_i - \mu_k\|^2

更新步骤:μk=1∣Ck∣∑xi∈Ckxi\mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i

9.4 为什么簇中心是均值

固定某个簇 CC,要求 min⁡μ∑xi∈C∥xi−μ∥2\min_\mu \sum_{x_i \in C} \|x_i - \mu\|^2。记 F(μ)=∑xi∈C(xi−μ)T(xi−μ)F(\mu) = \sum_{x_i \in C} (x_i - \mu)^T(x_i - \mu)。

对 μ\mu 求梯度:∇μF(μ)=∑xi∈C2(μ−xi)\nabla_\mu F(\mu) = \sum_{x_i \in C} 2(\mu - x_i)。令梯度为 0:2∣C∣μ−2∑xi∈Cxi=02|C|\mu - 2\sum_{x_i \in C} x_i = 0,所以:

μ=1∣C∣∑xi∈Cxi\mu = \frac{1}{|C|} \sum_{x_i \in C} x_i

这说明更新中心为均值是固定分配时的最优解。

9.5 K-Means 收敛证明

要证明 K-Means 收敛,围绕目标函数 J=∑i=1n∥xi−μci∥2J = \sum_{i=1}^{n}\|x_i - \mu_{c_i}\|^2,分两步说明。

第一步,固定中心 μ1,…,μK\mu_1, \dots, \mu_K,重新分配每个样本到最近中心。对每个样本 xix_i,新中心距离不大于旧中心距离,因此每一项 ∥xi−μci∥2\|x_i - \mu_{c_i}\|^2 不增加,整体 JJ 不增加。

第二步,固定簇分配 C1,…,CKC_1, \dots, C_K,把每个中心更新为簇内均值。上一节已证明均值最小化簇内平方误差,因此每个簇的误差不增加,整体 JJ 不增加。

所以每轮迭代后 J(t+1)≤J(t)J^{(t+1)} \leq J^{(t)}。又因为 J≥0J \geq 0,目标函数单调不增且有下界。对有限数据,可能的簇分配数量有限;若某轮分配不变,中心也不变,算法终止。因此 K-Means 会收敛到一个局部最优或固定点。

注意:K-Means 不保证全局最优,结果受初始中心影响。

9.6 K-Means 手算题

若题目给出簇,求新中心,就直接取均值。例如 C1={(0,6),(6,0)}C_1 = \{(0, 6), (6, 0)\},则:

μ1=(0,6)+(6,0)2=(3,3)\mu_1 = \frac{(0,6) + (6,0)}{2} = (3, 3)

若题目给候选初始中心,问能否产生某个分配,就对每个点计算到所有中心的距离,看最近中心是否与题目分配一致。

10. PCA

找最大方差方向做降维

10.1 任务与输入输出

PCA 是无监督降维方法。

  • 输入:高维样本 xi∈Rdx_i \in \mathbb{R}^d;目标维数 k<dk < d。
  • 输出:kk 个主成分方向;每个样本的低维表示 zi∈Rkz_i \in \mathbb{R}^k。
  • 含义:用低维线性子空间保留数据主要变化方向。

10.2 PCA 的两种等价目标

PCA 可以理解为:

  1. 最大化投影后的方差。
  2. 最小化投影再重构的平方误差。

保留大方差方向,丢弃小方差方向。若噪声主要分布在小方差方向,PCA 可起到去噪作用。2020 判断题考过"PCA 可以去噪",通常答对。

10.3 PCA 步骤

  1. 数据中心化:x~i=xi−xˉ\tilde{x}_i = x_i - \bar{x},其中 xˉ=1n∑i=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i。
  2. 计算协方差矩阵:S=1n∑i=1nx~ix~iTS = \frac{1}{n}\sum_{i=1}^{n} \tilde{x}_i \tilde{x}_i^T
  3. 求特征值和特征向量:Suj=λjujS u_j = \lambda_j u_j
  4. 取最大 kk 个特征值对应的特征向量组成矩阵:Uk=[u1,…,uk]U_k = [u_1, \dots, u_k]
  5. 投影:zi=UkT(xi−xˉ)z_i = U_k^T (x_i - \bar{x})
  6. 重构近似:x^i=xˉ+Ukzi\hat{x}_i = \bar{x} + U_k z_i

10.4 PCA 和分类器边界

PCA 本身不是分类器,它没有标签输出。它通常作为预处理,用于降维、可视化、压缩、去噪,再把低维特征送入分类器。

10.5 PAC 学习

PAC 是 Probably Approximately Correct。目标:以至少 1−δ1 - \delta 的概率,学到真实误差不超过 ε\varepsilon 的假设。形式上,希望 P(err(h)≤ε)≥1−δP(\text{err}(h) \leq \varepsilon) \geq 1 - \delta。

有限假设空间的一致学习常见样本复杂度:

m≥1ε(ln⁡∣H∣+ln⁡1δ)m \geq \frac{1}{\varepsilon}\left(\ln |H| + \ln \frac{1}{\delta}\right)

含义:

  • ε\varepsilon 越小,要求越精确,需要更多样本。
  • δ\delta 越小,要求越高置信度,需要更多样本。
  • ∣H∣|H| 越大,假设空间越复杂,需要更多样本。

SVM 课件提到最大间隔符合直觉和 PAC 理论:间隔越大,分类器越稳定,泛化倾向更好。

12. 神经网络

12.1 任务与输入输出

神经网络是一类函数近似器,可用于分类、回归、序列建模、图像识别等。

  • 输入:原始特征、图像、文本向量或其他张量。
  • 输出由任务决定:二分类(一个概率 P(y=1∣x)P(y=1 \mid x));多分类(类别概率分布 (p1,…,pK)(p_1, \dots, p_K));回归(连续值 y^\hat{y})。
  • 学到的东西是所有层的权重和偏置:θ={W(1),b(1),…,W(L),b(L)}\theta = \{W^{(1)}, b^{(1)}, \dots, W^{(L)}, b^{(L)}\}。

12.2 M-P 神经元和感知机历史

课件历史线:

  • 1943 年 McCulloch 和 Pitts 提出 M-P 神经元模型。
  • 1958 年 Rosenblatt 提出感知机及其学习规则。
  • 1969 年 Minsky 和 Papert 指出单层网络不能解决非线性问题,神经网络进入低谷。
  • 1986 年反向传播算法被系统报告,多层网络训练变得可行。
  • 2006 年后深度学习复兴。
  • 2012 年 CNN 在 ImageNet 上取得重大突破。

考试一般不考年份细节,但可用于概念题。

12.3 单个神经元:加权求和再激活

单个神经元:z=wTx+b,  a=ϕ(z)z = w^T x + b,\; a = \phi(z),其中 xx 是输入,ww 是权重,bb 是偏置,ϕ\phi 是激活函数,aa 是输出激活。

如果没有非线性激活,多层线性网络仍等价于单层线性模型。原因是线性函数复合仍是线性函数:

W2(W1x+b1)+b2=(W2W1)x+(W2b1+b2)W^2(W^1 x + b_1) + b_2 = (W^2 W^1) x + (W^2 b_1 + b_2)

12.4 常见激活函数

  • 阶跃函数接近生物神经元"超过阈值才激活"的直觉,但不连续、不光滑,不适合梯度下降。
  • Sigmoid:σ(z)=11+e−z\sigma(z) = \dfrac{1}{1+e^{-z}},输出在 (0,1)(0,1),但深层网络容易梯度消失。
  • Tanh:tanh⁡(z)=ez−e−zez+e−z\tanh(z) = \dfrac{e^z - e^{-z}}{e^z + e^{-z}},输出在 (−1,1)(-1,1),零中心。
  • ReLU:ReLU(z)=max⁡(0,z)\text{ReLU}(z) = \max(0, z),优点是计算简单、缓解梯度消失;缺点是可能出现 dead ReLU,即某些神经元长期输出 0。

12.5 前馈神经网络

前馈网络按层计算:

a(0)=x,z(ℓ)=W(ℓ)a(ℓ−1)+b(ℓ),a(ℓ)=ϕ(ℓ)(z(ℓ))a^{(0)} = x,\quad z^{(\ell)} = W^{(\ell)} a^{(\ell-1)} + b^{(\ell)},\quad a^{(\ell)} = \phi^{(\ell)}(z^{(\ell)})

最后输出 y^=a(L)\hat{y} = a^{(L)}。多层前馈网络就是复合函数:

f(x)=ϕ(L)(W(L)ϕ(L−1)(⋯ϕ(1)(W(1)x+b(1))⋯ )+b(L))f(x) = \phi^{(L)}(W^{(L)} \phi^{(L-1)}(\cdots \phi^{(1)}(W^{(1)} x + b^{(1)}) \cdots) + b^{(L)})

输出层选择:二分类用 sigmoid;多分类用 softmax;回归用线性输出。

12.6 网络参数个数

若某层输入维度为 dℓ−1d_{\ell-1},输出神经元数为 dℓd_\ell,则:权重数 dℓdℓ−1d_\ell d_{\ell-1};偏置数 dℓd_\ell;参数总数 dℓdℓ−1+dℓd_\ell d_{\ell-1} + d_\ell。

例如课件中的网络若有 [3×4][3 \times 4] 和 [4×2][4 \times 2] 两组权重,权重数为 3⋅4+4⋅2=203 \cdot 4 + 4 \cdot 2 = 20;若偏置数为 4+2=64 + 2 = 6,总可学习参数为 20+6=2620 + 6 = 26。

12.7 损失函数:分类用交叉熵,回归用平方误差

  • 回归常用均方误差:L=∥y−y^∥2L = \|y - \hat{y}\|^2。
  • 多分类常用交叉熵。若 yy 是 one-hot 标签,y^\hat{y} 是 softmax 概率:L=−∑k=1Kyklog⁡y^kL = -\sum_{k=1}^{K} y_k \log \hat{y}_k。若真实类别为 tt:L=−log⁡y^tL = -\log \hat{y}_t。
  • 总损失:C(θ)=∑i=1nLi(θ)C(\theta) = \sum_{i=1}^{n} L_i(\theta)。训练目标:θ∗=arg⁡min⁡θC(θ)\theta^* = \arg\min_\theta C(\theta)。

12.8 反向传播:链式法则的动态规划

反向传播用于高效计算每个参数的梯度。训练流程:

  1. 前向传播:从输入逐层计算输出和损失。
  2. 反向传播:从损失开始,逐层计算误差信号。
  3. 参数更新:沿负梯度方向下降。

对第 ℓ\ell 层定义误差信号 δ(ℓ)=∂L∂z(ℓ)\delta^{(\ell)} = \dfrac{\partial L}{\partial z^{(\ell)}}。

  • 输出层误差根据损失函数决定。对于 softmax 加交叉熵,常见简化为 δ(L)=y^−y\delta^{(L)} = \hat{y} - y。
  • 隐藏层误差:δ(ℓ)=((W(ℓ+1))Tδ(ℓ+1))⊙ϕ′(z(ℓ))\delta^{(\ell)} = ((W^{(\ell+1)})^T \delta^{(\ell+1)}) \odot \phi'(z^{(\ell)}),其中 ⊙\odot 是逐元素乘法。
  • 参数梯度:∂L∂W(ℓ)=δ(ℓ)(a(ℓ−1))T\dfrac{\partial L}{\partial W^{(\ell)}} = \delta^{(\ell)} (a^{(\ell-1)})^T,∂L∂b(ℓ)=δ(ℓ)\dfrac{\partial L}{\partial b^{(\ell)}} = \delta^{(\ell)}。
  • 更新:W(ℓ)←W(ℓ)−η∂L∂W(ℓ)W^{(\ell)} \leftarrow W^{(\ell)} - \eta \dfrac{\partial L}{\partial W^{(\ell)}},b(ℓ)←b(ℓ)−η∂L∂b(ℓ)b^{(\ell)} \leftarrow b^{(\ell)} - \eta \dfrac{\partial L}{\partial b^{(\ell)}}。

考试若不要求矩阵推导,至少要能说清:反向传播本质是链式法则,从输出层往输入层传误差,避免重复计算中间导数。

12.9 梯度下降、学习率和局部最优

参数更新总形式:θ←θ−η∇θC(θ)\theta \leftarrow \theta - \eta \nabla_\theta C(\theta)。

  • 学习率太大可能震荡或发散;学习率太小收敛很慢。
  • 深度网络损失通常非凸,梯度下降不保证全局最优,不同初始化可能到不同局部最小值或鞍点。

常见优化方式:

  • Batch Gradient Descent:每次用全训练集。
  • SGD:每次用一个样本,噪声大但便宜。
  • Mini-batch SGD:每次用一小批,实践最常用。
  • Momentum:累积历史方向,减少震荡。
  • Adam:自适应学习率,实践常用。

12.10 表示能力和过拟合

多层前馈网络表示能力很强。通用近似定理指出:一个包含足够多神经元的隐层,可以以任意精度逼近许多连续函数。但强表示能力也导致过拟合。表现为训练误差持续降低,验证或测试误差上升。

缓解方法:

  • Early stopping:训练误差下降但验证误差上升时停止。
  • L2 正则或 weight decay:惩罚过大权重。
  • Dropout:训练时随机丢弃部分神经元,减少共适应。
  • Data augmentation:用数据增强增加训练样本多样性。
  • Batch normalization:稳定中间层分布,常能加速训练。

13. CNN

用局部连接和权重共享处理图像

13.1 任务与输入输出

CNN 主要用于图像,也可用于其他网格结构数据。

  • 输入:X∈RH×W×CinX \in \mathbb{R}^{H \times W \times C_{\text{in}}},其中 HH 是高度,WW 是宽度,CinC_{\text{in}} 是通道数。
  • 卷积层输出:Y∈RH′×W′×CoutY \in \mathbb{R}^{H' \times W' \times C_{\text{out}}},每个输出通道对应一个 filter,输出称为 feature map。

13.2 CNN 的三个核心思想

  • 局部连接:每个神经元只看局部感受野,不连接整张图像。
  • 权重共享:同一个卷积核在不同空间位置重复使用,显著减少参数。
  • 层级特征:低层提取边缘、角点等局部特征,高层组合成更全局的语义特征。

13.3 卷积运算

一个卷积核在输入上滑动,对局部窗口做加权求和。多通道卷积可写为:

Yi,j,co=bco+∑ci=1Cin∑u=1Fh∑v=1FwKu,v,ci,co XiS+u,jS+v,ciY_{i,j,c_o} = b_{c_o} + \sum_{c_i=1}^{C_{\text{in}}} \sum_{u=1}^{F_h} \sum_{v=1}^{F_w} K_{u,v,c_i,c_o}\, X_{iS+u, jS+v, c_i}

其中 KK 是卷积核,SS 是 stride,coc_o 是输出通道。若输入大小为 H×WH \times W,卷积核大小为 F×FF \times F,padding 为 PP,stride 为 SS,则输出空间大小:

H′=⌊H+2P−FS⌋+1,W′=⌊W+2P−FS⌋+1H' = \left\lfloor \frac{H + 2P - F}{S} \right\rfloor + 1, \quad W' = \left\lfloor \frac{W + 2P - F}{S} \right\rfloor + 1

课件强调:卷积本质上仍是 weighted sum,所以 CNN 的 BP 和全连接网络类似。

13.4 多个 filter 和 channel

一层通常使用多个 filters,因为一个 filter 只能检测一种局部模式。多个 filters 输出多个 feature maps,形成多个通道。若一层有 CoutC_{\text{out}} 个 filter,则输出通道数为 CoutC_{\text{out}}。高层特征是低层特征的组合。

13.5 Pooling:降采样和局部鲁棒

Max pooling 在窗口内取最大值:Yi,j,c=max⁡(u,v)∈Wi,jXu,v,cY_{i,j,c} = \max_{(u,v) \in \mathcal{W}_{i,j}} X_{u,v,c}。

作用:缩小特征图,减少后续参数量;增加对小范围平移的鲁棒性;保留局部最强响应。课件指出最常用 pooling 是 max-pooling。

13.6 Full CNN 结构

典型 CNN:

1
Input → Convolution → ReLU → Pooling → ⋯ → Flatten → Fully Connected → Output

Flatten 是把多通道特征图拉平成向量,再送入全连接前馈网络分类。

13.7 CNN 相比全连接网络为什么参数少

全连接层若输入图像有 HWCHWC 个像素,每个隐藏神经元都连接所有像素,参数很多。CNN 用两种方式压缩:

  • 减少连接:只连接局部窗口。
  • 共享权重:同一个 filter 在所有位置使用同一组参数。

Pooling 进一步降低特征图尺寸和复杂度。

13.8 CNN 考试概念

常见判断:

  • CNN 是层级特征提取器:对。
  • 卷积核是需要学习的参数:对。
  • 卷积是跨输入所有通道的加权求和:对。
  • CNN 常用激活函数是 ReLU:对。
  • CNN 常用 pooling 是 max-pooling:对。
  • CNN 训练策略是 backpropagation:对。

课件提到的经典结构包括 LeNet-5、AlexNet、GoogleNet、VGG、ResNet、BN,通常只需识别为经典 CNN/深度学习架构。

AlphaGo 例子中,棋盘可以表示为 19×1919 \times 19 矩阵,黑子、白子、空位分别编码。全连接前馈网络理论上也能用,但 CNN 更适合利用棋盘局部模式。课件特别提到 AlphaGo 的 policy network 不使用 max pooling,这属于低概率细节。

13.9 特征工程与特征学习:传统机器学习和深度学习的分界

传统机器学习常见流程:

原始输入→人工设计特征→简单分类器\text{原始输入} \to \text{人工设计特征} \to \text{简单分类器}

例如 SVM 中手工构造多项式特征、交互特征,或手工选择 kernel。其效果很依赖领域知识和特征工程。

深度学习更强调端到端特征学习:

原始输入→网络自动学习表示→分类/回归输出\text{原始输入} \to \text{网络自动学习表示} \to \text{分类/回归输出}

可以把深度网络理解为学习一个复杂的特征映射 ϕθ(x)\phi_\theta(x),然后在学到的表示上接一个相对简单的分类器。优势是表达能力强、能自动学习特征;代价是数据需求大、训练成本高、可解释性较差。

14. RNN 和 Attention

隔壁班补充,低概率

14.1 RNN:适合序列数据

输入:x1,x2,…,xTx_1, x_2, \dots, x_T。隐藏状态递推:ht=ϕ(Wxxt+Whht−1+b)h_t = \phi(W_x x_t + W_h h_{t-1} + b)。输出:yt=g(Wyht)y_t = g(W_y h_t)。

含义:hth_t 保存到当前时刻为止的历史信息。RNN 适合文本、语音、时间序列。问题:长序列训练中容易梯度消失或爆炸。改进结构包括 LSTM 和 GRU。

14.2 Attention:用 Query、Key、Value 动态加权信息

Scaled dot-product attention:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V

含义:

  • Query:当前位置想查什么。
  • Key:每个位置提供的索引。
  • Value:每个位置携带的信息。

Self-attention 中 Q,K,VQ, K, V 都来自同一序列。Transformer 主要由 self-attention 和前馈层组成。

16. 常考证明和计算模板

16.1 信息增益计算模板

  1. 数出当前集合各类别数量。
  2. 算当前熵:H(S)=−∑kpklog⁡2pkH(S) = -\sum_k p_k \log_2 p_k,其中 pkp_k 是类别 kk 的比例。
  3. 对属性 AA 的每个取值 vv,数出子集 SvS_v 的类别比例并算 H(Sv)H(S_v)。
  4. 算加权平均:∑v∣Sv∣∣S∣H(Sv)\sum_v \dfrac{|S_v|}{|S|} H(S_v)。
  5. 信息增益:Gain(S,A)=H(S)−∑v∣Sv∣∣S∣H(Sv)\text{Gain}(S, A) = H(S) - \sum_v \dfrac{|S_v|}{|S|} H(S_v)。
  6. 选增益最大的属性。

16.2 最小二乘推导模板

从目标 J(w)=∥Xw−y∥2J(w) = \|Xw - y\|^2,写成 J(w)=(Xw−y)T(Xw−y)J(w) = (Xw - y)^T(Xw - y)。

求梯度:∇wJ(w)=2XT(Xw−y)\nabla_w J(w) = 2X^T(Xw - y)。令 0:XTXw=XTyX^T X w = X^T y。

给答案:w∗=(XTX)−1XTyw^* = (X^T X)^{-1} X^T y。

  • 加权时把中间都加上 RR:w∗=(XTRX)−1XTRyw^* = (X^T R X)^{-1} X^T R y。
  • 正则时把左边矩阵加 λI\lambda I 或 λD\lambda D。

16.3 Logistic 梯度模板

记 p=σ(wTx+b)p = \sigma(w^T x + b),损失 L=−[ylog⁡p+(1−y)log⁡(1−p)]L = -[y \log p + (1-y)\log(1-p)]。

先写核心:∂L∂z=p−y\dfrac{\partial L}{\partial z} = p - y。再写:

∂L∂wj=(p−y)xj,∂L∂b=p−y\frac{\partial L}{\partial w_j} = (p - y)x_j, \quad \frac{\partial L}{\partial b} = p - y

16.4 SVM 手算模板

  1. 画图,找支持向量。
  2. 正支持向量列 wTx+b=1w^T x + b = 1。
  3. 负支持向量列 wTx+b=−1w^T x + b = -1。
  4. 解 w,bw, b。
  5. 检查全部约束 yi(wTxi+b)≥1y_i(w^T x_i + b) \geq 1。
  6. 写:wTx+b=0w^T x + b = 0,wTx+b=1w^T x + b = 1,wTx+b=−1w^T x + b = -1,g(x)=sign(wTx+b)g(x) = \text{sign}(w^T x + b)。
  7. 间隔宽度:2∥w∥\dfrac{2}{\|w\|}。

16.6 核矩阵半正定证明模板

若 Kij=ϕ(xi)Tϕ(xj)K_{ij} = \phi(x_i)^T \phi(x_j),则对任意 aa:

aTKa=∑i∑jaiajϕ(xi)Tϕ(xj)=∥∑iaiϕ(xi)∥2≥0a^T K a = \sum_i \sum_j a_i a_j \phi(x_i)^T \phi(x_j) = \left\| \sum_i a_i \phi(x_i) \right\|^2 \geq 0

所以核矩阵半正定。

17. 判断题速查

  • 模型越复杂越好:错,可能过拟合。
  • 决策树能表示任意离散函数:对,但可能很大且泛化差。
  • 无冲突训练集存在零训练误差决策树:对。
  • 根节点信息增益一定大于子节点信息增益:错,数据子集不同。
  • k 越大,kNN 训练精度越高:错。
  • 线性分类器决策边界是超平面:对。
  • 最小二乘分类容易训练、有闭式解,但不是分类最优选择:对。
  • 逻辑回归输出概率:对。
  • 逻辑回归决策边界在原始特征空间是线性的:对。
  • SVM 支持向量决定边界:对。
  • hard margin 非支持向量通常不影响解:对。
  • soft margin 允许违反间隔甚至错分:对。
  • RBF 核只能线性分类:错。
  • 有效核矩阵应对称半正定:对。
  • K-Means 会收敛到全局最优:错。
  • K-Means 会终止或收敛到局部最优:对。
  • PCA 可用于去噪:对。
  • 无激活的多层神经网络仍等价于线性模型:对。
  • CNN 权重共享减少参数量:对。
  • 深度学习一定比传统机器学习好:错。

18. 最后一页压缩版

  • 决策树:Gain(S,A)=H(S)−∑v∣Sv∣∣S∣H(Sv)\text{Gain}(S, A) = H(S) - \sum_v \dfrac{|S_v|}{|S|} H(S_v)
  • kNN:y^=majority{yi:xi∈Nk(x)}\hat{y} = \text{majority}\{y_i : x_i \in N_k(x)\}
  • 最小二乘:w∗=(XTX)−1XTyw^* = (X^T X)^{-1} X^T y
  • 加权最小二乘:w∗=(XTRX)−1XTRyw^* = (X^T R X)^{-1} X^T R y
  • 逻辑回归:p=σ(wTx+b)p = \sigma(w^T x + b),L=−[ylog⁡p+(1−y)log⁡(1−p)]L = -[y \log p + (1-y)\log(1-p)],∇wL=(p−y)x\nabla_w L = (p - y)x
  • SVM:min⁡w,b12∥w∥2\min_{w,b} \tfrac{1}{2}\|w\|^2,yi(wTxi+b)≥1y_i(w^T x_i + b) \geq 1,margin width =2∥w∥= \tfrac{2}{\|w\|},ℓhinge=max⁡(0,1−yif(xi))\ell_{\text{hinge}} = \max(0, 1 - y_i f(x_i))
  • Kernel:K(x,z)=ϕ(x)Tϕ(z)K(x, z) = \phi(x)^T \phi(z)
  • K-Means:ci=arg⁡min⁡k∥xi−μk∥2c_i = \arg\min_k \|x_i - \mu_k\|^2,μk=1∣Ck∣∑xi∈Ckxi\mu_k = \tfrac{1}{|C_k|} \sum_{x_i \in C_k} x_i
  • PCA:Suj=λjujS u_j = \lambda_j u_j,zi=UkT(xi−xˉ)z_i = U_k^T (x_i - \bar{x})
  • 神经网络:a(ℓ)=ϕ(W(ℓ)a(ℓ−1)+b(ℓ))a^{(\ell)} = \phi(W^{(\ell)} a^{(\ell-1)} + b^{(\ell)})
  • BP:δ(ℓ)=((W(ℓ+1))Tδ(ℓ+1))⊙ϕ′(z(ℓ))\delta^{(\ell)} = ((W^{(\ell+1)})^T \delta^{(\ell+1)}) \odot \phi'(z^{(\ell)})
  • CNN:局部连接 + 权重共享 + 层级特征

线性代数速补

目录:1. 标量/向量/矩阵 · 2. 转置 · 3. 内积 · 4. 范数和距离 · 5. 矩阵乘法 · 6. 单位矩阵/逆/伪逆 · 7. 对角矩阵和权重矩阵 · 8. 超平面和法向量 · 9. 投影 · 10. 二次型和半正定 · 11. 特征值和特征向量 · 12. 协方差矩阵 · 13. 矩阵求导 · 14. Hadamard 乘积 · 15. 机器学习中最常见的维度检查 · 16. 看到公式不会时的快速拆解法

1. 标量、向量、矩阵

标量是一个数,常记为 a,b,λa, b, \lambda。向量是一列数,常记为 x,w,yx, w, y。矩阵是二维表,常记为 X,W,AX, W, A。默认把向量看成列向量:

x=[x1x2⋮xd]∈Rdx = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_d \end{bmatrix} \in \mathbb{R}^d

若有 nn 个样本、每个样本 dd 个特征,机器学习里常把数据矩阵写成:

X=[x1Tx2T⋮xnT]∈Rn×dX = \begin{bmatrix} x_1^T \\ x_2^T \\ \vdots \\ x_n^T \end{bmatrix} \in \mathbb{R}^{n \times d}

其中第 ii 行 xiTx_i^T 是第 ii 个样本。

维度检查是防止公式写错的最快方法。若 X∈Rn×dX \in \mathbb{R}^{n \times d},则 w∈Rdw \in \mathbb{R}^d,Xw∈RnXw \in \mathbb{R}^n,它表示对 nn 个样本分别做线性预测。

2. 转置

向量转置:xT=[x1  x2  ⋯  xd]x^T = [x_1 \; x_2 \; \cdots \; x_d]

矩阵转置:(AT)ij=Aji(A^T)_{ij} = A_{ji}

常用规则:

(A+B)T=AT+BT(A + B)^T = A^T + B^T

(AB)T=BTAT(AB)^T = B^T A^T

(AT)T=A(A^T)^T = A

注意第二条会反序,这是很多推导里最容易错的地方。

3. 内积

两个同维向量的内积:

wTx=∑j=1dwjxjw^T x = \sum_{j=1}^{d} w_j x_j

线性模型 f(x)=wTx+bf(x) = w^T x + b 可以理解为"每个特征 xjx_j 乘上重要性 wjw_j,再求和"。若 wj>0w_j > 0,该特征越大,打分越大;若 wj<0w_j < 0,该特征越大,打分越小。

内积还可以衡量方向相似度:wTx=∥w∥∥x∥cos⁡θw^T x = \|w\| \|x\| \cos\theta,其中 θ\theta 是两个向量夹角。若 wTx=0w^T x = 0,则两个向量正交,也就是方向垂直。

4. 范数和距离

向量的 L2 范数:

∥x∥2=xTx=∑j=1dxj2\|x\|_2 = \sqrt{x^T x} = \sqrt{\sum_{j=1}^{d} x_j^2}

若上下文没有特别说明,∥x∥\|x\| 通常指 L2 范数。两个点的欧氏距离:

∥x−z∥2=∑j=1d(xj−zj)2\|x - z\|_2 = \sqrt{\sum_{j=1}^{d} (x_j - z_j)^2}

kNN 和 K-Means 里经常用平方距离:∥x−z∥22=(x−z)T(x−z)\|x - z\|_2^2 = (x - z)^T(x - z)。平方距离省去了开方,最小化时和原距离等价,因为开方函数单调递增。

L1 范数:∥x∥1=∑j=1d∣xj∣\|x\|_1 = \sum_{j=1}^{d} |x_j|。机器学习里 L1 正则常产生稀疏权重,L2 正则常让权重整体变小。

5. 矩阵乘法

若 A∈Rm×nA \in \mathbb{R}^{m \times n},B∈Rn×pB \in \mathbb{R}^{n \times p},则 AB∈Rm×pAB \in \mathbb{R}^{m \times p},元素为:

(AB)ij=∑k=1nAikBkj(AB)_{ij} = \sum_{k=1}^{n} A_{ik} B_{kj}

也就是说,ABAB 的第 i,ji, j 个元素是 AA 的第 ii 行和 BB 的第 jj 列做内积。最小二乘中:

Xw=[x1Twx2Tw⋮xnTw]Xw = \begin{bmatrix} x_1^T w \\ x_2^T w \\ \vdots \\ x_n^T w \end{bmatrix}

它一次性算出所有样本的预测值。

6. 单位矩阵、逆矩阵和伪逆

单位矩阵 II 满足 Ix=x,  AI=A,  IA=AIx = x,\; AI = A,\; IA = A。

逆矩阵 A−1A^{-1} 满足 A−1A=AA−1=IA^{-1} A = A A^{-1} = I。不是所有矩阵都有逆。方阵 AA 可逆通常要求列之间没有线性冗余,也就是满秩。

如果 XTXX^T X 不可逆,最小二乘不能直接写 (XTX)−1XTy(X^T X)^{-1} X^T y,这时可以用 Moore-Penrose 伪逆:w∗=X+yw^* = X^+ y。直观上,伪逆是在"没有普通逆矩阵"时给出最小二乘意义下的合理解。

7. 对角矩阵和权重矩阵

对角矩阵只有主对角线可能非零:R=diag(r1,…,rn)R = \text{diag}(r_1, \dots, r_n)。加权最小二乘中:

J(w)=(y−Xw)TR(y−Xw)J(w) = (y - Xw)^T R (y - Xw)

若记误差向量 e=y−Xwe = y - Xw,则 eTRe=∑i=1nriei2e^T R e = \sum_{i=1}^{n} r_i e_i^2。所以 RR 的作用就是给不同样本误差加不同权重。

8. 超平面和法向量

线性分类边界 wTx+b=0w^T x + b = 0 是一个超平面。二维时是直线,三维时是平面,高维时叫超平面。ww 是法向量,表示垂直于边界的方向。若点 xx 满足 wTx+b>0w^T x + b > 0,它在边界的一侧;若 wTx+b<0w^T x + b < 0,它在另一侧。

点 xx 到超平面 wTx+b=0w^T x + b = 0 的距离为 ∣wTx+b∣∥w∥\dfrac{|w^T x + b|}{\|w\|}。带标签 y∈{−1,+1}y \in \{-1, +1\} 时,SVM 的几何间隔为 y(wTx+b)∥w∥\dfrac{y(w^T x + b)}{\|w\|}。这就是 SVM 中间隔公式的来源。

9. 投影

若 uu 是单位向量,即 ∥u∥=1\|u\| = 1,则 xx 在方向 uu 上的投影长度为 uTxu^T x,投影向量为 (uTx)u(u^T x) u。若 U=[u1,…,uk]U = [u_1, \dots, u_k] 的列向量两两正交且都是单位向量,则 UTU=IU^T U = I。xx 投影到这些方向张成的子空间中,低维坐标为 z=UTxz = U^T x,重构为 x^=Uz\hat{x} = Uz。

PCA 中 zi=UkT(xi−xˉ)z_i = U_k^T (x_i - \bar{x}),就是把中心化后的样本投影到前 kk 个主成分方向上。

10. 二次型和半正定

SVM 核矩阵会用到

形如下面的表达式叫二次型:xTAxx^T A x。如果对任意 xx 都有 xTAx≥0x^T A x \geq 0,则称 AA 是半正定矩阵,记为 A⪰0A \succeq 0。

最简单例子:xTIx=xTx=∥x∥2≥0x^T I x = x^T x = \|x\|^2 \geq 0。核矩阵半正定的关键证明就是把二次型写成一个范数平方:

aTKa=∥∑i=1naiϕ(xi)∥2≥0a^T K a = \left\| \sum_{i=1}^{n} a_i \phi(x_i) \right\|^2 \geq 0

所以只要 Kij=ϕ(xi)Tϕ(xj)K_{ij} = \phi(x_i)^T \phi(x_j),核矩阵一定半正定。

11. 特征值和特征向量

PCA 的核心

若非零向量 uu 满足 Au=λuAu = \lambda u,则 uu 是矩阵 AA 的特征向量,λ\lambda 是对应特征值。含义:矩阵 AA 作用到方向 uu 上时,不改变方向,只把长度缩放 λ\lambda 倍。

PCA 中协方差矩阵 SS 的特征值和特征向量满足 Suj=λjujS u_j = \lambda_j u_j,其中:

  • uju_j:第 jj 个主成分方向。
  • λj\lambda_j:数据在该方向上的方差大小。

PCA 取最大 kk 个特征值对应的特征向量,因为这些方向保留最多方差信息。

12. 协方差矩阵

数据中心化后 x~i=xi−xˉ\tilde{x}_i = x_i - \bar{x},协方差矩阵:

S=1n∑i=1nx~ix~iTS = \frac{1}{n} \sum_{i=1}^{n} \tilde{x}_i \tilde{x}_i^T

若把中心化样本按行放入矩阵 X~\tilde{X},也可写成 S=1nX~TX~S = \frac{1}{n} \tilde{X}^T \tilde{X}。

SjjS_{jj} 表示第 jj 个特征自己的方差,SjkS_{jk} 表示第 jj 和第 kk 个特征一起变化的程度。PCA 对 SS 求特征向量,本质是在找数据变化最大的正交方向。

13. 矩阵求导

机器学习里常见目标函数是标量,但变量是向量。梯度 ∇wJ\nabla_w J 和 ww 形状相同。常用结论:

∂∂w(aTw)=a\frac{\partial}{\partial w}(a^T w) = a

∂∂w(wTa)=a\frac{\partial}{\partial w}(w^T a) = a

∂∂w(wTw)=2w\frac{\partial}{\partial w}(w^T w) = 2w

若 AA 是对称矩阵:

∂∂w(wTAw)=2Aw\frac{\partial}{\partial w}(w^T A w) = 2Aw

最小二乘最常用公式:

∂∂w∥Xw−y∥2=2XT(Xw−y)\frac{\partial}{\partial w} \|Xw - y\|^2 = 2X^T(Xw - y)

加权最小二乘中,若 R=RTR = R^T:

∂∂w(y−Xw)TR(y−Xw)=−2XTR(y−Xw)\frac{\partial}{\partial w}(y - Xw)^T R (y - Xw) = -2X^T R (y - Xw)

逻辑回归中常用链式法则:

∂L∂wj=∂L∂z∂z∂wj\frac{\partial L}{\partial w_j} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial w_j}

因为 z=wTx+bz = w^T x + b,∂z∂wj=xj\frac{\partial z}{\partial w_j} = x_j,所以只要先求出 ∂L∂z=p−y\frac{\partial L}{\partial z} = p - y,就得到 ∂L∂wj=(p−y)xj\frac{\partial L}{\partial w_j} = (p - y) x_j。

14. Hadamard 乘积

神经网络 BP 里的逐元素相乘

神经网络反向传播中出现:

δ(ℓ)=((W(ℓ+1))Tδ(ℓ+1))⊙ϕ′(z(ℓ))\delta^{(\ell)} = ((W^{(\ell+1)})^T \delta^{(\ell+1)}) \odot \phi'(z^{(\ell)})

这里的 ⊙\odot 不是矩阵乘法,而是逐元素乘法。若 a=[a1a2],  b=[b1b2]a = \begin{bmatrix} a_1 \\ a_2 \end{bmatrix},\; b = \begin{bmatrix} b_1 \\ b_2 \end{bmatrix},则 a⊙b=[a1b1a2b2]a \odot b = \begin{bmatrix} a_1 b_1 \\ a_2 b_2 \end{bmatrix}。它要求两个向量形状相同。

15. 机器学习中最常见的维度检查

  • 线性回归:X∈Rn×dX \in \mathbb{R}^{n \times d},w∈Rdw \in \mathbb{R}^d,y∈Rny \in \mathbb{R}^n,Xw−y∈RnXw - y \in \mathbb{R}^n,XT(Xw−y)∈RdX^T(Xw - y) \in \mathbb{R}^d,所以梯度和 ww 同维。
  • 多分类线性模型:X∈Rn×dX \in \mathbb{R}^{n \times d},W∈Rd×kW \in \mathbb{R}^{d \times k},Y∈Rn×kY \in \mathbb{R}^{n \times k},XW∈Rn×kXW \in \mathbb{R}^{n \times k}。
  • 神经网络单层:a(ℓ−1)∈Rdℓ−1a^{(\ell-1)} \in \mathbb{R}^{d_{\ell-1}},W(ℓ)∈Rdℓ×dℓ−1W^{(\ell)} \in \mathbb{R}^{d_\ell \times d_{\ell-1}},b(ℓ)∈Rdℓb^{(\ell)} \in \mathbb{R}^{d_\ell},则 z(ℓ)=W(ℓ)a(ℓ−1)+b(ℓ)∈Rdℓz^{(\ell)} = W^{(\ell)} a^{(\ell-1)} + b^{(\ell)} \in \mathbb{R}^{d_\ell}。

16. 看到公式不会时的快速拆解法

  1. 第一步,看形状。 先给每个量标维度,确认乘法是否合法。
  2. 第二步,看含义。 比如 XwXw 是所有样本预测,Xw−yXw - y 是所有误差,∥Xw−y∥2\|Xw - y\|^2 是总平方误差。
  3. 第三步,看几何。 wTx+b=0w^T x + b = 0 是边界,ww 是法向量,∥w∥\|w\| 控制间隔尺度。
  4. 第四步,看优化。 若目标是平方误差,通常求导令 0;若目标有 sigmoid 或神经网络,通常用梯度下降;若是 SVM hard margin,通常是带约束的二次规划。
  5. 第五步,检查答案形状。 比如求 ww,答案必须是 dd 维向量;求核矩阵,答案必须是 n×nn \times n 矩阵;求 PCA 投影,低维结果必须是 kk 维。

速查表合集(按章节汇总)

本附录汇集各章的速查表(公式 / 概念 / 算法),从正文统一移至此处,按章节标注。

【Ch1-2 绪论与智能体】

关键概念速查表

名称 类型 核心内容 考点
四种 AI 定义 框架 像人/理性 × 思考/行动;教材取"理性地行动" ⭐⭐⭐
图灵测试 概念 模仿游戏,1950;暗示知识/推理/语言/学习四要素 ⭐⭐
理性智能体 核心 f:P∗→Af:P^{*}\to A;agent = architecture + program ⭐⭐⭐
PAC 学习 理论 近似正确(R(h)≤ϵR(h)\le\epsilon) + 可能正确(P≥1−δP\ge 1-\delta);样本量多项式 ⭐⭐⭐
Hoeffding 不等式 定理 R(h)≤R^S(h)+log⁡(2/δ)/2mR(h)\le\hat{R}_S(h)+\sqrt{\log(2/\delta)/2m} ⭐⭐⭐
奥卡姆剃刀 原则 $R(h)\le\hat{R}_S(h)+O(\sqrt{\log_2 \mathcal{H}
通用近似 / 图灵完备 定理 前馈网近似连续函数;RNN 模拟图灵机 ⭐⭐
达特茅斯会议 历史 1956,McCarthy,AI 正式命名诞生 ⭐⭐
两次 AI 寒冬 历史 60s–70s 复杂性;80s–90s 专家系统衰退 ⭐
性能度量 概念 评价行为成功与否的客观准则 ⭐⭐⭐
PEAS 框架 Performance / Environment / Actuators / Sensors ⭐⭐⭐
环境六维度 框架 可观测/确定/片段/静态/离散/单多智能体;真实世界全难 ⭐⭐⭐
智能体四类型 架构 简单反射 / 有状态 / 目标 / 效用(+ 学习智能体四组件) ⭐⭐⭐
ReAct 范式 Thought → Action → Observation → Loop ⭐⭐

【Ch3-4 搜索】

1.8 无信息搜索策略速查表 ⭐⭐⭐

策略 Frontier 完备 最优(cost=1) 时间 空间
BFS FIFO ✔(dd 有限) ✔ O(bd)O(b^d) O(bd)O(b^d)
UCS 优先队列(按 gg) ✔(step ≥ ϵ\epsilon) ✔ O(b1+⌊C∗/ϵ⌋)O(b^{1+\lfloor C^*/\epsilon\rfloor}) 同时间
DFS LIFO ✗(避免重复则在有限空间 ✔) ✗ O(bm)O(b^m) O(bm)O(bm)
DLS LIFO(限深 ll) ✗ ✗ O(bl)O(b^l) O(bl)O(bl)
IDS 反复 DLS ✔ ✔ O(bd)O(b^d) O(bd)O(bd)
双向 两端 BFS ✔ ✔ O(bd/2)O(b^{d/2}) O(bd/2)O(b^{d/2})

bb=分支因子,dd=最优解深度,mm=最大深度,C∗C^*=最优解代价,ϵ\epsilon=单步代价下界。


算法 / 复杂度 / 公式 速查表

算法 f(n)f(n) 完备 最优 时间 空间
BFS —(FIFO) ✔ ✔(cost=1) O(bd)O(b^d) O(bd)O(b^d)
UCS g(n)g(n) ✔ ✔ O(b1+⌊C∗/ϵ⌋)O(b^{1+\lfloor C^*/\epsilon\rfloor}) 同时间
DFS —(LIFO) ✗ ✗ O(bm)O(b^m) O(bm)O(bm)
DLS —(限深 ll) ✗ ✗ O(bl)O(b^l) O(bl)O(bl)
IDS —(反复 DLS) ✔ ✔(cost=1) O(bd)O(b^d) O(bd)O(bd)
双向 —(两端 BFS) ✔ ✔(cost=1) O(bd/2)O(b^{d/2}) O(bd/2)O(b^{d/2})
Greedy h(n)h(n) ✗ ✗ O(bm)O(b^m) O(bm)O(b^m)
A* g(n)+h(n)g(n)+h(n) ✔ ✔ 指数级(效率最优) 指数级
关键公式
  • 评价函数:f(n)=g(n)+h(n)f(n)=g(n)+h(n)
  • 可采纳:h(n)≤h∗(n)h(n)\le h^*(n)
  • 一致:h(n)≤c(n,a,n′)+h(n′)h(n)\le c(n,a,n')+h(n');一致 ⇒ 可采纳
  • 一致下 ff 单调不减:f(n′)≥f(n)f(n')\ge f(n)
  • A* 扩展范围:{n:f(n)<C∗}\{n:f(n)<C^*\} 必扩展,{n:f(n)>C∗}\{n:f(n)>C^*\} 不扩展
  • 组合启发式:h(n)=max⁡ihi(n)h(n)=\max_i h_i(n) 仍可采纳且占优
  • IDS 时间:db+(d−1)b2+⋯+bd=O(bd)db+(d-1)b^2+\cdots+b^d=O(b^d)
  • BFS 求和:1+b+⋯+bd=O(bd)1+b+\cdots+b^d=O(b^d)

【Ch5 约束满足与 SAT】

关键概念速查表

名称 类型 核心内容 考点
CSP 三元组 ⟨X,D,C⟩ 定义 变量/值域/约束;解 = 相容且完备赋值 ⭐⭐⭐
约束种类 分类 一元/二元/高阶/软约束 ⭐⭐
CSP 变量分类 分类 离散有限 (O(dn)O(d^n))/离散无限/连续;SAT 是布尔 CSP ⭐⭐
回溯搜索 算法 可交换性 → 单变量 DFS;n-queens≈25 ⭐⭐⭐
MRV / 度启发式 / LCV 启发式 fail-fast / tie-breaker / 最少排除 ⭐⭐⭐
前向检验 推理 跟踪剩余合法值,提前终止 ⭐⭐
弧相容 / AC-3 推理 O(n2d3)O(n^2d^3);检测全部不一致 NP-hard ⭐⭐⭐
k-相容 / 强 k-相容 推理 路径相容;Alldiff 全局约束 ⭐⭐
树结构 CSP 结构 拓扑排序 + 反向弧相容 → O(nd2)O(nd^2) ⭐⭐⭐
子问题分解 结构 连通分量;ncdc\frac{n}{c}d^c 线性于 nn ⭐⭐⭐
树分解 结构 近树结构;连通子问题合并 ⭐⭐
min-conflicts 局部搜索 完全状态 + 最小冲突;4-queens / 3-SAT ⭐⭐⭐
SAT / CNF / k-SAT 定义 布尔/命题可满足;合取范式;2-SAT/3-SAT ⭐⭐⭐
Cook 定理 复杂性 SAT 是首个 NPC 问题 ⭐⭐⭐
2-SAT / Horn-SAT 复杂性 NL-complete / P-complete ⭐⭐
SAT 相变 复杂性 easy-hard-easy;c3≈4.28c_3\approx 4.28 ⭐⭐⭐
单元传播 / 纯文字消去 推理 unit clause / pure literal 的化简规则 ⭐⭐⭐
DPLL 算法 UP + PLE + 二叉分支;多项式空间;complete solver 基础 ⭐⭐⭐
预处理 DPLL增强 sorting+subsumption;2-simplifying(蕴含图 SCC) ⭐⭐
Look-ahead DPLL增强 MOM / Jeroslow-Wang / Satz 启发式 ⭐⭐
backjumping / CDCL DPLL增强 非时序回溯;冲突驱动子句学习 ⭐⭐⭐
GSAT / WalkSAT 局部搜索 贪心翻转变量;关注未满足子句;不能证 UNSAT ⭐⭐⭐
SAT Solvers 工具 GRASP / zChaff (VSIDS) / MiniSAT / mach_dl ⭐⭐
BMC 应用 有界模型检测 → SAT;I∧⋀τ∧⋁¬pI\wedge\bigwedge\tau\wedge\bigvee\neg p ⭐⭐
SMT / QBF 扩展 SMT (NP-complete) / QBF (PSPACE-complete) ⭐⭐
P / NP / NPC 复杂性 DTM vs NTM;归约等价类;P ?= NP ⭐⭐

【Ch6 博弈与 MCTS】

关键概念速查表

名称 类型 核心内容 考点
博弈分类 框架 确定/随机 × 完全/不完全信息;零和;正常形式 vs 扩展式 ⭐⭐⭐
正常形式博弈 定义 (n,A,R)(n,A,R);策略=动作上概率分布 ⭐⭐
Nash 均衡 概念 所有玩家都最优反应;至少存在一个 ⭐⭐
双人零和博弈 定理 Minimax 定理;均衡唯一且可互换;线性规划求解 ⭐⭐
Minimax 算法 算法 MAX 取 max、MIN 取 min;最优 vs 最优对手 ⭐⭐⭐
Minimax 复杂度 性质 时间 O(bm)O(b^m),空间 O(bm)O(bm);DFS ⭐⭐⭐
α-β 剪枝 算法 α=MAX 下界,β=MIN 上界;β<α 剪枝 ⭐⭐⭐
α-β 复杂度 性质 完美排序 O(bm/2)O(b^{m/2});深度翻倍;不影响结果 ⭐⭐⭐
评估函数 启发式 Eval=∑wifi\text{Eval}=\sum w_i f_i;序数效用(确定性下值不重要) ⭐⭐⭐
迭代加深 IDS 技巧 递增深度限;时钟到点用最深完成结果 ⭐⭐⭐
随机博弈 定义 (n,S,A,T,R)(n,S,A,T,R);MDP+多智能体 ⭐⭐
Expectiminimax 算法 引入 CHANCE 节点取期望;随机下精确值重要 ⭐⭐⭐
最大期望效用 原则 在知识下最大化期望效用;≈理性定义 ⭐⭐⭐
不完全信息博弈 方法 对所有发牌求期望极小极大 ⭐⭐
蒙特卡洛方法 方法 随机抽样近似期望/积分;求 π、定积分 ⭐⭐
大数定律/中心极限 定理 保证收敛;误差 O(1/n)O(1/\sqrt{n}) ⭐⭐
UCB1 策略 μ^a+cln⁡t/na\hat{\mu}_a+c\sqrt{\ln t/n_a};Hoeffding 推导 ⭐⭐⭐
探索-利用 权衡 ε-贪心/乐观初值/UCB ⭐⭐⭐
MCTS 四步 算法 Selection/Expansion/Simulation/Backprop ⭐⭐⭐
UCT 公式 公式 Q(a)+cln⁡N(s)/N(a)Q(a)+c\sqrt{\ln N(s)/N(a)} ⭐⭐⭐
PUCT (AlphaGo) 算法 引入 P(s,a)P(s,a) 先验;策略网+价值网+MCTS ⭐⭐
MCTS 性质 性质 anytime;不需评估函数;以概率 1 收敛最优 ⭐⭐⭐

【Ch7-8 逻辑推理】

速查表

【Ch10 不确定性与贝叶斯网络】

公式与算法速查表

名称 公式 / 要点
概率公理 0≤P(A)≤10\le P(A)\le1;P(true)=1P(\text{true})=1;P(A∨B)=P(A)+P(B)−P(A∧B)P(A\vee B)=P(A)+P(B)-P(A\wedge B)
条件概率 P(a∣b)=P(a∧b)/P(b)P(a\mid b)=P(a\wedge b)/P(b)
乘法规则 P(a∧b)=P(a∣b)P(b)=P(b∣a)P(a)P(a\wedge b)=P(a\mid b)P(b)=P(b\mid a)P(a)
链式法则 P(X1,…,Xn)=∏iP(Xi∣X1,…,Xi−1)P(X_1,\dots,X_n)=\prod_i P(X_i\mid X_1,\dots,X_{i-1})
全概率公式 P(a)=∑bP(a∣b)P(b)P(a)=\sum_b P(a\mid b)P(b)
边缘独立 X⊥Y  ⟺  P(X,Y)=P(X)P(Y)X\perp Y\iff P(X,Y)=P(X)P(Y)
条件独立 X⊥Y∣Z  ⟺  P(X,Y∣Z)=P(X∣Z)P(Y∣Z)X\perp Y\mid Z\iff P(X,Y\mid Z)=P(X\mid Z)P(Y\mid Z)
贝叶斯规则 P(Y∣X)=α P(X∣Y)P(Y)P(Y\mid X)=\alpha\,P(X\mid Y)P(Y)
归一化查询 P(Y∣E=e)=α∑hP(Y,E=e,H=h)P(Y\mid E=e)=\alpha\sum_h P(Y,E=e,H=h)
贝叶斯网全局语义 P(x1,…,xn)=∏iP(xi∣parents(Xi))P(x_1,\dots,x_n)=\prod_i P(x_i\mid\text{parents}(X_i))
紧致性 O(n⋅2k)O(n\cdot 2^k) vs O(2n)O(2^n)
局部语义 Xi⊥非后代∣Parents(Xi)X_i\perp\text{非后代}\mid\text{Parents}(X_i);  ⟺  \iff 全局语义
d-分隔判据 通路被 ZZ 阻塞 ⟺ (顺连/分连节点 ∈ ZZ) 或 (汇连节点及其后代 ∉ ZZ)
整体马尔可夫性 ZZ d-分隔 X,Y⇒X⊥Y∣ZX,Y\Rightarrow X\perp Y\mid Z
马尔可夫边界 mb(X)=mb(X)= 父 + 子 + 子的配偶;给定 mb(X)mb(X) 则 X⊥X\perp 其余
Enumeration-Ask P(B∣j,m)=αP(B)∑eP(e)∑aP(a∣B,e)P(j∣a)P(m∣a)P(B\mid j,m)=\alpha P(B)\sum_e P(e)\sum_a P(a\mid B,e)P(j\mid a)P(m\mid a)
变量消元 按消元顺序:收集含 XX 的因子 → 相乘 → 对 XX 求和 → 替换
似然加权权重 w=∏jP(Ej=ej∣Parents(Ej))w=\prod_j P(E_j=e_j\mid\text{Parents}(E_j))
Gibbs 抽样分布 P(X∣Di−1∖X)=P(X∣mb(X)Di−1)P(X\mid D_{i-1}\setminus X)=P(X\mid mb(X)_{D_{i-1}})
朴素贝叶斯 P(C∣E1,…,En)=αP(C)∏iP(Ei∣C)P(C\mid E_1,\dots,E_n)=\alpha P(C)\prod_i P(E_i\mid C)
MAP h∗=arg⁡max⁡hP(H=h∣E=e)h^*=\arg\max_h P(H=h\mid E=e)
MPE arg⁡max⁡所有非证据变量P(⋅∣E=e)\arg\max_{\text{所有非证据变量}} P(\cdot\mid E=e)
复杂度 单联通 O(dkn)O(d^k n);多联通 NP-hard / #P-complete

【CH12-13 学习与深度学习】

公式速查

名称 公式
泛化/经验误差 R(h)=Pr⁡[h(x)≠c(x)]R(h)=\Pr[h(x)\neq c(x)],R^S(h)=1m∑1[h(xi)≠c(xi)]\widehat R_S(h)=\tfrac{1}{m}\sum\mathbf{1}[h(x_i)\neq c(x_i)]
Hoeffding 单假设界 R(h)≤R^S(h)+log⁡(2/δ)2mR(h)\le\widehat R_S(h)+\sqrt{\tfrac{\log(2/\delta)}{2m}}
有限假设集不一致界 R(h)≤R^S(h)+log⁡∣H∣+log⁡(2/δ)2mR(h)\le\widehat R_S(h)+\sqrt{\tfrac{\log\lvert H\rvert+\log(2/\delta)}{2m}}
信息熵 / 信息增益 H(Y)=−∑plog⁡2pH(Y)=-\sum p\log_2 p;IG=H(Y)−H(Y∣X)IG=H(Y)-H(Y\mid X)
信息增益率 (C4.5) IGratio=IG/HX(Y)IG_{\text{ratio}}=IG/H_X(Y)
基尼指数 (CART) Gini=1−∑pi2\text{Gini}=1-\sum p_i^2
正规方程 w∗=(X⊤X)−1X⊤yw^*=(X^\top X)^{-1}X^\top y
Sigmoid σ(x)=1/(1+e−x)\sigma(x)=1/(1+e^{-x}),σ′=σ(1−σ)\sigma'=\sigma(1-\sigma)
交叉熵损失 E=−∑[yln⁡y^+(1−y)ln⁡(1−y^)]E=-\sum[y\ln\hat y+(1-y)\ln(1-\hat y)]
偏差-方差分解 Error=Bias2+Var+σ2\text{Error}=\text{Bias}^2+\text{Var}+\sigma^2
L2/L1 正则 λ∥w∥22\lambda\lVert w\rVert_2^2 / λ∣w∣1\lambda\lvert w\rvert_1
SVM 原始 min⁡12∥w∥2\min\tfrac12\lVert w\rVert^2 s.t. yi(w⊤xi+b)≥1y_i(w^\top x_i+b)\ge1
SVM 对偶 max⁡∑αi−12∑αiαjyiyjK(xi,xj)\max\sum\alpha_i-\tfrac12\sum\alpha_i\alpha_j y_iy_jK(x_i,x_j)
Hinge loss max⁡(0,1−y(w⊤x+b))\max(0,1-y(w^\top x+b))
高斯核 exp⁡(−∥xi−xj∥2/σ2)\exp(-\lVert x_i-x_j\rVert^2/\sigma^2)
K-means 目标 J=∑∥xj−μC(j)∥2J=\sum\lVert x_j-\mu_{C^{(j)}}\rVert^2
PCA 投影 y=P⊤xy=P^\top x;重构 x^=PP⊤x\hat x=PP^\top x
EM E 步 γic=πcN(xi∣μc,Σc)/∑jπjN(xi∣μj,Σj)\gamma_{ic}=\pi_c\mathcal{N}(x_i\mid\mu_c,\Sigma_c)/\sum_j\pi_j\mathcal{N}(x_i\mid\mu_j,\Sigma_j)
反向传播 δ 递推 δ(l)=((W(l+1))⊤δ(l+1))⊙fl′(z(l))\delta^{(l)}=((W^{(l+1)})^\top\delta^{(l+1)})\odot f_l'(z^{(l)})
Adam θt+1=θt−ηv^t+ϵ⊙m^t\theta_{t+1}=\theta_t-\tfrac{\eta}{\sqrt{\hat v_t}+\epsilon}\odot\hat m_t
Scaled Dot-Product softmax(QK⊤/dk)V\text{softmax}(QK^\top/\sqrt{d_k})V
LSTM ct=ft⊙ct−1+it⊙c~tc_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t;ht=ot⊙tanh⁡(ct)h_t=o_t\odot\tanh(c_t)

算法速查(步骤)

  • ID3 / GrowTree:纯则叶 → 否则选最大 IG 属性分裂 → 递归。
  • KNN:存训练样本 → 算距离 → kk 最近多数投票。
  • 最小二乘:构造 XX → 解正规方程 w∗=(X⊤X)−1X⊤yw^*=(X^\top X)^{-1}X^\top y。
  • Logistic 回归 SGD:w←w−η(σ(w⊤x+b)−y)xw\leftarrow w-\eta(\sigma(w^\top x+b)-y)x。
  • K-means:初始化 kk 中心 → {分配到最近中心 / 中心取簇均值} → 收敛。
  • PCA:中心化 → 协方差矩阵 S=1nXX⊤S=\tfrac1n XX^\top → 特征分解取前 mm 特征向量 → 投影 P⊤xP^\top x。
  • EM:{E 步算后验 γ\gamma / M 步更新 μ,Σ,π\mu,\Sigma,\pi} → 收敛。
  • SVM 训练:构核矩阵 KK → 解对偶 QP 求 α\alpha → 恢复 w,bw,b;测试 sign(∑SVαiyiK(xi,x′)+b)\text{sign}(\sum_{SV}\alpha_i y_iK(x_i,x')+b)。
  • 反向传播:前馈算 z,az,a → 反向算 δ\delta → 算 ∂J/∂W,∂J/∂b\partial J/\partial W,\partial J/\partial b 更新。