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:PAf : P^{*} \to A

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

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

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


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

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

1.4.1 误差定义

设假设 hHh \in \mathcal{H},目标概念 cCc \in \mathcal{C},分布 D\mathcal{D},样本集 S=(x1,,xm)S=(x_1,\dots,x_m)

  • 泛化误差 (generalization error)

R(h)=PrxD[h(x)c(x)]R(h) = \Pr_{x \sim \mathcal{D}}[h(x) \neq c(x)]

  • 经验误差 (empirical error)

R^S(h)=1mi=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)]

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

ESDm[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)、任意目标概念 cCc\in\mathcal{C},当样本量

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

PSDm ⁣[R(hS)ϵ]1δP_{S\sim\mathcal{D}^m}\!\left[R(h_S)\le\epsilon\right]\ge 1-\delta。若 AA 运行时间也是多项式,则称高效 PAC 可学AAC\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 ⁣(1mi=1mXi1mi=1mE(Xi)ϵ)2exp ⁣(2m2ϵ2i=1m(biai)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()2e2mϵ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] 情形):

PSDm ⁣[R^S(h)R(h)ϵ]2e2mϵ2P_{S\sim\mathcal{D}^m}\!\left[\hat{R}_S(h)-R(h)\ge\epsilon\right]\le 2e^{-2m\epsilon^2}

δ=2e2mϵ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 ⁣(log2Hm)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:PAf: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_filewrite_to_filegrep_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 sequenceactionf: \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. 基于效用的智能体
不只判断是否达成目标,还比较不同结果好坏。最大化期望效用:argmaxaE[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=maxh=\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)!/(N2N+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) 递增顺序扩展)。
  • 时间/空间复杂度:代价不超过 CC^* 的节点数

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

其中 CC^* 为最优解代价。


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)

mdm\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+(d1)b2+(d2)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,且对任何目标 GGh(G)=0h(G)=0

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

一致性 (Consistency) ⭐

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

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* 扩展哪些节点 ⭐

CC^* 为最优解代价:

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

A* 性质总结

维度 性质
完备性 ✔(除非存在无穷多个 ff(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) = 所有棋子到其目标位置的水平竖直距离和。

对同一初始状态 SSh1(S)=8h_1(S)=8h2(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 需 3223.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_1h2h_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,定义 bb^* 使 N+1=1+b++(b)dN+1=1+b^*+\cdots+(b^*)^dbb^* 越接近 1 说明启发式越好,且对同一问题 bb^* 在不同 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 阈值,只扩展 ff\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:搜索树最大深度,可能无限。
  • CC^*:最优解代价。
  • ε\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 ldl \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),  1m+c2\text{Cross}(m, c),\; 1 \leq m + c \leq 2。该题检查重复状态非常必要,因为动作可逆,树搜索会反复过河。

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

题意:从三位数 SSGG,每步对某一位加 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

定义:0h(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 到达 nn'),并且 h(goal)=0h(\text{goal}) = 0

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

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

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

一致性的好处:

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

2.3. 可采纳但不一致例子

构造路径:A1B10GA \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

  • 可采纳:1011,  51010 \leq 11,\; 5 \leq 10
  • 不一致:

h(A)c(A,B)+h(B)101+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_1h2h_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* 最优性证明核心

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

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

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

2.6. 加权启发式路径算法

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

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

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

w2w1    w1\frac{w}{2-w} \leq 1 \;\Rightarrow\; w \leq 1

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

特殊情况:

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

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

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

证明模板:

  1. A* 终止时选择目标 GG',所以 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* 选择 GG',所以 C=f(G)f(n)C'=f(G') \leq f(n)
  5. CC+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+hhh 可采纳/一致时保证最优。
  • Admissible:hhh \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_iXiX_i 的合法取值集合 {v1,,vk}\{v_1,\dots,v_k\}
  • CC:约束集。每个约束 Ci=scope,relC_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={SAWA,SANT,,NSWV}C=\{\text{SA}\neq\text{WA},\,\text{SA}\neq\text{NT},\,\dots,\,\text{NSW}\neq\text{V}\}

    其中 SAWA\text{SA}\neq\text{WA}(SA,WA),SAWA\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 变量、值域大小 ddO(dn)O(d^n) 完备赋值;含 Boolean CSP / SAT (NP-complete)
离散变量 / 无限值域 (infinite domains) 整数、字符串等 需要约束语言;线性约束可解,非线性不可判定 (undecidable);如作业调度
连续变量 (continuous variables) 实数 线性约束可由线性规划 (LP) 在多项式时间求解;如哈勃望远镜观测时刻

按约束种类分

  • 一元约束 (unary):涉及单变量,如 SAgreen\text{SA}\neq\text{green}
  • 二元约束 (binary):涉及一对变量,如 SAWA\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=(nl)db=(n-l)d,共 n!dnn!\cdot d^n 叶。

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

  • 变量赋值可交换(WA=redthenNT=green)(\text{WA}=\text{red}\,\text{then}\,\text{NT}=\text{green}) 等价于 (NT=greenthenWA=red)(\text{NT}=\text{green}\,\text{then}\,\text{WA}=\text{red})
  • 因此每个节点只给单个变量赋值:b=db=d,叶数 dnd^n
  • 回溯搜索 = 对 CSP 的单变量赋值深度优先搜索;是 CSP 的基本无信息算法 (basic uninformed algorithm)
  • 能力:可解 n25n\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_iXjX_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_iXjX_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 个),最坏代价:

    ncdc(对 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 亿年
    • 分解为 42204\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=1nnXiX_iParent(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\}
  • 约束:相邻地区颜色不同,如 WANTWA \neq NT

1.2. CSP 与普通搜索的区别

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

1.3. 约束类型

  • 一元约束:只涉及一个变量,如 XredX \neq red
  • 二元约束:涉及两个变量,如 WANTWA \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 弧相容

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

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

注意方向性:XiXjX_i \to X_j 相容不代表 XjXiX_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 个变量;每个变量域大小最多 ddcc 条二元约束。

  • 每次 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)
    • 首字母 S0,  M0S \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):b35b\approx 35,合理对局深度 m100m\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,A1n,R1n)(n,\,A_{1\ldots n},\,R_{1\ldots n})

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

每个玩家 ii 选择策略 πi:Ai[0,1]\pi_i:A_i\to[0,1]πiPD(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)=aARi(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):给定其他玩家当前策略,使自身效用最大的策略集。

πiBRi(πi)  iff  πiPD(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=1n,  πiBRi(π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)minoOaAπ(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 为终局maxaMinimax(Result(s,a))若 s 为 MAX 节点minaMinimax(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)(深度优先探索)

对国际象棋 b35, m100b\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×SRR:S\times A\times S\to\mathbb{R}:奖励函数(期望值),同样依赖所有玩家的动作。

每个玩家 ii 选择策略 πi:SPD(Ai)\pi_i:S\to PD(A_i)πi(ais)\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)sT(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)=sT(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):以状态价值为参考,
    πiBRi(πi)\pi_i^{*}\in BR_i(\pi_{-i}) iff πi,sS: 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)终局maxaExpectiminimax(Result(s,a))MAXminaExpectiminimax(Result(s,a))MINrP(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. 选择 argmaxadP(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 argmaxaMinimaxValue(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;归结规则;反演:KBp    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, X1X2=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_CPCP_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(仅局部感知当前格)、DeterministicSequentialStaticDiscreteSingle-agent(Wumpus 实为自然特征)。

KB 推理示例

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


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

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

要素 定义
语法 (Syntax) 合法公式集合 RainWet\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\alphaKBα\text{KB}\models\alpha(推出的都真)。
  • 完备性 (Completeness):若 KBα\text{KB}\models\alphaKBα\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, fg, fg, fg, fg\lnot f,\ f\land g,\ f\lor g,\ f\to g,\ f\leftrightarrow g 也是公式。
  • 公式本身只是符号(语法),尚无含义(语义)。

术语

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

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

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

形式证明与推导(pl_fol)

  • 形式证明pp 的序列 p1,,pn=pp_1,\dots,p_n=p,每步是公理或由前序 pi,pj(=pipk)p_i,p_j(=p_i\to p_k) 经 MP。记 p\vdash pppLL 的内定理)。
  • 形式推导(从 Γ\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(fg,w)=I(f,w)I(g,w)I(f\land g,w)=I(f,w)\land I(g,w)
    • I(fg,w)=I(f,w)I(g,w)I(f\lor g,w)=I(f,w)\lor I(g,w)
    • I(fg,w)=¬I(f,w)I(g,w)I(f\to g,w)=\lnot I(f,w)\lor I(g,w)
    • I(fg,w)=(I(f,w)I(g,w))I(f\leftrightarrow g,w)=(I(f,w)\leftrightarrow I(g,w))

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

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


1.7 核心语义关系

关系 定义
蕴涵 (Entailment) KBf\text{KB}\models f M(f)M(KB)M(f)\supseteq M(\text{KB})ff 未添加新信息) RainSnowSnow\text{Rain}\land\text{Snow}\models\text{Snow}
矛盾 (Contradiction) M(KB)M(f)=M(\text{KB})\cap M(f)=\emptyset RainSnow\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

核心等价(贯穿全章)

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

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

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

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

复杂性(pl_fol)

  • 判定 KBp\text{KB}\models pcoNP-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) ⭐⭐⭐

pq\models p\leftrightarrow q,则 ppqq 逻辑等值。等值替换规则:若 qq\models q\leftrightarrow q',则在 pp 中用 qq' 替换子公式 qqpp',则 pp\models p\leftrightarrow p'

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

1.10 合取范式 (CNF / DNF)

术语 定义
文字 (literal) 原子或其否定,如 x, ¬xx,\ \lnot x
子句 (clause) 文字析取,如 x1¬x2x3x_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(x2x3))x2(x_1\land(x_2\to x_3))\to x_2

  • \to¬(x1(¬x2x3))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
  • 分配律:(¬x1x2)(¬x1x2¬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,pqq\frac{p,\quad p\to q}{q}

推理规则一般式:f1,,fkg\dfrac{f_1,\dots,f_k}{g}派生 (Derivation)KBf\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)(p1pk)q(p_1\land\dots\land p_k)\to q,其中 pip_ik0k\ge 0)与 qq 是命题符号。

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

Horn 子句 (Horn clause):确定子句 目标子句 (p1pk)(p_1\land\dots\land p_k)\to\bot(等价 ¬(p1pk)\lnot(p_1\land\dots\land p_k))。

Modus Ponens on Horn clauses

p1,,pk,(p1pk)qq\frac{p_1,\dots,p_k,\quad (p_1\land\dots\land p_k)\to q}{q}

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

KBp      KBp\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不可满足

归结反演:证明 KBp\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,2P2,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) ffnn 元函项符号,tit_i 是项 ⟹ f(t1,,tn)f(t_1,\dots,t_n) 是项。
  • 公式:(1) PPnn 元谓词,tit_i 项 ⟹ P(t1,,tn)P(t_1,\dots,t_n) 原子公式;(2) ¬p,pq,pq,pq,pq\lnot p, p\to q, p\land q, p\lor q, p\leftrightarrow q 复合公式;(3) xp, xp\forall x\,p,\ \exists x\,p 量化公式。

术语(pl_fol)

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

公理系统 KK

  • (K1) p(qp)p\to(q\to p)
  • (K2) (p(qr))((pq)(pr))(p\to(q\to r))\to((p\to q)\to(p\to r))
  • (K3) (¬p¬q)(qp)(\lnot p\to\lnot q)\to(q\to p)
  • (K4) xp(x)p(t)\forall x\,p(x)\to p(t)(项 ttp(x)p(x)xx 自由)
  • (K5) x(pq)(pxq)\forall x(p\to q)\to(p\to\forall x\,q)xx 不在 pp 自由出现)
  • 推理规则:(MP) p,pqqp,p\to q\vdash q;(UG, Universal Generalization) pxpp\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 上函数集 FFDD 上关系集 PP
    • 常元 aaMDa\mapsto a^M\in Dnn 元函数符号 fM:DnD\mapsto f^M:D^n\to Dnn 元谓词 PMDn\mapsto P^M\subseteq D^n
  • 个体变元指派 V:YDV: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
    • xp\forall x\,p 真 iff 对所有 dDd\in DIx=d(p)I_{x=d}(p) 真。
    • xp\exists x\,p 真 iff ¬x¬p\lnot\forall x\,\lnot p 真。
    • Ix=d=(M,Vx=d)I_{x=d}=(M,V|_{x=d})Vx=d(y)={dy=xV(y)otherwiseV|_{x=d}(y)=\begin{cases}d&y=x\\V(y)&\text{otherwise}\end{cases}

模型与有效性(pl_fol)

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

FOL 模型无穷多

枚举 FOL 模型不可行:域个数 n:1n: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)

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

⚠️ 常见错误\forall\land 搭配——xAt(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)

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

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

量词性质

  • xy=yx\forall x\forall y = \forall y\forall xxy=yx\exists x\exists y = \exists y\exists x
  • xyyx\exists x\forall y \neq \forall y\exists x
    • xyLoves(x,y)\exists x\forall y\,\text{Loves}(x,y):“存在一人爱所有人”。
    • yxLoves(x,y)\forall y\exists x\,\text{Loves}(x,y):“每人被至少一人爱”。

量词对偶 (Duality)

xP¬x¬PxP¬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={xs2})\forall s\ \text{Set}(s)\Leftrightarrow(s=\{\})\lor(\exists x,s_2\ \text{Set}(s_2)\land s=\{x|s_2\})
  • 空集不可分解:¬x,s {xs}={}\lnot\exists x,s\ \{x|s\}=\{\}
  • 子集:s1,s2 s1s2(x xs1xs2)\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)(s1s2s2s1)\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(s1s2)(xs1xs2)\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(s1s2)(xs1xs2)\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],[x1,y],[x,y+1],[x,y1]}\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 与置换 σ\sigmaSσS\sigma 为代入结果。Ask(KB,S)\text{Ask}(\text{KB},S) 返回部分/所有使 KBSσ\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)=1Signal(t)=0\forall t\ \text{Signal}(t)=1\lor\text{Signal}(t)=0101\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)=ORSignal(Out(1,g))=1n 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))=i1Signal(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
  • 调试:可能遗漏 101\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=0n=0\to\infty,用深度 nn 项命题化,查是否蕴涵。
  • 问题:α\alpha 被蕴涵则停;不被蕴涵则死循环。

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

命题化的问题

  • 生成大量无关语句(如 Greedy(Richard)\text{Greedy}(\text{Richard}) 与结论无关)。
  • ppkk 元谓词 + nn 常量 ⟹ pnkp\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}) failxx 同时=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 变量,tivit_i\neq v_i 的项,vivjv_i\neq v_j
  • EθE\theta:同时替换 EE 中所有 viv_itit_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) θ\thetaS1θ==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_kSS 合一则停(σ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,(p1p2pnq)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,(p1pnq)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)。

  • 引理:对任意 ppppθp\models p\theta
  1. (p1pnq)(p1pnq)θ=(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,,pnp1pnp1θ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 多项式迭代终止(至多 pnkp\cdot n^k 文字)。
  • 一般情况 α\alpha 不被蕴涵时可能不终止(不可避免,因确定子句蕴涵半可判定)。

效率

  • 无需在迭代 kk 重新匹配前提未在 k1k-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)

形式 Q1x1QnxnpQ_1 x_1\cdots Q_n x_n\,ppp 无量词(母式 matrix)。

转换规则QQ^*QQ 对偶量词):

  1. 改名:=Qxp(x)Qyp(y)|= Qx\,p(x)\leftrightarrow Qy\,p(y)(条件)。
  2. 移量词:xx 不在 pp 自由 ⟹ =(pQxq)Qx(pq)|=(p\to Qx\,q)\leftrightarrow Qx(p\to q)xx 不在 qq 自由 ⟹ =(Qxpq)Qx(pq)|=(Qx\,p\to q)\leftrightarrow Q^*x(p\to q)
  3. ¬\lnot 内移:=¬QxpQx¬p|=\lnot Qx\,p\leftrightarrow Q^*x\,\lnot p
  4. =(xpxq)x(pq)|=(\forall x\,p\land\forall x\,q)\leftrightarrow\forall x(p\land q)
  5. =(xpxq)x(pq)|=(\exists x\,p\lor\exists x\,q)\leftrightarrow\exists x(p\lor q)
  6. xx 不在 pp 自由 ⟹ =(pxq)x(pq)|=(p\lor\forall x\,q)\leftrightarrow\forall x(p\lor q)=(pxq)x(pq)|=(p\land\exists x\,q)\leftrightarrow\exists x(p\land q)

3.7 FOL 转 CNF ⭐⭐⭐

六步(示例"爱所有动物者被某人爱" x[yAnimal(y)Loves(x,y)][yLoves(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)][yLoves(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)¬xpx¬p\lnot\forall x\,p\equiv\exists x\,\lnot p¬xpx¬p\lnot\exists x\,p\equiv\forall x\,\lnot p
    x[yAnimal(y)¬Loves(x,y)][yLoves(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[yAnimal(y)¬Loves(x,y)][zLoves(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 x1xm\forall x_1\cdots\forall x_m ⟹ 替换为 f(x1,,xm)f(x_1,\dots,x_m)(新 nn 元函数符号)。
  • 例:xy,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 不可满足;=sp|=s\to p∤ ⁣=ps\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(空子句)。

全一阶归结规则

l1lk,m1mnl1li1li+1mj1mj+1mnθ\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}

ppqq 的 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\alphaKB¬α\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 语法

  • 规则 AA1,A2,,AmA\leftarrow A_1,A_2,\dots,A_mAA(原子),AiA_i(原子合取)。
  • m=0m=0事实(无体,往往省略 \leftarrow)。
  • 一条规则 AA1,,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 pM(P)p\in M(P)
  • 规则真值:IH(R)=tI_H(R)=t iff 对所有常例 RR^*IH(R)=tI_H(R^*)=tR=AA1,,AmR^*=A\leftarrow A_1,\dots,A_m 真 iff AM(P)A\in M(P) 或某 AiM(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)。
  • P1P2MP1MP2P_1\subseteq P_2\Rightarrow M_{P_1}\subseteq M_{P_2}

4.5 SLD 归结规则

HB1,,BnH\leftarrow B_1,\dots,B_n 为程序规则,A1,,Am\leftarrow A_1,\dots,A_m 为目标(已重命名变量),θ\thetaAiA_iHH 的 mgu:

A1,,AmHB1,,Bn(A1,,Ai1,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, pqqp,\ p\to q\vdash q 命题/Horn
Modus Ponens (Horn) p1,,pk, (p1pk)qqp_1,\dots,p_k,\ (p_1\land\dots\land p_k)\to q\vdash q Horn,完备
Generalized MP (GMP) p1,,pn, (p1pnq)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) pxpp\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 子句合取 消→↔ / ¬深入 / 分配
前束范式 Q1x1QnxnpQ_1x_1\cdots Q_nx_n\,p 改名/移量词/¬内移
FOL CNF 前束→Skolem→去∀→CNF 6 步

核心关系速查 ⭐

KBf    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 不可满足xP¬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+2yx + 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(α)={mmα}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,记作 KBiαKB \vdash_i \alpha。推理是算法概念。考试里最常考两条性质:

  • 可靠性 (soundness):算法推出的都真。KBiαKBαKB \vdash_i \alpha \Rightarrow KB \models \alpha
  • 完备性 (completeness):语义上必然真的都能推出。KBαKBiα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,  S1S2,  S1S2,  S1S2,  S1S2\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, C23=82^3 = 8 个模型。

3.2 命题逻辑语义

在模型 mm 中:

  • ¬S1\lnot S_1 为真 \Leftrightarrow S1S_1 为假
  • S1S2S_1 \land S_2 为真 \Leftrightarrow S1S_1 为真且 S2S_2 为真
  • S1S2S_1 \lor S_2 为真 \Leftrightarrow S1S_1 为真或 S2S_2 为真
  • S1S2S_1 \Rightarrow S_2 为假 \Leftrightarrow S1S_1 为真且 S2S_2 为假
  • S1S2S_1 \Leftrightarrow S_2 为真 \Leftrightarrow (S1S2)(S2S1)(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,2P2,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,1P2,2P3,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 AAAA \Rightarrow A(A(AB))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 子句,常写为:

P1P2PmQP_1 \land P_2 \land \dots \land P_m \Rightarrow Q

对应 CNF 子句:¬P1¬P2¬PmQ\lnot P_1 \lor \lnot P_2 \lor \dots \lor \lnot P_m \lor Q

若没有正文字:P1P2PmP_1 \land P_2 \land \dots \land P_m \Rightarrow \bot,表示约束或矛盾。

Kowalski 形式就是把规则写成"前提合取推出结论":P1PmQP_1 \land \dots \land P_m \Rightarrow Q

4.2 假言推理(Modus Ponens)

命题逻辑的分离规则:

P,PQQ\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 命题归结规则

若两个子句含有互补文字,可以删去互补文字并合并剩余部分:

PQ,¬QRPR\frac{P \lor Q,\quad \lnot Q \lor R}{P \lor R}

若归结得到空子句 \square,则表示矛盾。命题逻辑中,归结是可靠且完备的。

5.3 命题 CNF 转换

把公式转 CNF:

  1. 消去双向蕴涵AB(AB)(BA)A \Leftrightarrow B \equiv (A \Rightarrow B) \land (B \Rightarrow A)
  2. 消去蕴涵AB¬ABA \Rightarrow B \equiv \lnot A \lor B
  3. 否定内移¬(AB)¬A¬B\lnot(A \land B) \equiv \lnot A \lor \lnot B¬(AB)¬A¬B\lnot(A \lor B) \equiv \lnot A \land \lnot B
  4. 用分配律把析取分配到合取内部A(BC)(AB)(AC)A \lor (B \land C) \equiv (A \lor B) \land (A \lor C)
  5. 拆成子句集合

5.4 归结证明模板(反证法)

要证明 KBαKB \models \alpha,做法:

  1. 把 KB 转为 CNF 子句(ABA \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 命题逻辑的缺点

命题逻辑表达力弱,不能自然表达对象、关系、函数和量词。例如"所有学生都懂算术",命题逻辑只能枚举:

StudentAliceKnowsArithmeticAlice\text{StudentAlice} \Rightarrow \text{KnowsArithmeticAlice}

StudentBobKnowsArithmeticBob\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 全称量词

全称量词 xP(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 存在量词

存在量词 xP(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 量词交换和对偶

同类量词可交换:

xyP(x,y)yxP(x,y)\forall x \forall y\, P(x,y) \equiv \forall y \forall x\, P(x,y)

xyP(x,y)yxP(x,y)\exists x \exists y\, P(x,y) \equiv \exists y \exists x\, P(x,y)

不同类量词一般不可交换:

  • xyLoves(x,y)\exists x \forall y\, \text{Loves}(x,y) 表示"存在某个人爱所有人"。
  • yxLoves(x,y)\forall y \exists x\, \text{Loves}(x,y) 表示"每个人都至少被某个人爱"。

量词对偶:

¬xP(x)x¬P(x)\lnot \forall x\, P(x) \equiv \exists x\, \lnot P(x)

¬xP(x)x¬P(x)\lnot \exists x\, P(x) \equiv \forall x\, \lnot P(x)

xP(x)¬x¬P(x)\forall x\, P(x) \equiv \lnot \exists x\, \lnot P(x)

xP(x)¬x¬P(x)\exists x\, P(x) \equiv \lnot \forall x\, \lnot P(x)

变量名本身不重要,但改名必须避免变量捕获。

8.4 等号

等号表示两个项指代同一对象:t1=t2t_1 = t_2。常用于唯一性、计数、不同对象约束:xyx \neq y

Sibling 例子可以写成:

xy(Sibling(x,y)(xymf(mfParent(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 都是 Bx(A(x)B(x))\forall x\, (A(x) \Rightarrow B(x))
  • 9.2 有些 A 是 Bx(A(x)B(x))\exists x\, (A(x) \land B(x))
  • 9.3 没有 A 是 Bx(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 都有一个 Bx(A(x)y(B(y)R(x,y)))\forall x\, (A(x) \Rightarrow \exists y\, (B(y) \land R(x,y)))
    • 例:“每个哺乳动物都有一个家长”:x(Mammal(x)yParent(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)))
    • 对比:xyR(x,y)\forall x \exists y\, R(x,y)(每个 xx 可以对应不同 yy);yxR(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”:xy((P(x)P(y))x=y)\forall x \forall y\, ((P(x) \land P(y)) \Rightarrow x = y)
    • “恰好两个对象满足 PP”:xy(xyP(x)P(y)z(P(z)(z=xz=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,aBestAction(a,5))\text{Ask}(\text{KB}, \exists a\, \text{BestAction}(a, 5)) 可能返回 {aShoot}\{a \mapsto \text{Shoot}\}

给定语句 SS 和代换 σ\sigmaSσS\sigma 表示把 σ\sigma 代入 SS。例如 S=Smarter(x,y),  σ={xHillary,yBill}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 写法

  • 感知规则:tsb(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))
  • 相邻定义:xyab(Adjacent([x,y],[a,b])[a,b]{[x+1,y],[x1,y],[x,y+1],[x,y1]})\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]\})
  • 从感知得到格子性质:st(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)))
  • 因果规则(从原因推结果):rs(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 亲属关系领域

  • 兄弟是手足:xy(Brother(x,y)Sibling(x,y))\forall x \forall y\, (\text{Brother}(x,y) \Rightarrow \text{Sibling}(x,y))
  • 手足关系对称:xy(Sibling(x,y)Sibling(y,x))\forall x \forall y\, (\text{Sibling}(x,y) \Leftrightarrow \text{Sibling}(y,x))
  • 母亲是女性家长:xy(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)))
  • 堂表亲是父母手足的孩子:xy(Cousin(x,y)pps(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={}xs2(Set(s2)s={xs2})))\forall s\, (\text{Set}(s) \Leftrightarrow (s = \{\} \lor \exists x \exists s_2\, (\text{Set}(s_2) \land s = \{x \mid s_2\})))
  • 空集不能分解:¬xs({xs}={})\lnot \exists x \exists s\, (\{x \mid s\} = \{\})
  • 元素属于集合的递归定义:xs(xsys2(s={ys2}(x=yxs2)))\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)))
  • 子集:s1s2(s1s2x(xs1xs2))\forall s_1 \forall s_2\, (s_1 \subseteq s_2 \Leftrightarrow \forall x\, (x \in s_1 \Rightarrow x \in s_2))
  • 集合相等:s1s2(s1=s2(s1s2s2s1))\forall s_1 \forall s_2\, (s_1 = s_2 \Leftrightarrow (s_1 \subseteq s_2 \land s_2 \subseteq s_1))
  • 交集:xs1s2(x(s1s2)(xs1xs2))\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))
  • 并集:xs1s2(x(s1s2)(xs1xs2))\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)

通用公理:

  • 相连端口信号相同:t1t2(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)=1Signal(t)=0)\forall t\, (\text{Signal}(t) = 1 \lor \text{Signal}(t) = 0),并且 101 \neq 0
  • 连接关系对称:t1t2(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))=1n(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))=0n(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))=1Signal(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)=NOTSignal(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)))

调试知识库时要特别注意补上 101 \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 常量 kkSubst({vk},α)\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 可满足性等价。

因此 xAsHighAs(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. 若不被蕴涵,可能永远停不下来。

这就是一阶逻辑蕴涵的半可判定性:被蕴涵的结论存在算法最终回答"是";不被蕴涵的结论不存在通用算法保证有限时间回答"否"。

命题化还会产生大量无关实例。若有 ppkk 元谓词和 nn 个常量,基础原子数量可达 pnkp \cdot n^k;有函数符号时更糟。

12. 合一与代换

12.1 代换

代换是变量到项的映射:θ={xJohn,yFather(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))={xJane}\text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(\text{John}, \text{Jane})) = \{x \mapsto \text{Jane}\}

Unify(Knows(John,x),Knows(y,OJ))={xOJ,yJohn}\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)))={yJohn,xMother(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=yx=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,PQQ\frac{P,\quad P \Rightarrow Q}{Q}

一阶逻辑的 GMP 加上了合一。若有事实 p1,,pnp'_1, \dots, p'_n 和规则 p1p2pnqp_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})

代换 θ={xJohn}\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 中最多产生 pnkp \cdot n^k 个基础文字。
  • 一般一阶确定子句若含函数符号,当前查询不被蕴涵时可能不终止。

效率要点:

  • 没必要每轮匹配所有规则,只需检查前一轮新增事实涉及的规则。
  • 数据库索引可让已知事实检索接近 O(1)O(1)
  • 合取前提与事实集匹配本身是 NP-hard。

14.2 一阶后向链

一阶后向链从查询出发,找能推出该查询的规则,再用合一生成子目标。Prolog 风格:

  1. 查询 qq
  2. 找规则结论 qq'
  3. 合一 qqqq'
  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 化

存在量词不在任何全称量词作用域内:xP(x)\exists x\, P(x) 变为 P(A)P(A),其中 AA 是新的 Skolem 常量。

存在量词在全称量词作用域内:xyParent(y,x)\forall x \exists y\, \text{Parent}(y, x),这里 yy 依赖于 xx,变为 xParent(F(x),x)\forall x\, \text{Parent}(F(x), x),其中 FF 是新的 Skolem 函数。

一般规律:Skolem 函数的参数是包住该存在变量的所有全称变量。

15.3 课件 CNF 例题

原句:

x((y(Animal(y)Loves(x,y)))yLoves(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))yLoves(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))yLoves(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))zLoves(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 一阶归结规则

若两个子句中有可合一的互补文字:

L1LkM1MnL_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,则推出:

(L1Li1Li+1LkM1Mj1Mj+1Mn)θ(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})

合一 θ={xKen}\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})

xy((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={xRobbie}\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={yBob}\theta_2 = \{y \mapsto \text{Bob}\},得到 FriendlyTo(Robbie,Bob)\text{FriendlyTo}(\text{Robbie}, \text{Bob})
  3. 与否定目标归结:\square

因此 KBFriendlyTo(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})

yx(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 是罪犯。

知识库:

xyz(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 是语义蕴涵,不是算法运行结果。
  • KBiαKB \vdash_i \alpha 是推理过程 ii 的导出关系。
  • 可靠性:导出的都被蕴涵。
  • 完备性:被蕴涵的都能导出。
  • 命题逻辑归结可靠且完备。
  • 一阶归结对 FOL 完备。
  • GMP 对一阶确定子句完备,对一般 FOL 不完备。
  • 前向链和后向链对 Horn KB 完备,对一般 FOL 不完备。
  • 一阶逻辑蕴涵半可判定。

17.2 翻译题

  • "所有"通常主连接词是 \Rightarrow
  • "存在"通常主连接词是 \land
  • xy\forall x \exists yyx\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)
  • 可靠与完备:KBiαKBαKB \vdash_i \alpha \Rightarrow KB \models \alphaKBαKBiαKB \models \alpha \Rightarrow KB \vdash_i \alpha
  • 反证归结:KBα    KB¬αKB \models \alpha \iff KB \land \lnot\alpha 不可满足
  • 命题 CNF:(A¬B)(¬AC)(A \lor \lnot B) \land (\lnot A \lor C)
  • Horn 子句:P1PmQP_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,  p1pnq    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)以及朴素贝叶斯模型。

子主题 核心内容 重要程度
为什么用概率 惰性 + 无知;主观/频率解释;决策理论 = 概率 + 效用 ⭐⭐
概率基础 随机变量、原子事件、联合/边缘/条件分布、概率公理 ⭐⭐⭐
全概率工具 乘法规则、链式法则、全概率公式、归一化 ⭐⭐⭐
独立与条件独立 XYX\perp YXYZX\perp Y\mid Z;条件独立把表示从指数降为线性 ⭐⭐⭐
期望与方差 E,Var\mathbb{E},\,\text{Var} 定义与性质 ⭐⭐
贝叶斯规则 P(CauseEffect)=αP(EffectCause)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(XiParents(Xi))P=\prod_i P(X_i\mid\text{Parents}(X_i)) ⭐⭐⭐
网络构造与紧致性 因果顺序优先;O(n2k)O(n\cdot 2^k) vs O(2n)O(2^n) ⭐⭐⭐
条件独立与 d-分离 顺连/分连/汇连三情形;整体马尔可夫性 ⭐⭐⭐
变量消元 VE 因子 (factor);按消元顺序右乘左求和 ⭐⭐⭐
团树传播 共享中间结果;VE 的另一组织形式 ⭐⭐
近似推理 拒绝采样、似然加权、Gibbs/MCMC ⭐⭐⭐
朴素贝叶斯 P(Cause,Effects)=P(Cause)iP(EffectiCause)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,长期重复试验中的相对频率;大数定律保证 NN\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)

对智能体无法确定的世界状态的一个完整详细描述(即对所有随机变量的一组完整赋值)。原子事件互斥且穷尽。

例:世界仅含两个布尔变量 CavityToothache 时有 4 个原子事件:
{C ⁣= ⁣fT ⁣= ⁣f,  C ⁣= ⁣fT ⁣= ⁣t,  C ⁣= ⁣tT ⁣= ⁣f,  C ⁣= ⁣tT ⁣= ⁣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. 0P(A)10\le P(A)\le 1(非负性);
  2. P(true)=1P(\text{true})=1P(false)=0P(\text{false})=0(规范性,P(Ω)=1P(\Omega)=1);
  3. P(AB)=P(A)+P(B)P(AB)P(A\vee B)=P(A)+P(B)-P(A\wedge B);若 AB=A\cap B=\varnothingP(AB)=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.1P(\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}| 个状态组合(二元变量即 2n12^n-1 个独立参数),随变量数指数增长

边缘化 (Marginalization)

X={X1,,Xn}X=\{X_1,\dots,X_n\}YXY\subset XZ=XYZ=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 表示 limdx0P(20.5X20.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(ab)P(a\mid b),给定 bbaa 的概率。

定义P(b)>0P(b)>0):

P(ab)=P(ab)P(b)\boxed{\,P(a\mid b)=\dfrac{P(a\wedge b)}{P(b)}\,}

乘法规则 (Product Rule)

P(ab)=P(ab)P(b)=P(ba)P(a)P(a\wedge b)=P(a\mid b)P(b)=P(b\mid a)P(a)

分布形式:P(Weather,Cavity)=P(WeatherCavity)P(Cavity)P(\text{Weather},\text{Cavity})=P(\text{Weather}\mid\text{Cavity})P(\text{Cavity})

链式法则 (Chain Rule)

对乘法规则反复应用:

P(X1,,Xn)=P(X1)P(X2X1)P(XnX1,,Xn1)=i=1nP(XiX1,,Xi1)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(ab)P(b)P(a)=\sum_{b}P(a,b)=\sum_{b}P(a\mid b)P(b)

(先按 bb 分解、再求和消去 bb。)

归一化 (Normalization)

分母可视为归一化常数 α\alpha

P(Cavitytoothache)=αP(Cavity,toothache)=α0.12,0.08=0.6,0.4P(\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]=xxP(X=x)\mathbb{E}[X]=\sum_x x\,P(X=x)(离散)/ xp(x)dx\int x\,p(x)\,dx(连续)。
  • 方差 (Variance)Var(X)=E[(XE[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]+bVar(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)

AABB 独立 iff:

P(AB)=P(A)P(BA)=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)

记作 ABA\perp BXYX\perp Y。例:掷两颗骰子 P(1,3)=1616=136P(1,3)=\tfrac{1}{6}\cdot\tfrac{1}{6}=\tfrac{1}{36}

绝对独立功能强大但罕见。例如牙科领域数百个变量几乎两两不独立。

条件独立 (Conditional Independence) ⭐⭐⭐

XXYY 在给定 ZZ 时条件独立,记 XYZX\perp Y\mid Z

P(X,YZ)=P(XZ)P(YZ)        P(XY,Z)=P(XZ)\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(catchtoothache,cavity)=P(catchcavity)P(\text{catch}\mid\text{toothache},\text{cavity})=P(\text{catch}\mid\text{cavity})

等价刻画(7 条相互等价,给定 P(Z)>0P(Z)>0

  1. P(X,YZ)=P(XZ)P(YZ)P(X,Y\mid Z)=P(X\mid Z)P(Y\mid Z)
  2. P(XY,Z)=P(XZ)P(X\mid Y,Z)=P(X\mid Z)
  3. P(X,YZ)=f(X,Z)g(Y,Z)P(X,Y\mid Z)=f(X,Z)\,g(Y,Z)
  4. P(XY,Z)=f(X,Z)P(X\mid Y,Z)=f(X,Z)
  5. P(X,Y,Z)=P(XZ)P(YZ)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(ToothacheCavity)P(CatchCavity)P(Cavity)P(\text{Toothache},\text{Catch},\text{Cavity})=P(\text{Toothache}\mid\text{Cavity})\,P(\text{Catch}\mid\text{Cavity})\,P(\text{Cavity})

独立参数从 231=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(ab)P(b)=P(ba)P(a)P(a\mid b)P(b)=P(b\mid a)P(a) 直接得:

P(ab)=P(ba)P(a)P(b),分布形式:P(YX)=αP(XY)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(CauseEffect)=P(EffectCause)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(sm)=0.8,  P(m)=110000,  P(s)=0.1P(s\mid m)=0.8,\;P(m)=\tfrac{1}{10000},\;P(s)=0.1

P(ms)=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(HF)=12P(H)=\tfrac{1}{10},\;P(F)=\tfrac{1}{40},\;P(H\mid F)=\tfrac{1}{2}
"50% 流感伴随头痛 ⇒ 我有 50% 概率得流感"是错的

P(FH)=P(HF)P(F)P(H)=(1/2)(1/40)1/10=18=0.125    P(HF)=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=hE=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(XiParents(Xi))P(X_i\mid\text{Parents}(X_i))——量化父节点对该节点的影响。

最简单情形下,条件分布表示为条件概率表 (Conditional Probability Table, CPT),给出父节点每种取值组合下 XiX_i 的分布。

全局语义 (Global Semantics) ⭐⭐⭐

⭐ 全联合分布 = 所有局部条件分布的乘积:

P(x1,,xn)=i=1nP(xiparents(Xi))\boxed{\,P(x_1,\dots,x_n)=\prod_{i=1}^{n}P\big(x_i\mid\text{parents}(X_i)\big)\,}

例(防盗网络):P(jma¬b¬e)=P(ja)P(ma)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.9980.00063=0.9\times 0.7\times 0.001\times 0.999\times 0.998\approx 0.00063

局部语义 (Local Semantics)

每个节点在给定其父节点后,与它的非后代节点 (nondescendants) 条件独立

P(XiParents(Xi),Nondescendants(Xi))=P(XiParents(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(警报)、JohnCallsMaryCalls。网络拓扑反映因果知识:盗贼/地震可触发警报;警报导致 John/Mary 打电话。

拓扑结构编码了条件独立性断言:

  • Weather 与其它变量独立;
  • 给定 CavityToothacheCatch 条件独立。

2.4 紧致性 (Compactness) ⭐

一个布尔变量 XiX_ikk 个布尔父节点时,其 CPT 有 2k2^k 行(父节点取值组合),每行需指定 Xi=trueX_i=true 的概率 ppXi=falseX_i=false1p1-p)。

⭐ 若每个变量至多有 kk 个父节点,整个网络只需 O(n2k)O(n\cdot 2^k) 个数——nn 线性增长;而完整联合分布需 O(2n)O(2^n) 个数。

防盗网络:1+1+4+2+2=101+1+4+2+2=10 个数(vs 全联合分布 251=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,,Xi1X_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(XiX1,,Xi1)  (链式规则)=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 的信度",且反过来不成立,则称 XXYY 的原因。利用因果关系建网实际上是在做条件独立假设,可归纳为因果马尔可夫假设 (causal Markov assumption)

确定网络参数

通过数据分析或从问题特性直接得到(参数学习见 §4.7)。


2.6 推理任务分类 (Inference Tasks)

⭐ 贝叶斯网推理 (inference) 是通过计算回答查询的过程,主要有三大类:

任务 形式 说明
后验概率问题 P(QE=e)P(Q\mid E=e) 从结果到原因的诊断推理、从原因到结果的预测推理、同一结果的不同原因间的原因关联推理、混合推理
最大后验假设 (MAP) h=argmaxhP(H=hE=e)h^*=\arg\max_h P(H=h\mid E=e) 给定证据,求部分变量的后验最大的状态组合
最大可能解释 (MPE) argmax全部非证据变量P(E=e)\arg\max_{\text{全部非证据变量}}P(\cdot\mid E=e) 网络全部变量的、与证据相一致的状态组合中概率最大者;可视作 MAP 的特例(假设变量 = 所有非证据变量)

简单查询例:P(NoGasGauge=empty, Lights=on, Starts=false)P(\text{NoGas}\mid\text{Gauge=empty, Lights=on, Starts=false})


第三部分:图分隔与变量独立 (d-Separation)

3.1 三种连接结构 ⭐⭐⭐

变量 XXYY 通过第三个变量 ZZ 间接相连,有三种情形(决定信息能否在 X,YX,Y 间传递):

结构 图示 ZZ 未知时 ZZ 已知时
顺连 (Serial / Chain) XZYX\to Z\to Y 链式 信息从 XXZZ 传到 YYX,YX,Y 关联 阻断:了解 XX 不影响对 YY 的信度,XYZX\perp Y\mid Z
分连 (Diverging / Common Cause) XZYX\leftarrow Z\to Y 共同原因 信息可在 X,YX,Y 间传递,关联 阻断XYZX\perp Y\mid Z
汇连 (Converging / Common Effect / V-structure) XZYX\to Z\leftarrow Y 共同结果(多因一果) 信息从 XX(或 YY)经 ZZ “漏掉”,XYX\perp Y 激活:"漏洞"被堵上,X,YX,Y 变得相关(即使本无条件独立)

关键反直觉点:汇连(V 结构)情形下,观察 ZZ 反而使原本独立的 X,YX,Y 变得相关(“explaining away” 现象)。不仅如此,观察 ZZ 的任一后代也会激活该通路。


3.2 d-分隔判据 (d-Separation) ⭐⭐⭐

ZZ 为一节点集合,X,YX,Y 是不在 ZZ 中的两个节点。考虑 XXYY 之间的一条通路 (path) α\alpha(在忽略方向的无向图中)。

通路 α\alphaZZ 阻塞 (blocked) 当且仅当满足下列条件之一:

  1. α\alpha 上有一个ZZ 中的顺连节点(chain,中间节点 ZZ 已知 → 阻断);
  2. α\alpha 上有一个ZZ 中的分连节点(common cause,中间节点 ZZ 已知 → 阻断);
  3. α\alpha 上有一个汇连节点 WW,且 WW 及其所有后代节点均不在 ZZ(V 结构未被观察 → 阻断;反之若 WW 或其后代被观察则激活)。

d-分隔定义:若 XXYY 之间的所有通路都被 ZZ 阻塞,则称 ZZ 有向分隔 (d-separate) XXYY,简称 d-分隔 (d-separation)

整体马尔可夫性 (Global Markov Property) ⭐⭐⭐

定理:设 X,YX,Y 为贝叶斯网中的两个变量,ZZ 为不包含 X,YX,Y 的节点集合。若 ZZ d-分隔 XXYY,则

XYZ\boxed{\,X\perp Y\mid Z\,}

XXYY 在给定 ZZ 时条件独立。

d-分隔是图论概念,条件独立是概率论概念;该定理揭示了贝叶斯网图论侧面与概率论侧面之间的深刻联系。

d-分隔举例(参课件图)

  • Z=Z=\varnothing:节点 A,EA,E 间通路 ADBEA\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 有后代 MZM\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(XYZ))m(G_{\text{an}(X\cup Y\cup Z)})_m 表示把 GG 限制在 an(XYZ)\text{an}(X\cup Y\cup Z)(含 XYZX\cup Y\cup Z 的最小祖先闭集)上、再端正化得到的无向图。

定理ZZGG 中 d-分隔 XXYY     \iff ZZ(Gan(XYZ))m(G_{\text{an}(X\cup Y\cup Z)})_mu-分隔 (undirected separate) XXYY(即去掉 ZZX,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=XYEH=X-Y-EY,E,HY,E,H 构成所有变量的完整集合):

P(YE=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(XiParents(Xi))\prod_i P(X_i\mid\text{Parents}(X_i)),通过"计算条件概率乘积并求和"回答查询。

防盗网络例

P(Bj,m)=αP(B,j,m)=αeaP(B)P(e)P(aB,e)P(ja)P(ma)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(aB,e)P(ja)P(ma)=\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(ja)P(ma)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)f1f2f_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(Qe)=hQhP(Q\mid e)=\dfrac{h}{\sum_Q h}

完整举例(参 bnet 课件)

贝叶斯网给出分解 F={P(A),P(B),P(C),P(DA,B),P(EB,C),P(FD,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(AF=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(DA,B),P(EB,C),P(F=0D,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(EB,C)\psi_1(B,E)=\sum_C P(C)P(E\mid B,C)
  3. 消去 EEψ2(B,D)=EP(F=0D,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(DA,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(AF=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 中任一变量 XXJJ 中存在团 CC 使 XCX\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(Qe)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 0p(X=x)0p(X=x)\neq 0)。从 p(X)p(X) 独立抽取 mm 个样本 D1,,DmD_1,\dots,D_m,估计:

I^m=1mi=1mf(Di)p(Di)\boxed{\,\hat{I}_m=\dfrac{1}{m}\sum_{i=1}^{m}\dfrac{f(D_i)}{p(D_i)}\,}

mm\to\inftyI^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=qE=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=qE=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=ejParents(Ej))P(E_j=e_j\mid\text{Parents}(E_j)) 乘入样本权重。
  • 样本权重

w=jP(Ej=ejParents(Ej)=采样值)\boxed{\,w=\prod_{j}P(E_j=e_j\mid\text{Parents}(E_j)=\text{采样值})\,}

  • 估计:P(Q=qE=e)i:Qi=qwiiwiP(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 依赖前一个 Di1D_{i-1},且 DiD_iDi1D_{i-1} 至多只有一个非证据变量取值不同,记被改变的变量为 XX(可随机选或按固定顺序轮流);
    3. XX 的新值由如下分布抽样:

P(XDi1X)=P(Xmb(X)Di1)\boxed{\,P(X\mid D_{i-1}\setminus X)=P\big(X\mid mb(X)_{D_{i-1}}\big)\,}

其中 mb(X)Di1mb(X)_{D_{i-1}}XX马尔可夫边界Di1D_{i-1} 中的当前取值。

  • 收敛性:由马氏链理论保证,当样本数趋于无穷时算法返回的结果收敛于真正的后验概率。
  • ⚠️ 缺点:收敛速度慢,马氏链往往需很长时间才真正达到平稳分布 (stationary distribution);且样本间相关使估计方差分析更复杂。

4.5 朴素贝叶斯模型 (Naïve Bayes) ⭐⭐⭐

朴素贝叶斯模型:单一父变量(原因 Cause)+ 一组子变量(效果 Effect1,,_1,\dots,Effectn_n),子变量在给定父变量后彼此条件独立

P(Cause,Effect1,,Effectn)=P(Cause)i=1nP(EffectiCause)\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(CauseEffect1,,Effectn)=αP(Cause)iP(EffectiCause)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(CapsSpam)P(FreeSpam)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=truec)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(YF0,0,,F15,15)P(Y)i,jP(Fi,jY)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(OnTimeLeave25,e)=0.04P(\text{OnTime} \mid \text{Leave25}, e) = 0.04

这句话不保证一定到达,也不说完全不知道,而是给出在当前证据 ee 下的信念程度。

课件开头用三个任务提醒你:手写数字识别、文本分类、图像分割本质上都不是"确定地套规则",而是在证据不完整、特征有噪声、类别边界不绝对清楚时做判断。概率模型就是给这些分类判断提供统一语言。

1.2 不确定性的来源

课件把不确定性来源分成几类:

  • 真实随机性:有些过程本身就是概率性的,例如掷骰子、抛硬币。
  • 惰性:严格列举所有例外太费劲,规则太大也难以使用。
  • 理论无知:领域没有完整一致的理论,例如医学诊断。
  • 实践无知:理论上相关因素存在,但当前个案没有收集到所有信息。
  • 传感器噪声:观测结果不一定等于真实状态。
  • 行动结果不确定:同一行动在不同隐藏状态下可能产生不同结果。

所以概率不是"世界必然随机"的同义词,它也可以表示智能体因为信息不足而产生的主观信念。

1.3 频率主义与贝叶斯观点

频率主义把概率看作长期重复试验中的极限频率:

P(A)=limNnANP(A) = \lim_{N \to \infty} \frac{n_A}{N}

其中 nAn_A 是事件 AANN 次机会中发生的次数。这个解释适合抛硬币、抽样检测等可重复实验。

贝叶斯观点把概率看作在不完整知识下对事件可信度的度量。例如"第三次世界大战发生的概率"无法靠大量重复试验定义,但仍可以讨论给定证据下的主观可信度。

AI 中常用贝叶斯观点,因为智能体面对的往往是单次决策、单个病人、单封邮件或单张图片。

1.4 概率和效用分工

概率回答"我相信什么":P(ArriveOnTimea,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.10P(\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,独立参数数目是:2n12^n - 1

完整联合分布的优点是原则上能回答所有查询。缺点也非常致命:变量稍多就无法存储、无法人工填写、无法高效求和。

3.3 边缘分布和边缘化

边缘化就是把不关心的变量求和消掉。若有联合分布 P(A,B)P(A, B),则:

P(A)=bP(A,b)P(A) = \sum_b P(A, b)

若变量更多:

P(A)=bcP(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(AB)=P(A,B)P(B)P(A \mid B) = \frac{P(A, B)}{P(B)}

前提是:P(B)>0P(B) > 0。条件概率也满足概率公理。例如 0P(Ae)10 \leq P(A \mid e) \leq 1。对变量 AA 的所有取值 a1,,aka_1, \dots, a_ki=1kP(A=aie)=1\sum_{i=1}^{k} P(A = a_i \mid e) = 1。布尔变量有:P(¬ae)=1P(ae)P(\lnot a \mid e) = 1 - P(a \mid e)

4.2 乘法规则

条件概率定义可改写为乘法规则:

P(AB)=P(AB)P(B)P(A \land B) = P(A \mid B)P(B)

也可以写成:P(AB)=P(BA)P(A)P(A \land B) = P(B \mid A)P(A)。因此:P(AB)P(B)=P(BA)P(A)P(A \mid B)P(B) = P(B \mid A)P(A)

4.3 链式法则

链式法则由乘法规则反复使用得到:

P(X1,,Xn)=i=1nP(XiX1,,Xi1)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(AB,C)P(BC)P(C)P(A, B, C) = P(A \mid B, C)\,P(B \mid C)\,P(C)

也可以按其他顺序写:P(A,B,C)=P(CA,B)P(BA)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(YE=e)P(Y \mid E = e),设隐藏变量为 H=XYEH = X - Y - E,则:

P(YE=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(Cavityt)=αP(Cavity,t)P(\text{Cavity} \mid t) = \alpha\, P(\text{Cavity}, t)

若求和得到 P(Cavity,t)=0.12,0.08P(\text{Cavity}, t) = \langle 0.12, 0.08 \rangle,则归一化:

α=10.12+0.08=5\alpha = \frac{1}{0.12 + 0.08} = 5

所以:P(Cavityt)=0.6,0.4P(\text{Cavity} \mid t) = \langle 0.6, 0.4 \rangle

考试中常写成 Q(x)=P(x,e)Q(x) = P(x, e),再用:

P(xe)=Q(x)xQ(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 条件独立的定义

AABB 在给定 CC 后条件独立,记为 ABCA \perp B \mid C,等价写法:

P(AB,C)=P(AC)P(A \mid B, C) = P(A \mid C)

P(BA,C)=P(BC)P(B \mid A, C) = P(B \mid C)

P(A,BC)=P(AC)P(BC)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(MaryCallsJohnCalls)P(MaryCalls)P(\text{MaryCalls} \mid \text{JohnCalls}) \neq P(\text{MaryCalls})

但若已经知道警报状态,John 是否打电话不再影响 Mary 是否打电话:

P(MaryCallsAlarm, JohnCalls)=P(MaryCallsAlarm)P(\text{MaryCalls} \mid \text{Alarm, JohnCalls}) = P(\text{MaryCalls} \mid \text{Alarm})

所以二者不独立,但在给定 Alarm 后条件独立。

8. 贝叶斯公式

8.1 贝叶斯公式

由乘法规则 P(AB)=P(AB)P(B)=P(BA)P(A)P(A \land B) = P(A \mid B)P(B) = P(B \mid A)P(A) 得到贝叶斯公式:

P(AB)=P(BA)P(A)P(B)P(A \mid B) = \frac{P(B \mid A)P(A)}{P(B)}

若把假设写成 HH,证据写成 ee

P(He)=P(eH)P(H)P(e)P(H \mid e) = \frac{P(e \mid H)P(H)}{P(e)}

其中:

  • P(H)P(H) 是先验。
  • P(eH)P(e \mid H) 是似然。
  • P(He)P(H \mid e) 是后验。
  • P(e)P(e) 是证据概率,也是归一化分母。

常用归一化写法:P(He)=αP(eH)P(H)P(H \mid e) = \alpha\, P(e \mid H)P(H)

8.2 为什么贝叶斯公式重要

很多领域中,因果概率容易给出,诊断概率才是我们想问的。

  • 因果方向:P(EffectCause)P(\text{Effect} \mid \text{Cause})
  • 诊断方向:P(CauseEffect)P(\text{Cause} \mid \text{Effect})

贝叶斯公式把二者联系起来:

P(CauseEffect)=P(EffectCause)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(ABi)P(Bi)P(A) = \sum_i P(A \mid B_i)P(B_i)

布尔情形:P(A)=P(AB)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(CE1,,En)=αP(E1,,EnC)P(C)P(C \mid E_1, \dots, E_n) = \alpha\, P(E_1, \dots, E_n \mid C)P(C)

如果给定原因 CC 后,各证据条件独立 EiEjCE_i \perp E_j \mid C,则:

P(E1,,EnC)=iP(EiC)P(E_1, \dots, E_n \mid C) = \prod_i P(E_i \mid C)

于是:

P(CE1,,En)=αP(C)iP(EiC)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,,XnY)=iP(XiY)P(X_1, \dots, X_n \mid Y) = \prod_i P(X_i \mid Y)

分类时:

y^=argmaxyP(yx1,,xn)\hat{y} = \arg\max_y P(y \mid x_1, \dots, x_n)

由贝叶斯公式:

y^=argmaxyP(y)iP(xiy)\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=trueC=c)P(W_i = \text{true} \mid C = c)

训练时:

P(C=c)=#{类别为 c 的文档}#{全部文档}P(C = c) = \frac{\#\{\text{类别为 } c \text{ 的文档}\}}{\#\{\text{全部文档}\}}

P(Wi=trueC=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=wiC=c)\text{score}(c) = P(C = c) \prod_i P(W_i = w_i \mid C = c)

为避免连乘下溢,实际常取对数:

logscore(c)=logP(C=c)+ilogP(Wi=wiC=c)\log \text{score}(c) = \log P(C = c) + \sum_i \log P(W_i = w_i \mid C = c)

需要平滑,否则某个词从未出现会让整个乘积变成 0。最常见是拉普拉斯平滑:

P(Wi=trueC=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(FijD)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。它包含:

  • 一组节点,每个节点对应一个随机变量。
  • 有向边,ABA \to B 表示 AA 直接影响 BBAABB 的父亲。
  • 如果两个节点之间没有直接的边相连,这意味着它们在给定某些其他变量的条件下是条件独立的。

每个节点有一个条件概率分布:P(XiParents(Xi))P(X_i \mid \text{Parents}(X_i))。注意是 P(XiParents(Xi))P(X_i \mid \text{Parents}(X_i)) 即所有父亲的组合条件概率。离散情形中,这个条件概率分布通常写成 CPT(条件概率表),若没有父亲,就是先验概率。

11.3 贝叶斯网络的全局语义

贝叶斯网络的拓扑结构和所有 CPT 一起定义完整联合分布:

P(X1,,Xn)=iP(XiParents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))

这是贝叶斯网络最常用公式。题目给图和 CPT,要求写联合概率时,先按每个节点的父节点列出这一乘积。

例:若图为 ACB,  CDA \to C \leftarrow B,\; C \to D,则:

P(A,B,C,D)=P(A)P(B)P(CA,B)P(DC)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(¬Xu)=1P(Xu)P(\lnot X \mid u) = 1 - P(X \mid u)

11.4 参数量优势

完整联合分布对 nn 个布尔变量需要 2n12^n - 1 个独立参数。

若每个布尔节点最多有 kk 个布尔父节点,每个 CPT 有 2k2^k 行,每行只需一个参数:O(n2k)O(n \cdot 2^k)。如果 kk 很小,贝叶斯网络随变量数近似线性增长。

课件的报警器网络有五个布尔变量:Burglary、Earthquake、Alarm、JohnCalls、MaryCalls。完整联合分布需要 251=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),则:

XiNonDescendants(Xi)Parents(Xi)X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)

课件结论:local semantics ⟺ global semantics。也就是说,局部条件独立断言和全联合分布的乘积分解是等价的。

12. 贝叶斯网络节点独立性判断(d-separation)

12.1 链式结构

结构:XYZX \to Y \to Z

不观测 YY 时,XX 可能影响 ZZ,二者通常相关。给定 YY 后,路径被阻断:XZYX \perp Z \mid Y

直觉:如果已经知道中间状态 YY,更早的原因 XX 对更晚结果 ZZ 不再提供额外信息。

12.2 共同原因结构

结构:XYZX \leftarrow Y \to Z

YYXXZZ 的共同原因。不观测 YY 时,XXZZ 通常相关;给定 YY 后,路径被阻断:XZYX \perp Z \mid Y

直觉:如果已经知道共同原因,两个结果之间的相关性被解释掉。

12.3 共同结果结构

结构:XYZX \to Y \leftarrow Z

YY 是 collider,也叫共同结果或 V-structure。

  • 不观测 YY 及其后代时,路径阻断:XZX \perp Z
  • 但若观测 YYYY 的后代,路径被打开:X⊥̸ZYX \not\perp Z \mid Y

这叫 explaining away。例子:下雨和球赛都会导致交通堵塞;若看到堵车,知道有球赛会降低"下雨导致堵车"的后验概率。

12.4 d-separation 判断步骤

判断 AABB 在给定证据集合 EE 后是否条件独立:

  1. 把有向图当成无向图,列出 AABB 的所有路径。
  2. 对每条路径检查是否被阻断。
  3. 链式节点和共同原因节点若被观测,则阻断路径。
  4. collider 节点若自身及其后代都未被观测,则阻断路径。
  5. 只有所有路径都被阻断,才有条件独立。

考试记忆:

  • 链和 fork:观测中间点会堵住。
  • collider:默认堵住,观测它或它的后代会打开。

12.5 马尔可夫毯

一个节点的马尔可夫毯包括:父节点;子节点;子节点的其他父节点。

给定马尔可夫毯后,该节点与网络中其他所有节点条件独立:

XrestMB(X)X \perp \text{rest} \mid MB(X)

这是贝叶斯网络中局部推理和采样算法的重要概念;若考试只考概念,记清楚"父、子、子之父"。

13. 如何构建贝叶斯网络

13.1 一般构建算法

课件给出构建网络的方法:

  1. 选择变量顺序:X1,,XnX_1, \dots, X_n
  2. i=1i = 1nn,把 XiX_i 加入网络。
  3. 从更早变量 X1,,Xi1X_1, \dots, X_{i-1} 中选择父节点,使:

P(XiParents(Xi))=P(XiX1,,Xi1)P(X_i \mid \text{Parents}(X_i)) = P(X_i \mid X_1, \dots, X_{i-1})

  1. 尽量选择满足这个条件的最小父集。

这样做保证:

P(X1,,Xn)=iP(XiX1,,Xi1)=iP(XiParents(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:两次测量结果。

合理因果结构:NM1,  F1M1,  NM2,  F2M2N \to M_1,\; F_1 \to M_1,\; N \to M_2,\; F_2 \to M_2

真实恒星数影响观测结果,望远镜状态也影响观测结果。不要把观测值画成真实恒星数的原因。给定 N,F1,F2N, F_1, F_2 后:M1M2N,F1,F2M_1 \perp M_2 \mid N, F_1, F_2。若只给定 NN,还要看 F1F_1F2F_2 是否独立以及图中是否有其他路径。

14. 贝叶斯网络中的概率计算

14.1 常见概率计算

  • 简单查询:P(XiE=e)P(X_i \mid E = e),例如 P(NoGasGauge=empty, Lights=on, Starts=false)P(\text{NoGas} \mid \text{Gauge} = \text{empty, Lights} = \text{on, Starts} = \text{false})
  • 联合查询:P(Xi,XjE=e)P(X_i, X_j \mid E = e),可以分解为 P(Xi,XjE=e)=P(XiE=e)P(XjXi,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(OutcomeAction, Evidence)P(\text{Outcome} \mid \text{Action, Evidence})

14.2 用例

为了把概率计算讲清楚,下面都用同一个贝叶斯网络:AC,  BC,  CDA \to C,\; B \to C,\; C \to D,其中 A,BA, B 是根节点,CC 的父节点是 A,BA, BDD 的父节点是 CC。这张图的联合分布分解为:

P(A,B,C,D)=P(A)P(B)P(CA,B)P(DC)P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C)

这一个式子是所有概率计算的起点。考试时不管问什么,第一步都应先写出这个联合分解,再决定哪些变量代入、哪些变量求和、是否需要归一化。

四类变量身份:

  • 查询变量:题目最终要你求分布的变量,例如 AA
  • 证据变量:条件竖线右边已经观测到的变量,例如 dd
  • 隐藏变量:既不是查询,也不是证据,但网络里存在,必须求和消掉,例如求 P(Ad)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(ca,¬b)P(dc)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)=1P(b)P(\lnot b) = 1 - P(b)。如果 CPT 只给 P(ca,¬b)P(c \mid a, \lnot b),而题目要 P(¬ca,¬b)P(\lnot c \mid a, \lnot b),也用补概率:P(¬ca,¬b)=1P(ca,¬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)=abcP(a,b,c,d)P(d) = \sum_a \sum_b \sum_c P(a, b, c, d)

再代入 BN 分解:

P(d)=abcP(a)P(b)P(ca,b)P(dc)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)=bcP(a,b,c,d)P(a, d) = \sum_b \sum_c P(a, b, c, d)

代入 BN 分解:

P(a,d)=bcP(a)P(b)P(ca,b)P(dc)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(Xe)=P(X,e)P(e)P(X \mid e) = \frac{P(X, e)}{P(e)}

在 BN 题里通常不用直接算大分母,而是用归一化:P(Xe)=αP(X,e)P(X \mid e) = \alpha\, P(X, e),其中 α\alphaXX 的所有取值加起来等于 1。

例如求 P(ca,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(ca,b)P(dc)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(¬ca,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(ca,b,d)=q(c)q(c)+q(¬c)=P(ca,b)P(dc)P(ca,b)P(dc)+P(¬ca,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(Ac,d)P(A \mid c, d),查询变量是 AA,证据是 c,dc, d,隐藏变量是 BB

第一步,条件概率转联合概率:

P(Ac,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(cA,b)P(dc)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(dc)bP(b)cP(cA,b)P(A, d) = P(A)\,P(d \mid c) \sum_b P(b) \sum_c P(c \mid A, b)

第五步,分别计算 A=aA = aA=¬aA = \lnot a 的未归一化值(P(dc)P(d \mid c) 省略):

q(a)=P(a)bP(b)P(ca,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(ad)=q(a)q(a)+q(¬a),P(¬ad)=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(ad)P(a \mid d),也必须计算 q(¬a)q(\lnot a),因为它在分母里。除非题目给了 P(d)P(d),否则不能跳过归一化分母。

14.8 第六类:证据概率怎么计算

有时题目会问证据本身概率,例如 P(d)P(d),就是把所有非证据变量求和:

P(d)=abcP(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(ad)=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,Cd)P(A, C \mid d),查询变量是二元组 (A,C)(A, C),证据是 dd,隐藏变量是 BB

先写未归一化:P(A,Cd)=αP(A,C,d)P(A, C \mid d) = \alpha\, P(A, C, d)。对隐藏变量 BB 求和:

P(A,C,d)=bP(A)P(b)P(CA,b)P(dC)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,cd)=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 什么时候可以消掉某个证据

不是所有证据都会影响查询。是否能消掉,要看条件独立。例如在示例网络中 ACDA \to C \to D 并且 BCB \to C。如果已经给定 CC,那么 DDCC 的子节点,DDAA 的信息会被 CC 阻断:ADCA \perp D \mid C,所以 P(Ac,d)=P(Ac)P(A \mid c, d) = P(A \mid c)

从代数上也能看出来:

P(A,c,d)=bP(A)P(b)P(cA,b)P(dc)P(A, c, d) = \sum_b P(A)\,P(b)\,P(c \mid A, b)\,P(d \mid c)

因为 P(dc)P(d \mid c)AAbb 都无关,对不同 AA 取值只是共同常数,归一化时会抵消:

P(Ac,d)=αP(dc)P(A)bP(b)P(cA,b)P(A \mid c, d) = \alpha\, P(d \mid c)\, P(A) \sum_b P(b)\,P(c \mid A, b)

抵消后:P(Ac,d)=αP(A)bP(b)P(cA,b)=P(Ac)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)=zjfj(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(CA,B)P(DC)P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C),要求 P(Ad)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(CA,B)f_C(C, A, B) = P(C \mid A, B)

fD(D,C)=P(DC)f_D(D, C) = P(D \mid C)

第二步:代入证据 dd DD 已经固定为 dd,所以 fD(D,C)f_D(D, C) 缩成只关于 CC 的因子:fd(C)=P(dC)f_d(C) = P(d \mid C)

现在要计算:

P(Ad)=αfA(A)bcfB(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(cA,B)P(dc)+P(¬cA,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 = aA=¬aA = \lnot aq(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(ad)=q(a)q(a)+q(¬a),P(¬ad)=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(XiParents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))

例:IP,  HP,  HL,  PE,  LEI \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(LH)P(PI,H)P(EP,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(¬lh)P(pi,h)P(ep,¬l)P(i)\,P(h)\,P(\lnot l \mid h)\,P(p \mid i, h)\,P(e \mid p, \lnot l),其中 P(¬lh)=1P(lh)P(\lnot l \mid h) = 1 - P(l \mid h)

15.2 条件独立题模板

第一种方法:用局部马尔可夫性。每个节点在给定父节点后,与所有非后代节点条件独立:

XiNonDescendants(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(xiparents(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(Xe)P(X \mid e),先写 P(Xe)=αP(X,e)P(X \mid e) = \alpha\, P(X, e)。若有隐藏变量 YYP(X,e)=YP(X,e,Y)P(X, e) = \sum_Y P(X, e, Y),最后对 XX 的所有取值归一化:

P(xe)=Q(x)xQ(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,X2e)P(X_1, X_2 \mid e),把 (X1,X2)(X_1, X_2) 当成一个联合查询变量:P(X1,X2e)=αP(X1,X2,e)P(X_1, X_2 \mid e) = \alpha\, P(X_1, X_2, e)。若有隐藏变量 YYQ(x1,x2)=YP(x1,x2,e,Y)Q(x_1, x_2) = \sum_Y P(x_1, x_2, e, Y)。归一化时要对查询变量所有组合求和:

P(x1,x2e)=Q(x1,x2)x1x2Q(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. 变量取假值了吗?取假值通常要用 1p1 - p
  5. 查询变量有几个取值?每个取值都要算一个未归一化 QQ

16. 朴素贝叶斯作为贝叶斯网络

16.1 图结构

朴素贝叶斯是一个单父节点模型:CX1,  CX2,  ,  CXnC \to X_1,\; C \to X_2,\; \dots,\; C \to X_n

联合分布:P(C,X1,,Xn)=P(C)iP(XiC)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(AB)=P(AB)P(B)P(A \mid B) = \dfrac{P(A \land B)}{P(B)}
  • 乘法规则:P(AB)=P(AB)P(B)P(A \land B) = P(A \mid B)P(B)
  • 链式法则:P(X1,,Xn)=iP(XiX1,,Xi1)P(X_1, \dots, X_n) = \prod_i P(X_i \mid X_1, \dots, X_{i-1})
  • 全概率:P(A)=iP(ABi)P(Bi)P(A) = \sum_i P(A \mid B_i)P(B_i)
  • 贝叶斯:P(He)=P(eH)P(H)P(e)P(H \mid e) = \dfrac{P(e \mid H)P(H)}{P(e)}

17.2 独立性

  • 独立:AB    P(A,B)=P(A)P(B)A \perp B \iff P(A, B) = P(A)P(B)
  • 条件独立:ABC    P(A,BC)=P(AC)P(BC)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(XiParents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))
  • 局部语义:XiNonDescendants(Xi)Parents(Xi)X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)
  • 参数量:2n12^n - 1 vs. O(n2k)O(n \cdot 2^k)

17.4 三种路径结构

  • 链:XYZ,  XZYX \to Y \to Z,\; X \perp Z \mid Y
  • 共同原因:XYZ,  XZYX \leftarrow Y \to Z,\; X \perp Z \mid Y
  • 共同结果:XYZ,  XZX \to Y \leftarrow Z,\; X \perp Z,但 X⊥̸ZYX \not\perp Z \mid Y

记忆:链和 fork 观测中间点会堵住;collider 默认堵住,观测后打开。

17.5 推理

  • 枚举推理:P(Xe)=αYiP(xiparents(Xi))P(X \mid e) = \alpha \sum_Y \prod_i P(x_i \mid \text{parents}(X_i))
  • 变量消元:zjfj(z,Uj)\sum_z \prod_j f_j(z, U_j),即"包含 zz 的因子相乘,再对 zz 求和"。
  • 复杂度:多树上变量消元可多项式;一般图精确推理 NP-hard,且与 #P 完全问题相关。

17.6 朴素贝叶斯

  • 假设:XiXjCX_i \perp X_j \mid C
  • 分类:c^=argmaxcP(c)iP(xic)\hat{c} = \arg\max_c P(c) \prod_i P(x_i \mid c)
  • 对数形式:c^=argmaxc(logP(c)+ilogP(xic))\hat{c} = \arg\max_c \left(\log P(c) + \sum_i \log P(x_i \mid c)\right)

一定记住:朴素贝叶斯是假设"给定类别后特征条件独立",不是假设特征无条件独立。

18. 常见坑

  1. P(AB)P(A \mid B)P(BA)P(B \mid A) 混淆。
  2. 贝叶斯题忘记先验 P(H)P(H),只看似然 P(eH)P(e \mid H)
  3. 分母没有用全概率展开。
  4. 把测试准确率当成阳性后患病概率。
  5. 把条件独立当成无条件独立。
  6. BN 联合分布没有按父节点写,漏掉条件项。
  7. CPT 中变量为假时忘记用 1p1 - 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),但完整联合分布太大:2n12^n - 1
  • 边缘化:P(A)=bP(A,b)P(A) = \sum_b P(A, b)
  • 条件概率:P(AB)=P(A,B)P(B)P(A \mid B) = \dfrac{P(A, B)}{P(B)}
  • 贝叶斯:P(He)=αP(eH)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,BC)=P(AC)P(BC)P(A, B \mid C) = P(A \mid C)P(B \mid C)
  • 贝叶斯网络:P(X1,,Xn)=iP(XiParents(Xi))P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))
  • 枚举推理:P(Xe)=αYiP(xiparents(Xi))P(X \mid e) = \alpha \sum_Y \prod_i P(x_i \mid \text{parents}(X_i))
  • 变量消元:收集含隐藏变量的因子 → 相乘 → 对隐藏变量求和 → 归一化
  • 朴素贝叶斯:c^=argmaxcP(c)iP(xic)\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=(XX)1Xyw^*=(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) ff^*


1.3 PAC 学习:机器学习为什么可能 ⭐

PAC (Probably Approximately Correct) 由 Leslie Valiant 于 1984 年提出,开创了计算学习理论子领域。

记号

记号 含义
XX 输入空间 (input space)
YY 标签集合
c:XYc: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)=PrxD[h(x)c(x)]R(h)=\Pr_{x\sim\mathcal{D}}[h(x)\neq c(x)]
  • 经验误差 (empirical error)R^S(h)=1mi=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)]
  • 关系:ESDm[R^S(h)]=R(h)\mathbb{E}_{S\sim\mathcal{D}^m}[\widehat{R}_S(h)]=R(h)(经验误差是泛化误差的无偏估计)。

三个感兴趣的假设 ⭐

课件 p35:

  1. hSh_S(训练所得假设)— 算法在训练集 SS 上选出的假设
  2. hh^*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} 及任意目标概念 cCc\in\mathcal{C},只要

mpoly(1/ϵ,1/δ,n,size(c))m\ge\text{poly}(1/\epsilon,1/\delta,n,\text{size}(c))

就有 PSDm[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 ⁣(1mXi1mE[Xi]ϵ)2e2mϵ2P\!\left(\frac{1}{m}\sum X_i-\frac{1}{m}\sum\mathbb{E}[X_i]\ge\epsilon\right)\le 2e^{-2m\epsilon^2}

应用于经验/泛化误差,令 δ=2e2mϵ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}}\;}

有限假设集学习界

  • 一致情形cHc\in\mathcal{H}R^S(hS)=0\widehat{R}_S(h_S)=0):
    以至少 1δ1-\delta 概率 R(hS)ϵR(h_S)\le\epsilon,只要 m1ϵ(logH+log1δ)m\ge\dfrac{1}{\epsilon}\bigl(\log|\mathcal{H}|+\log\tfrac{1}{\delta}\bigr)
    → 泛化误差界为 1m(logH+log1δ)\dfrac{1}{m}\bigl(\log|\mathcal{H}|+\log\tfrac{1}{\delta}\bigr)收敛速率 1/m1/m

  • 不一致情形cHc\notin\mathcal{H},更常见)⭐:
    以至少 1δ1-\delta 概率对所有 hHh\in\mathcal{H} 同时:

R(h)R^S(h)+logH+log(2/δ)2m=O ⁣(logHm)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:XYf:X\to Y
  • 训练样本 {(xi,yi)}i=1N\{(x_i,y_i)\}_{i=1}^{N},目标学 hfh\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)log2P(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+nlog2pp+nnp+nlog2np+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(YX)=jP(X=xj)iP(Y=yiX=xj)log2P(Y=yiX=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(YX)=I ⁣(pp+n,np+n)i=1vpi+nip+nI ⁣(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)}

选信息增益最大的属性:argmaxiIG(Xi)=argmaxi[H(Y)H(YXi)]\arg\max_i IG(X_i)=\arg\max_i[H(Y)-H(Y\mid X_i)]

示例(等位数据集)p=n=6p=n=6I(6/12,6/12)=1I(6/12,6/12)=1IG(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=1ipi2\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(xixi)2\sqrt{\sum_i(x_i-x_i')^2} 最常用
标准化欧氏 i(xixi)2σi2\sqrt{\sum_i\tfrac{(x_i-x_i')^2}{\sigma_i^2}} 消除量纲影响
Minkowski LpL_p (ixixip)1/p\left(\sum_i\lvert x_i-x_i'\rvert^p\right)^{1/p} L1L_1 曼哈顿、L2L_2 欧氏、LL_\infty 切比雪夫
Hamming 不同属性数 布尔/离散数据
马氏 (Mahalanobis) (xx)Σ1(xx)\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[XY]μ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(wx+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 (ywxb)2=(1y(wx+b))2(y-w^\top x-b)^2 = (1-y(w^\top x+b))^2
L1L_1 ywxb=1y(wx+b)\lvert y-w^\top x-b\rvert = \lvert 1-y(w^\top x+b)\rvert
Hinge max(0,1y(wx+b))\max(0,1-y(w^\top x+b))(SVM 用)

替代损失对比图见 loss_functions.png

⭐ 最小二乘 / 正规方程闭式解

矩阵形式 XRN×(d+1)X\in\mathbb{R}^{N\times(d+1)}(首列补 1)、w=[b,w1,,wd]w=[b,w_1,\dots,w_d]^\top

Loss=minw(Xwy)(Xwy)\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=(XX)1Xy  (XX 满秩)\boxed{\;w^*=(X^\top X)^{-1}X^\top y\;}\qquad(X^\top X\text{ 满秩})

  • Moore-Penrose 伪逆X+=(XX)1XX^+=(X^\top X)^{-1}X^\top
  • 预测:y^=sign(yX(XX)1[1,x0])\hat y=\text{sign}\left(y^\top X(X^\top X)^{-1}[1,x_0^\top]^\top\right)

一元回归闭式解

w=yi(xixˉ)xi21m(xi)2,b=1m(yiwxi)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)

导出:先后对 wwbb 求偏导置零求解。

广义线性模型 ⭐

引入基函数 ϕ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=lnp1p(logit/log odds function)z=\ln\frac{p}{1-p}\quad\text{(logit/log odds function)}

反推:p=11+ez=σ(z)p=\dfrac{1}{1+e^{-z}}=\sigma(z)

Standard Logistic Function(课件 p92)

f(x)=L1+ek(xx0)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+ex  \boxed{\;\sigma(x)=\dfrac{1}{1+e^{-x}}\;}

模型

y=σ(wx+b)    lny1y=wx+by=\sigma(w^\top x+b)\;\Longleftrightarrow\;\ln\dfrac{y}{1-y}=w^\top x+b

Logistic 回归用线性模型预测结果逼近真实标记的对数几率。

对数几率 (log odds) 特别适合处理微小概率场景(如计算生物学中的多序列比对)。

⭐ 极大似然 → 交叉熵损失

y=P(y=1x)y=P(y=1\mid x)

P(y=1x)=ewx+b1+ewx+b,P(y=0x)=11+ewx+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)=ilnP(yixi;w,b)L(w,b)=\sum_i\ln P(y_i\mid x_i;w,b),等价于最小化:

  E(w,b)=i=1m[yilnσ(wxi+b)+(1yi)ln(1σ(wxi+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)=xXp(x)lnq(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+ez=1(1+ez)2(ez)=σ(z)21σ(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))

LCEw=(σ(wxi+b)yi)xi      wwη(σ(wxi+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 同理:bbη(σ(wxi+b)yi)b\leftarrow b-\eta(\sigma(w^\top x_i+b)-y_i)

SGD:每次用一个或小批量样本更新。

优缺点

优点 缺点
概率化输出、自然概率视角 线性决策边界
易扩多类 (multinomial regression)
抗过拟合、训练快、分类极快
系数可解释为特征重要性

2.6 过拟合 / 正则化 / 交叉验证 / 偏差-方差

模型复杂度与过拟合(课件 p71-76 曲线拟合示例)

从 1 阶到高次多项式逐步过拟合的演示:模型越复杂,训练误差越低但测试误差先降后升 → 需要奥卡姆剃刀,选择同时最大化一致性和简洁性的模型。

⭐ 正则化 (Regularization)

w=argminw[Loss+λpenalty(w)]w^*=\arg\min_w\bigl[\text{Loss}+\lambda\cdot\text{penalty}(w)\bigr]

正则化 形式 作用
L2 (Ridge) Loss+λw22\text{Loss}+\lambda\lVert w\rVert_2^2 均匀缩小权重、改善数值稳定性
L1 (Lasso) $\text{Loss}+\lambda w

两者都是凸正则化。

L2 正则化最小二乘闭式解 ⭐

minw(Xwy)2+λw2w^=(XX+λI)1Xy\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[(yf^(x))2]=(E[f^(x)]y)2Bias2+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)=wx+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 x2:=i=1nxi2|\vec{x}|_2 := \sqrt{\sum_{i=1}^n x_i^2}
LpL_p $|\vec{x}|p := (\sum{i=1}^n
LL_\infty $|\vec{x}|_\infty := \max_i

点到超平面的距离推导 ⭐

设超平面 S:wx+b=0S: w^\top x+b=0,点 x0x_0。从 x0x_0SS 作垂线,垂足为 x1x_1wx1+b=0w^\top x_1+b=0)。

  • 向量 x0x1\overrightarrow{x_0x_1} 与法向量 ww 平行 ⇒ x0x1\overrightarrow{x_0x_1} 可分解为 ww 方向的投影
  • 点积:wx0x1=wx0x1=wd|w\cdot\overrightarrow{x_0x_1}|=\|w\|\|\overrightarrow{x_0x_1}\|=\|w\|\cdot d
  • 同时:wx0x1=wx0wx1=wx0(b)=wx0+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=wx0+bwd=\dfrac{|w^\top x_0+b|}{\|w\|}

⭐ 缩放不变性

waw,  babw\to aw,\; b\to ab 不改超平面 ⇒ 可规范化:对支持向量令 wxs+b=1|w^\top x_s+b|=1,则间隔 m=2wm=\dfrac{2}{\|w\|}

支持向量 (Support Vectors):距超平面最近的训练样本。分类间隔 (Margin):两侧支持向量到超平面距离之和 m=2wm=\dfrac{2}{\|w\|}


1.2 硬间隔 SVM 原始问题 ⭐

m=2wm=\frac{2}{\|w\|},最大化间隔 ≡ 最小化 w\|w\|

  minw,b 12w2s.t.yi(wxi+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,Q0Q\succeq 0 凸 ⇒ 全局最优。课件 p15-16:可直接用商业 QP 求解器。)


1.3 拉格朗日对偶推导 ⭐

拉格朗日乘子法回顾(课件 p17-18)

  • 等式约束 minf(x)\min f(x) s.t. h(x)=0h(x)=0minf(x)+λh(x)\min f(x)+\lambda h(x)
  • 不等式约束 minf(x)\min f(x) s.t. g(x)0g(x)\le 0minxmaxλ0f(x)+λg(x)\min_x\max_{\lambda\ge 0} f(x)+\lambda g(x)

原始问题到对偶问题

拉格朗日函数:

L(w,b,α)=12wwi=1nαi[yi(wxi+b)1],αi0L(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

原始问题:minw,bmaxα0L(w,b,α)\min_{w,b}\max_{\alpha\ge 0}L(w,b,\alpha)

对偶问题maxα0minw,bL(w,b,α)\max_{\alpha\ge 0}\min_{w,b}L(w,b,\alpha)

课件 p19:由于 f(x)f(x) 凸 + 约束线性(满足 Slater 条件)⇒ 强对偶性成立:对偶最优 = 原始最优。

w,bw,b 求偏导置零

Lw=wiαiyixi=0w=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

Lb=iαiyi=0i=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αi12i,j=1nαiαjyiyjxixjs.t.αi0, 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_iww 仅为训练样本的加权组合
  2. b=yiwxib=y_i-w^\top x_i(任取 αi0\alpha_i\neq 0);
  3. 数据只以内积 xixjx_i^\top x_j 形式出现 ⇒ 引出核技巧

稀疏性

  • 严格在间隔外正确分类的样本 ⇒ αi=0\alpha_i^*=0(互补松弛:yi(wxi+b)>1y_i(w^\top x_i+b)>1αi=0\alpha_i=0
  • 只有少量 αi0\alpha_i\neq 0 → 支持向量

决策函数y^=sign ⁣(iSVαiyixix+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 ⭐

引入松弛变量

若训练集不线性可分,引入 ξi0\xi_i\ge 0 允许误分类:

minw,b 12ww+Ciξis.t.yi(wxi+b)1ξi, ξi0\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<ξi10<\xi_i\le1 在间隔内;ξi>1\xi_i>1 误分类
CC 惩罚参数,CC 大 ⇒ 接近硬间隔;CC 小 ⇒ 间隔更宽、容忍更多误分

对偶问题(唯一变化:αiC\alpha_i\le C

maxα αi12αiαjyiyjxixjs.t.0αiC, α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, 1yi(wxi+b))=[1yi(wxi+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 目标 =12ww+Cihingei=\frac{1}{2}w^\top w+C\sum_i\text{hinge}_i = 正则项 + hinge loss(等价于 minw,b12Cww+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)

由于数据只以内积出现(对偶目标中的 xixjx_i^\top x_j、决策函数中的 xixx_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+xx)2K(x,x')=(1+x^\top x')^2

常用核 ⭐

K(xi,xj)K(x_i,x_j) 说明
线性 xixjx_i^\top x_j ϕ(x)=x\phi(x)=x,原始空间
多项式 (1+xixj)p(1+x_i^\top x_j)^p pp 次多项式
高斯 RBF exp ⁣(xixj2σ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=KK=K^\top
  2. 半正定性zKz0, zRnz^\top K z\ge 0,\ \forall z\in\mathbb{R}^n

作业证明:zKz=i,jzizjϕ(xi)ϕ(xj)=iziϕ(xi)20z^\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α(yyK)αs.t.0αiC, α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)
损失 [1y(wx+b)]+[1-y(w^\top x+b)]_{+} logσ(y(wx+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:xyf: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) 可能很低(例如:致病基因数远小于全部基因数)

超球/超立方体积比 ⭐

设半径 rrdd 维超球内接于边长 2r2r 的超立方:

  • d=2d=2V(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=3V(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\%
  • dd\to\inftylimdV(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)xj2  \boxed{\;J=\sum_{j=1}^{n}\bigl\lVert\mu_{C^{(j)}}-x_j\bigr\rVert^2\;}

目标:minμminCJ\min_\mu\min_C J。(非凸;全局最优 NP-hard。)

⭐ 交替最小化两步

步骤 名称 操作
Step 1 分配 (Assignment) C(j)=argminiμixj2C^{(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. J0J\ge 0 有下界,且单调不增
  4. 分配方案数有限 ⇒ JJ 只能在有限步后不再改变

⭐ 性质与局限性

性质 说明
有限步收敛 ✅ 保证(到局部最优)
全局最优 ❌ NP-hard
初始化敏感 不同初始化 → 不同结果;可能"卡住"(课件 p25)
对噪声/离群点 不鲁棒(平方损失放大效应)
非球形簇 可能无法正确聚类(课件 p26:改变距离函数可缓解)

实用技巧

  • K-means++ 初始化:选远离已有中心的点作新中心
  • 多次随机初始化取最佳
  • 选择合适 kk(肘部法则)

2.4 主成分分析 (PCA) ⭐

什么是 PCA?

  • 找一组新的变量(主成分),数量少于原变量,但保留样本大部分信息
  • “信息” = 样本中的变异/方差(由原变量间相关性体现)
  • 新变量互不相关,按保留信息量排序

PCA 目标

给定 dd 维空间的 nn 个点,找投影矩阵 PRd×mP\in\mathbb{R}^{d\times m}mdm\ll d):

xRdy=PxRmx\in\mathbb{R}^d\to y=P^\top x\in\mathbb{R}^m

两种等价准则(中心化后)

  1. 最大化投影方差 → 使投影后点尽可能分散(课件 p42)
  2. 最小化重构误差 → 使投影再重构的损失最小(课件 p43)

毕达哥拉斯定理 ⇒ 两者等价:投影方差最大化 ≡ 重构误差最小化。

1D 推导

数据中心化 xˉ=1nxi\bar x=\frac{1}{n}\sum x_i,令 xi=xixˉx_i'=x_i-\bar x(则 xˉ=0\bar x'=0)。

协方差矩阵 S=1n(xixˉ)(xixˉ)S=\frac{1}{n}\sum(x_i-\bar x)(x_i-\bar x)^\top

投影后的方差:1n(u1xiu1xˉ)2=u1Su1\frac{1}{n}\sum(u_1^\top x_i'-u_1^\top\bar x')^2=u_1^\top S u_1

maxu1 u1Su1s.t. u1u1=1\max_{u_1}\ u_1^\top S u_1\quad\text{s.t.}\ u_1^\top u_1=1

拉格朗日法:L=u1Su1+λ1(1u1u1)L=u_1^\top S u_1+\lambda_1(1-u_1^\top u_1)Lu1=Su1λ1u1=0\frac{\partial L}{\partial u_1}=S u_1-\lambda_1 u_1=0Su1=λ1u1S u_1=\lambda_1 u_1

u1u_1SS最大特征值 λ1\lambda_1 对应的特征向量,且 u1Su1=λ1u1u1=λ1u_1^\top S u_1=\lambda_1 u_1^\top u_1=\lambda_1

第 2 主成分及后续

u2=argmaxuuSus.t. uu=1, uu1=0u_2=\arg\max_{u} u^\top S u\quad\text{s.t.}\ u^\top u=1,\ u^\top u_1=0

u2u_2SS 第二大特征值对应特征向量。依此类推,各主成分相互正交。

⭐ PCA 算法步骤

  1. 数据中心化:xixixˉx_i'\leftarrow x_i-\bar x
  2. 计算协方差矩阵 S=1nxixiS=\frac{1}{n}\sum x_i' x_i'^\top(或矩阵形式 S=1nXXS=\frac{1}{n}XX^\topX=[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=Pxy=P^\top x;重构:x^=PPx\hat x=PP^\top x

保留方差比例

i=1mλii=1dλi\frac{\sum_{i=1}^{m}\lambda_i}{\sum_{i=1}^{d}\lambda_i}

⭐ PCA 最优性定理(课件 p52-53)

PCA 在所有大小为 mm 的线性投影中,使重构误差最小。

minPi=1nj=1d(xijx^ij)2    maxPtrace(XPPX)\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 性质可证,最优 PPSSmm 个特征向量构成。

核 PCA / 非线性降维

关键发现(课件 p55-56):特征向量 uu 满足 u=1nλi(xiu)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πcN(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=cxi)=π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γicxiiγic,Σc=iγic(xiμc)(xiμc)iγic,πc=1niγ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(fL1(f1(x)))y=f_L(f_{L-1}(\cdots f_1(x)\cdots))

多层非线性逐层抽象,端到端学习。

⭐ 深度学习三步骤

步骤 名称 内容
定义函数集 / 网络结构 确定网络结构 + 参数化函数族 {fθ}\{f_\theta\}(Neural Network)
评价函数优劣 定义损失 L(θ)L(\theta)(Goodness of Function)
选出最优函数 梯度下降 θ=argminθL(θ)\theta^*=\arg\min_\theta L(\theta)(Pick the Best Function)

为什么"深"

  • 通用近似定理 (Universal Approximation):足够宽的单隐层前馈网可任意逼近紧支集上的任意连续函数——但不保证可学习性
  • 深度的好处:模块化 / 层次化 (Modularization):同等表达力下深而窄比浅而宽参数更少、更高效(课件 p19 类比:电路设计中模块复用 vs 全展开)。

5.2 前馈神经网络与反向传播

神经元 / 感知机 (Perceptron)

z=wx+b,a=f(z)z=w^\top x+b,\quad a=f(z)

感知机 y=sign(wx+b)y=\text{sign}(w^\top x+b) 是线性分类器,不能解 XOR

⭐ 激活函数 (Activation Functions)

激活函数曲线对比图见 activation_functions.png
导数对比图见 activation_derivatives.png

名称 公式 导数 优点 缺点
Sigmoid σ(x)=11+ex\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)=exexex+ex\tanh(x)=\dfrac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=1tanh2(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 α(ex1)\alpha(e^x-1) 负区平滑、近零均值 含 exp 计算
Softmax(输出层) ezijezj\dfrac{e^{z_i}}{\sum_j e^{z_j}} 多分类概率化

饱和性定义(课件 p62)

类型 定义 示例
软饱和 limxf(x)=0\lim_{x\to\infty}f'(x)=0 Sigmoid, Tanh
硬饱和 f(x)=0f'(x)=0 当 $ x

饱和 → 导数趋 0 → 反向传播链式连乘 → 梯度消失

⭐ 激活函数导数推导

σ(x)=ddx11+ex=1(1+ex)2(ex)=σ(x)21σ(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)=ddxexexex+ex=1tanh2(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(l1)+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)}=xW(l)Rml×ml1W^{(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)+λWF2J(W,b;x,y)=\mathcal{L}(\hat y,y)+\lambda\|W\|_F^2

其中 Frobenius 范数(课件 p41):

WF2=l=1Li=1mlj=1ml1(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 12y^y2\frac{1}{2}|\hat y-y|^2 回归
Cross-Entropy kyklogy^k-\sum_k y_k\log\hat y_k 配 Softmax 多分类
BCE [ylogy^+(1y)log(1y^)]-[y\log\hat y+(1-y)\log(1-\hat y)] 配 Sigmoid 二分类

⭐ 反向传播 (Backpropagation, BP)

核心:链式法则 + 自动微分。现代框架 (TensorFlow 2.0, PyTorch, MindSpore) 自动完成,但须理解原理。

输出层误差项(课件 p46)

δjL=JzjL=JajLfL(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)JfL(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)。

参数梯度

JW(l)=δ(l)(a(l1)),Jb(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 正则化(权重衰减) λWF2\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 WU ⁣[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:训练时对保留激活乘 11p\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=0k1v=0k1Xi+u,j+vWu,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=Ik+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=maxiRm,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(Whhht1+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 梯度沿时间连乘 ththt1\prod_t\frac{\partial h_t}{\partial h_{t-1}}

  • 若每个因子模 <1<1 → 指数衰减 → 梯度消失 → 无法学习长程依赖
  • 若每个因子模 >1>1 → 指数增长 → 梯度爆炸

课件 p139:即使改成 ht=ht1+g(xt,ht1;θ)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,ht1]+bf)\sigma(W_f[x_t,h_{t-1}]+b_f) 控制 ct1c_{t-1} 保留多少
输入门 iti_t σ(Wi[xt,ht1]+bi)\sigma(W_i[x_t,h_{t-1}]+b_i) 控制候选状态写入多少
输出门 oto_t σ(Wo[xt,ht1]+bo)\sigma(W_o[x_t,h_{t-1}]+b_o) 控制 ctc_t 输出给 hth_t 多少

LSTM 核心公式

ft=σ(Wf[xt,ht1]+bf)(遗忘门)it=σ(Wi[xt,ht1]+bi)(输入门)c~t=tanh(Wc[xt,ht1]+bc)(候选状态)ct=ftct1+itc~t(细胞状态更新)ot=σ(Wo[xt,ht1]+bo)(输出门)ht=ottanh(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,合并 cchh,加重置门 rtr_t

zt=σ(Wz[xt,ht1]),rt=σ(Wr[xt,ht1])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,rtht1]),ht=(1zt)ht1+zth~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 ⁣(QKdk)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 值,实际内容
  • QKQK^\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=βvt1+ηgt,θt+1=θtvt(β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=Gt1+gtgt,θ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]t1+(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=β1mt1+(1β1)gt,vt=β2vt1+(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 10810^{-8} 数值稳定
η\eta 0.001 学习率

收敛快、对学习率不敏感,深度学习最常用优化器

偏差校正:由于 m0=v0=0m_0=v_0=0,初期估计偏小,除以 1βt1-\beta^t 修正。


5.8 损失函数与正则化方法汇总 ⭐

损失函数

任务 损失 公式
回归 MSE 1Ny^y2\frac{1}{N}\sum|\hat y-y|^2
二分类 BCE [ylogy^+(1y)log(1y^)]-[y\log\hat y+(1-y)\log(1-\hat y)]
多分类 Categorical CE(配 Softmax) kyklogy^k-\sum_k y_k\log\hat y_k

正则化方法对比

方法 机制 训练/推理差异
L2 权重衰减 λWF2\lambda|W|_F^2 加在损失中 无差异
Dropout 随机失活 + inverted dropout 训练用 mask,推理全开
Batch Normalization 归一化每层输入 训练用 batch 统计,推理用移动平均
Layer Normalization 沿特征维归一化(不依赖 batch) 训练推理一致(Transformer/RNN 用)
数据增强 翻转/裁剪/颜色抖动 仅训练
早停 验证误差回升即停

6. 公式速查

名称 公式
Sigmoid σ(x)=1/(1+ex)\sigma(x)=1/(1+e^{-x})σ=σ(1σ)\sigma'=\sigma(1-\sigma)
Tanh tanh(x)\tanh(x)tanh=1tanh2\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(l1)+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(l1))\partial J/\partial W^{(l)}=\boldsymbol{\delta}^{(l)}(a^{(l-1)})^\topJ/b(l)=δ(l)\partial J/\partial b^{(l)}=\boldsymbol{\delta}^{(l)}
Frobenius 范数 WF2=li,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=(Ik+2p)/s+1O=\lfloor(I-k+2p)/s\rfloor+1
LSTM ct=ftct1+itc~tc_t=f_t\odot c_{t-1}+i_t\odot\tilde c_tht=ottanh(ct)h_t=o_t\odot\tanh(c_t)
GRU ht=(1zt)ht1+zth~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=βvt1+ηgtv_t=\beta v_{t-1}+\eta g_t
RMSProp E[g2]t=ρE[g2]t1+(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:XYf: \mathcal{X} \to \mathcal{Y},使得新样本 xnewx_{\text{new}} 的预测 y^=f(xnew)\hat{y} = f(x_{\text{new}}) 尽可能正确。

  • 分类任务:输入样本特征 xXx \in \mathcal{X};输出离散标签 y{1,,K}y \in \{1, \dots, K\}y{1,+1}y \in \{-1, +1\}。含义:判断样本属于哪个类别,例如 spam/not spam、良性/恶性肿瘤。
  • 回归任务:输入样本特征 xXx \in \mathcal{X};输出连续数值 yRy \in \mathbb{R}。含义:预测一个数值,例如房价、温度、股票收益。

1.4 无监督学习

没有标签地发现结构。训练数据 D={xi}i=1nD = \{x_i\}_{i=1}^n,没有给定正确输出。目标不是拟合 xyx \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^=argmaxyP(yx)\hat{y} = \arg\max_y P(y \mid x)。用贝叶斯公式 P(yx)P(y)P(xy)P(y \mid x) \propto P(y)P(x \mid y)
  • 朴素条件独立假设:P(xy)=j=1dP(xjy)P(x \mid y) = \prod_{j=1}^{d} P(x_j \mid y)
  • 所以分类规则:y^=argmaxyP(y)j=1dP(xjy)\hat{y} = \arg\max_y P(y) \prod_{j=1}^{d} P(x_j \mid y)

2021 选择题常考:Naive Bayes 假设是在给定类别标签后,各属性条件独立。

2. 泛化主线:模型不是越复杂越好

2.1 三种误差:训练、测试、泛化

训练误差是模型在训练集上的错误:

Etrain=1ni=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+nlog2pp+nnp+nlog2np+nH(S) = -\frac{p}{p+n} \log_2 \frac{p}{p+n} - \frac{n}{p+n} \log_2 \frac{n}{p+n}

约定 0log20=00 \log_2 0 = 0。性质:

  • 全正或全负:H(S)=0H(S) = 0,节点最纯。
  • 正负各半:H(S)=1H(S) = 1,二分类中最混乱。

多分类中:

H(S)=k=1Kpklog2pkH(S) = -\sum_{k=1}^{K} p_k \log_2 p_k

其中 pkp_k 是类别 kk 的比例。

3.5 信息增益:按属性划分后熵下降多少

属性 AA 把样本集 SS 划分成若干子集 SvS_v。划分后的剩余不确定性为:

Remainder(A)=vValues(A)SvSH(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)=1k=1Kpk2\text{Gini}(S) = 1 - \sum_{k=1}^{K} p_k^2

Gini 越小,节点越纯。本课程重点是 entropy 和 information gain,Gini 只需知道含义。

3.7 无冲突训练集一定存在零训练误差决策树

题目:证明对于不含冲突数据的训练集,必存在与训练集一致的决策树。不含冲突数据指:xi=xjyi=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:xiNk(x)}\hat{y} = \text{majority}\{y_i : x_i \in N_k(x)\},其中 Nk(x)N_k(x) 是距离 xx 最近的 kk 个训练样本。
  • 回归输出:y^=1kxiNk(x)yi\hat{y} = \frac{1}{k} \sum_{x_i \in N_k(x)} y_i

4.2 距离决定"相似"

常用距离:

d2(x,z)=j=1d(xjzj)2d_2(x, z) = \sqrt{\sum_{j=1}^{d}(x_j - z_j)^2}

d1(x,z)=j=1dxjzjd_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 最小二乘回归:闭式解必须会推

XRn×dX \in \mathbb{R}^{n \times d} 的第 ii 行是 xiTx_i^TyRny \in \mathbb{R}^n 是标签列向量。忽略偏置或把偏置并入第一列全 1 特征,目标为:

J(w)=Xwy22J(w) = \|Xw - y\|_2^2

展开:J(w)=(Xwy)T(Xwy)J(w) = (Xw - y)^T(Xw - y)。求梯度:wJ(w)=2XT(Xwy)\nabla_w J(w) = 2X^T(Xw - y)。令梯度为 0:2XT(Xwy)=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 大题模板

目标:

minwi=1nri(yiwTxi)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)=(yXw)TR(yXw)J(w) = (y - Xw)^T R (y - Xw)。因为 RR 是对角权重矩阵,且通常 R=RTR = R^T,求梯度:

wJ(w)=2XTR(yXw)=2XTRXw2XTRy\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)=Xwy22+λw22J(w) = \|Xw - y\|_2^2 + \lambda \|w\|_2^2。梯度:wJ(w)=2XT(Xwy)+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)=Xwy22+λwTDwJ(w) = \|Xw - y\|_2^2 + \lambda w^T D w,其中 DD 为对角矩阵,则 w=(XTX+λD)1XTyw^* = (X^T X + \lambda D)^{-1} X^T yDjjD_{jj} 越大,对第 jj 个特征权重惩罚越强。

5.6 L1 和 L2 正则区别

  • L2 正则Ω2(w)=w22=j=1dwj2\Omega_2(w) = \|w\|_2^2 = \sum_{j=1}^{d} w_j^2。优点是容易优化,常有闭式解或平滑梯度。作用是让权重变小,降低过拟合。
  • L1 正则Ω1(w)=w1=j=1dwj\Omega_1(w) = \|w\|_1 = \sum_{j=1}^{d} |w_j|。作用是产生稀疏解,使一部分权重精确为 0,相当于自动特征选择。

5.7 多分类最小二乘

YRn×kY \in \mathbb{R}^{n \times k} 是 one-hot 标签矩阵,WRd×kW \in \mathbb{R}^{d \times k},目标为 minWXWYF2\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^=argmaxk(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 但通常不是做连续值回归。

  • 二分类输入:样本特征 xRdx \in \mathbb{R}^d;标签 y{0,1}y \in \{0, 1\}
  • 输出:P(y=1x)P(y = 1 \mid x)
  • 含义:模型直接估计条件概率,属于 discriminative model。

6.2 Sigmoid 函数

逻辑函数:

σ(z)=11+ez\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=1x)=σ(wTx+b),P(y=0x)=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=1x)120,P(y=1x)<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} 等价于 z0z \geq 0,所以决策边界仍是 wTx+b=0w^T x + b = 0

6.4 Log odds:逻辑回归假设对数几率线性

odds 是事件发生概率与不发生概率之比:odds=p1p\text{odds} = \frac{p}{1-p}。log odds 为:

logit(p)=logp1p\text{logit}(p) = \log \frac{p}{1-p}

对逻辑回归:

logP(y=1x)P(y=0x)=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(yixi;w,b)=piyi(1pi)1yiP(y_i \mid x_i; w, b) = p_i^{y_i}(1 - p_i)^{1-y_i}

数据集似然:L(w,b)=i=1npiyi(1pi)1yiL(w, b) = \prod_{i=1}^{n} p_i^{y_i}(1-p_i)^{1-y_i}

对数似然:(w,b)=i=1n[yilogpi+(1yi)log(1pi)]\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=[yilogpi+(1yi)log(1pi)]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=[ylogp+(1y)log(1p)]L = -[y \log p + (1-y)\log(1-p)]

先对 pp 求导:

Lp=yp+1y1p\frac{\partial L}{\partial p} = -\frac{y}{p} + \frac{1-y}{1-p}

再用 sigmoid 导数 pz=p(1p)\frac{\partial p}{\partial z} = p(1-p),链式法则:

Lz=(yp+1y1p)p(1p)=y(1p)+(1y)p=py\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

因为 zwj=xj,  zb=1\frac{\partial z}{\partial w_j} = x_j,\; \frac{\partial z}{\partial b} = 1,所以:

Lwj=(py)xj,Lb=py\frac{\partial L}{\partial w_j} = (p - y)x_j, \quad \frac{\partial L}{\partial b} = p - y

向量形式:wL=(py)x\nabla_w L = (p - y)x。数据集梯度:wJ=i=1n(piyi)xi\nabla_w J = \sum_{i=1}^{n}(p_i - y_i)x_iJb=i=1n(piyi)\frac{\partial J}{\partial b} = \sum_{i=1}^{n}(p_i - y_i)

6.7 梯度下降更新

单样本 SGD:wwη(py)xw \leftarrow w - \eta(p - y)xbbη(py)b \leftarrow b - \eta(p - y)

批量梯度下降:wwηi=1n(piyi)xiw \leftarrow w - \eta \sum_{i=1}^{n}(p_i - y_i)x_ibbηi=1n(piyi)b \leftarrow b - \eta \sum_{i=1}^{n}(p_i - y_i)

带 L2 正则:Jreg=J+λw22J_{\text{reg}} = J + \lambda \|w\|_2^2,梯度增加 2λw2\lambda w

6.8 Softmax 回归:多分类扩展

多分类中,每个类别 kk 有参数 wk,bkw_k, b_k

P(y=kx)=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=logP(y=tx)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;特征 xiRdx_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。此时最近点的几何间隔为 γ=1w\gamma = \frac{1}{\|w\|}

两条间隔边界:wTx+b=1,  wTx+b=1w^T x + b = 1,\; w^T x + b = -1,二者之间宽度 2w\frac{2}{\|w\|}

7.3 Hard Margin SVM 原问题

线性可分时:

minw,b12w2s.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

最大化间隔 2w\frac{2}{\|w\|} 等价于最小化 12w2\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 对偶问题:考试概念和证明都要会认

原问题:

minw,b12w2s.t.yi(wTxi+b)10\min_{w,b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) - 1 \geq 0

构造拉格朗日函数,αi0\alpha_i \geq 0

L(w,b,α)=12w2i=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 求导:

Lw=wi=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 求导:

Lb=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αi12i=1nj=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

约束:αi0,  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αi12i=1nj=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_iw,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:不可分或有噪声时允许违反间隔

引入松弛变量 ξi0\xi_i \geq 0

minw,b,ξ12w2+Ci=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ξi0\xi_i \geq 0

含义:

  • ξi=0\xi_i = 0:样本在正确间隔外或间隔边界上。
  • 0<ξi<10 < \xi_i < 1:分类正确,但进入间隔内部。
  • ξi1\xi_i \geq 1:样本可能被错分。

CC 控制对违反间隔的惩罚:

  • CC 大:更不愿犯错,更接近 hard margin,间隔可能更窄。
  • CC 小:允许更多违反,间隔更宽,可能泛化更好。

Soft margin 的对偶和 hard margin 很像,只是多了上界:0αiC0 \leq \alpha_i \leq C

7.8 Hinge loss:SVM 的损失函数视角

单样本 hinge loss:hinge(xi,yi)=max(0,1yi(wTxi+b))\ell_{\text{hinge}}(x_i, y_i) = \max(0, 1 - y_i(w^T x_i + b))

Soft margin SVM 可写成:

minw,b12w2+Ci=1nmax(0,1yi(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+2z22=0-z_1 + 2z_2 - 2 = 0

分类函数:g(z)=sign(z1+2z22)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

间隔宽度:2w=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(zm)=0v^T(z - m) = 0,即:

x+2y112=0x + 2y - \tfrac{11}{2} = 0

规范化到支持向量函数间隔为 1。原打分 f~(x,y)=x+2y112\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+45y115f(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+45y115)g(x, y) = \text{sign}(\tfrac{2}{5} x + \tfrac{4}{5} y - \tfrac{11}{5})

等价地也可写:g(x,y)=sign(x+2y112)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(xz22σ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}
  • 半正定性:对任意 aRna \in \mathbb{R}^n

aTKa=i=1nj=1naiajϕ(xi)Tϕ(xj)=i=1naiϕ(xi)20a^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αi12i=1nj=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<01x_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=1nxiμci2J = \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=argmink{1,,K}xiμk2c_i = \arg\min_{k \in \{1,\dots,K\}} \|x_i - \mu_k\|^2

更新步骤:μk=1CkxiCkxi\mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i

9.4 为什么簇中心是均值

固定某个簇 CC,要求 minμxiCxiμ2\min_\mu \sum_{x_i \in C} \|x_i - \mu\|^2。记 F(μ)=xiC(xiμ)T(xiμ)F(\mu) = \sum_{x_i \in C} (x_i - \mu)^T(x_i - \mu)

μ\mu 求梯度:μF(μ)=xiC2(μxi)\nabla_\mu F(\mu) = \sum_{x_i \in C} 2(\mu - x_i)。令梯度为 0:2Cμ2xiCxi=02|C|\mu - 2\sum_{x_i \in C} x_i = 0,所以:

μ=1CxiCxi\mu = \frac{1}{|C|} \sum_{x_i \in C} x_i

这说明更新中心为均值是固定分配时的最优解。

9.5 K-Means 收敛证明

要证明 K-Means 收敛,围绕目标函数 J=i=1nxiμci2J = \sum_{i=1}^{n}\|x_i - \mu_{c_i}\|^2,分两步说明。

第一步,固定中心 μ1,,μK\mu_1, \dots, \mu_K,重新分配每个样本到最近中心。对每个样本 xix_i,新中心距离不大于旧中心距离,因此每一项 xiμci2\|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)}。又因为 J0J \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 是无监督降维方法。

  • 输入:高维样本 xiRdx_i \in \mathbb{R}^d;目标维数 k<dk < d
  • 输出:kk 个主成分方向;每个样本的低维表示 ziRkz_i \in \mathbb{R}^k
  • 含义:用低维线性子空间保留数据主要变化方向。

10.2 PCA 的两种等价目标

PCA 可以理解为:

  1. 最大化投影后的方差。
  2. 最小化投影再重构的平方误差。

保留大方差方向,丢弃小方差方向。若噪声主要分布在小方差方向,PCA 可起到去噪作用。2020 判断题考过"PCA 可以去噪",通常答对。

10.3 PCA 步骤

  1. 数据中心化x~i=xixˉ\tilde{x}_i = x_i - \bar{x},其中 xˉ=1ni=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i
  2. 计算协方差矩阵S=1ni=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(xixˉ)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

有限假设空间的一致学习常见样本复杂度:

m1ε(lnH+ln1δ)m \geq \frac{1}{\varepsilon}\left(\ln |H| + \ln \frac{1}{\delta}\right)

含义:

  • ε\varepsilon 越小,要求越精确,需要更多样本。
  • δ\delta 越小,要求越高置信度,需要更多样本。
  • H|H| 越大,假设空间越复杂,需要更多样本。

SVM 课件提到最大间隔符合直觉和 PAC 理论:间隔越大,分类器越稳定,泛化倾向更好。

12. 神经网络

12.1 任务与输入输出

神经网络是一类函数近似器,可用于分类、回归、序列建模、图像识别等。

  • 输入:原始特征、图像、文本向量或其他张量。
  • 输出由任务决定:二分类(一个概率 P(y=1x)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+ez\sigma(z) = \dfrac{1}{1+e^{-z}},输出在 (0,1)(0,1),但深层网络容易梯度消失。
  • Tanhtanh(z)=ezezez+ez\tanh(z) = \dfrac{e^z - e^{-z}}{e^z + e^{-z}},输出在 (1,1)(-1,1),零中心。
  • ReLUReLU(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)ϕ(L1)(ϕ(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 网络参数个数

若某层输入维度为 d1d_{\ell-1},输出神经元数为 dd_\ell,则:权重数 dd1d_\ell d_{\ell-1};偏置数 dd_\ell;参数总数 dd1+dd_\ell d_{\ell-1} + d_\ell

例如课件中的网络若有 [3×4][3 \times 4][4×2][4 \times 2] 两组权重,权重数为 34+42=203 \cdot 4 + 4 \cdot 2 = 20;若偏置数为 4+2=64 + 2 = 6,总可学习参数为 20+6=2620 + 6 = 26

12.7 损失函数:分类用交叉熵,回归用平方误差

  • 回归常用均方误差:L=yy^2L = \|y - \hat{y}\|^2
  • 多分类常用交叉熵。若 yy 是 one-hot 标签,y^\hat{y} 是 softmax 概率:L=k=1Kyklogy^kL = -\sum_{k=1}^{K} y_k \log \hat{y}_k。若真实类别为 ttL=logy^tL = -\log \hat{y}_t
  • 总损失:C(θ)=i=1nLi(θ)C(\theta) = \sum_{i=1}^{n} L_i(\theta)。训练目标:θ=argminθC(θ)\theta^* = \arg\min_\theta C(\theta)

12.8 反向传播:链式法则的动态规划

反向传播用于高效计算每个参数的梯度。训练流程:

  1. 前向传播:从输入逐层计算输出和损失。
  2. 反向传播:从损失开始,逐层计算误差信号。
  3. 参数更新:沿负梯度方向下降。

对第 \ell 层定义误差信号 δ()=Lz()\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 是逐元素乘法。
  • 参数梯度:LW()=δ()(a(1))T\dfrac{\partial L}{\partial W^{(\ell)}} = \delta^{(\ell)} (a^{(\ell-1)})^TLb()=δ()\dfrac{\partial L}{\partial b^{(\ell)}} = \delta^{(\ell)}
  • 更新:W()W()ηLW()W^{(\ell)} \leftarrow W^{(\ell)} - \eta \dfrac{\partial L}{\partial W^{(\ell)}}b()b()ηLb()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 主要用于图像,也可用于其他网格结构数据。

  • 输入:XRH×W×CinX \in \mathbb{R}^{H \times W \times C_{\text{in}}},其中 HH 是高度,WW 是宽度,CinC_{\text{in}} 是通道数。
  • 卷积层输出:YRH×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=1Cinu=1Fhv=1FwKu,v,ci,coXiS+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+2PFS+1,W=W+2PFS+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+Whht1+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)=kpklog2pkH(S) = -\sum_k p_k \log_2 p_k,其中 pkp_k 是类别 kk 的比例。
  3. 对属性 AA 的每个取值 vv,数出子集 SvS_v 的类别比例并算 H(Sv)H(S_v)
  4. 算加权平均:vSvSH(Sv)\sum_v \dfrac{|S_v|}{|S|} H(S_v)
  5. 信息增益:Gain(S,A)=H(S)vSvSH(Sv)\text{Gain}(S, A) = H(S) - \sum_v \dfrac{|S_v|}{|S|} H(S_v)
  6. 选增益最大的属性。

16.2 最小二乘推导模板

从目标 J(w)=Xwy2J(w) = \|Xw - y\|^2,写成 J(w)=(Xwy)T(Xwy)J(w) = (Xw - y)^T(Xw - y)

求梯度:wJ(w)=2XT(Xwy)\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

  • 加权时把中间都加上 RRw=(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=[ylogp+(1y)log(1p)]L = -[y \log p + (1-y)\log(1-p)]

先写核心:Lz=py\dfrac{\partial L}{\partial z} = p - y。再写:

Lwj=(py)xj,Lb=py\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 = 0wTx+b=1w^T x + b = 1wTx+b=1w^T x + b = -1g(x)=sign(wTx+b)g(x) = \text{sign}(w^T x + b)
  7. 间隔宽度:2w\dfrac{2}{\|w\|}

16.6 核矩阵半正定证明模板

Kij=ϕ(xi)Tϕ(xj)K_{ij} = \phi(x_i)^T \phi(x_j),则对任意 aa

aTKa=ijaiajϕ(xi)Tϕ(xj)=iaiϕ(xi)20a^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)vSvSH(Sv)\text{Gain}(S, A) = H(S) - \sum_v \dfrac{|S_v|}{|S|} H(S_v)
  • kNN:y^=majority{yi:xiNk(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=[ylogp+(1y)log(1p)]L = -[y \log p + (1-y)\log(1-p)]wL=(py)x\nabla_w L = (p - y)x
  • SVM:minw,b12w2\min_{w,b} \tfrac{1}{2}\|w\|^2yi(wTxi+b)1y_i(w^T x_i + b) \geq 1,margin width =2w= \tfrac{2}{\|w\|}hinge=max(0,1yif(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=argminkxiμk2c_i = \arg\min_k \|x_i - \mu_k\|^2μk=1CkxiCkxi\mu_k = \tfrac{1}{|C_k|} \sum_{x_i \in C_k} x_i
  • PCA:Suj=λjujS u_j = \lambda_j u_jzi=UkT(xixˉ)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=[x1x2xd]Rdx = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_d \end{bmatrix} \in \mathbb{R}^d

若有 nn 个样本、每个样本 dd 个特征,机器学习里常把数据矩阵写成:

X=[x1Tx2TxnT]Rn×dX = \begin{bmatrix} x_1^T \\ x_2^T \\ \vdots \\ x_n^T \end{bmatrix} \in \mathbb{R}^{n \times d}

其中第 iixiTx_i^T 是第 ii 个样本。

维度检查是防止公式写错的最快方法。若 XRn×dX \in \mathbb{R}^{n \times d},则 wRdw \in \mathbb{R}^dXwRnXw \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=wxcosθw^T x = \|w\| \|x\| \cos\theta,其中 θ\theta 是两个向量夹角。若 wTx=0w^T x = 0,则两个向量正交,也就是方向垂直。

4. 范数和距离

向量的 L2 范数:

x2=xTx=j=1dxj2\|x\|_2 = \sqrt{x^T x} = \sqrt{\sum_{j=1}^{d} x_j^2}

若上下文没有特别说明,x\|x\| 通常指 L2 范数。两个点的欧氏距离:

xz2=j=1d(xjzj)2\|x - z\|_2 = \sqrt{\sum_{j=1}^{d} (x_j - z_j)^2}

kNN 和 K-Means 里经常用平方距离:xz22=(xz)T(xz)\|x - z\|_2^2 = (x - z)^T(x - z)。平方距离省去了开方,最小化时和原距离等价,因为开方函数单调递增。

L1 范数:x1=j=1dxj\|x\|_1 = \sum_{j=1}^{d} |x_j|。机器学习里 L1 正则常产生稀疏权重,L2 正则常让权重整体变小。

5. 矩阵乘法

ARm×nA \in \mathbb{R}^{m \times n}BRn×pB \in \mathbb{R}^{n \times p},则 ABRm×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=[x1Twx2TwxnTw]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

逆矩阵 A1A^{-1} 满足 A1A=AA1=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)=(yXw)TR(yXw)J(w) = (y - Xw)^T R (y - Xw)

若记误差向量 e=yXwe = 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+bw\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 = Ixx 投影到这些方向张成的子空间中,低维坐标为 z=UTxz = U^T x,重构为 x^=Uz\hat{x} = Uz

PCA 中 zi=UkT(xixˉ)z_i = U_k^T (x_i - \bar{x}),就是把中心化后的样本投影到前 kk 个主成分方向上。

10. 二次型和半正定

SVM 核矩阵会用到

形如下面的表达式叫二次型:xTAxx^T A x。如果对任意 xx 都有 xTAx0x^T A x \geq 0,则称 AA 是半正定矩阵,记为 A0A \succeq 0

最简单例子:xTIx=xTx=x20x^T I x = x^T x = \|x\|^2 \geq 0。核矩阵半正定的关键证明就是把二次型写成一个范数平方:

aTKa=i=1naiϕ(xi)20a^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=xixˉ\tilde{x}_i = x_i - \bar{x},协方差矩阵:

S=1ni=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 Jww 形状相同。常用结论:

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

最小二乘最常用公式:

wXwy2=2XT(Xwy)\frac{\partial}{\partial w} \|Xw - y\|^2 = 2X^T(Xw - y)

加权最小二乘中,若 R=RTR = R^T

w(yXw)TR(yXw)=2XTR(yXw)\frac{\partial}{\partial w}(y - Xw)^T R (y - Xw) = -2X^T R (y - Xw)

逻辑回归中常用链式法则:

Lwj=Lzzwj\frac{\partial L}{\partial w_j} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial w_j}

因为 z=wTx+bz = w^T x + bzwj=xj\frac{\partial z}{\partial w_j} = x_j,所以只要先求出 Lz=py\frac{\partial L}{\partial z} = p - y,就得到 Lwj=(py)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},则 ab=[a1b1a2b2]a \odot b = \begin{bmatrix} a_1 b_1 \\ a_2 b_2 \end{bmatrix}。它要求两个向量形状相同。

15. 机器学习中最常见的维度检查

  • 线性回归:XRn×dX \in \mathbb{R}^{n \times d}wRdw \in \mathbb{R}^dyRny \in \mathbb{R}^nXwyRnXw - y \in \mathbb{R}^nXT(Xwy)RdX^T(Xw - y) \in \mathbb{R}^d,所以梯度和 ww 同维。
  • 多分类线性模型:XRn×dX \in \mathbb{R}^{n \times d}WRd×kW \in \mathbb{R}^{d \times k}YRn×kY \in \mathbb{R}^{n \times k}XWRn×kXW \in \mathbb{R}^{n \times k}
  • 神经网络单层:a(1)Rd1a^{(\ell-1)} \in \mathbb{R}^{d_{\ell-1}}W()Rd×d1W^{(\ell)} \in \mathbb{R}^{d_\ell \times d_{\ell-1}}b()Rdb^{(\ell)} \in \mathbb{R}^{d_\ell},则 z()=W()a(1)+b()Rdz^{(\ell)} = W^{(\ell)} a^{(\ell-1)} + b^{(\ell)} \in \mathbb{R}^{d_\ell}

16. 看到公式不会时的快速拆解法

  1. 第一步,看形状。 先给每个量标维度,确认乘法是否合法。
  2. 第二步,看含义。 比如 XwXw 是所有样本预测,XwyXw - y 是所有误差,Xwy2\|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:PAf:P^{*}\to A;agent = architecture + program ⭐⭐⭐
PAC 学习 理论 近似正确(R(h)ϵR(h)\le\epsilon) + 可能正确(P1δ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=最大深度,CC^*=最优解代价,ϵ\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)=maxihi(n)h(n)=\max_i h_i(n) 仍可采纳且占优
  • IDS 时间:db+(d1)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;c34.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+clnt/na\hat{\mu}_a+c\sqrt{\ln t/n_a};Hoeffding 推导 ⭐⭐⭐
探索-利用 权衡 ε-贪心/乐观初值/UCB ⭐⭐⭐
MCTS 四步 算法 Selection/Expansion/Simulation/Backprop ⭐⭐⭐
UCT 公式 公式 Q(a)+clnN(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 不确定性与贝叶斯网络】

公式与算法速查表

名称 公式 / 要点
概率公理 0P(A)10\le P(A)\le1P(true)=1P(\text{true})=1P(AB)=P(A)+P(B)P(AB)P(A\vee B)=P(A)+P(B)-P(A\wedge B)
条件概率 P(ab)=P(ab)/P(b)P(a\mid b)=P(a\wedge b)/P(b)
乘法规则 P(ab)=P(ab)P(b)=P(ba)P(a)P(a\wedge b)=P(a\mid b)P(b)=P(b\mid a)P(a)
链式法则 P(X1,,Xn)=iP(XiX1,,Xi1)P(X_1,\dots,X_n)=\prod_i P(X_i\mid X_1,\dots,X_{i-1})
全概率公式 P(a)=bP(ab)P(b)P(a)=\sum_b P(a\mid b)P(b)
边缘独立 XY    P(X,Y)=P(X)P(Y)X\perp Y\iff P(X,Y)=P(X)P(Y)
条件独立 XYZ    P(X,YZ)=P(XZ)P(YZ)X\perp Y\mid Z\iff P(X,Y\mid Z)=P(X\mid Z)P(Y\mid Z)
贝叶斯规则 P(YX)=αP(XY)P(Y)P(Y\mid X)=\alpha\,P(X\mid Y)P(Y)
归一化查询 P(YE=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(xiparents(Xi))P(x_1,\dots,x_n)=\prod_i P(x_i\mid\text{parents}(X_i))
紧致性 O(n2k)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,YXYZX,Y\Rightarrow X\perp Y\mid Z
马尔可夫边界 mb(X)=mb(X)= 父 + 子 + 子的配偶;给定 mb(X)mb(X)XX\perp 其余
Enumeration-Ask P(Bj,m)=αP(B)eP(e)aP(aB,e)P(ja)P(ma)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=ejParents(Ej))w=\prod_j P(E_j=e_j\mid\text{Parents}(E_j))
Gibbs 抽样分布 P(XDi1X)=P(Xmb(X)Di1)P(X\mid D_{i-1}\setminus X)=P(X\mid mb(X)_{D_{i-1}})
朴素贝叶斯 P(CE1,,En)=αP(C)iP(EiC)P(C\mid E_1,\dots,E_n)=\alpha P(C)\prod_i P(E_i\mid C)
MAP h=argmaxhP(H=hE=e)h^*=\arg\max_h P(H=h\mid E=e)
MPE argmax所有非证据变量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)=1m1[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)+logH+log(2/δ)2mR(h)\le\widehat R_S(h)+\sqrt{\tfrac{\log\lvert H\rvert+\log(2/\delta)}{2m}}
信息熵 / 信息增益 H(Y)=plog2pH(Y)=-\sum p\log_2 pIG=H(Y)H(YX)IG=H(Y)-H(Y\mid X)
信息增益率 (C4.5) IGratio=IG/HX(Y)IG_{\text{ratio}}=IG/H_X(Y)
基尼指数 (CART) Gini=1pi2\text{Gini}=1-\sum p_i^2
正规方程 w=(XX)1Xyw^*=(X^\top X)^{-1}X^\top y
Sigmoid σ(x)=1/(1+ex)\sigma(x)=1/(1+e^{-x})σ=σ(1σ)\sigma'=\sigma(1-\sigma)
交叉熵损失 E=[ylny^+(1y)ln(1y^)]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 正则 λw22\lambda\lVert w\rVert_2^2 / λw1\lambda\lvert w\rvert_1
SVM 原始 min12w2\min\tfrac12\lVert w\rVert^2 s.t. yi(wxi+b)1y_i(w^\top x_i+b)\ge1
SVM 对偶 maxαi12α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,1y(wx+b))\max(0,1-y(w^\top x+b))
高斯核 exp(xixj2/σ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=Pxy=P^\top x;重构 x^=PPx\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=ftct1+itc~tc_t=f_t\odot c_{t-1}+i_t\odot\tilde c_tht=ottanh(ct)h_t=o_t\odot\tanh(c_t)

算法速查(步骤)

  • ID3 / GrowTree:纯则叶 → 否则选最大 IG 属性分裂 → 递归。
  • KNN:存训练样本 → 算距离 → kk 最近多数投票。
  • 最小二乘:构造 XX → 解正规方程 w=(XX)1Xyw^*=(X^\top X)^{-1}X^\top y
  • Logistic 回归 SGDwwη(σ(wx+b)y)xw\leftarrow w-\eta(\sigma(w^\top x+b)-y)x
  • K-means:初始化 kk 中心 → {分配到最近中心 / 中心取簇均值} → 收敛。
  • PCA:中心化 → 协方差矩阵 S=1nXXS=\tfrac1n XX^\top → 特征分解取前 mm 特征向量 → 投影 PxP^\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 更新。