Ch1-2 绪论与智能体 (Introduction & Intelligent Agents)
课件:lec1_intro.pdf (62 页) + lec2.pdf (45 页)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig), Ch1 & Ch2
教师:吉建民,USTC
0. 本章概述
本章是整门课的起点,由"绪论"与"智能体"两节合并。绪论回答"AI 是什么、从哪来、到哪去";智能体给出贯穿全书的统一框架——理性智能体 (Rational Agent) 。后续所有主题(搜索、逻辑、不确定性、学习)都可视为不同类型智能体的能力。
子主题
核心内容
重要程度
AI 的四种定义思路
像人行动/像人思考/理性思考/理性行动;图灵测试
⭐⭐⭐
理性智能体框架
agent = architecture + program;f: P*→A
⭐⭐⭐
机器学习为何可能
PAC 学习、Hoeffding 不等式、奥卡姆剃刀
⭐⭐⭐
理性 (Rationality)
性能度量;理性 ≠ 全知 ≠ 必然成功
⭐⭐⭐
PEAS 描述
Performance / Environment / Actuators / Sensors
⭐⭐⭐
环境类型(6 维度)
可观测性/确定性/片段性/静态/离散/单多智能体
⭐⭐⭐
智能体类型
反射 / 有状态 / 目标驱动 / 效用驱动 / 学习
⭐⭐⭐
Agentic AI(现代)
ReAct 范式、OpenClaw、LLM 驱动的智能体
⭐⭐
AI 发展简史与现状
达特茅斯会议、两次寒冬、深度学习、大模型、具身智能
⭐⭐
第一部分:人工智能绪论 (lec1)
1.1 课程概览
教材与考核
主教材 :Artificial Intelligence: A Modern Approach (3rd Edition),S. Russell & P. Norvig(中译《人工智能——一种现代方法》)
参考书 :机器学习(周志华,2016)、《动手学深度学习》(第二版)
学期总评 = 期末考试 (60%) + 书面作业 (15%) + 实验部分 (25%)
课程六大模块
部分
主题
教材章节
一
人工智能概述 / Introduction and Agents
Ch 1, 2
二
问题求解 / Search(搜索、有信息搜索、CSP、博弈规划)
Ch 3–6
三
知识、推理与规划 / Logic, Knowledge, Reasoning, Planning
Ch 7–12
四
不确定知识与推理 / Uncertainty and Decision Making(贝叶斯网、MDP、POMDP、随机博弈)
Ch 13–17
五
学习 / Learning(ML、DL、RL)
Ch 18–21
六
应用 / NLP, Perception, Robotics
Ch 22–25
课程定位
广义"人工智能"含搜索、知识表示与推理、规划、MDP、贝叶斯网等经典工作;当下大众语境中的"AI"多指机器学习/深度学习/大模型。
本课定位:面向计算机专业,熟练掌握 IT 工程师应具备的 AI 基础技术;同时作为索引 介绍 ML/NN/大模型等新方向,仅要求了解 。
进阶建议:系统入门 DL → 自学"动手学深度学习"(李沐,d2l.ai );精深 → 选定 CV/NLP/多模态等具体领域,从综述读起、动手实现;成专家 → 加入实验室做前沿研究。
1.2 什么是 AI?—— 四种定义思路
教材主张:“理性地行动 (acting rationally)” 。
四种思路的二维划分(按"像人/理性" × “思考/行动”):
像人 (Humanly)
理性 (Rationally)
思考
认知科学 (Cognitive Science)
思维法则 (Laws of Thought)
行动
图灵测试 (Turing Test)
理性智能体 (Rational Agent) ✅
① 像人一样行动 (Acting Humanly):图灵测试
Turing (1950) “Computing Machinery and Intelligence”:将"机器能否思考?“转化为"机器能否表现出智能行为?”
模仿游戏 (Imitation Game) :人类裁判通过问答区分机器与真人。
预言:到 2000 年,机器可能有 30% 概率骗过普通人 5 分钟;并预见了此后 50 年反对 AI 的主要论点。
暗示 AI 的核心组成部分:知识 (knowledge)、推理 (reasoning)、语言理解 (language understanding)、学习 (learning) 。
⚠️ 缺点:不可复现、非构造性、难以做数学分析。
② 像人一样思考 (Thinking Humanly):认知科学
1960s"认知革命":信息加工心理学取代行为主义。
需要关于大脑内部活动的科学理论,涉及抽象层次(“知识"还是"电路”?)与验证方式(自上而下预测行为 / 自下而上神经数据)。
现已与 AI 分离:发展为认知科学 (Cognitive Science) 与认知神经科学 (Cognitive Neuroscience)。
③ 理性地思考 (Thinking Rationally):思维法则
规范性 (normative / prescriptive) 而非描述性。
源于亚里士多德:什么是正确的论证/思维过程?古希腊各学派发展出各种逻辑 (思想的符号化与推导规则)。
经数学、哲学一脉相承到现代 AI。
⚠️ 问题:
并非所有智能行为都由逻辑深思熟虑驱动;
"思考的目的是什么?该有什么想法?"难以回答;
逻辑系统在不确定性 下常做错事(部分学者认同此点,部分不认同)。
④ 理性地行动 (Acting Rationally) ← 教材采用
理性行为 (rational behavior) = 做正确的事 :在给定可得信息下,期望最大化目标达成。
不一定需要思考(如眨眼反射);但思考应服务于理性行动。
引亚里士多德《尼各马可伦理学》(Nicomachean Ethics):“一切技艺与探索、一切行动与追求,都被认为指向某种善。”
关键区分:
理性 ≠ 成功 (rational ≠ successful)
不理性 ≠ 疯狂 (irrationality = 次优行动,而非 insane)
完全依赖目标 (goals)
现实世界充满不确定性与复杂性,通常只是近似理性 。
1.3 理性智能体 (Rational Agents)
⭐ 这是贯穿全书的统一定义:
智能体 (agent) 是能够感知 (perceive) 和行动 (act) 的实体。
本课核心:设计理性智能体 。
抽象地,智能体是一个从感知历史到行动的函数:
f : P ∗ → A f : P^{*} \to A
f : P ∗ → A
(P ∗ P^{*} P ∗ 为所有可能的感知序列,A A A 为动作集)
对给定环境类与任务类,寻找性能最优的智能体(类)。
⚠️ 注意:计算资源有限使完美理性不可达 → 实际目标是"为给定机器资源设计最好的程序"。
学习与具身案例:自动驾驶架构在 2020 年前后从"分模块流水线"转向"端到端"。
1.4 机器学习:表示 + 评价 + 优化
机器学习 ≈ 拟合一个函数 。
学习 = 表示 + 评价 + 优化 :
表示 (Representation) :确定假设空间 (hypothesis space) H \mathcal{H} H 。
评价 (Evaluation) :用评价函数(目标函数/打分函数)判断优劣。
优化 (Optimization) :用搜索方法在假设空间中找到评价函数得分最高的函数。
1.4.1 误差定义
设假设 h ∈ H h \in \mathcal{H} h ∈ H ,目标概念 c ∈ C c \in \mathcal{C} c ∈ C ,分布 D \mathcal{D} D ,样本集 S = ( x 1 , … , x m ) S=(x_1,\dots,x_m) S = ( x 1 , … , x m ) :
泛化误差 (generalization error) :
R ( h ) = Pr x ∼ D [ h ( x ) ≠ c ( x ) ] R(h) = \Pr_{x \sim \mathcal{D}}[h(x) \neq c(x)]
R ( h ) = x ∼ D Pr [ h ( x ) = c ( x ) ]
R ^ S ( h ) = 1 m ∑ i = 1 m 1 [ h ( x i ) ≠ c ( x i ) ] \hat{R}_S(h) = \frac{1}{m}\sum_{i=1}^{m}\mathbb{1}[h(x_i) \neq c(x_i)]
R ^ S ( h ) = m 1 i = 1 ∑ m 1 [ h ( x i ) = c ( x i ) ]
两者关系:因为 S S S 由 D \mathcal{D} D 独立同分布产生,
E S ∼ D m [ R ^ S ( h ) ] = R ( h ) \mathbb{E}_{S\sim\mathcal{D}^m}\big[\hat{R}_S(h)\big] = R(h)
E S ∼ D m [ R ^ S ( h ) ] = R ( h )
(经验误差是泛化误差的无偏估计)
1.4.2 PAC 学习(“机器学习为什么可能”)
"好的假设"需同时满足两个 PAC 辨识条件 :
近似正确 (Approximately Correct) :泛化误差足够小,即 R ( h ) ≤ ϵ R(h) \le \epsilon R ( h ) ≤ ϵ 。
可能正确 (Probably Correct) :以大概率近似正确,即 P ( R ( h ) ≤ ϵ ) ≥ 1 − δ P(R(h)\le\epsilon)\ge 1-\delta P ( R ( h ) ≤ ϵ ) ≥ 1 − δ 。
且所需样本数是关于 1 / ϵ , 1 / δ , n , size ( c ) 1/\epsilon,\,1/\delta,\,n,\,\text{size}(c) 1 / ϵ , 1 / δ , n , size ( c ) 的多项式函数 。
⭐ PAC 可学 (PAC-Learnable) 定义 :概念类 C \mathcal{C} C 称为 PAC 可学,若存在算法 A A A 和多项式 poly ( ⋅ ) \text{poly}(\cdot) poly ( ⋅ ) ,使得对任意 ϵ > 0 , δ > 0 \epsilon>0,\delta>0 ϵ > 0 , δ > 0 、任意分布 D \mathcal{D} D (实例长度 n n n )、任意目标概念 c ∈ C c\in\mathcal{C} c ∈ C ,当样本量
m ≥ poly ( 1 / ϵ , 1 / δ , n , size ( c ) ) m \ge \text{poly}\!\left(1/\epsilon,\,1/\delta,\,n,\,\text{size}(c)\right)
m ≥ poly ( 1 / ϵ , 1 / δ , n , size ( c ) )
有 P S ∼ D m [ R ( h S ) ≤ ϵ ] ≥ 1 − δ P_{S\sim\mathcal{D}^m}\!\left[R(h_S)\le\epsilon\right]\ge 1-\delta P S ∼ D m [ R ( h S ) ≤ ϵ ] ≥ 1 − δ 。若 A A A 运行时间也是多项式,则称高效 PAC 可学 ,A A A 为 C \mathcal{C} C 的 PAC 学习算法。
1.4.3 独立同分布 (i.i.d.)
X 1 , … , X n X_1,\dots,X_n X 1 , … , X n 独立同分布当且仅当:
独立性 :任意有限个 X i 1 , … , X i k X_{i_1},\dots,X_{i_k} X i 1 , … , X i k 的联合分布 = 各自边缘分布之积;即每个变量的取值不受其他变量影响。
同分布性 :所有变量服从相同分布。
⚠️ i.i.d. 是理想化假设,实际数据常违反(如时间序列自相关、空间聚类效应),需用时序分析、混合模型,或数据预处理(随机打乱)逼近。
1.4.4 Hoeffding 不等式
定理 (Wassily Hoeffding, 1963):设 X 1 , … , X m X_1,\dots,X_m X 1 , … , X m i.i.d.,X i ∈ [ a i , b i ] X_i\in[a_i,b_i] X i ∈ [ a i , b i ] ,对任意 ϵ > 0 \epsilon>0 ϵ > 0 :
P ( 1 m ∑ i = 1 m X i − 1 m ∑ i = 1 m E ( X i ) ≥ ϵ ) ≤ 2 exp ( − 2 m 2 ϵ 2 ∑ i = 1 m ( b i − a i ) 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)
P ( m 1 i = 1 ∑ m X i − m 1 i = 1 ∑ m E ( X i ) ≥ ϵ ) ≤ 2 exp ( ∑ i = 1 m ( b i − a i ) 2 − 2 m 2 ϵ 2 )
直觉:取值范围有界的独立变量,随样本量增加,其均值越来越集中于期望附近;上界随 m m m 指数级下降 。
特例 X i ∈ [ 0 , 1 ] X_i\in[0,1] X i ∈ [ 0 , 1 ] :P ( ⋅ ) ≤ 2 e − 2 m ϵ 2 P(\cdot)\le 2e^{-2m\epsilon^2} P ( ⋅ ) ≤ 2 e − 2 m ϵ 2 。
1.4.5 经验误差与泛化误差的关系
由 E ( R ^ S ( h ) ) = R ( h ) \mathbb{E}(\hat{R}_S(h))=R(h) E ( R ^ S ( h ) ) = R ( h ) 代入 Hoeffding([ 0 , 1 ] [0,1] [ 0 , 1 ] 情形):
P S ∼ D m [ R ^ S ( h ) − R ( h ) ≥ ϵ ] ≤ 2 e − 2 m ϵ 2 P_{S\sim\mathcal{D}^m}\!\left[\hat{R}_S(h)-R(h)\ge\epsilon\right]\le 2e^{-2m\epsilon^2}
P S ∼ D m [ R ^ S ( h ) − R ( h ) ≥ ϵ ] ≤ 2 e − 2 m ϵ 2
令 δ = 2 e − 2 m ϵ 2 \delta = 2e^{-2m\epsilon^2} δ = 2 e − 2 m ϵ 2 ,则对固定假设 h : X → { 0 , 1 } h:\mathcal{X}\to\{0,1\} h : X → { 0 , 1 } ,以至少 1 − δ 1-\delta 1 − δ 的概率 成立:
R ( h ) ≤ R ^ S ( h ) + log ( 2 / δ ) 2 m \boxed{\,R(h)\le \hat{R}_S(h) + \sqrt{\dfrac{\log(2/\delta)}{2m}}\,}
R ( h ) ≤ R ^ S ( h ) + 2 m log ( 2 / δ )
1.4.6 奥卡姆剃刀 (Occam’s Razor)
对有限假设集 H \mathcal{H} H :
R ( h ) ≤ R ^ S ( h ) + O ( log 2 ∣ H ∣ m ) R(h) \le \hat{R}_S(h) + O\!\left(\sqrt{\dfrac{\log_2|\mathcal{H}|}{m}}\right)
R ( h ) ≤ R ^ S ( h ) + O ( m log 2 ∣ H ∣ )
固定 ∣ H ∣ |\mathcal{H}| ∣ 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},\, π 0 ∗ , π 0 . 5 , π 0 . 6 , Motus 等 VLA 模型在非结构化环境中泛化能力显著提升;突破单一抓取,联合离散任务与连续运动规划,走向长程复杂操作。
Agentic AI(自主智能体) :AI 从"对话框顾问"进化为"系统级执行者",代表如 OpenClaw 接管终端,赋能跨应用、跨任务的自动化。
1.8 典型 AI 应用与里程碑模型
应用一:感知、决策与物理交互
智能交通与低空经济 :自动驾驶(Tesla FSD v13 端到端纯视觉、华为乾崑 ADS 4.0 无图智驾城市泛化、Waymo 全无人 Robotaxi 商业运营);无人机感知与控制(大疆行业级多模态巡检大模型、软体机械臂空中作业平台)。
具身智能与机器人 :人形机器人(Tesla Optimus、Figure 02、宇树、智元);家庭/服务机器人(斯坦福 Mobile ALOHA 炒菜/家务、RoboCup@Home);四足机器人(宇树 Go2/B2)。
计算机视觉与安防 :身份识别(苹果 Face ID 3D 活体检测、商汤智慧城市);工业质检(百度智能云开物 3C 电子微米级缺陷检测);医疗影像(腾讯觅影食管癌/肺结节、联影智能 uAI)。
应用二:生成、助理与科学前沿
生产力与代码生成 :AI 编程(Cursor IDE 集成 Claude/o3、GitHub Copilot、DeepSeek Coder);办公智能(微软 Copilot for Microsoft 365、钉钉 AI 助理)。
内容生成与大模型对话 (AIGC & LLMs) :文本/推理(ChatGPT GPT-4o/o3、Gemini 3.1、DeepSeek R1、豆包);图像/视频(Sora、Veo、字节 Seedance 2.0);音乐/音频(Suno v4、Udio)。
智能体与科学计算 :个人助理/终端 Agent(Apple Intelligence、OpenClaw);气象/物流(华为盘古气象大模型精度超传统数值预报、京东地狼 AGV 调度);生命科学(DeepMind AlphaFold 3 高精度预测蛋白质结构,加速靶点制药与抗体设计)。
里程碑模型速查
模型
要点
ChatGPT
OpenAI 2022 年 11 月发布;GPT-3 为 175B 参数 LLM;ChatGPT 在 GPT-3.5 上用监督学习 + 强化学习 微调
AlphaGo
以 4:1 击败李世石,机器首次在围棋战胜人类顶尖高手;AlphaGo Zero 从 0 学起,不到 3 天以 100:0 完胜 AlphaGo
Tesla Optimus
人形机器人:28 自由度,共享汽车零部件供应链;软件 = FSD 自动驾驶 + Dojo 大脑,共享算法与数据
Open X-Embodiment
机器人界的"ImageNet 时刻"
Sora
OpenAI,由文本指令生成逼真且富有想象力的场景
DeepSeek R1
在 AIME 2024、MATH-500、Codeforces 表现媲美/超越 OpenAI-o1-1217;Codeforces 得分 2441(高于 96.3% 人类);总训练成本仅 557.6 万美元(约 O1 的几十分之一);成功蒸馏 出 32B/70B 等小型推理模型,Distill-Qwen-7B 在 AIME 2024 超过 QwQ-32B-Preview
OpenClaw
现象级开源自主 AI 智能体;开发者 Peter Steinberger 于 2025 年底发布(原名 Clawdbot/Moltbot),2026 年初定名 OpenClaw;自身不含大模型 ,作为调度中心接入 SOTA 模型(Claude/Gemini/OpenAI/本地模型)作"大脑";通过 Telegram/WhatsApp/Discord 等通讯软件交互;具备系统操作权限、长期记忆与主动性;同时引发数据隐私与恶意指令劫持的安全担忧
AlphaFold 3
高精度蛋白质结构预测
课后练习:对比 DeepSeek/ChatGPT/Gemini/豆包/Kimi/千问/星火等大模型;利用大模型协助编程解题;调研试用 OpenClaw。
第二部分:智能体 (lec2)
2.1 智能体与环境
⭐ 智能体 (agent) 是任何能被视作通过传感器 (sensors) 感知环境、通过执行器 (actuators) 作用于环境 的事物。
例:
人类智能体 :传感器 = 眼、耳及其他器官;执行器 = 手、腿、嘴等身体部位。
机器人智能体 :传感器 = 摄像头、红外测距仪;执行器 = 各类电机。
其他例子:软件机器人 (softbots)、自动调温器 (thermostats) 等。
智能体函数与程序
智能体函数 (agent function) :从感知历史到行动的映射 f : P ∗ → A f:P^{*}\to A f : P ∗ → A ,完全定义 了智能体。
智能体程序 (agent program) 在物理架构上运行以实现 f f f 。
⭐ 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 = P erformance measure(性能度量)、E nvironment(环境)、A ctuators(执行器)、S ensors(传感器)。用于刻画一个任务环境。
示例一:自动驾驶出租车 (automated taxi)
维度
内容
Performance
safety(安全)、destination(到达)、profits(收益)、legality(合法)、comfort(舒适)
Environment
街道/高速、交通、行人、天气
Actuators
方向盘、油门、刹车、喇叭、扬声器/显示屏
Sensors
视频、加速度计、仪表、发动机传感器、键盘、GPS
维度
内容
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)
Thought(思考) :LLM 接收自然语言指令,评估当前系统状态并决定下一步操作的逻辑。
Action(行动) :LLM 输出结构化的工具调用指令 (如 JSON 格式的 search_files 工具),本地实际执行。
Observation(观察) :将本地执行结果(文件路径或文本截取)反馈给 LLM。
Loop(循环) :重复"思考 → 行动 → 观察",直到自我验证目标已完成。
OpenClaw 架构细节
定位 :开源自主系统操作智能体框架,将 LLM 的逻辑推理能力与 OS 级执行权限深度集成的闭环系统;实现"云端大脑 (LLM) + 本地手脚 (执行沙箱) "的物理与逻辑解耦。
OS 级深度集成 :运行在宿主机后台(终端或常驻进程),可直接挂载文件系统、终端 (CLI) 和网络栈作为"物理环境"。
多模态交互界面 :无缝嵌入 Slack/Telegram/命令行等,把 Agent 转化为"数字共事者 (Digital Coworker)"。
扩展的 ReAct 状态机 :
状态感知与思考:LLM 评估上下文 (Context),进行目标拆解 (Task Decomposition) ;
结构化行动:必须输出严格符合 JSON Schema 签名的函数调用 (Function Calling),框架捕获并映射到本地脚本/命令;
客观反馈注入:捕获 stdout/stderr 作为新观测拼入上下文,触发下一轮推理。
动作空间 (Action Space) 决定能力边界:
文件与系统工具:read_file、write_to_file、grep_search 等;
浏览器自动化:集成 Playwright/Puppeteer,将 DOM 树转为无障碍树 (A11y Tree) 实现精准点击/输入/抓取;
动态技能扩展 :支持用户自行编写 Python 函数注册新技能,运行时动态调用甚至自我编写脚本解决长尾需求。
系统记忆管理与个性化对齐
为避免每次启动成为"白板 (Blank Slate)",引入持久化双轨记忆系统 :
静态系统级提示词 :IDENTITY.md(行为准则与响应风格)、USER.md(用户偏好、操作系统类型、工作流习惯)。
动态情景记忆 :本地**向量数据库(如 ChromaDB)**记录历史交互轨迹;面临相似任务时通过 RAG 召回过去成功路径或纠错经验,降低 Token 消耗、提高规划成功率。
部署挑战
边缘计算与本地推理 :高频思考-行动循环带来巨大延迟与 API 成本 → 将小参数模型(如 7B/8B)本地量化部署 。
安全边界与人在回路 (Human-in-the-loop, HITL) :
沙箱隔离 :执行环境限制在 Docker 容器或特定 VM 挂载目录,防误删核心文件;
权限拦截 :对不可逆高危操作(如 rm -rf、数据库 DROP、对外发邮件)强制挂起,等待人类明确授权。
⭐ Agentic AI 前沿挑战
挑战
说明
幻觉与误差累积 (Hallucination & Error Propagation)
多步规划中早期幻觉(如调用不存在的 API)会导致后续全部偏离目标,甚至死循环
安全与权限边界 (Security & Alignment)
赋予真实系统操作权限风险极大;提示词注入攻击 (Prompt Injection) 可让恶意网页隐藏指令"劫持"正在浏览的 Agent 越权破坏
环境动态性与部分可观测性
数字环境随时变化(UI 更新、网络延迟),要求强错误恢复 (Error Recovery) 与动态重规划 (Re-planning) 能力
📋 本章速览补充 :以下内容节选自《人工智能大抄》,是该章核心知识点的浓缩版,置于章末便于快速回顾。
2 智能体
0. AI 定义与理性智能体
0.1. AI 的四种定义视角
教材常把 AI 定义分成四类:
维度
像人一样 (…humanly)
理性地 (…rationally)
思考
Thinking humanly
Thinking rationally
行动
Acting humanly
Acting rationally
本课更偏向:理性智能体 (rational agent) ,即在给定感知和知识下,选择期望性能最好的行动。
0.2. 图灵测试
图灵测试关注机器是否能表现出与人类不可区分的智能行为。需要能力:
自然语言处理。
知识表示。
自动推理。
机器学习。
若是 Total Turing Test,还包括感知和机器人行动。
0.3. 理性智能体
理性不等于全知。理性智能体根据:
当前感知序列。
已有知识。
可执行行动。
性能度量。
选择能最大化期望性能的行动。
1. 智能体基础
1.1. 智能体定义
智能体通过传感器感知环境,通过执行器作用于环境。
1 agent = sensors + actuators + agent program
智能体函数:f : percept sequence → action f: \text{percept sequence} \to \text{action} f : percept sequence → action 。注意输入是感知序列 ,不只是当前感知。
1.2. 理性智能体
理性智能体对每个可能感知序列,选择能最大化期望性能度量的行动。理性取决于:
性能度量。
先验知识。
可执行行动。
当前感知序列。
理性不等于:全知;永远成功;事后看最优。
1.3. PEAS
PEAS 用于描述任务环境:
P Performance measure:性能度量。
E Environment:环境。
A Actuators:执行器。
S Sensors:传感器。
例:自动驾驶出租车
P:安全、准时、舒适、盈利、守法。
E:道路、行人、车辆、交通灯、天气。
A:方向盘、油门、刹车、喇叭、显示屏。
S:摄像头、雷达、GPS、速度计、麦克风。
2. 环境与智能体类型
2.1. 环境类型
完全可观测 :传感器能获得决策所需全部状态。
部分可观测 :有隐藏状态或传感器噪声。
单智能体 :只需考虑自身行动。
多智能体 :其他智能体也会行动,可能合作或竞争。
确定性 :当前状态和行动完全决定下一状态。
随机性 :结果有概率分布。
片段式 (episodic) :每次决策互不影响。
序贯式 (sequential) :当前行动影响未来。
静态 :智能体思考时环境不变。
动态 :环境会变化。
半动态 (semidynamic) :环境不变但性能随时间变化,如限时考试。
离散 :状态、时间、行动有限或可数。
连续 :变量连续,如自动驾驶位置和速度。
已知 :智能体知道行动结果模型。
未知 :需要学习模型。
2.2. 智能体类型
2.2.1. 简单反射智能体
基于当前感知选择行动:if condition then action。适用于完全可观测环境。缺点:没有记忆。
2.2.2. 基于模型的反射智能体
维护内部状态:internal state = update(previous state, action, percept)。适用于部分可观测环境。
2.2.3. 基于目标的智能体
使用目标信息选择行动,常需要搜索/规划。例:目标 = 到达 Bucharest。
2.2.4. 基于效用的智能体
不只判断是否达成目标,还比较不同结果好坏。最大化期望效用:arg max a E [ U ( Result ( a ) ) ] \arg\max_a E[U(\text{Result}(a))] arg max a E [ U ( 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。
理性 = 在给定信息下最大化期望性能。
环境分类:可观测/确定/片段/静态/离散/单智能体/已知。
智能体类型:简单反射、模型反射、目标、效用、学习。
课件: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 , b d , b m b,\ b^d,\ b^m b , b d , b m ;IDS 为何是首选
⭐⭐⭐
有信息搜索框架
Best-first search;评价函数 f ( n ) f(n) f ( n ) ;启发式 h ( n ) h(n) h ( n )
⭐⭐⭐
贪心最佳优先 (Greedy best-first)
f = h f=h f = h ;不完备、非最优
⭐⭐⭐
A* 搜索
f = g + h f=g+h f = g + h ;可采纳 / 一致;最优性证明
⭐⭐⭐
启发式设计
松弛问题、支配性 dominance、组合 h = max h=\max h = max
⭐⭐⭐
局部搜索 (Local Search)
爬山 / 模拟退火 / 局部剪枝 / 遗传算法
⭐⭐
第一部分:问题求解智能体与搜索问题 (lec3)
1.1 问题求解智能体 (Problem-solving Agents)
⭐ 问题求解智能体 是一类目标驱动智能体 (goal-based agent) :它通过评估未来的动作序列来做决策。
搜索算法通常假设:
转移模型已知且确定 (known, deterministic transition model)
离散的状态与动作 (discrete states and actions)
完全可观测 (fully observable)
原子表示 (atomic representation) :状态被视为整体,内部结构对算法不可见
通常有明确目标 (definite goal);最优 (optimal) = 以最小代价达成目标。
使用更高级的因子化 (factored) 或结构化 (structured) 表示的同类智能体称为规划智能体 (planning agents) 。
离线 vs 在线
离线问题求解 (offline problem solving) :先求出完整解再执行(“闭着眼睛执行 solution executed eyes-closed”)。
在线问题求解 (online problem solving) :在不具备完全知识时边感知边行动(后续章节)。
引例:Romania(罗马尼亚公路旅行)
在 Arad 度假,明天从 Bucharest 起飞 → 目标:到达 Bucharest。
目标形式化:“be in Bucharest”。
问题形式化:states = 城市;actions = 在城市间驾车。
解 (solution):城市序列,如 Arad, Sibiu, Fagaras, Bucharest。
1.2 搜索问题的形式化 ⭐
⭐ 一个(搜索)问题 (search problem) 由以下要素组成:
要素
含义
Romania 例
初始状态 (initial state) s 0 s_0 s 0
起点
s 0 = In(Arad) s_0=\text{In(Arad)} s 0 = In(Arad)
动作集 (actions) A ( s ) A(s) A ( s )
在状态 s s s 下可执行的动作
A ( In(Arad) ) = { Go(Sibiu) , Go(Timisoara) , Go(Zerind) } A(\text{In(Arad)})=\{\text{Go(Sibiu)},\text{Go(Timisoara)},\text{Go(Zerind)}\} A ( In(Arad) ) = { Go(Sibiu) , Go(Timisoara) , Go(Zerind) }
转移模型 (transition model) Result ( s , a ) \text{Result}(s,a) Result ( s , a )
动作执行后的新状态
Result ( In(Arad) , Go(Zerind) ) = In(Zerind) \text{Result}(\text{In(Arad)},\text{Go(Zerind)})=\text{In(Zerind)} Result ( In(Arad) , Go(Zerind) ) = In(Zerind)
状态空间 (state space) S S S
所有可达状态;可由 s 0 , A , Result s_0,A,\text{Result} s 0 , A , Result 隐式定义
—
目标测试 (goal test) G ( s ) G(s) G ( s )
判断是否为目标状态
显式:G ( s ) = 1 ( s ∈ { In(Bucharest) } ) G(s)=\mathbb{1}(s\in\{\text{In(Bucharest)}\}) G ( s ) = 1 ( s ∈ { In(Bucharest) } ) ;隐式:如国际象棋 G ( s ) = Checkmate ( s ) G(s)=\text{Checkmate}(s) G ( s ) = Checkmate ( s )
路径代价 (path cost)
每条路径的数值代价;单步代价 (step cost) c ( s , a , s ′ ) ≥ 0 c(s,a,s')\ge 0 c ( s , a , s ′ ) ≥ 0
距离之和、动作数等
解 (solution) :从初始状态到目标状态的一个动作序列。
最优解 (optimal solution) :所有解中代价最小者。
1.3 状态空间的抽象化 (Abstraction) 与"好"状态空间
抽象化
真实世界极其复杂,必须抽象化 (abstracted) 后才能求解:
(抽象) 状态 = 一组真实状态的集合。
(抽象) 动作 = 一组复杂真实动作的组合(如 Go(Zerind) 代表无数种可能路线、绕路、停靠)。
为保证可实现性 (realizability) :任何处于抽象状态 In(Arad) \text{In(Arad)} In(Arad) 的真实状态,执行该动作后必须落入某个 In(Zerind) \text{In(Zerind)} In(Zerind) 的真实状态。
每个抽象动作应比原问题"更容易"。
构建"好的"状态空间 ⭐
让状态尽可能可达、可行、合法 ;状态数越少越好(规避大量不可达状态);方便设计后继函数与搜索算法。
例:n 皇后问题的三种状态空间设计 (状态数差异巨大)
设计
状态数(8 皇后)
任意位置都可放皇后
( N 2 ) ! / ( N 2 − N + 1 ) ! ≈ 3.13 × 1 0 12 (N^2)!/(N^2-N+1)! \approx 3.13\times10^{12} ( N 2 ) ! / ( N 2 − N + 1 ) ! ≈ 3 . 1 3 × 1 0 1 2
每行放一个皇后
N N = 16777216 N^N = 16777216 N N = 1 6 7 7 7 2 1 6
从左往右逐列放置、前 k k k 列互不攻击
仅 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)!) 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) g ( n ) (路径代价)
depth (深度)
重复状态问题 ⭐
“Those who don’t know history are doomed to repeat it!”(不吸取历史教训者注定重蹈覆辙)
不检测重复状态,可能把一个线性规模 的问题变成指数规模 。
例:含重复状态、深度 d d d 的搜索树有 4 d 4^d 4 d 个叶节点;而距起点 d d d 步以内的不同状态 仅有约 2 d 2 2d^2 2 d 2 个。
1.5 树搜索 vs 图搜索 (Tree-Search vs Graph-Search) ⭐
通用树搜索 (General Tree Search)
基本思想 :离线、模拟地探索状态空间——不断生成已探索状态的后继(即"扩展状态")。
主要变化维度:
下一步扩展哪个叶节点 (决定策略)
是否检测重复状态
frontier 与已扩展节点的数据结构
图搜索 (Graph Search) 与 Frontier
Frontier(边界 / fringe) :分隔"已扩展区域"与"未探索区域"。
扩展一个 frontier 节点:把它从 frontier 移入已扩展集,并把新发现的未探索节点加入 frontier(维持 frontier 性质)。
例:{ 1 , 2 } \{1,2\} { 1 , 2 } 已扩展,frontier = { 3 , 4 , 5 } =\{3,4,5\} = { 3 , 4 , 5 } ;扩展 3 后 frontier = { 4 , 5 , 6 , 7 } =\{4,5,6,7\} = { 4 , 5 , 6 , 7 } 。
对比
搜索树 (Tree)
搜索图 (Graph)
节点
有重复,登记过程简单
无重复,登记过程复杂(每次都要查重)
1.6 搜索算法性能评估 ⭐
搜索策略 (search strategy) = 选择节点扩展的顺序。
四个评估维度:
维度
含义
完备性 (Completeness)
若解存在,是否总能找到
时间复杂度 (Time complexity)
生成的节点数
空间复杂度 (Space complexity)
内存中同时存的最大节点数
最优性 (Optimality)
是否总能找到最小代价解
复杂度参数 ⭐
符号
含义
b b b
搜索树的(最大)分支因子 (branching factor)
d d d
最小代价解的深度 (depth of least-cost solution)
m m m
状态空间的最大深度 (可能为 ∞ \infty ∞ )
⭐ 定义 :无信息搜索 (uninformed / blind search) 指除问题定义提供的状态信息外,没有任何附加信息 。与之对应的是有信息搜索(启发式搜索),后者知道某非目标状态是否比其他状态更接近目标。
本课介绍 6 种 无信息策略:广度优先、一致代价、深度优先、深度受限、迭代加深、双向。
1.7.1 广度优先搜索 (Breadth-First Search, BFS) ⭐
Frontier 数据结构 :FIFO 队列(first-in, first-out)。
完备性 :完备(若 d d d 有限)。
最优性 :当每条边代价一致(cost = 1/step)时返回最优解;否则不一定。
时间复杂度 :
1 + b + b 2 + ⋯ + b d = O ( b d ) 1+b+b^2+\cdots+b^d = O(b^d)
1 + b + b 2 + ⋯ + b d = O ( b d )
若目标测试在节点被扩展时 做(而非生成时),则整层 d d d 都被扩展,时间复杂度为 O ( b d + 1 ) O(b^{d+1}) O ( b d + 1 ) 。
空间复杂度 :O ( b d ) O(b^d) O ( b d ) (或 O ( b d + 1 ) O(b^{d+1}) O ( b d + 1 ) ),所有节点都要存——BFS 的最大瓶颈是空间 。
思想 :扩展当前路径代价最小 的未扩展节点。
Frontier :按路径代价 g ( n ) g(n) g ( n ) 排序的优先级队列 。
若所有边代价一致,UCS 退化为 BFS。
完备性 :完备,前提是单步代价有下界 ϵ > 0 \epsilon>0 ϵ > 0 (即 step cost ≥ ϵ \ge\epsilon ≥ ϵ )。
最优性 :最优(节点按 g ( n ) g(n) g ( n ) 递增顺序扩展)。
时间/空间复杂度 :代价不超过 C ∗ C^* C ∗ 的节点数
O ( b 1 + ⌊ C ∗ / ϵ ⌋ ) O\!\left(b^{1+\lfloor C^*/\epsilon\rfloor}\right)
O ( b 1 + ⌊ C ∗ / ϵ ⌋ )
其中 C ∗ C^* C ∗ 为最优解代价。
1.7.3 深度优先搜索 (Depth-First Search, DFS)
Frontier :LIFO 栈(last-in, first-out)。
完备性 :不完备——在无限深空间或含环空间会失败;若改为避免路径上的重复状态,则在有限空间完备。
最优性 :不保证。
时间复杂度 :
1 + b + b 2 + ⋯ + b m = O ( b m ) 1+b+b^2+\cdots+b^m = O(b^m)
1 + b + b 2 + ⋯ + b m = O ( b m )
当 m ≫ d m\gg d m ≫ d 时很糟;但若解密集,可能比 BFS 快得多。
空间复杂度 :O ( b m ) O(bm) O ( b m ) ,即线性空间 ——只需存一条根到叶的路径及路径上节点的未扩展兄弟。
1.7.4 深度受限搜索 (Depth-Limited Search, DLS)
思想 :DFS + 深度界限 l l l ,深度 > l >l > l 的节点不再扩展。目的 :避免 DFS “一条路走到黑”。
返回结果 三种:有解 / 无解 / 在 l l l 范围内无解。
完备性 :不完备。
最优性 :不保证。
时间复杂度 :O ( b l ) O(b^l) O ( b l ) ;空间复杂度 :O ( b l ) O(bl) O ( b l ) 。
若 l < d l<d l < d 可能不完备;若 l > d l>d l > d 不最优。
1.7.5 迭代加深的深度优先搜索 (Iterative Deepening Search, IDS) ⭐⭐⭐
⭐ 由 DLS 演化:以 k = 0 , 1 , 2 , … k=0,1,2,\dots k = 0 , 1 , 2 , … 为深度界限反复执行 DLS ,每轮加一。
结合了 BFS(完备/最优/浅层优先)与 DFS(线性空间)的优点 。
完备性 :完备。
最优性 :当每条边代价一致(step cost = 1)时返回最优解;否则不一定。
时间复杂度 :
d b + ( d − 1 ) b 2 + ( d − 2 ) b 3 + ⋯ + b d = O ( b d ) db+(d-1)b^2+(d-2)b^3+\cdots+b^d = O(b^d)
d b + ( d − 1 ) b 2 + ( d − 2 ) b 3 + ⋯ + b d = O ( b d )
(上层被重复生成,但额外开销不大)
空间复杂度 :O ( b d ) O(bd) O ( b d ) (深度界限达到 d d d )。
IDS vs BFS 数值对比(b = 10 , d = 5 b=10,d=5 b = 1 0 , d = 5 ,解在最右叶)
N ( IDS ) = 50 + 400 + 3000 + 20000 + 100000 = 123450 N(\text{IDS})=50+400+3000+20000+100000=123450 N ( IDS ) = 5 0 + 4 0 0 + 3 0 0 0 + 2 0 0 0 0 + 1 0 0 0 0 0 = 1 2 3 4 5 0
N ( BFS ) = 10 + 100 + 1000 + 10000 + 100000 = 111100 N(\text{BFS})=10+100+1000+10000+100000=111100 N ( BFS ) = 1 0 + 1 0 0 + 1 0 0 0 + 1 0 0 0 0 + 1 0 0 0 0 0 = 1 1 1 1 0 0
重复生成上层的额外成本很小,但换来了线性空间 。
⭐ 结论 :当搜索空间大、解深度未知时,IDS 是无信息搜索的首选方法 (preferred uninformed search method) 。
1.7.6 双向搜索 (Bidirectional Search)
思想 :同时从初态 和终态 进行 BFS,在中间相遇。
难点 :终态可能不好描述(如 n 皇后);从终态出发的前驱函数可能不好定义。
完备性 :完备。
最优性 :当每条边代价一致时返回最优解;否则不一定。
时间/空间复杂度 :O ( b d / 2 ) O(b^{d/2}) O ( b d / 2 ) (两个 d / 2 d/2 d / 2 深度的搜索)。
2.1 有信息 vs 无信息
无信息搜索 (Uninformed)
有信息搜索 (Informed)
信息
仅问题定义中的状态信息
问题定义 + 问题的特定知识
别名
盲目搜索 (blind)
启发式搜索 (heuristic search)
2.2 最佳优先搜索 (Best-First Search) ⭐
⭐ 核心思想 :为每个节点定义评价函数 (evaluation function) f ( n ) f(n) f ( n ) ——对"合意性 (desirability)"的估计;每次扩展 f f f 最优的未扩展节点。
启发函数 (heuristic function) h ( n ) h(n) h ( n ) :估计状态 n n n 距目标的接近程度;针对特定搜索问题设计。
实现 :frontier 为按 f f f 降序排列的优先级队列 (priority queue) 。
是通用 TREE-SEARCH / GRAPH-SEARCH 的实例。
三个评价函数的特例:
评价函数
对应算法
f ( n ) = g ( n ) f(n)=g(n) f ( n ) = g ( n )
一致代价 (Uniform Cost)
f ( n ) = h ( n ) f(n)=h(n) f ( n ) = h ( n )
贪心 (Greedy)
f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n) f ( n ) = g ( n ) + h ( n )
A*
其中:
g ( n ) g(n) g ( n ) = 从初始节点到 n n n 的实际路径代价 (path cost so far) (向后代价 backward cost)。
h ( n ) h(n) h ( n ) = 从 n n n 到目标的估计代价 (estimated cost to goal) (向前代价 forward cost)。
2.3 贪心最佳优先搜索 (Greedy Best-First Search) ⭐
评价函数 f ( n ) = h ( n ) f(n)=h(n) f ( n ) = h ( n ) = 从 n n n 到最近目标的代价估计。
Romania 例:h SLD ( n ) h_{\text{SLD}}(n) h SLD ( n ) = n n n 到 Bucharest 的直线距离 (Straight-Line Distance) 。
策略 :扩展看起来离目标最近的节点。
性质 :
维度
性质
完备性
否 ——可能陷入循环(如 Iasi→Neamt→Iasi→…);在有限空间 + 重复状态检测下完备
时间
O ( b m ) O(b^m) O ( b m ) ;但好的启发可大幅改进
空间
O ( b m ) O(b^m) O ( b m ) ——所有节点都在内存
最优性
否
2.4 A* 搜索 ⭐⭐⭐
评价函数
f ( n ) = g ( n ) + h ( n ) \boxed{\,f(n)=g(n)+h(n)\,}
f ( n ) = g ( n ) + h ( n )
g ( n ) g(n) g ( n ) = 到达 n n n 的耗散(cost so far)
h ( n ) h(n) h ( n ) = 从 n n n 到目标的最低耗散路径的估计(启发函数)
f ( n ) f(n) f ( n ) = 经过 n n n 到达目标的总代价估计
可采纳性 (Admissibility) ⭐
⭐ h ( n ) h(n) h ( n ) 是可采纳的 (admissible) 当且仅当对每个节点 n n n :
h ( n ) ≤ h ∗ ( n ) h(n)\le h^*(n)
h ( n ) ≤ h ∗ ( n )
其中 h ∗ ( n ) h^*(n) h ∗ ( n ) 是从 n n n 到目标的真实最小代价 。并要求 h ( n ) ≥ 0 h(n)\ge 0 h ( n ) ≥ 0 ,且对任何目标 G G G 有 h ( G ) = 0 h(G)=0 h ( G ) = 0 。
直觉:可采纳启发式从不过高估计到达目标的代价 ,即它是乐观的 (optimistic) 。
例:h SLD h_{\text{SLD}} h SLD 从不高估真实公路距离。
一致性 (Consistency) ⭐
⭐ h ( n ) h(n) h ( n ) 是一致的 (consistent / monotone) 当且仅当对每个节点 n n n 、每个由动作 a a a 生成的后继 n ′ n' n ′ :
h ( n ) ≤ c ( n , a , n ′ ) + h ( n ′ ) h(n)\le c(n,a,n')+h(n')
h ( n ) ≤ c ( n , a , n ′ ) + h ( n ′ )
⭐ 一致性蕴含可采纳性 (consistency implies admissibility) 。
若 h h h 一致,则沿任何路径 f f f 值单调不减 :
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)
f ( n ′ ) = g ( n ′ ) + h ( n ′ ) = g ( n ) + c ( n , a , n ′ ) + h ( n ′ ) ≥ g ( n ) + h ( n ) = f ( n )
A* 的最优性定理 ⭐⭐⭐
定理 1(TREE-SEARCH) :若 h ( n ) h(n) h ( n ) 可采纳 ,则 A* 的 TREE-SEARCH 版本最优 。
定理 2(GRAPH-SEARCH) :若 h ( n ) h(n) h ( n ) 一致 ,则 A* 的 GRAPH-SEARCH 版本最优 。
最优性证明(TREE-SEARCH,可采纳情形)⭐
设次优目标 G 2 G_2 G 2 已在 fringe 中,n n n 是 fringe 中、位于通向最优目标 G G G 的最短路径上的未扩展节点。
f ( G 2 ) = g ( G 2 ) f(G_2)=g(G_2) f ( G 2 ) = g ( G 2 ) (因为 h ( G 2 ) = 0 h(G_2)=0 h ( G 2 ) = 0 )。
g ( G 2 ) > g ( G ) g(G_2)>g(G) g ( G 2 ) > g ( G ) (G 2 G_2 G 2 次优)。
f ( G ) = g ( G ) f(G)=g(G) f ( G ) = g ( G ) (因为 h ( G ) = 0 h(G)=0 h ( G ) = 0 )。
故 f ( G 2 ) > f ( G ) f(G_2)>f(G) f ( G 2 ) > f ( G ) 。
由可采纳性 h ( n ) ≤ h ∗ ( n ) h(n)\le h^*(n) h ( n ) ≤ h ∗ ( n ) ,且 n n n 在到 G G G 的最短路上:
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)
f ( n ) = g ( n ) + h ( n ) ≤ g ( n ) + h ∗ ( n ) ≤ g ( G ) = f ( G )
因此 f ( G 2 ) > f ( n ) f(G_2)>f(n) f ( G 2 ) > f ( n ) ,A* 永远不会选择 G 2 G_2 G 2 扩展 。□ \square □
A* 的三个版本
Tree-search 版本 :不检测重复。
Graph-search 版本 :检测重复。
Practical 版本 :当发现到达旧节点 n n n 的新路径时,若 g ( n ) g(n) g ( n ) 变得更小,则更新 n n n 并让它重新成为待扩展节点(即重新打开 closed 节点 / 路径更新)。这是实际工程中最常用的形式。
f-等值线 (f-contours)
A* 按递增的 f f f 值扩展节点,逐步形成"等值线 (contours)"——contour i i i 包含所有 f = f i f=f_i f = f i 的节点,f i < f i + 1 f_i<f_{i+1} f i < f i + 1 。
A* 扩展哪些节点 ⭐
设 C ∗ C^* C ∗ 为最优解代价:
A* 扩展所有 f ( n ) < C ∗ f(n)<C^* f ( n ) < C ∗ 的节点;
A* 扩展部分 f ( n ) = C ∗ f(n)=C^* f ( n ) = C ∗ 的节点;
A* 不扩展 任何 f ( n ) > C ∗ f(n)>C^* f ( n ) > C ∗ 的节点。
A* 性质总结
维度
性质
完备性
✔(除非存在无穷多个 f ≤ f ( G ) f\le f(G) f ≤ f ( G ) 的节点)
时间
仍为指数级;但对给定启发函数是效率最优 (optimally efficient) 的
空间
保存所有节点 ——A* 的主要缺点(指数级内存)
最优性
✔(在可采纳 / 一致条件下)
2.5 启发式设计 (Heuristic Design) ⭐⭐⭐
8-puzzle 的两个经典启发式
设 h ∗ ( n ) h^*(n) h ∗ ( n ) 为真实最少步数:
h 1 ( n ) h_1(n) h 1 ( n ) = 错位棋子数 (number of misplaced tiles) 。
h 2 ( n ) h_2(n) h 2 ( n ) = 曼哈顿距离之和 (total Manhattan distance) = 所有棋子到其目标位置的水平竖直距离和。
对同一初始状态 S S S :h 1 ( S ) = 8 h_1(S)=8 h 1 ( S ) = 8 ,h 2 ( S ) = 3 + 1 + 2 + 2 + 2 + 3 + 3 + 2 = 18 h_2(S)=3+1+2+2+2+3+3+2=18 h 2 ( S ) = 3 + 1 + 2 + 2 + 2 + 3 + 3 + 2 = 1 8 。
8-puzzle 平均解步数约 22,分支因子约 3;穷举到深度 22 需 3 22 ≈ 3.1 × 1 0 10 3^{22}\approx 3.1\times10^{10} 3 2 2 ≈ 3 . 1 × 1 0 1 0 。
支配性 (Dominance) ⭐
⭐ 若对所有 n n n 都有 h 2 ( n ) ≥ h 1 ( n ) h_2(n)\ge h_1(n) h 2 ( n ) ≥ h 1 ( n ) (且两者都可采纳),则称 h 2 h_2 h 2 支配 (dominate) h 1 h_1 h 1 ,h 2 h_2 h 2 更有利于搜索。
典型搜索开销(平均扩展节点数)对比 :
深度
IDS
A*(h 1 h_1 h 1 )
A*(h 2 h_2 h 2 )
d = 12 d=12 d = 1 2
3 644 035
227
73
d = 24 d=24 d = 2 4
太多
39 135
1 641
→ 支配性更强的启发式扩展节点数远少于被支配者。
组合多个启发式 ⭐
⭐ 给定任意一组可采纳启发式 { h 1 , … , h m } \{h_1,\dots,h_m\} { h 1 , … , h m } ,
h ( n ) = max ( h 1 ( n ) , … , h m ( n ) ) h(n)=\max(h_1(n),\dots,h_m(n))
h ( n ) = max ( h 1 ( n ) , … , h m ( n ) )
仍可采纳 ,且支配 其中每个成员启发式。
松弛问题 (Relaxed Problems) ⭐⭐⭐
⭐ 松弛问题 (relaxed problem) :对动作施加更少限制的问题。
⭐ 核心定理 :松弛问题最优解的代价,是原问题的一个可采纳启发式 (因为去掉限制只会让代价不增)。
关键点:松弛问题的最优解代价 ≤ \le ≤ 原问题的最优解代价。
8-puzzle 的三种松弛 (原规则:棋子可从 A 移到 B,当 A、B 水平/垂直相邻且 B 为空):
松弛
对应启发式
松弛 1:A 与 B 相邻即可(不要求 B 空)
h 2 h_2 h 2 (曼哈顿距离)
松弛 2:B 为空即可(不要求相邻)
—
松弛 3:A → B 无任何限制
h 1 h_1 h 1 (错位数)
设计启发式的一般方法:从原问题去掉某些约束得到松弛问题,求其精确最优解作为 h h h 。
Pattern Database(模式数据库)*
课件正文未直接展开,属 AIMA 标准方法(对照原课件/教材查看):预先存储一组"模式 (patterns)"到目标的最短代价,作为可采纳启发式,常用于 15-puzzle 等大状态空间。
有效分支因子 (Effective Branching Factor)*
AIMA 标准评估指标(对照原课件/教材查看):若 A* 扩展 N N N 个节点、解深 d d d ,定义 b ∗ b^* b ∗ 使 N + 1 = 1 + b ∗ + ⋯ + ( b ∗ ) d N+1=1+b^*+\cdots+(b^*)^d N + 1 = 1 + b ∗ + ⋯ + ( b ∗ ) d ;b ∗ b^* b ∗ 越接近 1 说明启发式越好,且对同一问题 b ∗ b^* b ∗ 在不同 d d d 下大致恒定。
2.6 Hybrid A*(应用扩展)*
车辆自主泊车的路径规划算法:以较少换挡次数规划出可行驶轨迹。
搜索状态 ( x , y , θ , r ) (x,y,\theta,r) ( x , y , θ , r ) ,r r r 表示前进/后退。
动作离散化:max-left / no-turn / max-right。
启发式:
non-holonomic without obstacles :忽略障碍但满足可行驶约束(车头朝向连续变化);
holonomic with obstacles :考虑障碍但忽略可行驶约束。
最后再做轨迹平滑与优化。
2.7 内存受限与迭代加深的 A*(AIMA 扩展)*
课件正文未直接出现,属 AIMA 标准考点(建议对照教材 Ch3 补充):
IDA* (Iterative Deepening A*) :把迭代加深思想用到 f f f 值上。每轮设 f f f 阈值,只扩展 f ≤ f\le f ≤ 阈值的节点;下一轮阈值 = 上一轮被剪枝节点的最小 f f f 。内存 O ( b d ) O(bd) O ( b d ) ,可采纳 h h h 下完备且最优。
RBFS (Recursive Best-First Search) :递归式最佳优先,用线性内存模拟最佳优先;每个节点记录"可达的最佳 f f f 替代值",递归回溯。
SMA* (Simplified Memory-bounded A*) :A* 的内存受限版——当内存满时丢弃 f f f 最差节点,但将其信息回填到父节点,以便日后必要时重新生成。
2.8 局部搜索算法 (Local Search Algorithms) ⭐
适用场景:很多优化问题 中,到目标的路径无关紧要,目标状态本身就是解 。
状态空间 = “完整配置 (complete configurations)” 的集合(如 n 皇后的一种摆法)。
不断保持单个"当前状态"并尝试改进;常数空间 ,适合在线与离线搜索。
2.8.1 爬山搜索 (Hill-Climbing Search)
比喻:“像在浓雾中、患健忘症 (amnesia) 攀登珠峰”——只能看到局部、忘记来路。
问题 :依赖初始状态,可能陷入局部极大值 (local maxima) 、山肩 (shoulders)、平坦区。
改进 :
随机重启爬山 (Random-restart hill climbing) :克服局部极大,平凡地完备。
横向随机移动 (random sideways moves) :逃出山肩。
8-queens 中的爬山
评价 h h h = 互相攻击的皇后对数;某状态 h = 17 h=17 h = 1 7 ;可能陷入 h = 1 h=1 h = 1 的局部最小。
2.8.2 模拟退火 (Simulated Annealing Search) ⭐
思想 :允许少量"坏"移动以逃离局部极大,但逐渐降低 其频率(温度 T T T 缓慢下降)。
⭐ 理论保证 :若 T T T 下降足够慢,模拟退火将以趋于 1 的概率 找到全局最优。
广泛用于 VLSI 布局、航班调度等。
标准 AIMA 中的接受准则(对照教材):若 Δ E > 0 \Delta E>0 Δ E > 0 直接接受;否则以概率 exp ( Δ E / T ) \exp(\Delta E/T) exp ( Δ E / T ) 接受(Δ E \Delta E Δ E 为新状态的值增量)。
2.8.3 局部剪枝搜索 (Local Beam Search)
同时跟踪 k k k 个状态 (而非一个)。
从 k k k 个随机生成的状态开始。
每轮生成所有 k k k 个状态的全部后继。
若任一为目标则停止;否则从完整后继列表中选最好的 k k k 个,重复。
⚠️ 不是 k k k 个独立搜索并行运行 ——发现好状态的搜索会"招募"其他搜索加入。
缺点:k k k 个状态常聚集到同一座局部山丘 → 改进 :随机选 k k k 个后继、偏向好状态(随机束搜索 stochastic beam search )。
2.8.4 遗传算法 (Genetic Algorithms, GA) ⭐
后继由两个父代状态组合 产生。
从 k k k 个随机生成的状态(种群 population )开始。
状态表示为有限字母表上的串(常为 0/1 串)。
评价函数 = 适应度函数 (fitness function) :状态越好值越大。
通过三大操作产生下一代:选择 (selection)、杂交 (crossover)、变异 (mutation) 。
8-queens 中的 GA
适应度 = 不互相攻击的皇后对数(min = 0,max = ( 8 2 ) = 28 \binom{8}{2}=28 ( 2 8 ) = 2 8 )。
选择概率正比于适应度,如 24 / ( 24 + 23 + 20 + 11 ) = 31 % 24/(24+23+20+11)=31\% 2 4 / ( 2 4 + 2 3 + 2 0 + 1 1 ) = 3 1 % 。
2.9 搜索方法小结
有信息搜索
启发函数估计到目标的最短路径代价;好的启发可极大降低搜索代价。
贪心最佳优先 :扩展最小 h h h ;不完备、不最优。
A* :扩展最小 g + h g+h g + h ;完备、最优,且(对前向搜索、除并列外)效率最优 (optimally efficient) 。
可采纳启发式可由松弛问题的精确解导出。
局部搜索
路径无关紧要;保持单个"当前状态"并改进。
爬山:可能陷入局部极大。
模拟退火:允许坏移动并逐渐降温,可收敛到全局最优。
局部剪枝:同时保留 k k k 个状态。
遗传算法:基于种群的选择/杂交/变异。
无信息 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. 问题形式化五要素
一个良定义问题通常包含:
状态空间 (state space):所有可能状态的集合。
初始状态 (initial state):搜索起点。
行动/后继函数 (actions/successor function):在某状态能做什么,做完到哪里。
目标测试 (goal test):判断状态是否满足目标。
路径代价 (path cost):路径总代价,通常是单步代价累加。
标准写法:Problem = ( States, InitialState, Actions, TransitionModel, GoalTest, PathCost ) \text{Problem} = (\text{States, InitialState, Actions, TransitionModel, GoalTest, PathCost}) Problem = ( States, InitialState, Actions, TransitionModel, GoalTest, PathCost ) 。课件有时把后继函数写成:S ( x ) = ⟨ action, successor state ⟩ , … S(x) = \langle \text{action, successor state} \rangle, \dots S ( x ) = ⟨ action, successor state ⟩ , … ,其中单步代价写作 c ( x , a , y ) ≥ 0 c(x, a, y) \geq 0 c ( x , a , y ) ≥ 0 。
1.2.1. 状态与节点不要混淆
状态 (state):世界的一种配置,例如"人在 Arad",“水壶水量为 ( 0 , 8 , 3 ) (0,8,3) ( 0 , 8 , 3 ) ”。
节点 (node):搜索树中的数据结构,通常包含:state、parent、action、path-cost g ( n ) 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) :是否保证找到最低路径代价的解。
时间复杂度 :通常用分支因子 b b b 、最浅目标深度 d d d 、最大深度 m m m 表示。
空间复杂度 :搜索过程中最多存多少节点。
符号:
b b b :branching factor,每个节点最多后继数。
d d d :最浅目标深度。
m m m :搜索树最大深度,可能无限。
C ∗ C^* C ∗ :最优解代价。
ε \varepsilon ε :最小正单步代价。
2. 无信息搜索算法
2.1. 无信息搜索算法对比表
无信息搜索仅使用从问题定义中获取到的信息(初始状态,状态转移规则,目标状态测试条件),没有任何其他启发式信息。
算法
选择规则
完备
最优
时间
空间
适用
BFS
最浅节点,FIFO
是,若 b b b 有限
是,若单步代价相同
O ( b d + 1 ) O(b^{d+1}) O ( b d + 1 )
O ( b d + 1 ) O(b^{d+1}) O ( b d + 1 )
单位代价最短步数
UCS
最小 g ( n ) g(n) g ( n )
是,若代价 ≥ ε \geq \varepsilon ≥ ε
是
O ( b 1 + ⌊ C ∗ / ε ⌋ ) O(b^{1+\lfloor C^*/\varepsilon \rfloor}) O ( b 1 + ⌊ C ∗ / ε ⌋ )
同时间量级
非单位代价最优路径
DFS
最深节点,LIFO
否,可能进入无限分支
否
O ( b m ) O(b^m) O ( b m )
O ( b m ) O(bm) O ( b m )
空间很紧、只想找任意解
DLS
深度限制 l l l 的 DFS
若 l ≥ d l \geq d l ≥ d 是
否
O ( b l ) O(b^l) O ( b l )
O ( b l ) O(bl) O ( b l )
已知深度上界
IDS
逐步加深 DLS
是
是,若单步代价相同
O ( b d ) O(b^d) O ( b d )
O ( b d ) O(bd) O ( b d )
单位代价且想省空间
2021 选择题 :所有边代价为 1,没有启发式,又要求省空间并保证最优,选迭代加深 DFS 。
2020 判断题 :BFS 是 UCS 的特例。若每条边单步代价相同,UCS 按 g g g 递增扩展,等价于按深度扩展,因此正确。
2.2. 广度优先搜索(BFS)
BFS 用队列:
1 2 1. pop from front 2. push children to back
性质:
按深度逐层扩展。
当所有边代价相同,第一次找到目标就是最浅目标,也是最优解。
空间爆炸严重,因为要保存整层 frontier。
考试手算规则:
从左到右生成子节点。
同层先生成者先扩展。
若题目规定并列按字母序,按题目来。
2.3. 代价一致搜索(UCS)
BFS 的升级版,应对每步代价不同的情况。UCS 每次扩展 g ( n ) g(n) 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)
g ( n ) ≜ 从初始节点到 n 的已知路径代价 = 父节点 g + cost ( p , n )
操作步骤:
初始化 :将起点放入优先队列,累计代价设为 0。准备一个空的"已探索集合"(记录去过的地方,防止绕圈)。
循环检查队列 :
如果优先队列空了,说明找不到路,宣告失败。
弹出队列中代价最小的节点。
目标测试:如果这个节点是终点,宣告成功!直接输出到达这里的路径。
扩展节点 :
将刚弹出的节点加入"已探索集合"。
观察它的所有邻居节点,计算到达每个邻居的新累计代价(当前节点累计代价 + 走到邻居的单步代价)。
状态更新(UCS 最关键的一步) :
如果邻居既不在队列里,也不在已探索集合里 → 直接作为新发现加入优先队列。
如果邻居已经在优先队列里,但你刚算出的新代价比队列里记录的代价更低 → 发现了一条抄近道的路!立即更新队列里该节点的代价和父节点信息。
返回第 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 加深度限制 l l l :
深度超过 l l l 不再展开。
可以返回三种结果:success、failure、cutoff。
若 l < d l < d l < d ,找不到解;若 l l l 太大,又退化为 DFS。
2.6. 迭代加深搜索(IDS)
IDS 依次运行:
1 2 3 4 DLS(limit=0) DLS(limit=1) DLS(limit=2) ...
为什么重复搜索仍然不亏?因为树中绝大多数节点在最深层,浅层重复展开的代价相对小。
性质:
BFS 的完备性和单位代价最优性。
DFS 的低空间复杂度。
单位代价搜索中非常常考。
2.7. 双向搜索
思路:同时从初始状态和目标状态搜索,直到两个 frontier 相遇。
复杂度:理想情况下从 O ( b d ) O(b^d) O ( b d ) 降为 O ( b d / 2 ) O(b^{d/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)} Result ( In(Arad) , Go(Sibiu) ) = In(Sibiu) 。
目标测试:是否在 Bucharest。
路径代价:道路距离之和。
3.1.2. 水壶问题
三壶容量为 12、8、3,加水目标 1 加仑:
1 2 3 4 5 6 state = (V12, V8, V3) 0 <= Vi <= Ci initial = (0,0,0) goal = any Vi == 1 actions = Fill(i), Empty(i), Pour(i,j) path cost = 每步 1
倒水动作:
1 2 3 amount = min(Vi, Cj - Vj) Vi' = Vi - amount Vj' = Vj + amount
3.1.3. 传教士与野人
1 2 3 state = (M_left, C_left, Boat_left) initial = (3,3,1) goal = (0,0,0)
合法状态必须满足两岸安全:
1 2 M_left == 0 or M_left >= C_left M_right == 0 or M_right >= C_right
动作:Cross ( m , c ) , 1 ≤ m + c ≤ 2 \text{Cross}(m, c),\; 1 \leq m + c \leq 2 Cross ( m , c ) , 1 ≤ m + c ≤ 2 。该题检查重复状态非常必要,因为动作可逆,树搜索会反复过河。
3.2. 2020 三位数 A* 题的状态设计
题意:从三位数 S S S 到 G G G ,每步对某一位加 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{目标个位}| h ( n ) = ∣ 当前百位 − 目标百位 ∣ + ∣ 当前十位 − 目标十位 ∣ + ∣ 当前个位 − 目标个位 ∣ 。
理由:每一步只能改变一位且只能改变 1,因此至少需要各位数字差值之和这么多步。bad 集合和"不可连续改同一位"只会增加所需步数,不会让它更少。
若想更紧但仍简单,可考虑由于"不能连续改同一位"造成的额外等待,但考试一般写曼哈顿数字差即可。
3.3. 搜索题手算答题框架
对任何搜索树题:
写 frontier 的排序依据。
写已扩展节点。
对每个 frontier 节点标关键值:
BFS/DFS:深度和生成顺序。
UCS:g ( n ) g(n) g ( n ) 。
Greedy:h ( n ) h(n) h ( n ) 。
A*:f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n) f ( n ) = g ( n ) + h ( n ) 。
选最优先节点。
并列时按题目规则:左到右、字母序、深度优先等。
3.4. 搜索树绘制
按照题目给定的扩展顺序。扩展一个结点时,给出所有合法的后继结点;节点按照扩展顺序进行标号,只有被扩展的节点标号,目标节点被扩展时停止。
4. 考试速查
4.1. 常见判断题
BFS 在单位代价下最优:对 。
DFS 不一定完备:对 ,可能无限深。
DFS 扩展节点一定不少于 A*:错 ,具体取决于图和启发式。
UCS 可以处理非单位代价并保证最优:对 ,要求非负代价。
图搜索比树搜索一定更快:不绝对,但避免重复状态通常更稳。
4.2. 最后一分钟版
问题形式化:状态、初始、行动/转移、目标测试、路径代价。
节点比状态多:父节点、动作、路径代价、深度。
BFS:单位代价最优,空间爆炸。
UCS:按 g g g ,非负代价最优。
DFS:省空间,不完备不最优。
IDS:单位代价最优且省空间,考试很爱。
有历史限制的题,历史变量要放入状态。
4 有信息搜索
A*,启发式函数,局部搜索
目录 :0. 快速定位 · 1. 最佳优先与 A* 基础 · 2. 启发式性质与证明 · 3. 局部搜索 · 4. 考试速查
0. 快速定位
手算 A*:看"A* 搜索流程"和"罗马尼亚例题模板"。
判断启发式是否 admissible/consistent:看"两个定义"。
多个启发式比较:看"启发式支配关系"。
局部搜索:看"爬山/模拟退火/束搜索/遗传算法"。
1. 最佳优先与 A* 基础
1.1. Best-First Search
最佳优先搜索维护一个优先队列 frontier,每次扩展评价函数 f ( n ) 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 ) 得到不同算法:
贪心最佳优先搜索:f ( n ) = h ( n ) f(n)=h(n) f ( n ) = h ( n ) 。
A* 搜索:f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n) f ( n ) = g ( n ) + h ( n ) 。
UCS:f ( n ) = g ( n ) f(n)=g(n) f ( n ) = g ( n ) 。
1.2. 启发函数 h(n)
h ( n ) h(n) h ( n ) 估计从节点 n n n 到目标的最小剩余代价,如果 n n n 是目标,则 h ( n ) = 0 h(n)=0 h ( n ) = 0 。
例:罗马尼亚地图中,h ( n ) h(n) h ( n ) 可取城市到 Bucharest 的直线距离。启发式越接近真实剩余代价 h ∗ ( n ) h^*(n) h ∗ ( n ) ,搜索越少;但如果高估,A* 最优性可能丢失。
1.3. Greedy Best-First Search
评价函数:f ( n ) = h ( n ) f(n) = h(n) f ( n ) = h ( n ) 。
特点:
只看"离目标看起来多近"。
通常很快。
不保证最优。
在图搜索中若避免重复,有限状态空间下完备;树搜索遇到环或无限空间不一定完备。
常见错误:贪心不看已经走过多远,所以可能为了小 h h h 绕远路。
1.4. A* Search
评价函数:f ( n ) = g ( n ) + h ( n ) f(n) = g(n) + h(n) f ( n ) = g ( n ) + h ( n ) ,其中:
g ( n ) g(n) g ( n ) :从初始状态到 n n n 的已知实际路径代价。
h ( n ) h(n) h ( n ) :从 n n n 到目标的估计最小剩余代价。
f ( n ) f(n) f ( n ) :经过 n n n 到目标的总路径代价估计。
A* 每次扩展 f f f 最小的节点。
1.5. A* 搜索流程
1 2 3 4 5 6 7 8 9 10 11 12 frontier = priority queue by f=g+h explored = empty while frontier not empty: n = pop node with smallest f if goal(n): return path add n.state to explored for each successor child: compute g(child), h(child), f(child) if child.state not seen: push child else if new g is smaller: update parent/g/f
若题目要求手算,每个节点写:Node: g=?, h=?, f=g+h=?。并列规则按题目给定;若没给,一般按生成顺序或字母序说明即可。
2. 启发式性质与证明
2.1. 可采纳启发式 Admissible Heuristic
定义:0 ≤ h ( n ) ≤ h ∗ ( n ) 0 \leq h(n) \leq h^*(n) 0 ≤ h ( n ) ≤ 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') h ( n ) ≤ c ( n , a , n ′ ) + h ( n ′ ) (通过 a a a 到达 n ′ n' n ′ ),并且 h ( goal ) = 0 h(\text{goal}) = 0 h ( goal ) = 0 。
直观:估计距离满足三角不等式。
重要结论:一致性 ⇒ 可采纳 。
证明套路:沿着从 n n n 到目标的最优路径反复套用三角不等式,中间的 h h h 抵消,得到 h ( n ) ≤ h ∗ ( n ) h(n) \leq h^*(n) h ( n ) ≤ h ∗ ( n ) 。
一致性的好处:
A* 图搜索第一次从 frontier 弹出某状态时,该状态的最优 g g g 已确定。
不需要重新打开 closed 节点。
2.3. 可采纳但不一致例子
构造路径:A → 1 B → 10 G A \xrightarrow{1} B \xrightarrow{10} G A 1 B 1 0 G
真实代价:h ∗ ( A ) = 11 , h ∗ ( B ) = 10 , h ∗ ( G ) = 0 h^*(A) = 11,\; h^*(B) = 10,\; h^*(G) = 0 h ∗ ( A ) = 1 1 , h ∗ ( B ) = 1 0 , h ∗ ( G ) = 0 。
定义:h ( A ) = 10 , h ( B ) = 5 , h ( G ) = 0 h(A) = 10,\; h(B) = 5,\; h(G) = 0 h ( A ) = 1 0 , h ( B ) = 5 , h ( G ) = 0 。
可采纳:10 ≤ 11 , 5 ≤ 10 10 \leq 11,\; 5 \leq 10 1 0 ≤ 1 1 , 5 ≤ 1 0 。
不一致:
h ( A ) ≤ c ( A , B ) + h ( B ) 10 ≤ 1 + 5 (错) h(A) \leq c(A,B) + h(B) \\
10 \leq 1 + 5 \quad \text{(错)}
h ( A ) ≤ c ( A , B ) + h ( B ) 1 0 ≤ 1 + 5 (错)
2.4. 启发式支配关系(占优)
若两个启发式都可采纳,且对所有节点:h 2 ( n ) ≥ h 1 ( n ) h_2(n) \geq h_1(n) h 2 ( n ) ≥ h 1 ( n ) ,则 h 2 h_2 h 2 支配 h 1 h_1 h 1 ,通常扩展节点不多于 h 1 h_1 h 1 ,因为它更接近真实代价。
2021 判断题 :若 h 1 h_1 h 1 、h 2 h_2 h 2 都可采纳:
h 3 ( n ) = max ( h 1 ( n ) , h 2 ( n ) ) h 4 ( n ) = min ( h 1 ( n ) , h 2 ( n ) ) h_3(n) = \max(h_1(n), h_2(n)) \\
h_4(n) = \min(h_1(n), h_2(n))
h 3 ( n ) = max ( h 1 ( n ) , h 2 ( n ) ) h 4 ( n ) = min ( h 1 ( n ) , h 2 ( n ) )
h 3 h_3 h 3 仍可采纳,而且支配 h 4 h_4 h 4 。所以在 A* 中通常更好。但"更好"若被严格理解为所有情况下扩展节点严格更少,则不一定严格;考试一般判断"max 不差于 min"。
2.5. A* 最优性证明核心
设最优解代价为 C ∗ C^* C ∗ 。若 h h h 可采纳,则最优路径上任意 frontier 节点 n n n 有:
f ( n ) = g ( n ) + h ( n ) ≤ g ( n ) + h ∗ ( n ) = C ∗ f(n) = g(n) + h(n) \leq g(n) + h^*(n) = C^*
f ( n ) = g ( n ) + h ( n ) ≤ g ( n ) + h ∗ ( n ) = C ∗
任何次优目标 G ′ G' G ′ 的:f ( G ′ ) = g ( G ′ ) = C ′ > C ∗ f(G') = g(G') = C' > C^* f ( G ′ ) = g ( G ′ ) = C ′ > C ∗ ,所以 A* 不会在所有最优路径节点被处理前选中次优目标。
2.6. 加权启发式路径算法
作业题给:f ( n ) = ( 2 − w ) g ( n ) + w h ( n ) f(n) = (2-w)g(n) + wh(n) f ( n ) = ( 2 − w ) g ( n ) + w h ( n ) 。
若 0 ≤ w < 2 0 \leq w < 2 0 ≤ w < 2 ,除以正数 ( 2 − w ) (2-w) ( 2 − w ) :f ′ ( n ) = g ( n ) + [ w / ( 2 − w ) ] h ( n ) f'(n) = g(n) + [w/(2-w)]h(n) f ′ ( n ) = g ( n ) + [ w / ( 2 − w ) ] h ( n ) 。
为了保证最优,启发项系数不能超过 1:
w 2 − w ≤ 1 ⇒ w ≤ 1 \frac{w}{2-w} \leq 1 \;\Rightarrow\; w \leq 1
2 − w w ≤ 1 ⇒ w ≤ 1
所以 0 ≤ w ≤ 1 0 \leq w \leq 1 0 ≤ w ≤ 1 保证最优。
特殊情况:
w = 0 w=0 w = 0 :f = 2 g f=2g f = 2 g ,等价 UCS。
w = 1 w=1 w = 1 :f = g + h f=g+h f = g + h ,标准 A*。
w = 2 w=2 w = 2 :f = 2 h f=2h f = 2 h ,等价贪心搜索。
2.7. 高估不超过 c 的启发式
若:h ( n ) ≤ h ∗ ( n ) + c h(n) \leq h^*(n) + c h ( n ) ≤ h ∗ ( n ) + c ,则 A* 返回解代价 C ′ C' C ′ 满足:C ′ ≤ C ∗ + c C' \leq C^* + c C ′ ≤ C ∗ + c 。
证明模板:
A* 终止时选择目标 G ′ G' G ′ ,所以 C ′ = f ( G ′ ) C'=f(G') C ′ = f ( G ′ ) 。
最优路径上存在 frontier 节点 n n n 。
f ( n ) = g ( n ) + h ( n ) ≤ g ( n ) + h ∗ ( n ) + c = C ∗ + c f(n)=g(n)+h(n) \leq g(n)+h^*(n)+c = C^*+c f ( n ) = g ( n ) + h ( n ) ≤ g ( n ) + h ∗ ( n ) + c = C ∗ + c 。
A* 选择 G ′ G' G ′ ,所以 C ′ = f ( G ′ ) ≤ f ( n ) C'=f(G') \leq f(n) C ′ = f ( G ′ ) ≤ f ( n ) 。
得 C ′ ≤ C ∗ + c C' \leq C^*+c C ′ ≤ 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) g ( n ) ,选最小。
Greedy:看 h ( n ) h(n) h ( n ) ,选最小。
A*:算 f ( n ) = g ( n ) + h ( n ) 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) P = exp ( Δ E / T ) 。若是最大化问题,Δ E = value(new) − value(current) \Delta E = \text{value(new)} - \text{value(current)} Δ E = value(new) − value(current) ,更差时为负。温度 T T T 越高越容易接受坏动作,越低越像爬山。
流程:
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 局部束搜索
同时保留 k k k 个状态:
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 ( h 1 , h 2 ) \max(h_1, h_2) max ( h 1 , h 2 ) 若二者可采纳,仍可采纳:对 。
贪心最佳优先搜索一定最优:错 。
A* 中 g g g 是已经走过的代价,h h h 是估计剩余代价:对 。
4.2. 最后一分钟版
Greedy:f = h f=h f = h ,快但不最优。
A*:f = g + h f=g+h f = g + h ,h h h 可采纳/一致时保证最优。
Admissible:h ≤ h ∗ h \leq h^* h ≤ h ∗ 。
Consistent:h ( n ) ≤ c ( n , n ′ ) + h ( n ′ ) h(n) \leq c(n, n') + h(n') h ( n ) ≤ 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 :
状态由变量 X i X_i X i 及其取自值域 (domain) D i D_i D i 的值定义;
目标测试是一组约束 (constraints) ,规定变量子集的合法取值组合;
是一种形式化表示语言 (formal representation language) ,允许设计通用 (general-purpose,而非问题特定) 的、比标准搜索更强的算法。
⭐ CSP 形式化定义
一个约束满足问题由三个部分 X , D , C X, D, C X , D , C 构成:
X X X :变量集 { X 1 , … , X n } \{X_1,\dots,X_n\} { X 1 , … , X n } 。
D D D :值域集 { D 1 , … , D n } \{D_1,\dots,D_n\} { D 1 , … , D n } ,每个 D i D_i D i 是 X i X_i X i 的合法取值集合 { v 1 , … , v k } \{v_1,\dots,v_k\} { v 1 , … , v k } 。
C C C :约束集。每个约束 C i = ⟨ scope , rel ⟩ C_i=\langle \text{scope},\text{rel}\rangle C i = ⟨ scope , rel ⟩ :
scope :参与该约束的变量元组;
rel :定义这些变量可取值组合的关系 (relation) 。
关系既可显式枚举所有满足元组,也可表示为一个抽象关系,支持"测试某元组是否属于"和"枚举成员"两种操作。
状态、赋值与解
状态 (state) :对部分或全部变量的赋值 { X i = v i , X j = v j , … } \{X_i=v_i,\,X_j=v_j,\dots\} { X i = v i , X j = v j , … } 。
相容 (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}\} X = { WA , NT , Q , NSW , V , SA , T } (澳大利亚各州)。
值域 D i = { red , green , blue } D_i=\{\text{red},\text{green},\text{blue}\} D i = { red , green , blue } 。
约束:相邻区域颜色不同。C = { SA ≠ WA , SA ≠ NT , … , NSW ≠ V } C=\{\text{SA}\neq\text{WA},\,\text{SA}\neq\text{NT},\,\dots,\,\text{NSW}\neq\text{V}\}
C = { SA = WA , SA = NT , … , NSW = V }
其中 SA ≠ WA \text{SA}\neq\text{WA} SA = WA 是 ⟨ ( SA , WA ) , SA ≠ WA ⟩ \langle(\text{SA},\text{WA}),\,\text{SA}\neq\text{WA}\rangle ⟨ ( SA , WA ) , SA = WA ⟩ 的简写,可枚举为
{ ( 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})\} { ( red , green ) , ( red , blue ) , ( green , red ) , ( green , blue ) , ( blue , red ) , ( blue , 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}\} { WA = red , NT = green , Q = red , NSW = green , V = red , SA = blue , T = green } 。
约束图 (Constraint Graph)
二元 CSP (Binary CSP) :每个约束只涉及两个变量。
约束图 :节点 = 变量,弧 = 约束。
通用 CSP 算法利用图结构加速搜索(例:Tasmania 是独立子问题)。
密码算术 (Cryptarithmetic)
高阶约束示例:列约束涉及进位辅助变量 X 1 , X 2 , X 3 X_1,X_2,X_3 X 1 , X 2 , X 3 (十/百/千位的进位)。
1.3 CSP 的分类体系
按变量类型分
类型
值域
规模/可解性
离散变量 / 有限值域 (finite domains)
有限集
n n n 变量、值域大小 d d d → O ( d n ) O(d^n) O ( d n ) 完备赋值;含 Boolean CSP / SAT (NP-complete)
离散变量 / 无限值域 (infinite domains)
整数、字符串等
需要约束语言;线性约束可解,非线性不可判定 (undecidable) ;如作业调度
连续变量 (continuous variables)
实数
线性约束可由线性规划 (LP) 在多项式时间求解;如哈勃望远镜观测时刻
按约束种类分
一元约束 (unary) :涉及单变量,如 SA ≠ green \text{SA}\neq\text{green} SA = green 。
二元约束 (binary) :涉及一对变量,如 SA ≠ WA \text{SA}\neq\text{WA} SA = WA 。
高阶约束 (higher-order) :涉及 3 个或更多变量,如密码算术列约束。
偏好 / 软约束 (preferences / soft constraints) :带代价,如 “red 优于 green”——导向约束优化问题 (constrained optimization problems) 。
现实世界 CSP
分配问题(排课、审稿分配)、时间表、硬件配置、交通调度、工厂排程、平面布置 (floorplanning) 等;许多现实问题含实值变量。
1.4 回溯搜索 (Backtracking Search)
初始状态:空赋值 ∅ \emptyset ∅ 。
后继函数:给某未赋值变量赋一个不与当前赋值冲突的值;无合法值则失败。
目标测试:当前赋值完备。
性质:所有 CSP 一致;解都在深度 n n n ;路径无关 → 可用 DFS;分支因子 b = ( n − l ) d b=(n-l)d b = ( n − l ) d ,共 n ! ⋅ d n n!\cdot d^n n ! ⋅ d n 叶。
⭐ 可交换性 (commutativity) 与回溯搜索
变量赋值可交换 :( WA = red then NT = green ) (\text{WA}=\text{red}\,\text{then}\,\text{NT}=\text{green}) ( WA = red then NT = green ) 等价于 ( NT = green then WA = red ) (\text{NT}=\text{green}\,\text{then}\,\text{WA}=\text{red}) ( NT = green then WA = red ) 。
因此每个节点只给单个变量 赋值:b = d b=d b = d ,叶数 d n d^n d n 。
⭐ 回溯搜索 = 对 CSP 的单变量赋值深度优先搜索 ;是 CSP 的基本无信息算法 (basic uninformed algorithm) 。
能力:可解 n ≈ 25 n\approx 25 n ≈ 2 5 的 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 算法详解
核心概念回顾
变量 X X X 对变量 Y Y Y 弧一致 ,当且仅当:对于 X X X 的域 D X D_X D X 中的每一个 值 x x x ,都存在 Y Y Y 的域 D Y D_Y D Y 中的某个值 y y y ,使得二元约束 C ( X , Y ) C(X, Y) C ( X , Y ) 被满足。
REVISE 过程
REVISE(X_i, X_j) 是 AC-3 的基本操作:检查 X i X_i X i 对 X j X_j X j 是否弧一致,若不成立则删除 X i X_i X i 中那些在 X j X_j X 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 表示 D i D_i D i 发生了改变(有值被删)
返回 false 表示 D i D_i D i 未变(X i X_i X i 对 X j X_j X j 已弧一致)
AC-3 主算法
AC-3 维护一个弧队列 (queue) ,初始包含 CSP 中的所有有向弧(每条二元约束产生两条有向弧:( X i , X j ) (X_i, X_j) ( X i , X j ) 和 ( X j , X i ) (X_j, X_i) ( 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 后要把 ( X k , X i ) (X_k, X_i) ( X k , X i ) 重新入队?
当 X i X_i X i 的域缩小后,之前与 X i X_i X i 弧一致的邻居 X k X_k X k 可能不再弧一致 (因为 X k X_k X k 中某些值的支持来自 X i X_i X i 中被删的值)。所以需要重新检查所有 ( X k , X i ) (X_k, X_i) ( X k , X i ) 弧。
算法性质
性质
说明
终止性
每次 REVISE 要么不变,要么至少删一个值;域有限 → 必然终止
正确性
算法结束时,所有弧都是弧一致的;若某域为空则 CSP 无解
唯一性
AC-3 保证得到的弧一致 CSP 与消去弧的次序无关,结果唯一
不完备性
弧一致不等于可满足;弧一致的 CSP 可能仍无解(需更高一致性或搜索)
时间复杂度
每条弧最多入队 d d d 次(因为 D i D_i D i 最多被删 d d d 次,每次删除导致指向 X i X_i X i 的弧重新入队)
共有 O ( n 2 ) O(n^2) O ( n 2 ) 条有向弧(二元 CSP 中最多每对变量有一条约束)
每次 REVISE 检查 O ( d 2 ) O(d^2) O ( d 2 ) 对值
总复杂度:O ( n 2 d 3 ) O(n^2 d^3) O ( n 2 d 3 ) (或更精确地 O ( e d 3 ) O(e d^3) O ( e d 3 ) ,其中 e e e 为约束数)
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 与澳洲大陆)。
可大幅缩减搜索空间。
子问题分解的收益
⭐ 树结构 CSP (Tree-structured CSPs)
一般 CSP 最坏时间 O ( d n ) O(d^n) O ( d n ) ;树结构 CSP 可在 O ( n d 2 ) O(n d^2) O ( n d 2 ) 线性时间求解 。
此性质也适用于逻辑与概率推理——语法限制 (syntactic restrictions) 与推理复杂度关系 的重要范例。
树结构 CSP 算法
任选一变量为根,按拓扑排序使父→子方向一致。
从 X n X_n X n 倒序到 X 2 X_2 X 2 ,对每条父子弧 ( X k , X i ) (X_k,X_i) ( X k , X i ) (X k = Parent ( X i ) X_k=\text{Parent}(X_i) X k = Parent ( X i ) )应用弧相容:
RemoveInconsistent(Parent(X_i), X_i)。
现在可从 X 1 X_1 X 1 起按剩余值域一次性赋值而不产生冲突:从 i = 1 i=1 i = 1 到 n n n ,X i X_i X i 与 Parent ( X i ) \text{Parent}(X_i) Parent ( X i ) 相容地赋值。
复杂度:O ( n d 2 ) O(n d^2) O ( n d 2 ) 。
近树结构与树分解 (Tree Decomposition)
现实问题常近树结构。树分解 :把问题分解为一组连通子问题,两子问题共享约束时相连;独立求解后合并。
注:树分解与割集条件化 (cutset conditioning) 的图示细节,提取文本未完整呈现,需对照原课件查看 。
1.8 CSP 的局部搜索 (Iterative Algorithms)
爬山、模拟退火等通常工作于完全状态 (complete states) (所有变量都已赋值)。
应用于 CSP:允许状态违反约束;算子是重赋值 某变量。
变量选择 :随机选任一冲突变量。
⭐ 值选择:最小冲突 (min-conflicts) 启发式 ——选造成与其他变量冲突最少的值;即以 h ( n ) = 违反的约束总数 h(n)=\text{违反的约束总数} h ( n ) = 违反的约束总数 爬山。
示例:4-Queens 与 3-SAT
min-conflicts 对 4-queens 及(可满足的)3-SAT 实例常很有效。
加速手段
模拟退火 (simulated annealing) :以随温度 T T T 下降的概率接受"坏"移动,逃出局部极大。
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) CSP = ( X , D , C )
X = { X 1 , … , X n } X = \{X_1, \dots, X_n\} X = { X 1 , … , X n } :变量集合。
D = { D 1 , … , D n } D = \{D_1, \dots, D_n\} D = { D 1 , … , D n } :每个变量的取值域。
C C C :约束集合,限制变量之间可同时取哪些值。
目标:给每个变量赋值,使所有约束同时满足。
例:地图染色
变量:每个地区,如 WA, NT, SA, Q, NSW, V, T。
域:{ r e d , g r e e n , b l u e } \{red, green, blue\} { r e d , g r e e n , b l u e } 。
约束:相邻地区颜色不同,如 W A ≠ N T WA \neq NT W A = N T 。
1.2. CSP 与普通搜索的区别
普通搜索状态可能是世界任意配置;CSP 状态通常是部分赋值 :W A = r e d , N T = g r e e n WA = red,\; NT = green W A = r e d , N T = g r e e n 。
行动是给一个尚未赋值变量赋值。
目标测试是所有变量都有值且所有约束满足。
CSP 的优势:约束结构明确,可以用通用推理减少搜索。
1.3. 约束类型
一元约束:只涉及一个变量,如 X ≠ r e d X \neq red X = r e d 。
二元约束:涉及两个变量,如 W A ≠ N T WA \neq NT W A = N T 。
高阶约束:涉及多个变量,如 Alldiff ( A , B , C , D ) \text{Alldiff}(A,B,C,D) 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
每赋值一个变量,就删除邻居变量域中不再合法的值。若某个未赋值变量域变空,立刻回溯。
例:地图染色,赋 W A = r e d WA=red W A = r e d 后,从 NT 和 SA 的域中删掉 red。
优点:简单有效。缺点:只看一步邻居,不能发现更深层的隐含冲突。
2.6. Arc Consistency 弧相容
对二元约束 X i → X j X_i \to X_j X i → X j ,若对 X i X_i X i 域中每个值 x x x ,都存在 X j X_j X j 域中某个值 y y y 使约束满足,则称弧 X i → X j X_i \to X_j X i → X j 相容。
若某个 x x x 找不到支持值,就从 D i D_i D i 中删除 x x x 。
注意方向性:X i → X j X_i \to X_j X i → X j 相容不代表 X j → X i X_j \to X_i X j → 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 复杂度
若:n n n 个变量;每个变量域大小最多 d d d ;c c c 条二元约束。
每次 REVISE 最多 O ( d 2 ) O(d^2) O ( d 2 ) ,每条弧最多被重新检查 O ( d ) O(d) O ( d ) 次,常见结论:O ( c d 3 ) O(cd^3) O ( c d 3 ) 。
树结构 CSP 可在线性量级求解,常见教材结论:O ( n d 2 ) O(nd^2) O ( n d 2 ) 。作业题若问"树结构 CSP 上 AC-3 最坏复杂度",通常写 O ( n d 2 ) O(nd^2) O ( n d 2 ) ,因为树中边数 O ( n ) O(n) O ( n ) ,每条边处理受限。
3. 结构与典型题
3.1. 树结构 CSP
若约束图是树,可以不回溯地求解:
任选根,给变量排序,使父节点在子节点之前。
从叶子到根,对每条边执行 RemoveInconsistent(Parent, Child)。
从根到叶依次赋值:父节点定值后,给子节点选任一与父值相容的值。
复杂度:O ( n d 2 ) O(nd^2) O ( n d 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. 密码算术题思路
例如:
变量: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) Alldiff ( S , E , N , D , M , O , R , Y ) 。
首字母 S ≠ 0 , M ≠ 0 S \neq 0,\; M \neq 0 S = 0 , M = 0 。
每列加法和进位约束。
求解技巧:先写进位变量;使用 MRV(例如最高位常能推 M = 1 M=1 M = 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 ( n d 2 ) O(nd^2) O ( n d 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) ,使得无论对手如何应对,我方都能保证一个尽量好的收益。
本章分两大块:
经典博弈搜索 (lec6):博弈类型分类 → Minimax 最优策略 → α-β 剪枝 → 资源受限下的启发式评估 → 期望极小极大(含随机性)→ 不完全信息博弈。
蒙特卡洛树搜索 MCTS (MCTS.pdf):以随机抽样替代精确遍历,用 UCB1/UCT 平衡探索与利用,四步循环 (Selection / Expansion / Simulation / Backpropagation);并以 AlphaGo (PUCT) 为代表讲深度 MCTS。
子主题
核心内容
重要程度
博弈分类
确定/随机、完全/不完全信息、零和;正常形式与扩展式博弈
⭐⭐⭐
正常形式博弈与 Nash 均衡
元组定义、最优反应、Nash 均衡存在性
⭐⭐
Minimax 算法
MAX/MIN 节点、最优策略、复杂度 O ( b m ) O(b^m) O ( b m )
⭐⭐⭐
α-β 剪枝
α/β 含义、剪枝条件 β<α、完美排序 O ( b m / 2 ) O(b^{m/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 > 300 b>300 b > 3 0 0 (19×19 棋盘),博弈树规模 > 1 0 170 >10^{170} > 1 0 1 7 0 ;
国际象棋 (Chess):b ≈ 35 b\approx 35 b ≈ 3 5 ,合理对局深度 m ≈ 100 m\approx 100 m ≈ 1 0 0 。
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 博弈论基础:正常形式博弈
⭐ 正常形式(矩阵)博弈定义为元组 ( n , A 1 … n , R 1 … n ) (n,\,A_{1\ldots n},\,R_{1\ldots n}) ( n , A 1 … n , R 1 … n ) :
n n n :智能体数;
A i A_i A i :玩家 i i i 的动作集;联合动作集 A = A 1 × ⋯ × A n A=A_1\times\cdots\times A_n A = A 1 × ⋯ × A n ;
R i : A → R R_i:A\to\mathbb{R} R i : A → R :玩家 i i i 的奖励函数。
每个玩家 i i i 选择策略 π i : A i → [ 0 , 1 ] \pi_i:A_i\to[0,1] π i : A i → [ 0 , 1 ] (π i ∈ P D ( A i ) \pi_i\in PD(A_i) π i ∈ P D ( A i ) ,即动作上的概率分布),以概率 π i ( a i ) \pi_i(a_i) π i ( a i ) 取动作 a i a_i a i ,获得效用 R i ( a 1 , … , a n ) R_i(a_1,\ldots,a_n) R i ( a 1 , … , a n ) 。给定策略组合 ⟨ π 1 , … , π n ⟩ \langle\pi_1,\ldots,\pi_n\rangle ⟨ π 1 , … , π n ⟩ ,玩家 i i i 的期望效用为:
R i ( π 1 , … , π n ) = ∑ a ∈ A R i ( a ) ∏ j = 1 n π j ( a j ) R_i(\pi_1,\ldots,\pi_n)=\sum_{a\in A} R_i(a)\prod_{j=1}^{n}\pi_j(a_j)
R i ( π 1 , … , π n ) = a ∈ A ∑ R i ( a ) j = 1 ∏ n π j ( a j )
所有玩家都想最大化自己的期望效用。这是一次性交互 (one-shot),可表示为 n n n 维收益矩阵。
经典例子:囚徒困境 (Prisoners’ Dilemma) 、石头剪刀布 (Rock-Paper-Scissors) 。(收益矩阵见原课件图,需对照原课件查看。)
最优性概念 (Optimality Concepts)
最优反应 (Best-Response Function) :给定其他玩家当前策略,使自身效用最大的策略集。
π i ∗ ∈ B R i ( π − i ) iff ∀ π i ∈ P D ( A i ) , R i ( ⟨ π i ∗ , π − i ⟩ ) ≥ R i ( ⟨ π 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)
π i ∗ ∈ B R i ( π − i ) iff ∀ π i ∈ P D ( A i ) , R i ( ⟨ π i ∗ , π − i ⟩ ) ≥ R i ( ⟨ π i , π − i ⟩ )
⭐ 纳什均衡 (Nash Equilibrium) :所有玩家都在使用最优反应策略。
∀ i = 1 … n , π i ∈ B R i ( π − i ) \forall i=1\ldots n,\ \ \pi_i\in BR_i(\pi_{-i})
∀ i = 1 … n , π i ∈ B R i ( π − i )
定理 :所有正常形式博弈至少存在一个 Nash 均衡(可能为混合策略)。
双人零和博弈
两对手对抗;对称奖励(始终和为零)。
通常只有一个均衡 ;若存在多个,则它们可互换 (interchangeable) :若 ⟨ π 1 , π 2 ⟩ \langle\pi_1,\pi_2\rangle ⟨ π 1 , π 2 ⟩ 和 ⟨ μ 1 , μ 2 ⟩ \langle\mu_1,\mu_2\rangle ⟨ μ 1 , μ 2 ⟩ 都是 Nash 均衡,则 ⟨ π 1 , μ 2 ⟩ \langle\pi_1,\mu_2\rangle ⟨ π 1 , μ 2 ⟩ 、⟨ μ 1 , π 2 ⟩ \langle\mu_1,\pi_2\rangle ⟨ μ 1 , π 2 ⟩ 也是,且效用相等。
Minimax 定理 :在策略空间上,
max π ∈ P D ( A ) min o ∈ O ∑ a ∈ A π ( a ) R ( a , o ) \max_{\pi\in PD(A)}\min_{o\in O}\sum_{a\in A}\pi(a)\,R(a,o)
π ∈ P D ( A ) max o ∈ O min a ∈ A ∑ π ( a ) R ( a , o )
可形式化为一个线性规划 (Linear Program) 求解。注意:同时出招使得确定性策略失效 ,必须用混合策略。
6.4 Minimax 搜索 ⭐⭐⭐
基本设定
针对确定性、完全信息、双人、轮流、零和 博弈(如 tic-tac-toe、Chess、Checkers):
博弈是一棵状态空间搜索树 (game tree) ,玩家交替落子;
每一层(ply ,一"层"= 一个玩家的一回合);
一方(MAX )最大化结果,另一方(MIN )最小化结果。
Minimax 原理
假设双方都按最优策略行棋 ;
我方走完后,假设对手会选择使结果最小化 的着法;
我方在选择时,要同时考虑自己的着法和对手的最优应对。
Minimax 值与定义
⭐ Minimax 值 (minimax value) :在对手也使用最优策略的条件下,能导致至少不比其它策略差的结果——即"best achievable payoff against best play"。
Minimax ( s ) = { Utility ( s ) 若 s 为终局 max a Minimax ( Result ( s , a ) ) 若 s 为 MAX 节点 min a Minimax ( 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}
Minimax ( s ) = ⎩ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎧ Utility ( s ) a max Minimax ( Result ( s , a ) ) a min Minimax ( Result ( s , a ) ) 若 s 为终局 若 s 为 MAX 节点 若 s 为 MIN 节点
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 ( b m ) O(b^m) O ( b m ) (b b b =分支因子,m m m =最大深度)
空间复杂度
O ( b m ) O(bm) O ( b m ) (深度优先探索)
对国际象棋 b ≈ 35 , m ≈ 100 b\approx35,\ m\approx100 b ≈ 3 5 , m ≈ 1 0 0 → 精确求解完全不可行 。引出剪枝需求。
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 的最佳(最大值)选择";若某值 v v v 比 α 还差,MAX 会回避它,故可停止考察 v v v 的其余子节点。β 对 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 ( b m ) O(b^m) O ( b m ) ;
最好情况 / 完美排序 (perfect ordering) :⭐ 时间复杂度 = O ( b m / 2 ) =O(b^{m/2}) = O ( b m / 2 ) → 可搜索深度翻倍 ;
实际中性能更接近最好情况。
这是"元推理 (metareasoning) “——推理"哪些计算是相关的”——的一个简单例子。
即便如此,国际象棋 3 5 50 35^{50} 3 5 5 0 仍不可能穷举 → 还需启发式评估。
课件中 α-β 剪枝的多张分步示例图(Minimax 值回填、剪枝发生过程)以图示为主,需对照原课件查看。
6.6 资源受限下的近似评估
评估函数 (Evaluation Function)
当无法搜索到终局时,在深度限制 (depth limit) 处用一个启发式评估函数 EVAL(s) 估计当前局面对我方的好坏。
⭐ 线性评估函数 (linear weighted sum of features) :
EVAL ( s ) = w 1 f 1 ( s ) + w 2 f 2 ( s ) + w 3 f 3 ( s ) + ⋯ \text{EVAL}(s)=w_1 f_1(s)+w_2 f_2(s)+w_3 f_3(s)+\cdots
EVAL ( s ) = w 1 f 1 ( s ) + w 2 f 2 ( s ) + w 3 f 3 ( s ) + ⋯
f i f_i f i 为特征 (features) (由领域专家构造,如国际象棋的子力、王安全、兵形等);
w i w_i w i 为权重 ,越重要的特征权重越大(可人工设定或学习 得到,参见 Samuel 1952–57);
棋艺质量直接取决于评估函数的质量 。
序数效用 (Ordinal Utility) —— 确定性博弈中精确值不重要
⭐ 行为在任何对 EVAL 的单调变换 (monotonic transformation) 下保持不变;只有值的顺序 (order) 重要 :
payoff 在确定性博弈中起的是序数效用 (ordinal utility) 函数的作用 \text{payoff 在确定性博弈中起的是序数效用 (ordinal utility) 函数的作用}
payoff 在确定性博弈中起的是序数效用 (ordinal utility) 函数的作用
应对时间限制:迭代加深搜索 (IDS)
实际对局有每步时间上限 T T T ;α-β 不能中途停下使用结果。
做法:迭代加深搜索 (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 , A 1 , … , n , T , R 1 , … , n ) (n,S,A_{1,\ldots,n},T,R_{1,\ldots,n}) ( n , S , A 1 , … , n , T , R 1 , … , n ) :
n n n :智能体数;
S S S :状态集;
A i A_i A i :玩家 i i i 的动作集,A = A 1 × ⋯ × A n A=A_1\times\cdots\times A_n A = A 1 × ⋯ × A n 为联合动作集;
T : S × A × S → [ 0 , 1 ] T:S\times A\times S\to[0,1] T : S × A × S → [ 0 , 1 ] :转移函数,依赖所有玩家 的动作;
R : S × A × S → R R:S\times A\times S\to\mathbb{R} R : S × A × S → R :奖励函数(期望值),同样依赖所有玩家的动作。
每个玩家 i i i 选择策略 π i : S → P D ( A i ) \pi_i:S\to PD(A_i) π i : S → P D ( A i ) (π i ( a i ∣ s ) \pi_i(a_i\mid s) π i ( a i ∣ s ) ),联合策略 π = ⟨ π i , π − i ⟩ \pi=\langle\pi_i,\pi_{-i}\rangle π = ⟨ π i , π − i ⟩ 。它具有马尔可夫性 (Markovian) ,但从单个玩家视角看并非马尔可夫(因他人策略未知)。
最优性概念(带折扣)
考虑折扣累积奖励(同 MDP):
V π i ( s ) = E [ ∑ k = 0 ∞ γ k r t + k + 1 i | s t = s , π ] = ∑ a π ( s , a ) ∑ s ′ T ( s , a , s ′ ) [ R i ( 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]
V π i ( s ) = E [ k = 0 ∑ ∞ γ k r t + k + 1 i ∣ ∣ ∣ ∣ ∣ ∣ s t = s , π ] = a ∑ π ( s , a ) s ′ ∑ T ( s , a , s ′ ) [ R i ( s , a , s ′ ) + γ V π i ( s ′ ) ]
Q π i ( s , a ) = ∑ s ′ T ( s , a , s ′ ) [ R i ( 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]
Q π i ( s , a ) = s ′ ∑ T ( s , a , s ′ ) [ R i ( s , a , s ′ ) + γ V π i ( s ′ ) ]
最优反应 (Best-Response) :以状态价值为参考,
π i ∗ ∈ B R i ( π − i ) \pi_i^{*}\in BR_i(\pi_{-i}) π i ∗ ∈ B R i ( π − i ) iff ∀ π i , ∀ s ∈ S : V i ⟨ π i ∗ , π − i ⟩ ( s ) ≥ V i ⟨ π 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) ∀ π i , ∀ s ∈ S : V i ⟨ π i ∗ , π − i ⟩ ( s ) ≥ V i ⟨ π i , π − i ⟩ ( s ) 。
Nash 均衡 :所有玩家都使用最优反应策略。
⭐ 最大期望效用原则 (Maximum Expected Utility)
“Why should we average utilities? Why not minimax?”
最大期望效用原则 :智能体应在自身知识下选择最大化期望效用 的动作。这是决策的一般原则,常被视为理性的定义 ,将贯穿全课程。
Expectiminimax 算法
对随机博弈(如西洋双陆棋 Backgammon),博弈树中引入第三种节点 CHANCE(机会节点) ,按各结果的概率取期望:
Expectiminimax ( s ) = { Utility ( s ) 终局 max a Expectiminimax ( Result ( s , a ) ) MAX min a Expectiminimax ( Result ( s , a ) ) MIN ∑ r P ( 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}
Expectiminimax ( s ) = ⎩ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎧ Utility ( s ) max a Expectiminimax ( Result ( s , a ) ) min a Expectiminimax ( Result ( s , a ) ) r ∑ P ( r ) Expectiminimax ( Result ( s , r ) ) 终局 MAX MIN CHANCE
⚠️ 随机博弈中"精确值重要"
与确定性博弈(6.6,序数效用)相反:在含随机性的博弈中,精确的数值确实重要 (Exact values DO matter) ——因为 CHANCE 节点要对不同分支做加权平均 ,数值的相对大小(而非仅顺序)直接影响期望。
例:桥牌、德州扑克等纸牌游戏 ——对手初始手牌未知。通常可为每种发牌计算一个概率。
思路:期望极小极大 (Expectiminimax over deals)
在评价一个有未知牌的给定行动过程时,首先计算出每副可能牌 的出牌行动的极小极大值,然后再用每副牌的概率 计算得到对所有发牌情况的期望值 。
形式化:对所有可能的"发牌 (deal)" d d d (概率 P ( d ) P(d) P ( d ) ):
计算每个动作 a a a 在该 deal 下的极小极大值 MinimaxValue ( a , d ) \text{MinimaxValue}(a,d) MinimaxValue ( a , d ) ;
选择 arg max a ∑ d P ( d ) ⋅ MinimaxValue ( a , d ) \arg\max_a\sum_d P(d)\cdot\text{MinimaxValue}(a,d) arg max a ∑ d P ( d ) ⋅ 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)则试图最小化游戏结果。
零和:输、赢、平。
完全信息:两人都可以看到整个游戏的全部状态。
确定性:行动的结果是确定的。
例如井字棋、国际象棋、围棋。
形式化包含:
初始状态。
当前状态 s s s ,游戏中棋盘或环境的当前配置。
当前行动方 Player ( s ) \text{Player}(s) Player ( s ) 。
合法行动 Actions ( s ) \text{Actions}(s) Actions ( s ) 。
转移模型 Result ( s , a ) \text{Result}(s,a) Result ( s , a ) ,表示 s s s 经过 a a a 的后继状态。
终止测试 Terminal-Test ( s ) \text{Terminal-Test}(s) Terminal-Test ( s ) ,用于判断游戏是否已经到达终局。
效用函数 Utility ( s , player ) \text{Utility}(s, \text{player}) Utility ( s , player ) ,当游戏结束时,用于评估当前终止状态的 player 最终得分或收益。
零和意味着:Utility ( s , MAX ) + Utility ( s , MIN ) = 0 \text{Utility}(s, \text{MAX}) + \text{Utility}(s, \text{MIN}) = 0 Utility ( s , MAX ) + Utility ( s , MIN ) = 0 。
1.2. Minimax 原理
Minimax 算法是一个悲观算法,其假设对手非常强大,招招致命,为了让自己死得不太难看,选择能够最优化最坏结果的策略。
输入:当前状态 s s s ,游戏规则 rule。
输出:下一步的行动 a a a ,该行动能够让我的最低收益最大化,选择其他行动的最坏结果不可能比这个好。
操作:
从 s s s ,根据 rule 推导出全部的对局可能(博弈树)。
从叶子节点往上,算出所有节点的 Minimax 值。
return arg max a MinimaxValue ( Result ( s , a ) ) \arg\max_a \text{MinimaxValue}(\text{Result}(s, a)) arg max a MinimaxValue ( Result ( s , a ) ) 。
MinimaxValue 计算方式:
叶子节点:其效用值就是 Minimax 值。
Max 节点:取子节点中的最大值作为 Minimax 值。
Min 节点:取子节点中的最小值作为 Minimax 值。
1.3. Minimax 特性
完备性 :如果博弈树是有限的,该算法是完备的。
最优性 :当对手采用最优策略时,该算法保证能找到最优解。
时间复杂度 :O ( b m ) O(b^m) O ( b m ) ,其中 b b b 是分支因子,m m m 是树的最大深度。
空间复杂度 :因为该算法基于深度优先探索,空间复杂度为 O ( b m ) O(bm) O ( b m ) 。
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 返回值}) α = max ( α , Min 返回值 ) ,比 α \alpha α 大就更新。
Min:β = min ( β , Max 返回值 ) \beta = \min(\beta, \text{Max 返回值}) β = min ( β , Max 返回值 ) ,比 β \beta β 小就更新。
剪枝:
一句话:当在一个节点得到子节点返回值 v v v 并更新后,若 α ≥ β \alpha \geq \beta α ≥ β ,该节点不再探索后续子节点,也不向父节点返回值。
两句话:
MAX 节点:若当前值 v ≥ β v \geq \beta v ≥ β ,剪掉剩余子节点。
MIN 节点:若当前值 v ≤ α v \leq \alpha v ≤ α ,剪掉剩余子节点。
2.2. Alpha-Beta 手算规则
从左到右搜索时:
根节点:α = − ∞ , β = + ∞ \alpha = -\infty,\; \beta = +\infty α = − ∞ , β = + ∞ 。
下传当前 ( α , β ) (\alpha, \beta) ( α , β ) 窗口。
从左到右依次看子节点的值 v v v 。
MAX 节点不断更新 α = max ( α , v ) \alpha = \max(\alpha, v) α = max ( α , v ) 。
MIN 节点不断更新 β = min ( β , v ) \beta = \min(\beta, v) β = min ( β , v ) 。
一旦 α ≥ β \alpha \geq \beta α ≥ β ,当前节点后面没看的兄弟分支全部剪掉,该节点不用返回值,返回也不会导致父节点更新。
若没有发生剪枝,照常返回 Minimax 值,更新父节点的 α \alpha α 或 β \beta β 。
答题时要注意:
看清当前节点是 Max 还是 Min,不要更新错了,尤其是回传的时候对父节点的更新。
哪个节点处剪枝。
被剪掉的是哪些叶子或子树。
已经访问过的节点不能算剪枝。
2.3. 正确性分析
若在 MIN 节点发现 v ≤ α v \leq \alpha v ≤ α :
MAX 的祖先已经有一个选择能保证至少 α \alpha α 。
当前 MIN 节点最终值只会更小或相等。
MAX 永远不会选择这条路,所以剩余子节点无关。
若在 MAX 节点发现 v ≥ β v \geq \beta v ≥ β :
MIN 的祖先已经有一个选择能把结果压到至多 β \beta β 。
当前 MAX 节点最终值只会更大或相等。
MIN 永远不会允许这条路,所以剩余子节点无关。
2.4. 剪枝效率
最坏排序:几乎不剪,O ( b m ) O(b^m) O ( b m ) 。
最优排序:约 O ( b m / 2 ) O(b^{m/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 ) = 3 X 2 ( s ) + X 1 ( s ) − ( 3 O 2 ( s ) + O 1 ( s ) ) \text{Eval}(s) = 3X_2(s) + X_1(s) - (3O_2(s) + O_1(s)) Eval ( s ) = 3 X 2 ( s ) + X 1 ( s ) − ( 3 O 2 ( s ) + O 1 ( s ) )
其中:
X n X_n X n :恰好有 n n n 个 X 且无 O 的行/列/对角线数。
O n O_n O n :恰好有 n n n 个 O 且无 X 的行/列/对角线数。
3.3. Horizon Effect 水平线效应
深度限制可能把必然发生的坏事推到搜索边界之外,导致评估函数看不见。
缓解:
quiescence search:在局面剧烈变化时继续搜到稳定局面。
iterative deepening:逐步加深并保留当前最好结果。
3.4. 随机博弈 Expectiminimax
若有随机事件,如掷骰子,加入 chance 节点。递归:
MAX 节点取最大。
MIN 节点取最小。
Chance 节点取期望:∑ i P ( i ) ∗ value ( child i ) \sum_i P(i) * \text{value}(\text{child}_i) ∑ i P ( i ) ∗ value ( child i ) 。
低概率考,记住 chance 节点不是 max/min,而是加权平均。
3.5. 不完全信息博弈
如牌类游戏,玩家不知道完整状态。核心概念:
belief state:对可能真实状态的概率分布。
information set:玩家无法区分的一组状态。
本课只需概念了解。
3.6. MCTS 蒙特卡洛树搜索(不考)
来源:隔壁班 MCTS.pdf。考试重点写"蒙特卡洛不考",这里只保留概念。
MCTS 四步:
Selection :从根按策略选择到叶子。
Expansion :扩展一个新节点。
Simulation/Rollout :随机模拟到终局。
Backpropagation :把结果回传更新访问次数和价值。
常用 UCB/UCT 平衡探索与利用:UCT = exploitation + exploration \text{UCT} = \text{exploitation} + \text{exploration} UCT = exploitation + 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 v ≥ β 可剪;MIN 节点 v ≤ α v \leq \alpha v ≤ α 可剪。
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) M ( f )
⭐⭐⭐
命题逻辑形式系统
Hilbert 公理 (L1)-(L3)+MP;形式证明/推导
⭐⭐
逻辑等值律
交换/结合/双否/逆否/蕴含消去/De Morgan/分配
⭐⭐⭐
Horn/确定子句
定义;Modus Ponens 在 Horn 上完备且线性
⭐⭐⭐
前向链/反向链
数据驱动 vs 目标驱动;线性时间
⭐⭐⭐
命题归结 (Resolution)
CNF;归结规则;反演:KB ⊨ p ⟺ KB ∧ ¬ p \text{KB}\models p\iff\text{KB}\land\lnot p KB ⊨ p ⟺ KB ∧ ¬ 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) 的区别:前者施加一组保真规则紧凑地推导(如由 X 1 + X 2 = 10 , X 1 − X 2 = 4 X_1+X_2=10,\ X_1-X_2=4 X 1 + X 2 = 1 0 , X 1 − X 2 = 4 直接推 X 1 = 7 X_1=7 X 1 = 7 );后者直接枚举赋值验证。
逻辑的历史地位
1990 年代前是 AI 主导范式。
缺点 1:确定性 (deterministic),不处理不确定性 → 概率论解决。
缺点 2:规则化,难从数据微调 → 机器学习解决。
优点:紧凑的表达能力 (expressivity)——尚未被概率/ML 完全取代。
两个目标:Elaboration Tolerance 与统一表示
Elaboration Tolerance (McCarthy, 1998) :形式化应方便地修改以纳入新现象/新情况。
统一问题表示 :问题实例 I I I 表示为事实集 P I P_I P I ,问题类 C C C 表示为规则集 P C P_C P C ,P C P_C P C 可解 C C C 中所有实例——即知识驱动软件 (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) ∀ x . Even ( x ) ⇒ 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{地湿}\} KB = { 下雨 , 下雨 ⇒ 地湿 } ⟹ 推出"地湿"。
逻辑 Agent 操作循环 :
TELL KB 新观察/新知识;
ASK KB 下一步采取什么行动;
执行行动,并 TELL KB 结果。
Agent 三层次(pl_fol 补充)
层次
内容
可佳机器人例
知识层次 (Knowledge Level)
最抽象,智能体拥有的知识
知道操作微波炉可加热食物
逻辑层次 (Logical Level)
知识编码为语句
process(micro,food) ⇒ het(food) \text{process(micro,food)}\Rightarrow\text{het(food)} process(micro,food) ⇒ het(food)
执行层次 (Implementation Level)
具体算法与数据结构
ASP 规则实现
KR 假设(Levesque 1986 引 Leibniz)
思维可理解作符号表示上的机械操作。如同算术有保值 (value-preserving) 演算,思想可有保真 (truth-preserving) 演算。
KR 根本问题 :平衡表达能力 (expressiveness) 与推理效率 (tractability) 。
1.3 Wumpus 世界 (Wumpus World)
PEAS 描述
维度
内容
Performance
抓金 +1000;被 Wumpus 吃/掉坑 −1000;每步 −1;射箭 −10
Environment
4×4 洞穴;Wumpus(相邻格发臭 stench)、陷阱 pit(相邻格微风 breeze)、金子(同格闪烁 glitter);Wumpus 与 pit 不动
Actuators
Forward / TurnLeft / TurnRight / Grab / Shoot
Sensors
stench / breeze / glitter / bump / scream
环境表征
Partially observable (仅局部感知当前格)、Deterministic 、Sequential 、Static 、Discrete 、Single-agent (Wumpus 实为自然特征)。
KB 推理示例
感知 breeze ⟹ 相邻方格可能有 pit;感知 stench ⟹ 相邻可能有 wumpus。据此标记安全方格并规划路径。(探索过程图示见原课件 lec7.pdf,需对照查看。)
1.4 逻辑的一般概念 (Ingredients of a Logic)
⭐ 一个逻辑由三要素构成:
要素
定义
例
语法 (Syntax)
合法公式集合
Rain ∧ Wet \text{Rain}\land\text{Wet} Rain ∧ Wet
语义 (Semantics)
每公式指定一组模型(世界赋值/配置)
—
推理规则 (Inference rules)
由 f f f 得保证成立的 g g g
Modus Ponens
核心关系
蕴涵 (Entailment) :KB ⊨ α \text{KB}\models\alpha KB ⊨ α iff α \alpha α 在所有 KB 为真的世界中为真 iff M ( KB ) ⊆ M ( α ) M(\text{KB})\subseteq M(\alpha) M ( KB ) ⊆ M ( α ) 。
推理 (Inference) :KB ⊢ α \text{KB}\vdash\alpha KB ⊢ α iff α \alpha α 可由某过程从 KB 推出(派生 derived)。
可靠性 (Soundness) :若 KB ⊢ α \text{KB}\vdash\alpha KB ⊢ α 则 KB ⊨ α \text{KB}\models\alpha KB ⊨ α (推出的都真)。
完备性 (Completeness) :若 KB ⊨ α \text{KB}\models\alpha KB ⊨ α 则 KB ⊢ α \text{KB}\vdash\alpha KB ⊢ α (真的都能推出)。
逻辑谱系(表达能力递增)
Horn 命题逻辑 < 命题逻辑 < 模态逻辑 (Modal) < 一阶 Horn < 一阶逻辑 (FOL) < 二阶逻辑 < 非单调逻辑(Default / Autoepistemic / Circumscription / MKNF)。
本体论约定 (ontological commitment) 与认识论约定 (epistemological commitment) 对比(lec8):
语言
本体论(世界中存在)
认识论(智能体相信)
命题逻辑
事实 (facts)
真/假/未知
一阶逻辑
事实、对象、关系
真/假/未知
时序逻辑 (Temporal)
事实、对象、关系、时间
真/假/未知
概率逻辑
事实
信度 ∈ [ 0 , 1 ] \in[0,1] ∈ [ 0 , 1 ]
1.5 命题逻辑语法 (Propositional Logic Syntax)
命题符号 (Propositional symbols / 原子公式) :A , B , C , … A,B,C,\dots A , B , C , …
联结词 (Logical connectives) :¬ , ∧ , ∨ , → , ↔ \lnot,\ \land,\ \lor,\ \to,\ \leftrightarrow ¬ , ∧ , ∨ , → , ↔
递归构造 :若 f , g f,g f , g 是公式,则 ¬ f , f ∧ g , f ∨ g , f → g , f ↔ g \lnot f,\ f\land g,\ f\lor g,\ f\to g,\ f\leftrightarrow g ¬ f , f ∧ g , f ∨ g , f → g , f ↔ g 也是公式。
公式本身只是符号(语法),尚无含义(语义)。
术语
术语
定义
Atom(原子)
原子公式(命题符号)
Literal(文字)
原子或其否定,如 A , ¬ A A,\ \lnot A A , ¬ A
Clause(子句)
文字的析取,如 A ∨ ¬ B ∨ C A\lor\lnot B\lor C A ∨ ¬ B ∨ C
形式系统 L L L (pl_fol,Hilbert 系统)
联结词 ¬ , → \lnot,\to ¬ , → 为基本;∧ , ∨ , ↔ \land,\lor,\leftrightarrow ∧ , ∨ , ↔ 为辅助,定义为:
p ∧ q = d f ¬ ( p → ¬ q ) p\land q\ =_{df}\ \lnot(p\to\lnot q) p ∧ q = d f ¬ ( p → ¬ q )
p ∨ q = d f ¬ p → q p\lor q\ =_{df}\ \lnot p\to q p ∨ q = d f ¬ p → q
p ↔ q = d f ¬ ( ( p → q ) → ¬ ( q → p ) ) p\leftrightarrow q\ =_{df}\ \lnot((p\to q)\to\lnot(q\to p)) p ↔ q = d f ¬ ( ( p → q ) → ¬ ( q → p ) )
公理模式 :
(L1) p → ( q → p ) p\to(q\to p) p → ( q → p )
(L2) ( p → ( q → r ) ) → ( ( p → q ) → ( p → r ) ) (p\to(q\to r))\to((p\to q)\to(p\to r)) ( p → ( q → r ) ) → ( ( p → q ) → ( p → r ) )
(L3) ( ¬ p → ¬ q ) → ( q → p ) (\lnot p\to\lnot q)\to(q\to p) ( ¬ p → ¬ q ) → ( q → p )
推理规则 (MP) :从 p , p → q p,\ p\to q p , p → q 推出 q q q 。
形式证明与推导(pl_fol)
形式证明 :p p p 的序列 p 1 , … , p n = p p_1,\dots,p_n=p p 1 , … , p n = p ,每步是公理或由前序 p i , p j ( = p i → p k ) p_i,p_j(=p_i\to p_k) p i , p j ( = p i → p k ) 经 MP。记 ⊢ p \vdash p ⊢ p (p p p 是 L L L 的内定理)。
形式推导(从 Γ \Gamma Γ ) :每步是公理、或属于 Γ \Gamma Γ 、或经 MP。记 Γ ⊢ p \Gamma\vdash p Γ ⊢ p 。
1.6 命题逻辑语义 (Semantics)
⭐ 模型 (Model) :w w w 是对命题符号的真值赋值。n n n 个命题符号 ⟹ 2 n 2^n 2 n 个模型。
⭐ 解释函数 (Interpretation function) I ( f , w ) ∈ { true ( 1 ) , false ( 0 ) } I(f,w)\in\{\text{true}(1),\text{false}(0)\} I ( f , w ) ∈ { true ( 1 ) , false ( 0 ) } :
基例:I ( p , w ) = w ( p ) I(p,w)=w(p) I ( p , w ) = w ( p ) 。
递归:
I ( ¬ f , w ) = ¬ I ( f , w ) I(\lnot f,w)=\lnot I(f,w) I ( ¬ f , w ) = ¬ I ( f , w )
I ( f ∧ g , w ) = I ( f , w ) ∧ I ( g , w ) I(f\land g,w)=I(f,w)\land I(g,w) I ( f ∧ g , w ) = I ( f , w ) ∧ I ( g , w )
I ( f ∨ g , w ) = I ( f , w ) ∨ I ( g , w ) I(f\lor g,w)=I(f,w)\lor I(g,w) I ( f ∨ g , w ) = I ( f , w ) ∨ I ( g , w )
I ( f → g , w ) = ¬ I ( f , w ) ∨ I ( g , w ) I(f\to g,w)=\lnot I(f,w)\lor I(g,w) I ( f → g , w ) = ¬ I ( f , w ) ∨ I ( g , w )
I ( f ↔ g , w ) = ( I ( f , w ) ↔ I ( g , w ) ) I(f\leftrightarrow g,w)=(I(f,w)\leftrightarrow I(g,w)) I ( f ↔ g , w ) = ( I ( f , w ) ↔ I ( g , w ) )
⭐ M ( f ) = { w ∣ I ( f , w ) = 1 } M(f)=\{w\mid I(f,w)=1\} M ( f ) = { w ∣ I ( f , w ) = 1 } :公式 f f f 满足的模型集。
⭐ 知识库 :M ( KB ) = ⋂ f ∈ KB M ( f ) M(\text{KB})=\bigcap_{f\in\text{KB}} M(f) M ( KB ) = ⋂ f ∈ KB M ( f ) (合取 / 交)。直觉:KB 给世界施加约束,M ( KB ) M(\text{KB}) M ( KB ) 是满足约束的所有世界。
1.7 核心语义关系
关系
定义
例
蕴涵 (Entailment) KB ⊨ f \text{KB}\models f KB ⊨ f
M ( f ) ⊇ M ( KB ) M(f)\supseteq M(\text{KB}) M ( f ) ⊇ M ( KB ) (f f f 未添加新信息)
Rain ∧ Snow ⊨ Snow \text{Rain}\land\text{Snow}\models\text{Snow} Rain ∧ Snow ⊨ Snow
矛盾 (Contradiction)
M ( KB ) ∩ M ( f ) = ∅ M(\text{KB})\cap M(f)=\emptyset M ( KB ) ∩ M ( f ) = ∅
Rain ∧ Snow \text{Rain}\land\text{Snow} Rain ∧ Snow 与 ¬ Snow \lnot\text{Snow} ¬ Snow
偶然 (Contingency)
∅ ⊂ M ( KB ) ∩ M ( f ) ⊂ M ( KB ) \emptyset\subset M(\text{KB})\cap M(f)\subset M(\text{KB}) ∅ ⊂ M ( KB ) ∩ M ( f ) ⊂ M ( KB )
Rain \text{Rain} Rain 与 Snow \text{Snow} Snow
可满足 (Satisfiable)
M ( KB ) ≠ ∅ M(\text{KB})\neq\emptyset M ( KB ) = ∅
—
命题 :KB contradicts f f f iff KB ⊨ ¬ f \text{KB}\models\lnot f KB ⊨ ¬ f 。
⭐ 核心等价(贯穿全章) :
KB ⊨ f ⟺ KB ∧ ¬ f 不可满足 \boxed{\ \text{KB}\models f\ \iff\ \text{KB}\land\lnot f\ \text{不可满足}\ }
KB ⊨ f ⟺ KB ∧ ¬ f 不可满足
TELL :把新句加入 KB;ASK :查询是否蕴涵某句。
1.8 有效性与可满足(pl_fol 补充)
有效 (valid) :所有模型为真。重言式 (tautology),如 p → p , ( ¬ p → p ) → p p\to p,\ (\lnot p\to p)\to p p → p , ( ¬ p → p ) → p 。
可满足 (satisfiable) :某些模型为真。
不可满足 (unsatisfiable) :无模型为真。永假式 (contradiction),如 p ∧ ¬ p p\land\lnot p p ∧ ¬ p 。
p p p 有效 iff ¬ p \lnot p ¬ p 不可满足。
复杂性(pl_fol)
判定 KB ⊨ p \text{KB}\models p KB ⊨ p :coNP-complete 。
判定 p p p (或 KB ∧ ¬ p \text{KB}\land\lnot p KB ∧ ¬ p )可满足:NP-complete 。
可靠性与完备性
⊢ \vdash ⊢ 可靠:Γ ⊢ p ⇒ Γ ⊨ p \Gamma\vdash p\Rightarrow\Gamma\models p Γ ⊢ p ⇒ Γ ⊨ p 。
⊢ \vdash ⊢ 完备:Γ ⊨ p ⇒ Γ ⊢ p \Gamma\models p\Rightarrow\Gamma\vdash p Γ ⊨ p ⇒ Γ ⊢ p 。
1.9 逻辑等值律 (Logical Equivalences) ⭐⭐⭐
若 ⊨ p ↔ q \models p\leftrightarrow q ⊨ p ↔ q ,则 p p p 与 q q q 逻辑等值。等值替换规则 :若 ⊨ q ↔ q ′ \models q\leftrightarrow q' ⊨ q ↔ q ′ ,则在 p p p 中用 q ′ q' q ′ 替换子公式 q q q 得 p ′ p' p ′ ,则 ⊨ p ↔ p ′ \models p\leftrightarrow p' ⊨ p ↔ p ′ 。
名称
等值式
∧ \land ∧ 交换律 (commutativity)
( p ∧ q ) ↔ ( q ∧ p ) (p\land q)\leftrightarrow(q\land p) ( p ∧ q ) ↔ ( q ∧ p )
∨ \lor ∨ 交换律
( p ∨ q ) ↔ ( q ∨ p ) (p\lor q)\leftrightarrow(q\lor p) ( p ∨ q ) ↔ ( q ∨ p )
∧ \land ∧ 结合律 (associativity)
( ( p ∧ q ) ∧ r ) ↔ ( p ∧ ( q ∧ r ) ) ((p\land q)\land r)\leftrightarrow(p\land(q\land r)) ( ( p ∧ q ) ∧ r ) ↔ ( p ∧ ( q ∧ r ) )
∨ \lor ∨ 结合律
( ( p ∨ q ) ∨ r ) ↔ ( p ∨ ( q ∨ r ) ) ((p\lor q)\lor r)\leftrightarrow(p\lor(q\lor r)) ( ( p ∨ q ) ∨ r ) ↔ ( p ∨ ( q ∨ r ) )
双否消去 (double-negation)
¬ ¬ p ↔ p \lnot\lnot p\leftrightarrow p ¬ ¬ p ↔ p
逆否 (contraposition)
( p → q ) ↔ ( ¬ q → ¬ p ) (p\to q)\leftrightarrow(\lnot q\to\lnot p) ( p → q ) ↔ ( ¬ q → ¬ p )
蕴含消去 (implication elim.)
( p → q ) ↔ ( ¬ p ∨ q ) (p\to q)\leftrightarrow(\lnot p\lor q) ( p → q ) ↔ ( ¬ p ∨ q )
双条件消去 (biconditional elim.)
( p ↔ q ) ↔ ( ( p → q ) ∧ ( q → p ) ) (p\leftrightarrow q)\leftrightarrow((p\to q)\land(q\to p)) ( p ↔ q ) ↔ ( ( p → q ) ∧ ( q → p ) )
De Morgan
¬ ( p ∧ q ) ↔ ( ¬ p ∨ ¬ q ) \lnot(p\land q)\leftrightarrow(\lnot p\lor\lnot q) ¬ ( p ∧ q ) ↔ ( ¬ p ∨ ¬ q ) ;¬ ( p ∨ q ) ↔ ( ¬ p ∧ ¬ q ) \lnot(p\lor q)\leftrightarrow(\lnot p\land\lnot q) ¬ ( p ∨ q ) ↔ ( ¬ p ∧ ¬ q )
∧ \land ∧ 对 ∨ \lor ∨ 分配 (distributivity)
( p ∧ ( q ∨ r ) ) ↔ ( ( p ∧ q ) ∨ ( p ∧ r ) ) (p\land(q\lor r))\leftrightarrow((p\land q)\lor(p\land r)) ( p ∧ ( q ∨ r ) ) ↔ ( ( p ∧ q ) ∨ ( p ∧ r ) )
∨ \lor ∨ 对 ∧ \land ∧ 分配
( p ∨ ( q ∧ r ) ) ↔ ( ( p ∨ q ) ∧ ( p ∨ r ) ) (p\lor(q\land r))\leftrightarrow((p\lor q)\land(p\lor r)) ( p ∨ ( q ∧ r ) ) ↔ ( ( p ∨ q ) ∧ ( p ∨ r ) )
1.10 合取范式 (CNF / DNF)
术语
定义
文字 (literal)
原子或其否定,如 x , ¬ x x,\ \lnot x x , ¬ x
子句 (clause)
文字析取,如 x 1 ∨ ¬ x 2 ∨ x 3 x_1\lor\lnot x_2\lor x_3 x 1 ∨ ¬ x 2 ∨ x 3
合取范式 CNF (Conjunctive Normal Form)
子句的合取,如 ( x 1 ∨ ¬ x 2 ) ∧ ( x 2 ∨ ¬ x 3 ∨ ¬ x 4 ) (x_1\lor\lnot x_2)\land(x_2\lor\lnot x_3\lor\lnot x_4) ( x 1 ∨ ¬ x 2 ) ∧ ( x 2 ∨ ¬ x 3 ∨ ¬ x 4 )
析取范式 DNF
文字合取项的析取
转 CNF 三步
消去 → \to → 和 ↔ \leftrightarrow ↔ (用蕴含消去 + 双条件消去);
¬ \lnot ¬ 深入(用 De Morgan + 双否消去);
对 ∧ \land ∧ 和 ∨ \lor ∨ 分配整理。
例 :( x 1 ∧ ( x 2 → x 3 ) ) → x 2 (x_1\land(x_2\to x_3))\to x_2 ( x 1 ∧ ( x 2 → x 3 ) ) → x 2
消 → \to → :¬ ( x 1 ∧ ( ¬ x 2 ∨ x 3 ) ) ∨ x 2 \lnot(x_1\land(\lnot x_2\lor x_3))\lor x_2 ¬ ( x 1 ∧ ( ¬ x 2 ∨ x 3 ) ) ∨ x 2
¬ \lnot ¬ 深入:( ¬ x 1 ∨ ( x 2 ∧ ¬ x 3 ) ) ∨ x 2 (\lnot x_1\lor(x_2\land\lnot x_3))\lor x_2 ( ¬ x 1 ∨ ( x 2 ∧ ¬ x 3 ) ) ∨ x 2
分配律:( ¬ x 1 ∨ x 2 ) ∧ ( ¬ x 1 ∨ x 2 ∨ ¬ x 3 ) (\lnot x_1\lor x_2)\land(\lnot x_1\lor x_2\lor\lnot x_3) ( ¬ x 1 ∨ x 2 ) ∧ ( ¬ x 1 ∨ x 2 ∨ ¬ x 3 )
1.11 模型检测 (Model Checking)
SAT(可满足性)= CSP 的特例(变量=命题符号,域 { T , F } \{T,F\} { T , F } ,约束=子句)。
算法
特点
真值表枚举
O ( 2 n ) O(2^n) O ( 2 n ) 时间,O ( n ) O(n) O ( n ) 空间
DPLL
回溯搜索 + 剪枝
WalkSat
随机局部搜索(可靠但不完备)
1.12 推理规则与证明方法
Modus Ponens (MP)
p , p → q q \frac{p,\quad p\to q}{q}
q p , p → q
推理规则一般式:f 1 , … , f k g \dfrac{f_1,\dots,f_k}{g} g f 1 , … , f k 。派生 (Derivation) :KB ⊢ f \text{KB}\vdash f KB ⊢ f iff f f f 最终加入 KB。
期望性质 (Desiderata)
可靠 (sound)、完备 (complete)、高效 (efficient)。
证明方法两大类
推理规则应用 :证明=推理规则应用序列;可作搜索问题(后继函数=规则所有可能应用);常需转正规形式。
模型检测 :真值表枚举 O ( 2 n ) O(2^n) O ( 2 n ) ;改进回溯 DPLL;启发式搜索(可靠但不完备,如 min-conflicts 爬山)。
1.13 Horn 子句与确定子句 ⭐
⭐ 确定子句 (Definite clause) :( p 1 ∧ ⋯ ∧ p k ) → q (p_1\land\dots\land p_k)\to q ( p 1 ∧ ⋯ ∧ p k ) → q ,其中 p i p_i p i (k ≥ 0 k\ge 0 k ≥ 0 )与 q q q 是命题符号。
例:( Rain ∧ Snow ) → Traffic (\text{Rain}\land\text{Snow})\to\text{Traffic} ( Rain ∧ Snow ) → Traffic ;Traffic \text{Traffic} Traffic (k = 0 k=0 k = 0 )。
非例:Rain ∧ Snow \text{Rain}\land\text{Snow} Rain ∧ Snow (非蕴涵)、¬ Traffic \lnot\text{Traffic} ¬ Traffic (含否定)、( Rain ∧ Snow ) → ( Traffic ∨ Peaceful ) (\text{Rain}\land\text{Snow})\to(\text{Traffic}\lor\text{Peaceful}) ( Rain ∧ Snow ) → ( Traffic ∨ Peaceful ) (结论为析取)。
⭐ Horn 子句 (Horn clause) :确定子句 或 目标子句 ( p 1 ∧ ⋯ ∧ p k ) → ⊥ (p_1\land\dots\land p_k)\to\bot ( p 1 ∧ ⋯ ∧ p k ) → ⊥ (等价 ¬ ( p 1 ∧ ⋯ ∧ p k ) \lnot(p_1\land\dots\land p_k) ¬ ( p 1 ∧ ⋯ ∧ p k ) )。
Modus Ponens on Horn clauses
p 1 , … , p k , ( p 1 ∧ ⋯ ∧ p k ) → q q \frac{p_1,\dots,p_k,\quad (p_1\land\dots\land p_k)\to q}{q}
q p 1 , … , p k , ( p 1 ∧ ⋯ ∧ p k ) → q
⭐ 定理(Horn 上完备) :若 KB 只含 Horn 子句且 p p p 是被蕴涵的命题符号,则 MP 必能推出 p p p 。即
KB ⊨ p ⟺ KB ⊢ p \text{KB}\models p\ \iff\ \text{KB}\vdash p
KB ⊨ p ⟺ KB ⊢ 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} α ∨ γ α ∨ β , ¬ β ∨ γ
归结算法
将公式化为子句集合(CNF);
反复使用归结规则;
无可添加新子句 ⟹ 可满足 ;出现空子句 □ \square □ ⟹ 不可满足 。
⭐ 归结反演 :证明 KB ⊨ p \text{KB}\models p KB ⊨ p ⟺ 证明 KB ∧ ¬ p \text{KB}\land\lnot p KB ∧ ¬ p 不可满足 ⟺ 转 CNF 后归结出空子句。
命题逻辑中归结算法可靠、完备 。
时间复杂度:指数级(子句数与归结步数)。
第二部分:一阶逻辑 (First-Order Logic, lec8)
2.1 为何需要 FOL?
命题逻辑的优缺点
优点 :
陈述性 (declarative) :知识与推理分离,且推理完全不依赖领域(对比程序设计语言的过程性)。
支持部分/析取/否定 信息(不像大多数数据库)。
组合性 (compositional) :复合句含义是各部分含义的函数。
上下文无关 (context-independent) (不像自然语言)。
缺点 :表达力弱 。不能说"陷阱在相邻方格引起微风",只能逐格写 B 1 , 1 ↔ ( P 1 , 2 ∨ P 2 , 1 ) B_{1,1}\leftrightarrow(P_{1,2}\lor P_{2,1}) B 1 , 1 ↔ ( P 1 , 2 ∨ 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} KingJohn , 2 , USTC
谓词 (Predicates)
Brother , > \text{Brother},\ > Brother , >
函数 (Functions)
Sqrt , LeftLegOf \text{Sqrt},\ \text{LeftLegOf} Sqrt , LeftLegOf
变量 (Variables)
x , y , a , b x,y,a,b x , y , a , b
联结词
¬ , ⇒ , ∧ , ∨ , ⇔ \lnot,\Rightarrow,\land,\lor,\Leftrightarrow ¬ , ⇒ , ∧ , ∨ , ⇔
等词 (Equality)
= = =
量词 (Quantifiers)
∀ , ∃ \forall,\ \exists ∀ , ∃
⭐ 项 (Term) = = = 函数(项1 , … , _1,\dots, 1 , … , 项n _n n ) 或 常量 或 变量。
⭐ 原子句 (Atomic sentence) = = = 谓词(项1 , … , _1,\dots, 1 , … , 项n _n n ) 或 项1 = _1= 1 = 项2 _2 2 。
例:Brother ( KingJohn , Richard ) \text{Brother}(\text{KingJohn},\text{Richard}) Brother ( KingJohn , Richard ) ;> ( Length ( LeftLegOf ( Richard ) ) , Length ( LeftLegOf ( KingJohn ) ) ) >(\text{Length}(\text{LeftLegOf}(\text{Richard})),\text{Length}(\text{LeftLegOf}(\text{KingJohn}))) > ( Length ( LeftLegOf ( Richard ) ) , Length ( LeftLegOf ( KingJohn ) ) ) 。
⭐ 复合句 (Complex sentence) :用联结词连接原子句。例 Sibling ( KingJohn , Richard ) ⇒ Sibling ( Richard , KingJohn ) \text{Sibling}(\text{KingJohn},\text{Richard})\Rightarrow\text{Sibling}(\text{Richard},\text{KingJohn}) Sibling ( KingJohn , Richard ) ⇒ Sibling ( Richard , KingJohn ) 。
形式系统 K K K (pl_fol)
符号表 :
逻辑符号:个体变元 x 1 , x 2 , … x_1,x_2,\dots x 1 , x 2 , … ;联结词 ¬ , → , ∧ , ∨ , ↔ \lnot,\to,\land,\lor,\leftrightarrow ¬ , → , ∧ , ∨ , ↔ ;量词 ∀ , ∃ \forall,\exists ∀ , ∃ 。
非逻辑符号:个体常元 a 1 , a 2 , … a_1,a_2,\dots a 1 , a 2 , … ;函项符号 f n , m f_{n,m} f n , m (按元数);谓词符号 P n , m P_{n,m} P n , m 。
形成规则 :
项 :(1) 变元/常元是项;(2) f f f 是 n n n 元函项符号,t i t_i t i 是项 ⟹ f ( t 1 , … , t n ) f(t_1,\dots,t_n) f ( t 1 , … , t n ) 是项。
公式 :(1) P P P 是 n n n 元谓词,t i t_i t i 项 ⟹ P ( t 1 , … , t n ) P(t_1,\dots,t_n) P ( t 1 , … , t n ) 原子公式;(2) ¬ p , p → q , p ∧ q , p ∨ q , p ↔ q \lnot p, p\to q, p\land q, p\lor q, p\leftrightarrow q ¬ p , p → q , p ∧ q , p ∨ q , p ↔ q 复合公式;(3) ∀ x p , ∃ x p \forall x\,p,\ \exists x\,p ∀ x p , ∃ x p 量化公式。
术语(pl_fol)
子公式 ;自由/约束出现 (∀ x p \forall x\,p ∀ x p 中 x x x 约束,p p p 为辖域);闭项/开项 (不含/含变元);闭公式/开公式 (无/有自由变元);项 t t t 对 p ( x ) p(x) p ( x ) 中 x x x 自由 (替换后 t t t 中变元仍自由)。
公理系统 K K K
(K1) p → ( q → p ) p\to(q\to p) p → ( q → p )
(K2) ( p → ( q → r ) ) → ( ( p → q ) → ( p → r ) ) (p\to(q\to r))\to((p\to q)\to(p\to r)) ( p → ( q → r ) ) → ( ( p → q ) → ( p → r ) )
(K3) ( ¬ p → ¬ q ) → ( q → p ) (\lnot p\to\lnot q)\to(q\to p) ( ¬ p → ¬ q ) → ( q → p )
(K4) ∀ x p ( x ) → p ( t ) \forall x\,p(x)\to p(t) ∀ x p ( x ) → p ( t ) (项 t t t 对 p ( x ) p(x) p ( x ) 中 x x x 自由)
(K5) ∀ x ( p → q ) → ( p → ∀ x q ) \forall x(p\to q)\to(p\to\forall x\,q) ∀ x ( p → q ) → ( p → ∀ x q ) (x x x 不在 p p p 自由出现)
推理规则:(MP) p , p → q ⊢ q p,p\to q\vdash q p , p → q ⊢ q ;(UG, Universal Generalization) p ⊢ ∀ x p p\vdash\forall x\,p p ⊢ ∀ x p 。
2.3 FOL 语义 (Semantics)
⭐ 语句真值由一个模型 (model) 和解释 (interpretation) 判定。
模型 含对象(域元素 domain elements)及其间关系。
解释 指定指代 (referents):
常量符号 ⟶ 对象
谓词符号 ⟶ 关系
函数符号 ⟶ 函数关系
原子句 predicate ( t 1 , … , t n ) \text{predicate}(t_1,\dots,t_n) predicate ( t 1 , … , t n ) 为真 iff t i t_i t i 指代的对象处于 predicate 指代的关系中。
形式语义(pl_fol)
一阶结构 M = ( D , F , P ) M=(D,F,P) M = ( D , F , P ) :论域 D D D (非空);D D D 上函数集 F F F ;D D D 上关系集 P P P 。
常元 a ↦ a M ∈ D a\mapsto a^M\in D a ↦ a M ∈ D ;n n n 元函数符号 ↦ f M : D n → D \mapsto f^M:D^n\to D ↦ f M : D n → D ;n n n 元谓词 ↦ P M ⊆ D n \mapsto P^M\subseteq D^n ↦ P M ⊆ D n 。
个体变元指派 V : Y → D V:Y\to D V : Y → D ;一阶解释 I = ( M , V ) I=(M,V) I = ( M , V ) 。
赋值:
I ( x ) = V ( x ) I(x)=V(x) I ( x ) = V ( x ) ;I ( f ( t 1 , … , t n ) ) = f M ( I ( t 1 ) , … , I ( t n ) ) I(f(t_1,\dots,t_n))=f^M(I(t_1),\dots,I(t_n)) I ( f ( t 1 , … , t n ) ) = f M ( I ( t 1 ) , … , I ( t n ) ) 。
P ( t 1 , … , t n ) P(t_1,\dots,t_n) P ( t 1 , … , t n ) 真 iff ( I ( t 1 ) , … , I ( t n ) ) ∈ P M (I(t_1),\dots,I(t_n))\in P^M ( I ( t 1 ) , … , I ( t n ) ) ∈ P M 。
∀ x p \forall x\,p ∀ x p 真 iff 对所有 d ∈ D d\in D d ∈ D ,I x = d ( p ) I_{x=d}(p) I x = d ( p ) 真。
∃ x p \exists x\,p ∃ x p 真 iff ¬ ∀ x ¬ p \lnot\forall x\,\lnot p ¬ ∀ x ¬ p 真。
I x = d = ( M , V ∣ x = d ) I_{x=d}=(M,V|_{x=d}) I x = d = ( M , V ∣ x = d ) ,V ∣ x = d ( y ) = { d y = x V ( y ) otherwise V|_{x=d}(y)=\begin{cases}d&y=x\\V(y)&\text{otherwise}\end{cases} V ∣ x = d ( y ) = { d V ( y ) y = x otherwise 。
模型与有效性(pl_fol)
M M M 有效 :对一切 V V V ,p p p 在 ( M , V ) (M,V) ( M , V ) 真 ⟹ M ⊨ p M\models p M ⊨ p 。
逻辑有效 :对一切结构 M M M ,M ⊨ p M\models p M ⊨ p ,记 ⊨ p \models p ⊨ p 。
模型 :M ⊨ Γ M\models\Gamma M ⊨ Γ (对 Γ \Gamma Γ 中所有 p p p ,M ⊨ p M\models p M ⊨ p )。
语义后承 Γ ⊨ p \Gamma\models p Γ ⊨ p :对一切 M M M ,M ⊨ Γ ⇒ M ⊨ p M\models\Gamma\Rightarrow M\models p M ⊨ Γ ⇒ M ⊨ p 。
FOL 公理系统与语义可靠、完备 。
FOL 模型无穷多
枚举 FOL 模型不可行:域个数 n : 1 → ∞ n:1\to\infty n : 1 → ∞ → 每个 k k k 元谓词的关系 → 每个常量指代… ⟹ 通过枚举模型检验蕴涵不可行。
FOL 的局限(pl_fol)
无法刻画极小、传递闭包等关系(如仅靠 parent 公理无法定义 ancestor 传递闭包,需归纳/不动点)。
2.4 量词 (Quantifiers) ⭐⭐⭐
全称量词 (Universal) ∀ \forall ∀
∀ x At ( x , USTC ) ⇒ Smart ( x ) \forall x\ \text{At}(x,\text{USTC})\Rightarrow\text{Smart}(x)
∀ x At ( x , USTC ) ⇒ Smart ( x )
“∀ x P \forall x\,P ∀ x P ” 在模型 m m m 中为真 iff 对每个对象 x x x ,P P P 为真。≈ 实例的合取式 。
⚠️ 常见错误 :∀ \forall ∀ 与 ∧ \land ∧ 搭配——∀ x At ( x , USTC ) ∧ Smart ( x ) \forall x\,\text{At}(x,\text{USTC})\land\text{Smart}(x) ∀ x At ( x , USTC ) ∧ Smart ( x ) 意为"所有人都在 USTC 且 都聪明"。正确:∀ \forall ∀ 配 ⇒ \Rightarrow ⇒ 。
存在量词 (Existential) ∃ \exists ∃
∃ x At ( x , USTC ) ∧ Smart ( x ) \exists x\ \text{At}(x,\text{USTC})\land\text{Smart}(x)
∃ x At ( x , USTC ) ∧ Smart ( x )
“∃ x P \exists x\,P ∃ x P ” 真 iff P P P 对某对象为真。≈ 实例的析取式 。
⚠️ 常见错误 :∃ \exists ∃ 与 ⇒ \Rightarrow ⇒ 搭配——∃ x At ( x , USTC ) ⇒ Smart ( x ) \exists x\,\text{At}(x,\text{USTC})\Rightarrow\text{Smart}(x) ∃ x At ( x , USTC ) ⇒ Smart ( x ) ,只要有人不在 USTC 即真!正确:∃ \exists ∃ 配 ∧ \land ∧ 。
量词性质
∀ x ∀ y = ∀ y ∀ x \forall x\forall y = \forall y\forall x ∀ x ∀ y = ∀ y ∀ x ;∃ x ∃ y = ∃ y ∃ x \exists x\exists y = \exists y\exists x ∃ x ∃ y = ∃ y ∃ x 。
但 ∃ x ∀ y ≠ ∀ y ∃ x \exists x\forall y \neq \forall y\exists x ∃ x ∀ y = ∀ y ∃ x :
∃ x ∀ y Loves ( x , y ) \exists x\forall y\,\text{Loves}(x,y) ∃ x ∀ y Loves ( x , y ) :“存在一人爱所有人”。
∀ y ∃ x Loves ( x , y ) \forall y\exists x\,\text{Loves}(x,y) ∀ y ∃ x Loves ( x , y ) :“每人被至少一人爱”。
⭐ 量词对偶 (Duality) :
∀ x P ≡ ¬ ∃ x ¬ P ∃ x P ≡ ¬ ∀ x ¬ P \forall x\,P \equiv \lnot\exists x\,\lnot P\qquad \exists x\,P \equiv \lnot\forall x\,\lnot P
∀ x P ≡ ¬ ∃ x ¬ P ∃ x P ≡ ¬ ∀ x ¬ P
等词 (Equality)
term 1 = term 2 \text{term}_1=\text{term}_2 term 1 = 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]
∀ x , y Sibling ( x , y ) ⇔ [ ¬ ( x = y ) ∧ ∃ m , f ¬ ( m = f ) ∧ Parent ( m , x ) ∧ Parent ( f , x ) ∧ Parent ( m , y ) ∧ Parent ( f , y ) ]
2.5 使用 FOL:领域建模
亲属域 (Kinship)
∀ x , y Brother ( x , y ) ⇒ Sibling ( x , y ) \forall x,y\ \text{Brother}(x,y)\Rightarrow\text{Sibling}(x,y) ∀ x , y Brother ( x , y ) ⇒ 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 Sibling ( x , y ) ⇒ 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 Mother ( x , y ) ⇔ ( Female ( x ) ∧ Parent ( x , y ) )
∀ x , y Cousin ( x , y ) ⇔ ∃ p , p s Parent ( p , x ) ∧ Sibling ( p s , p ) ∧ Parent ( p s , 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) ∀ x , y Cousin ( x , y ) ⇔ ∃ p , p s Parent ( p , x ) ∧ Sibling ( p s , p ) ∧ Parent ( p s , y )
集合域 (Set)
∀ s Set ( s ) ⇔ ( s = { } ) ∨ ( ∃ x , s 2 Set ( s 2 ) ∧ s = { x ∣ s 2 } ) \forall s\ \text{Set}(s)\Leftrightarrow(s=\{\})\lor(\exists x,s_2\ \text{Set}(s_2)\land s=\{x|s_2\}) ∀ s Set ( s ) ⇔ ( s = { } ) ∨ ( ∃ x , s 2 Set ( s 2 ) ∧ s = { x ∣ s 2 } )
空集不可分解:¬ ∃ x , s { x ∣ s } = { } \lnot\exists x,s\ \{x|s\}=\{\} ¬ ∃ x , s { x ∣ s } = { }
子集:∀ s 1 , s 2 s 1 ⊆ s 2 ⇔ ( ∀ x x ∈ s 1 ⇒ x ∈ s 2 ) \forall s_1,s_2\ s_1\subseteq s_2\Leftrightarrow(\forall x\ x\in s_1\Rightarrow x\in s_2) ∀ s 1 , s 2 s 1 ⊆ s 2 ⇔ ( ∀ x x ∈ s 1 ⇒ x ∈ s 2 )
相等:∀ s 1 , s 2 ( s 1 = s 2 ) ⇔ ( s 1 ⊆ s 2 ∧ s 2 ⊆ s 1 ) \forall s_1,s_2\ (s_1=s_2)\Leftrightarrow(s_1\subseteq s_2\land s_2\subseteq s_1) ∀ s 1 , s 2 ( s 1 = s 2 ) ⇔ ( s 1 ⊆ s 2 ∧ s 2 ⊆ s 1 )
交:∀ x , s 1 , s 2 x ∈ ( s 1 ∩ s 2 ) ⇔ ( x ∈ s 1 ∧ x ∈ s 2 ) \forall x,s_1,s_2\ x\in(s_1\cap s_2)\Leftrightarrow(x\in s_1\land x\in s_2) ∀ x , s 1 , s 2 x ∈ ( s 1 ∩ s 2 ) ⇔ ( x ∈ s 1 ∧ x ∈ s 2 )
并:∀ x , s 1 , s 2 x ∈ ( s 1 ∪ s 2 ) ⇔ ( x ∈ s 1 ∨ x ∈ s 2 ) \forall x,s_1,s_2\ x\in(s_1\cup s_2)\Leftrightarrow(x\in s_1\lor x\in s_2) ∀ x , s 1 , s 2 x ∈ ( s 1 ∪ s 2 ) ⇔ ( x ∈ s 1 ∨ x ∈ 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 , s , b Percept ( [ s , b , Glitter ] , t ) ⇒ Glitter ( t )
反射:∀ t Glitter ( t ) ⇒ BestAction ( Grab , t ) \forall t\ \text{Glitter}(t)\Rightarrow\text{BestAction}(\text{Grab},t) ∀ t Glitter ( t ) ⇒ BestAction ( 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) ∀ t AtGold ( t ) ∧ ¬ Holding ( Gold , t ) ⇒ BestAction ( 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) ∀ s Breezy ( s ) ⇒ ∃ r Adjacent ( r , s ) ∧ 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) ∀ r , s Adjacent ( r , s ) ∧ Pit ( r ) ⇒ 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) ∀ s Breezy ( s ) ⇔ ∃ r Adjacent ( r , s ) ∧ Pit ( r )
Adjacent:∀ x , y , a , b Adjacent ( [ x , y ] , [ a , b ] ) ⇔ [ a , b ] ∈ { [ x + 1 , y ] , [ x − 1 , y ] , [ x , y + 1 ] , [ x , y − 1 ] } \forall x,y,a,b\ \text{Adjacent}([x,y],[a,b])\Leftrightarrow[a,b]\in\{[x+1,y],[x-1,y],[x,y+1],[x,y-1]\} ∀ x , y , a , b Adjacent ( [ x , y ] , [ a , b ] ) ⇔ [ a , b ] ∈ { [ 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)) Tell ( KB , Percept ( [ Smell , Breeze , None ] , 5 ) )
Ask ( KB , a BestAction ( a , 5 ) ) \text{Ask}(\text{KB},a\ \text{BestAction}(a,5)) Ask ( KB , a BestAction ( a , 5 ) ) ⟹ 答 { a / Shoot } \{a/\text{Shoot}\} { a / Shoot } (绑定表 binding list)。
给定句子 S S S 与置换 σ \sigma σ ,S σ S\sigma S σ 为代入结果。Ask ( KB , S ) \text{Ask}(\text{KB},S) Ask ( KB , S ) 返回部分/所有使 KB ⊨ S σ \text{KB}\models S\sigma KB ⊨ S σ 的 σ \sigma σ 。
2.6 知识工程 (Knowledge Engineering) 七步
确定任务 (Identify the task) 。
搜集相关知识 (Assemble relevant knowledge) 。
确定词汇表 (vocabulary) :谓词/函数/常量。
编码通用域知识 (Encode general knowledge) 。
编码特定问题实例 (Encode specific instance) 。
提交查询获取答案 (Pose queries) 。
调试 KB (Debug) 。
电路域 (Electronic Circuits) 例——一位全加器
任务:电路验证(是否正确相加)。
相关知识:由导线 (wires) 和门 (gates) 组成;门类型 AND/OR/XOR/NOT;忽略大小/形状/颜色。
词汇表:Type ( X 1 ) = XOR \text{Type}(X_1)=\text{XOR} Type ( X 1 ) = XOR 或 Type ( X 1 , XOR ) \text{Type}(X_1,\text{XOR}) Type ( X 1 , XOR ) 或 XOR ( X 1 ) \text{XOR}(X_1) XOR ( X 1 ) 。
通用知识公理:
∀ t 1 , t 2 Connected ( t 1 , t 2 ) ⇒ Signal ( t 1 ) = Signal ( t 2 ) \forall t_1,t_2\ \text{Connected}(t_1,t_2)\Rightarrow\text{Signal}(t_1)=\text{Signal}(t_2) ∀ t 1 , t 2 Connected ( t 1 , t 2 ) ⇒ Signal ( t 1 ) = Signal ( t 2 )
∀ t Signal ( t ) = 1 ∨ Signal ( t ) = 0 \forall t\ \text{Signal}(t)=1\lor\text{Signal}(t)=0 ∀ t Signal ( t ) = 1 ∨ Signal ( t ) = 0 ;1 ≠ 0 1\neq 0 1 = 0
Connected 可交换:∀ t 1 , t 2 Connected ( t 1 , t 2 ) ⇒ Connected ( t 2 , t 1 ) \forall t_1,t_2\ \text{Connected}(t_1,t_2)\Rightarrow\text{Connected}(t_2,t_1) ∀ t 1 , t 2 Connected ( t 1 , t 2 ) ⇒ Connected ( t 2 , t 1 )
OR 门:∀ g Type ( g ) = OR ⇒ Signal ( Out ( 1 , g ) ) = 1 ⇔ ∃ n Signal ( In ( n , g ) ) = 1 \forall g\ \text{Type}(g)=\text{OR}\Rightarrow\text{Signal}(\text{Out}(1,g))=1\Leftrightarrow\exists n\ \text{Signal}(\text{In}(n,g))=1 ∀ g Type ( g ) = OR ⇒ Signal ( Out ( 1 , g ) ) = 1 ⇔ ∃ n Signal ( In ( n , g ) ) = 1
AND 门:输出 0 iff 某 输入 0
XOR 门:输出 1 iff 两输入不同
NOT 门:输出与输入相反
查询:∃ i 1 , i 2 , i 3 , o 1 , o 2 Signal ( In ( 1 , C 1 ) ) = i 1 ∧ ⋯ ∧ Signal ( Out ( 2 , C 1 ) ) = o 2 \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 ∃ i 1 , i 2 , i 3 , o 1 , o 2 Signal ( In ( 1 , C 1 ) ) = i 1 ∧ ⋯ ∧ Signal ( Out ( 2 , C 1 ) ) = o 2 。
调试:可能遗漏 1 ≠ 0 1\neq 0 1 = 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)}
Subst ( { v / g } , α ) ∀ v α
对任意变量 v v v 和基项 (ground term) g g g 。
例 ∀ x King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) \forall x\ \text{King}(x)\land\text{Greedy}(x)\Rightarrow\text{Evil}(x) ∀ x King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) 得 King ( John ) ∧ Greedy ( John ) ⇒ Evil ( John ) \text{King}(\text{John})\land\text{Greedy}(\text{John})\Rightarrow\text{Evil}(\text{John}) King ( John ) ∧ Greedy ( John ) ⇒ Evil ( John ) 等。
UI 可多次应用;新 KB 与旧 KB 逻辑等价 。
⭐ 存在实例化 (EI, Existential Instantiation) :
∃ v α Subst ( { v / k } , α ) \frac{\exists v\ \alpha}{\text{Subst}(\{v/k\},\alpha)}
Subst ( { v / k } , α ) ∃ v α
k k k 为不出现在 KB 他处的新常量符号 ,称 Skolem 常数 (Skolem constant) 。
例 ∃ x Crown ( x ) ∧ OnHead ( x , John ) \exists x\ \text{Crown}(x)\land\text{OnHead}(x,\text{John}) ∃ x Crown ( x ) ∧ OnHead ( x , John ) ⟹ Crown ( C 1 ) ∧ OnHead ( C 1 , John ) \text{Crown}(C_1)\land\text{OnHead}(C_1,\text{John}) Crown ( C 1 ) ∧ OnHead ( C 1 , John ) 。
EI 只能应用一次 ;新 KB 不等价于旧 KB,但可满足性等价 (satisfiable iff)。
命题化与 Herbrand 定理
命题化 KB 与查询,应用归结,返回结果。
⚠️ 问题:有函数符号时基项无穷(如 Father ( Father ( Father ( John ) ) ) \text{Father}(\text{Father}(\text{Father}(\text{John}))) Father ( Father ( Father ( John ) ) ) )。
⭐ Herbrand 定理 (1930) :若语句 α \alpha α 被 FOL KB 蕴涵,则存在仅涉及命题化 KB 有限子集 的证明。
算法:n = 0 → ∞ n=0\to\infty n = 0 → ∞ ,用深度 n n n 项命题化,查是否蕴涵。
问题:α \alpha α 被蕴涵则停;不被蕴涵则死循环。
⭐ 半可判定 (Semidecidable)(Turing 1936, Church 1936) :FOL 蕴涵半可判定——存在算法对每个被蕴涵语句答 yes,但不存在算法对每个非蕴涵语句答 no。
命题化的问题
生成大量无关语句(如 Greedy ( Richard ) \text{Greedy}(\text{Richard}) Greedy ( Richard ) 与结论无关)。
p p p 个 k k k 元谓词 + n n n 常量 ⟹ p ⋅ n k p\cdot n^k p ⋅ n k 实例;有函数符号更糟。
3.2 合一 (Unification) ⭐⭐⭐
⭐ 若存在置换 θ \theta θ 使 α θ = β θ \alpha\theta=\beta\theta α θ = β θ ,则 θ \theta θ 合一 α , β \alpha,\beta α , β ,记 Unify ( α , β ) = θ \text{Unify}(\alpha,\beta)=\theta Unify ( α , β ) = θ 。
示例 (Knows ( John , x ) \text{Knows}(\text{John},x) Knows ( John , x ) 与):
p p p
q q q
θ \theta θ
Knows ( John , x ) \text{Knows}(\text{John},x) Knows ( John , x )
Knows ( John , Jane ) \text{Knows}(\text{John},\text{Jane}) Knows ( John , Jane )
{ x / Jane } \{x/\text{Jane}\} { x / Jane }
Knows ( John , x ) \text{Knows}(\text{John},x) Knows ( John , x )
Knows ( y , OJ ) \text{Knows}(y,\text{OJ}) Knows ( y , OJ )
{ x / OJ , y / John } \{x/\text{OJ},y/\text{John}\} { x / OJ , y / John }
Knows ( John , x ) \text{Knows}(\text{John},x) Knows ( John , x )
Knows ( y , Mother ( y ) ) \text{Knows}(y,\text{Mother}(y)) Knows ( y , Mother ( y ) )
{ y / John , x / Mother ( John ) } \{y/\text{John},x/\text{Mother}(\text{John})\} { y / John , x / Mother ( John ) }
Knows ( John , x ) \text{Knows}(\text{John},x) Knows ( John , x )
Knows ( x , OJ ) \text{Knows}(x,\text{OJ}) Knows ( x , OJ )
fail (x x x 同时=John 和 OJ)
⭐ 标准化分离 (Standardizing apart) :换名消除变量重叠,如 Knows ( z 17 , OJ ) \text{Knows}(z_{17},\text{OJ}) Knows ( z 1 7 , OJ ) 。
⭐ 最一般合一 (MGU) :对变量限制最少的合一者;对每个表达式对,MGU 唯一 (至变量换名)。
例 Knows ( John , x ) \text{Knows}(\text{John},x) Knows ( John , x ) 与 Knows ( y , z ) \text{Knows}(y,z) Knows ( y , z ) ,MGU = { y / John , x / z } =\{y/\text{John},x/z\} = { y / John , x / z } (比 { y / John , x / John , z / John } \{y/\text{John},x/\text{John},z/\text{John}\} { y / John , x / John , z / John } 更一般)。
置换与合成(pl_fol 形式定义)
置换 (substitution) θ = { v 1 / t 1 , … , v n / t n } \theta=\{v_1/t_1,\dots,v_n/t_n\} θ = { v 1 / t 1 , … , v n / t n } :v i v_i v i 变量,t i ≠ v i t_i\neq v_i t i = v i 的项,v i ≠ v j v_i\neq v_j v i = v j 。
E θ E\theta E θ :同时替换 E E E 中所有 v i v_i v i 为 t i t_i t i 。
例 E = P ( x , y , f ( a ) ) E=P(x,y,f(a)) E = P ( x , y , f ( a ) ) ,θ = { x / b , y / x } \theta=\{x/b,y/x\} θ = { x / b , y / x } ⟹ E θ = P ( b , x , f ( a ) ) E\theta=P(b,x,f(a)) E θ = P ( b , x , f ( a ) ) 。
合成 θ σ \theta\sigma θ σ :先用 θ \theta θ 再用 σ \sigma σ 。
θ = { x / f ( y ) , y / z } \theta=\{x/f(y),y/z\} θ = { x / f ( y ) , y / z } ,σ = { x / a , y / b , z / y } \sigma=\{x/a,y/b,z/y\} σ = { x / a , y / b , z / y } ⟹ θ σ = { x / f ( b ) , z / y } \theta\sigma=\{x/f(b),z/y\} θ σ = { x / f ( b ) , z / y } 。
合一者与 MGU(pl_fol)
合一者 (unifier) θ \theta θ :S 1 θ = ⋯ = S k θ S_1\theta=\dots=S_k\theta S 1 θ = ⋯ = S k θ 。例 { P ( f ( x ) , z ) , P ( y , a ) } \{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\} σ = { y / f ( a ) , x / a , z / a } 。
mgu :对任意合一 σ \sigma σ 存在 γ \gamma γ 使 σ = θ γ \sigma=\theta\gamma σ = θ γ 。例 mgu = { y / f ( x ) , z / a } =\{y/f(x),z/a\} = { y / f ( x ) , z / a } ,σ = θ { x / a } \sigma=\theta\{x/a\} σ = θ { 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)\} S = { P ( f ( x ) , h ( y ) , a ) , P ( f ( x ) , z , a ) , P ( f ( x ) , h ( y ) , b ) } ⟹ { h ( y ) , z } \{h(y),z\} { h ( y ) , z } 。
合一算法 :σ 0 = ϵ \sigma_0=\epsilon σ 0 = ϵ ;若 σ k \sigma_k σ k 是 S S S 合一则停(σ k \sigma_k σ k 为 mgu);否则找 S σ k S\sigma_k S σ k 分歧集 D k D_k D k ;若 D k D_k D k 含变量 v v v 与不含 v v v 的项 t t t ,σ k + 1 = σ k { v / t } \sigma_{k+1}=\sigma_k\{v/t\} σ k + 1 = σ k { v / t } ;否则不可合一。
3.3 广义假言推理 (Generalized Modus Ponens, GMP) ⭐⭐⭐
⭐ GMP :
p 1 ′ , p 2 ′ , … , p n ′ , ( p 1 ∧ p 2 ∧ ⋯ ∧ p n ⇒ q ) q θ \frac{p'_1,p'_2,\dots,p'_n,\quad (p_1\land p_2\land\dots\land p_n\Rightarrow q)}{q\theta}
q θ p 1 ′ , p 2 ′ , … , p n ′ , ( p 1 ∧ p 2 ∧ ⋯ ∧ p n ⇒ q )
其中 p i ′ θ = p i θ p'_i\theta=p_i\theta p i ′ θ = p i θ 对所有 i i i 。
例 :
p 1 ′ = King ( John ) p'_1=\text{King}(\text{John}) p 1 ′ = King ( John )
p 1 = King ( x ) p_1=\text{King}(x) p 1 = King ( x )
p 2 ′ = Greedy ( y ) p'_2=\text{Greedy}(y) p 2 ′ = Greedy ( y )
p 2 = Greedy ( x ) p_2=\text{Greedy}(x) p 2 = Greedy ( x )
θ = { x / John , y / John } \theta=\{x/\text{John},y/\text{John}\} θ = { x / John , y / John }
q = Evil ( x ) q=\text{Evil}(x) q = Evil ( x )
q θ = Evil ( John ) q\theta=\text{Evil}(\text{John}) q θ = Evil ( John )
用于确定子句 (definite clauses) KB(恰一个正文字);所有变量默认全称量化。
半可判定
FOL(即使限制 Horn 子句)半可判定 :若 KB 蕴涵 f f f ,存在算法有限步证明;若不蕴涵,无算法有限步显示。
GMP 可靠性证明
需证 p 1 ′ , … , p n ′ , ( p 1 ∧ ⋯ ∧ p n ⇒ q ) ⊨ q θ p'_1,\dots,p'_n,(p_1\land\dots\land p_n\Rightarrow q)\models q\theta p 1 ′ , … , p n ′ , ( p 1 ∧ ⋯ ∧ p n ⇒ q ) ⊨ q θ (给定 p i ′ θ = p i θ p'_i\theta=p_i\theta p i ′ θ = p i θ )。
引理 :对任意 p p p ,p ⊨ p θ p\models p\theta p ⊨ p θ 。
( p 1 ∧ ⋯ ∧ p n ⇒ q ) ⊨ ( p 1 ∧ ⋯ ∧ p n ⇒ q ) θ = ( p 1 θ ∧ ⋯ ∧ p n θ ⇒ 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) ( p 1 ∧ ⋯ ∧ p n ⇒ q ) ⊨ ( p 1 ∧ ⋯ ∧ p n ⇒ q ) θ = ( p 1 θ ∧ ⋯ ∧ p n θ ⇒ q θ )
p 1 ′ , … , p n ′ ⊨ p 1 ′ ∧ ⋯ ∧ p n ′ ⊨ p 1 ′ θ ∧ ⋯ ∧ p n ′ θ p'_1,\dots,p'_n\models p'_1\land\dots\land p'_n\models p'_1\theta\land\dots\land p'_n\theta p 1 ′ , … , p n ′ ⊨ p 1 ′ ∧ ⋯ ∧ p n ′ ⊨ p 1 ′ θ ∧ ⋯ ∧ p n ′ θ
由 1、2 经普通 MP 得 q θ q\theta q θ 。
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}) Criminal ( West ) 。
性质
对一阶确定子句可靠且完备 (证明类似命题逻辑)。
Datalog = 一阶确定子句 + 无函数(如犯罪 KB)⟹ FC 多项式迭代终止(至多 p ⋅ n k p\cdot n^k p ⋅ n k 文字)。
一般情况 α \alpha α 不被蕴涵时可能不终止 (不可避免,因确定子句蕴涵半可判定)。
效率
无需在迭代 k k k 重新匹配前提未在 k − 1 k-1 k − 1 新增的规则。
DB 索引允许 O ( 1 ) O(1) O ( 1 ) 检索已知事实(如查 Missile ( x ) \text{Missile}(x) Missile ( x ) 检索 Missile ( M 1 ) \text{Missile}(M_1) Missile ( M 1 ) )。
匹配合取前提与已知事实是 NP-hard 。
3.5 FOL 反向链 (Backward Chaining)
形式 Q 1 x 1 ⋯ Q n x n p Q_1 x_1\cdots Q_n x_n\,p Q 1 x 1 ⋯ Q n x n p ,p p p 无量词(母式 matrix )。
转换规则 (Q ∗ Q^* Q ∗ 为 Q Q Q 对偶量词):
改名:∣ = Q x p ( x ) ↔ Q y p ( y ) |= Qx\,p(x)\leftrightarrow Qy\,p(y) ∣ = Q x p ( x ) ↔ Q y p ( y ) (条件)。
移量词:x x x 不在 p p p 自由 ⟹ ∣ = ( p → Q x q ) ↔ Q x ( p → q ) |=(p\to Qx\,q)\leftrightarrow Qx(p\to q) ∣ = ( p → Q x q ) ↔ Q x ( p → q ) ;x x x 不在 q q q 自由 ⟹ ∣ = ( Q x p → q ) ↔ Q ∗ x ( p → q ) |=(Qx\,p\to q)\leftrightarrow Q^*x(p\to q) ∣ = ( Q x p → q ) ↔ Q ∗ x ( p → q ) 。
¬ \lnot ¬ 内移:∣ = ¬ Q x p ↔ Q ∗ x ¬ p |=\lnot Qx\,p\leftrightarrow Q^*x\,\lnot p ∣ = ¬ Q x p ↔ Q ∗ x ¬ p 。
∣ = ( ∀ x p ∧ ∀ x q ) ↔ ∀ x ( p ∧ q ) |=(\forall x\,p\land\forall x\,q)\leftrightarrow\forall x(p\land q) ∣ = ( ∀ x p ∧ ∀ x q ) ↔ ∀ x ( p ∧ q ) 。
∣ = ( ∃ x p ∨ ∃ x q ) ↔ ∃ x ( p ∨ q ) |=(\exists x\,p\lor\exists x\,q)\leftrightarrow\exists x(p\lor q) ∣ = ( ∃ x p ∨ ∃ x q ) ↔ ∃ x ( p ∨ q ) 。
x x x 不在 p p p 自由 ⟹ ∣ = ( p ∨ ∀ x q ) ↔ ∀ x ( p ∨ q ) |=(p\lor\forall x\,q)\leftrightarrow\forall x(p\lor q) ∣ = ( p ∨ ∀ x q ) ↔ ∀ x ( p ∨ q ) ,∣ = ( p ∧ ∃ x q ) ↔ ∃ x ( p ∧ q ) |=(p\land\exists x\,q)\leftrightarrow\exists x(p\land q) ∣ = ( p ∧ ∃ x q ) ↔ ∃ x ( p ∧ q ) 。
3.7 FOL 转 CNF ⭐⭐⭐
⭐ 六步 (示例"爱所有动物者被某人爱" ∀ x [ ∀ y Animal ( y ) ⇒ Loves ( x , y ) ] ⇒ [ ∃ y Loves ( y , x ) ] \forall x[\forall y\,\text{Animal}(y)\Rightarrow\text{Loves}(x,y)]\Rightarrow[\exists y\,\text{Loves}(y,x)] ∀ x [ ∀ y Animal ( y ) ⇒ Loves ( x , y ) ] ⇒ [ ∃ y Loves ( y , x ) ] ):
消等价/蕴含 (Eliminate ↔ , ⇒ \leftrightarrow,\Rightarrow ↔ , ⇒ ) :
∀ x [ ¬ ∀ y ¬ Animal ( y ) ∨ Loves ( x , y ) ] ∨ [ ∃ y Loves ( y , x ) ] \forall x[\lnot\forall y\,\lnot\text{Animal}(y)\lor\text{Loves}(x,y)]\lor[\exists y\,\text{Loves}(y,x)] ∀ x [ ¬ ∀ y ¬ Animal ( y ) ∨ Loves ( x , y ) ] ∨ [ ∃ y Loves ( y , x ) ]
¬ \lnot ¬ 内移 (Move ¬ \lnot ¬ inwards) :¬ ∀ x p ≡ ∃ x ¬ p \lnot\forall x\,p\equiv\exists x\,\lnot p ¬ ∀ x p ≡ ∃ x ¬ p ,¬ ∃ x p ≡ ∀ x ¬ p \lnot\exists x\,p\equiv\forall x\,\lnot p ¬ ∃ x p ≡ ∀ x ¬ p
∀ x [ ∃ y Animal ( y ) ∧ ¬ Loves ( x , y ) ] ∨ [ ∃ y Loves ( y , x ) ] \forall x[\exists y\,\text{Animal}(y)\land\lnot\text{Loves}(x,y)]\lor[\exists y\,\text{Loves}(y,x)] ∀ x [ ∃ y Animal ( y ) ∧ ¬ Loves ( x , y ) ] ∨ [ ∃ y Loves ( y , x ) ]
变量标准化 (Standardize variables) :各量词不同变量
∀ x [ ∃ y Animal ( y ) ∧ ¬ Loves ( x , y ) ] ∨ [ ∃ z Loves ( z , x ) ] \forall x[\exists y\,\text{Animal}(y)\land\lnot\text{Loves}(x,y)]\lor[\exists z\,\text{Loves}(z,x)] ∀ x [ ∃ y Animal ( y ) ∧ ¬ Loves ( x , y ) ] ∨ [ ∃ z Loves ( z , x ) ]
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) ∀ x [ Animal ( F ( x ) ) ∧ ¬ Loves ( x , F ( x ) ) ] ∨ Loves ( G ( x ) , x )
去全称量词 (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) [ Animal ( F ( x ) ) ∧ ¬ Loves ( x , F ( x ) ) ] ∨ Loves ( G ( x ) , x )
∨ \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)] [ Animal ( F ( x ) ) ∨ Loves ( G ( x ) , x ) ] ∧ [ ¬ Loves ( x , F ( x ) ) ∨ Loves ( G ( x ) , x ) ]
Skolem 化细则(pl_fol)
前束范式中:
∃ x \exists x ∃ x 左无 ∀ \forall ∀ ⟹ 母式中 x x x 替换为新常量 a a a ;
∃ x \exists x ∃ x 左有 ∀ x 1 ⋯ ∀ x m \forall x_1\cdots\forall x_m ∀ x 1 ⋯ ∀ x m ⟹ 替换为 f ( x 1 , … , x m ) f(x_1,\dots,x_m) f ( x 1 , … , x m ) (新 n n n 元函数符号)。
例:∀ x ∃ y , z ( ( Animal ( y ) ∧ ¬ Loves ( x , y ) ) ∨ Loves ( z , x ) ) \forall x\exists y,z\,((\text{Animal}(y)\land\lnot\text{Loves}(x,y))\lor\text{Loves}(z,x)) ∀ x ∃ y , z ( ( Animal ( y ) ∧ ¬ Loves ( x , y ) ) ∨ 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)) ∀ x ( ( Animal ( f ( x ) ) ∧ ¬ Loves ( x , f ( x ) ) ) ∨ Loves ( g ( x ) , x ) ) 。
性质 :p p p 不可满足 iff 其 CNF s s s 不可满足;∣ = s → p |=s\to p ∣ = s → p 但 ∤ = p → s \not|\!=p\to s ∣ = p → s 。
3.8 FOL 归结 (Resolution) ⭐⭐⭐
⭐ 归结反演基础 :KB ⊨ α \text{KB}\models\alpha KB ⊨ α iff ( KB ∧ ¬ α ) (\text{KB}\land\lnot\alpha) ( KB ∧ ¬ α ) 不可满足。
算法 :
所有公式转 CNF;
反复应用归结规则;
返回不可满足 iff 导出 false(空子句)。
⭐ 全一阶归结规则 :
l 1 ∨ ⋯ ∨ l k , m 1 ∨ ⋯ ∨ m n l 1 ∨ ⋯ ∨ l i − 1 ∨ l i + 1 ∨ ⋯ ∨ m j − 1 ∨ m j + 1 ∨ ⋯ ∨ m n θ \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
l 1 ∨ ⋯ ∨ l i − 1 ∨ l i + 1 ∨ ⋯ ∨ m j − 1 ∨ m j + 1 ∨ ⋯ ∨ m n l 1 ∨ ⋯ ∨ l k , m 1 ∨ ⋯ ∨ m n θ
其中 Unify ( l i , ¬ m j ) = θ \text{Unify}(l_i,\lnot m_j)=\theta Unify ( l i , ¬ m j ) = θ 。两子句须标准化分离 (无共享变量)。
例 :¬ Rich ( x ) ∨ Unhappy ( x ) \lnot\text{Rich}(x)\lor\text{Unhappy}(x) ¬ Rich ( x ) ∨ Unhappy ( x ) ,Rich ( Ken ) \text{Rich}(\text{Ken}) Rich ( Ken ) ⊢ \vdash ⊢ Unhappy ( Ken ) \text{Unhappy}(\text{Ken}) Unhappy ( Ken ) ,θ = { x / Ken } \theta=\{x/\text{Ken}\} θ = { x / Ken } 。
对 CNF ( KB ∧ ¬ α ) \text{CNF}(\text{KB}\land\lnot\alpha) CNF ( KB ∧ ¬ α ) 归结,对 FOL 完备 。
谓词归结规则(pl_fol)
α ∨ p , ¬ q ∨ γ ( α ∨ γ ) θ \frac{\alpha\lor p,\quad \lnot q\lor\gamma}{(\alpha\lor\gamma)\theta}
( α ∨ γ ) θ α ∨ p , ¬ q ∨ γ
p p p 与 q q q 的 mgu 为 θ \theta θ ,两子句标准化分离。
例 C 1 = P ( x ) ∨ Q ( f ( x ) ) C_1=P(x)\lor Q(f(x)) C 1 = P ( x ) ∨ Q ( f ( x ) ) ,C 2 = R ( g ( y ) ) l o r ¬ Q ( f ( a ) ) C_2=R(g(y))lor\lnot Q(f(a)) C 2 = R ( g ( y ) ) l o r ¬ Q ( f ( a ) ) ,mgu σ = { x / a } \sigma=\{x/a\} σ = { x / a } ⟹ 归结式 P ( a ) ∨ R ( g ( y ) ) P(a)\lor R(g(y)) P ( a ) ∨ R ( g ( y ) ) 。
归结过程 :KB ⊨ α \text{KB}\models\alpha KB ⊨ α ⟺ KB ∧ ¬ α \text{KB}\land\lnot\alpha KB ∧ ¬ α 不可满足 ⟺ CNF ⟺ 标准化分离得子句集 E E E ⟺ 对 E E E 归结 ⟹ 归结式放入 E E E ,反复 ⟹ 空子句 ⟹ 得证。
3.9 FOL 推理总结
命题逻辑
一阶逻辑
模型检测
真值表 / DPLL / WalkSat
不可行(模型无穷)→ 命题化
Modus Ponens
Horn 子句
MP++(Horn 子句,加合一/置换)
归结
一般
归结++(一般,加合一/置换)
++ = unification and substitution。关键思想 :FOL 中变量带来紧凑的知识表示。
FOL 不可判定性(pl_fol)
FOL 不可判定 (停机问题):不存在程序判定任意公式 p p p 是否有效 / 是否为任意 Γ \Gamma Γ 的逻辑结论。
FOL 有效性半可判定 :有效公式可证明(有限步)。
很多 KR 语言(OWL、描述逻辑 description logic)是 FOL 的可判定子集 。
模型检测:不可行(解释无穷)。
推理规则法:归结 (resolution)、Tableaux 方法等。
第四部分:逻辑程序设计 (Logic Programming, pl_fol)
4.1 基本观点
⭐ Algorithm = Logic + Control
Logic :要解决的问题是什么。
Control :如何解决问题。
传统程序设计(C/C++)
逻辑程序设计(Prolog)
关注
Control,掩盖 Logic
只写 Logic,系统自动 Control
特点 :
Logic 与 Control 分离:Logic 通用,Control 可用不同方法改进。
纯 Logic 便于验证,保证可靠性。
高层次编程:只告诉系统做什么 (What) ,不需如何做 (How) 。
相对效率较低。
4.2 语法
规则 A ← A 1 , A 2 , … , A m A\leftarrow A_1,A_2,\dots,A_m A ← A 1 , A 2 , … , A m :A A A 为头 (原子),A i A_i A i 为体 (原子合取)。
m = 0 m=0 m = 0 为事实 (无体,往往省略 ← \leftarrow ← )。
一条规则 A ← A 1 , … , A m A\leftarrow A_1,\dots,A_m A ← A 1 , … , A m 代表 Horn 子句 A ∨ ¬ A 1 ∨ ⋯ ∨ ¬ A m A\lor\lnot A_1\lor\dots\lor\lnot A_m A ∨ ¬ A 1 ∨ ⋯ ∨ ¬ A m (至多一正文字)。
所有变元默认全称量化 :∀ x 1 , … , x n A ∨ ¬ A 1 ∨ ⋯ ∨ ¬ A m \forall x_1,\dots,x_n\ A\lor\lnot A_1\lor\dots\lor\lnot A_m ∀ x 1 , … , x n A ∨ ¬ A 1 ∨ ⋯ ∨ ¬ A m 。
4.3 Herbrand 域/基/常例
常项 (ground term) :由 P P P 中常元和函数符号复合的项。
Herbrand 域 U ( P ) U(P) U ( P ) :所有常项集合。例 P 1 = { p ( 1 ) . , q ( 2 ) . , q ( x ) ← p ( x ) . } P_1=\{p(1).,q(2).,q(x)\leftarrow p(x).\} P 1 = { p ( 1 ) . , q ( 2 ) . , q ( x ) ← p ( x ) . } ⟹ U ( P 1 ) = { 1 , 2 } U(P_1)=\{1,2\} U ( P 1 ) = { 1 , 2 } 。
常原子 :常项 + 谓词符号。Herbrand 基 B ( P ) B(P) B ( P ) = 所有常原子集合。例 B ( P 1 ) = { p ( 1 ) , p ( 2 ) , q ( 1 ) , q ( 2 ) } B(P_1)=\{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 解释 I H I_H I H :论域 = U ( P ) =U(P) = U ( P ) ,V H V_H V H 把常项/常原子映射为自身;指派集合 M ( P ) ⊆ B ( P ) M(P)\subseteq B(P) M ( P ) ⊆ B ( P ) ,常原子 p p p 真 iff p ∈ M ( P ) p\in M(P) p ∈ M ( P ) 。
规则真值:I H ( R ) = t I_H(R)=t I H ( R ) = t iff 对所有常例 R ∗ R^* R ∗ ,I H ( R ∗ ) = t I_H(R^*)=t I H ( R ∗ ) = t ;R ∗ = A ← A 1 , … , A m R^*=A\leftarrow A_1,\dots,A_m R ∗ = A ← A 1 , … , A m 真 iff A ∈ M ( P ) A\in M(P) A ∈ M ( P ) 或某 A i ∉ M ( P ) A_i\notin M(P) A i ∈ / M ( P ) 。
Herbrand 模型 :所有规则在该解释下为真。例 P 1 P_1 P 1 有两 Herbrand 模型 { p ( 1 ) , q ( 1 ) , q ( 2 ) } \{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)\} { p ( 1 ) , p ( 2 ) , q ( 1 ) , q ( 2 ) } 。
⭐ 性质 :
S S S 不可满足 iff S S S 无 Herbrand 模型。
任何逻辑程序都有 Herbrand 模型。
两 Herbrand 模型交集也是模型。
⟹ 存在唯一极小 Herbrand 模型 M P M_P M P (least Herbrand model)。
P 1 ⊆ P 2 ⇒ M P 1 ⊆ M P 2 P_1\subseteq P_2\Rightarrow M_{P_1}\subseteq M_{P_2} P 1 ⊆ P 2 ⇒ M P 1 ⊆ M P 2 。
4.5 SLD 归结规则
令 H ← B 1 , … , B n H\leftarrow B_1,\dots,B_n H ← B 1 , … , B n 为程序规则,← A 1 , … , A m \leftarrow A_1,\dots,A_m ← A 1 , … , A m 为目标(已重命名变量),θ \theta θ 为 A i A_i A i 与 H H H 的 mgu:
← A 1 , … , A m H ← B 1 , … , B n ← ( A 1 , … , A i − 1 , B 1 , … , B n , A i + 1 , … , A m ) θ \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}
← ( A 1 , … , A i − 1 , B 1 , … , B n , A i + 1 , … , A m ) θ ← A 1 , … , A m H ← B 1 , … , B n
SLD 归结是 Prolog 的核心执行机制。
推理规则速查
规则
形式
适用
Modus Ponens (MP)
p , p → q ⊢ q p,\ p\to q\vdash q p , p → q ⊢ q
命题/Horn
Modus Ponens (Horn)
p 1 , … , p k , ( p 1 ∧ ⋯ ∧ p k ) → q ⊢ q p_1,\dots,p_k,\ (p_1\land\dots\land p_k)\to q\vdash q p 1 , … , p k , ( p 1 ∧ ⋯ ∧ p k ) → q ⊢ q
Horn,完备
Generalized MP (GMP)
p 1 ′ , … , p n ′ , ( p 1 ∧ ⋯ ∧ p n ⇒ q ) ⊢ q θ p'_1,\dots,p'_n,\ (p_1\land\dots\land p_n\Rightarrow q)\vdash q\theta p 1 ′ , … , p n ′ , ( p 1 ∧ ⋯ ∧ p n ⇒ q ) ⊢ q θ
FOL 确定子句
Unit Resolution
( α ∨ β ) , ¬ β ⊢ α (\alpha\lor\beta),\ \lnot\beta\vdash\alpha ( α ∨ β ) , ¬ β ⊢ α
命题
General Resolution
( α ∨ β ) , ( ¬ β ∨ γ ) ⊢ α ∨ γ (\alpha\lor\beta),\ (\lnot\beta\lor\gamma)\vdash\alpha\lor\gamma ( α ∨ β ) , ( ¬ β ∨ γ ) ⊢ α ∨ γ
命题/FOL
UG (Universal Generalization)
p ⊢ ∀ x p p\vdash\forall x\,p p ⊢ ∀ x p
FOL 公理系统
等值律速查(见 §1.9 完整表)
双否 / 逆否 / 蕴含消去 / 双条件消去 / De Morgan / 分配律 / 交换结合律。
算法速查
算法
输入
思想
完备性
DPLL
CNF
回溯+剪枝
完备
WalkSat
CNF
随机局部搜索
可靠不完备
前向链
Horn KB
数据驱动,反复触发规则
Horn 完备,线性
反向链
Horn KB
目标驱动,递归证明
Horn 完备
命题归结
CNF
归结反演,空子句=不可满足
完备
FOL 归结
CNF(含 Skolem)
合一+归结反演
完备
合一算法
原子集
分歧集+置换迭代
得 MGU
范式速查
范式
形式
转换
CNF
子句合取
消→↔ / ¬深入 / 分配
前束范式
Q 1 x 1 ⋯ Q n x n p Q_1x_1\cdots Q_nx_n\,p Q 1 x 1 ⋯ Q n x n p
改名/移量词/¬内移
FOL CNF
前束→Skolem→去∀→CNF
6 步
核心关系速查 ⭐
KB ⊨ f ⟺ M ( f ) ⊇ M ( KB ) ⟺ KB ∧ ¬ f 不可满足 \text{KB}\models f\iff M(f)\supseteq M(\text{KB})\iff\text{KB}\land\lnot f\text{ 不可满足}
KB ⊨ f ⟺ M ( f ) ⊇ M ( KB ) ⟺ KB ∧ ¬ f 不可满足
p 有效 ⟺ ¬ p 不可满足 ∀ x P ≡ ¬ ∃ x ¬ P p\text{ 有效}\iff\lnot p\text{ 不可满足}\qquad \forall x\,P\equiv\lnot\exists x\,\lnot P
p 有效 ⟺ ¬ p 不可满足 ∀ x P ≡ ¬ ∃ x ¬ 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 中推出隐藏事实和行动。
这三章实际是一条线:
命题逻辑 :先把"语法、语义、模型、蕴涵、可靠性、完备性、归结"等基本概念讲清楚。
一阶逻辑 :把命题内部拆成对象、关系、函数、量词,让知识表示更紧凑。
一阶逻辑推理 :因为有变量和量词,所以推理要用实例化、合一、GMP、链式推理、Skolem 化和一阶归结。
最终你要会三件事:
把自然语言写成逻辑公式。
判断一个结论是否由知识库蕴涵。
把证明题规整成 KB 加否定目标,再用 CNF 与归结推出空子句。
1. 逻辑智能体
1.1 三类建模范式
课件开头把 AI 里的模型大致分成三类:
状态模型 :搜索、博弈。重点是状态、动作、代价。
变量模型 :CSP、贝叶斯网络。重点是变量及变量间约束或概率依赖。
逻辑模型 :命题逻辑、一阶逻辑。重点是逻辑公式和推理规则。
逻辑模型适合定理证明、验证、知识推理,因为它能把"知道什么"和"怎么推"拆开。
1.2 知识库与 TELL/ASK
知识库 KB 是形式语言中的语句集合。基于知识的智能体通常这样运转:
1 2 3 4 TELL(KB, percept) action = ASK(KB, query) TELL(KB, action) return action
TELL :把新感知、新事实、新行动写入知识库。
ASK :询问当前知识库是否蕴涵某个结论,或是否存在满足查询的对象。
知识库有两个层次:
知识层 :智能体知道什么,不关心内部怎样实现。
实现层 :知识库的数据结构和操作算法。
一个逻辑智能体必须能表示状态和动作,加入新感知,更新内部世界模型,推出不可直接观察的隐藏性质,并推出合适行动。
1.3 Wumpus 世界为什么适合讲逻辑
Wumpus 世界是"部分可观察环境中进行知识推理"的经典例子。
PEAS 描述:
性能:拿到金子 +1000,死亡 −1000,每步 −1,射箭 −10。
环境:4 × 4 网格;智能体从 [1,1] 出发;金子和 Wumpus 随机分布;非 [1,1] 的格子有陷阱的概率为 0.2。
执行器:左转、右转、前进、抓取、射箭。
传感器:臭气 Stench、微风 Breeze、闪光 Glitter、撞墙 Bump、Wumpus 死亡时的哀嚎 Scream。
环境性质:部分可观察;确定;序贯;静态;离散;单智能体(Wumpus 更像自然环境的一部分)。
Wumpus 世界需要表达不完整信息、否定信息、析取信息和分类讨论,例如"如果 [1,1] 没有微风,则相邻格子没有陷阱"。
2. 语法、语义、模型、蕴涵、推理
2.1 语法和语义
逻辑是一种形式语言:
语法规定哪些符号串是合法语句。
语义规定语句在某个世界或模型中如何判定真假。
例如算术中,x + 2 ≥ y x + 2 \geq y x + 2 ≥ y 是合法语句,而残缺的 x 2 + y > x^2 + y > x 2 + y > 不是合法语句。前者在 x = 7 , y = 1 x=7, y=1 x = 7 , y = 1 的世界中为真,在 x = 0 , y = 6 x=0, y=6 x = 0 , y = 6 的世界中为假。
2.2 模型
模型是可以判定语句真假的形式化世界。若语句 α \alpha α 在模型 m m m 中为真,记作 m ⊨ α m \models \alpha m ⊨ α 。若 M ( α ) M(\alpha) M ( α ) 表示所有使 α \alpha α 为真的模型集合,则 M ( α ) = { m ∣ m ⊨ α } M(\alpha) = \{m \mid m \models \alpha\} M ( α ) = { m ∣ m ⊨ α } 。
2.3 蕴涵
KB 蕴涵 α \alpha α 的含义是:所有使 KB 为真的模型,也都使 α \alpha α 为真。
K B ⊨ α KB \models \alpha
K B ⊨ α
等价地:M ( K B ) ⊆ M ( α ) M(KB) \subseteq M(\alpha) M ( K B ) ⊆ M ( α ) 。
重点:蕴涵是语义概念,讨论所有模型中的必然真;不是算法有没有算出来。
2.4 推理
若推理过程 i i i 可以从 KB 导出 α \alpha α ,记作 K B ⊢ i α KB \vdash_i \alpha K B ⊢ i α 。推理是算法概念。考试里最常考两条性质:
可靠性 (soundness) :算法推出的都真。K B ⊢ i α ⇒ K B ⊨ α KB \vdash_i \alpha \Rightarrow KB \models \alpha K B ⊢ i α ⇒ K B ⊨ α
完备性 (completeness) :语义上必然真的都能推出。K B ⊨ α ⇒ K B ⊢ i α KB \models \alpha \Rightarrow KB \vdash_i \alpha K B ⊨ α ⇒ K B ⊢ i α
可以这样记:sound = 不会乱推出;complete = 该推出的都能推出。
3. 命题逻辑
3.1 命题逻辑能表达什么
命题逻辑把世界看成一组原子事实,每个命题符号只有真或假。常见命题符号:P , Q , R , P 1 , 2 , B 2 , 1 P, Q, R, P_{1,2}, B_{2,1} P , Q , R , P 1 , 2 , B 2 , 1 。
命题逻辑连接词:¬ S , S 1 ∧ S 2 , S 1 ∨ S 2 , S 1 ⇒ S 2 , S 1 ⇔ S 2 \lnot S,\; S_1 \land S_2,\; S_1 \lor S_2,\; S_1 \Rightarrow S_2,\; S_1 \Leftrightarrow S_2 ¬ S , S 1 ∧ S 2 , S 1 ∨ S 2 , S 1 ⇒ S 2 , S 1 ⇔ S 2 。
一个模型给每个命题符号赋真值。例如三个命题符号 A , B , C A, B, C A , B , C 有 2 3 = 8 2^3 = 8 2 3 = 8 个模型。
3.2 命题逻辑语义
在模型 m m m 中:
¬ S 1 \lnot S_1 ¬ S 1 为真 ⇔ \Leftrightarrow ⇔ S 1 S_1 S 1 为假
S 1 ∧ S 2 S_1 \land S_2 S 1 ∧ S 2 为真 ⇔ \Leftrightarrow ⇔ S 1 S_1 S 1 为真且 S 2 S_2 S 2 为真
S 1 ∨ S 2 S_1 \lor S_2 S 1 ∨ S 2 为真 ⇔ \Leftrightarrow ⇔ S 1 S_1 S 1 为真或 S 2 S_2 S 2 为真
S 1 ⇒ S 2 S_1 \Rightarrow S_2 S 1 ⇒ S 2 为假 ⇔ \Leftrightarrow ⇔ S 1 S_1 S 1 为真且 S 2 S_2 S 2 为假
S 1 ⇔ S 2 S_1 \Leftrightarrow S_2 S 1 ⇔ S 2 为真 ⇔ \Leftrightarrow ⇔ ( S 1 ⇒ S 2 ) ∧ ( S 2 ⇒ S 1 ) (S_1 \Rightarrow S_2) \land (S_2 \Rightarrow S_1) ( S 1 ⇒ S 2 ) ∧ ( S 2 ⇒ S 1 ) 为真
3.3 Wumpus 的命题逻辑写法
定义:P i , j P_{i,j} P i , j :[ i , j ] [i,j] [ i , j ] 有陷阱;B i , j B_{i,j} B i , j :[ i , j ] [i,j] [ i , j ] 有微风。
在局部格子中:
B 1 , 1 ⇔ ( P 1 , 2 ∨ P 2 , 1 ) B_{1,1} \Leftrightarrow (P_{1,2} \lor P_{2,1})
B 1 , 1 ⇔ ( P 1 , 2 ∨ P 2 , 1 )
如果感知到 [ 1 , 1 ] [1,1] [ 1 , 1 ] 没有微风 ¬ B 1 , 1 \lnot B_{1,1} ¬ B 1 , 1 ,则可推出 ¬ P 1 , 2 ∧ ¬ P 2 , 1 \lnot P_{1,2} \land \lnot P_{2,1} ¬ P 1 , 2 ∧ ¬ P 2 , 1 。
再如:B 2 , 1 ⇔ ( P 1 , 1 ∨ P 2 , 2 ∨ P 3 , 1 ) B_{2,1} \Leftrightarrow (P_{1,1} \lor P_{2,2} \lor P_{3,1}) B 2 , 1 ⇔ ( P 1 , 1 ∨ P 2 , 2 ∨ P 3 , 1 ) 。
这里命题逻辑的缺点也暴露了:每个格子都要手写一条规则,不能自然表达"任意相邻格子"。
3.4 真值表推理
真值表推理枚举所有模型:
枚举命题符号的所有真值赋值。
只看使 KB 为真的行。
检查这些行中 α \alpha α 是否都为真。
性质:可靠;完备;时间复杂度 O ( 2 n ) O(2^n) O ( 2 n ) ;空间复杂度可做到 O ( n ) O(n) O ( n ) ,其中 n n n 是命题符号个数。课件还指出,命题逻辑的蕴涵判定对应的问题是 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 ∨ ¬ A A \lor \lnot A A ∨ ¬ A ,A ⇒ A A \Rightarrow A A ⇒ A ,( A ∧ ( A ⇒ B ) ) ⇒ B (A \land (A \Rightarrow B)) \Rightarrow B ( A ∧ ( A ⇒ B ) ) ⇒ B 。
可满足 :至少存在一个模型使语句为真。
不可满足 :没有任何模型使语句为真。例:A ∧ ¬ A A \land \lnot A A ∧ ¬ A 。
最关键的证明转化:
K B ⊨ α ⟺ K B ∧ ¬ α 不可满足 KB \models \alpha \iff KB \land \lnot\alpha \text{ 不可满足}
K B ⊨ α ⟺ K B ∧ ¬ α 不可满足
也就是反证法:想证明 α \alpha α ,就把 ¬ α \lnot\alpha ¬ α 加进知识库,看能否推出矛盾。
3.7 两类证明方法
课件把证明方法分成两类:
模型检查 :枚举模型、DPLL、模型空间启发式搜索等。
推理规则 :从旧句子可靠地产生新句子,证明是推理规则应用序列。
模型检查通常直接但可能指数复杂;推理规则更像搜索证明路径,常常需要先转成范式。
4. Horn 子句、前向链和后向链
4.1 Horn 子句
Horn 子句是最多只有一个正文字的子句,只有两种形式:单个命题符号,符号合取蕴涵单个符号。确定子句(在 KB 中称为规则)是恰好一个正文字的 Horn 子句,常写为:
P 1 ∧ P 2 ∧ ⋯ ∧ P m ⇒ Q P_1 \land P_2 \land \dots \land P_m \Rightarrow Q
P 1 ∧ P 2 ∧ ⋯ ∧ P m ⇒ Q
对应 CNF 子句:¬ P 1 ∨ ¬ P 2 ∨ ⋯ ∨ ¬ P m ∨ Q \lnot P_1 \lor \lnot P_2 \lor \dots \lor \lnot P_m \lor Q ¬ P 1 ∨ ¬ P 2 ∨ ⋯ ∨ ¬ P m ∨ Q 。
若没有正文字:P 1 ∧ P 2 ∧ ⋯ ∧ P m ⇒ ⊥ P_1 \land P_2 \land \dots \land P_m \Rightarrow \bot P 1 ∧ P 2 ∧ ⋯ ∧ P m ⇒ ⊥ ,表示约束或矛盾。
Kowalski 形式就是把规则写成"前提合取推出结论":P 1 ∧ ⋯ ∧ P m ⇒ Q P_1 \land \dots \land P_m \Rightarrow Q P 1 ∧ ⋯ ∧ P m ⇒ Q 。
4.2 假言推理(Modus Ponens)
命题逻辑的分离规则:
P , P ⇒ Q Q \frac{P,\quad P \Rightarrow Q}{Q}
Q P , P ⇒ 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 后向链
后向链是目标驱动:从查询 q q q 出发,找所有能推出 q q q 的规则,再递归证明这些规则的前提。证明 q q q 时:
若 q q q 已知为真,成功。
找所有形如 p 1 , … , p k p_1, \dots, p_k p 1 , … , p k 推出 q q q 的规则。
递归证明 p 1 , … , p k p_1, \dots, p_k p 1 , … , 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) ( A ∨ ¬ B ) ∧ ( B ∨ ¬ C ∨ ¬ D ) 。文字是原子命题或其否定。子句是文字析取。
5.2 命题归结规则
若两个子句含有互补文字,可以删去互补文字并合并剩余部分:
P ∨ Q , ¬ Q ∨ R P ∨ R \frac{P \lor Q,\quad \lnot Q \lor R}{P \lor R}
P ∨ R P ∨ Q , ¬ Q ∨ R
若归结得到空子句 □ \square □ ,则表示矛盾。命题逻辑中,归结是可靠且完备的。
5.3 命题 CNF 转换
把公式转 CNF:
消去双向蕴涵 :A ⇔ B ≡ ( A ⇒ B ) ∧ ( B ⇒ A ) A \Leftrightarrow B \equiv (A \Rightarrow B) \land (B \Rightarrow A) A ⇔ B ≡ ( A ⇒ B ) ∧ ( B ⇒ A )
消去蕴涵 :A ⇒ B ≡ ¬ A ∨ B A \Rightarrow B \equiv \lnot A \lor B A ⇒ B ≡ ¬ A ∨ B
否定内移 :¬ ( A ∧ B ) ≡ ¬ A ∨ ¬ B \lnot(A \land B) \equiv \lnot A \lor \lnot B ¬ ( A ∧ B ) ≡ ¬ A ∨ ¬ B ,¬ ( A ∨ B ) ≡ ¬ A ∧ ¬ B \lnot(A \lor B) \equiv \lnot A \land \lnot B ¬ ( A ∨ B ) ≡ ¬ A ∧ ¬ B
用分配律把析取分配到合取内部 :A ∨ ( B ∧ C ) ≡ ( A ∨ B ) ∧ ( A ∨ C ) A \lor (B \land C) \equiv (A \lor B) \land (A \lor C) A ∨ ( B ∧ C ) ≡ ( A ∨ B ) ∧ ( A ∨ C )
拆成子句集合 。
5.4 归结证明模板(反证法)
要证明 K B ⊨ α KB \models \alpha K B ⊨ α ,做法:
把 KB 转为 CNF 子句(A ∨ B A \lor B A ∨ B )。
把目标否定 ¬ α \lnot\alpha ¬ α 加入。
不断归结:将子句合并。
若推出空子句 □ \square □ ,则 K B ⊨ α KB \models \alpha K B ⊨ α 。
这就是:K B ⊨ α ⟺ K B ∧ ¬ α KB \models \alpha \iff KB \land \lnot\alpha K B ⊨ α ⟺ K B ∧ ¬ α 不可满足。
6. 命题逻辑 → 一阶逻辑
6.1 命题逻辑的优点
命题逻辑有几个重要优点:
陈述性:知识和推理分开。
能表示不完整信息、析取信息、否定信息。
合成性:复合句含义由子句含义决定。
上下文无关:不像自然语言那样高度依赖语境。
6.2 命题逻辑的缺点
命题逻辑表达力弱,不能自然表达对象、关系、函数和量词。例如"所有学生都懂算术",命题逻辑只能枚举:
StudentAlice ⇒ KnowsArithmeticAlice \text{StudentAlice} \Rightarrow \text{KnowsArithmeticAlice}
StudentAlice ⇒ KnowsArithmeticAlice
StudentBob ⇒ KnowsArithmeticBob \text{StudentBob} \Rightarrow \text{KnowsArithmeticBob}
StudentBob ⇒ KnowsArithmeticBob
一阶逻辑可以写成:∀ x ( Student ( x ) ⇒ Knows ( x , Arithmetic ) ) \forall x\, (\text{Student}(x) \Rightarrow \text{Knows}(x, \text{Arithmetic})) ∀ x ( Student ( x ) ⇒ Knows ( x , Arithmetic ) ) 。
Wumpus 世界中的"相邻格子有陷阱当且仅当当前格子有微风"也不应为每个格子手写,而应抽象成对象和关系。
6.3 一阶逻辑的世界观
命题逻辑假设世界由事实组成。一阶逻辑假设世界包含:
对象 :人、数字、课程、格子、门电路。
关系 :红色、兄弟关系、大于、相邻、拥有。
函数 :父亲、左腿、平方根、加一。
逻辑
世界中存在什么
智能体对事实的态度
命题逻辑
事实
真、假、未知
一阶逻辑
事实、对象、关系
真、假、未知
时序逻辑
事实、对象、关系、时间
真、假、未知
概率逻辑
事实
信度在 [ 0 , 1 ] [0,1] [ 0 , 1 ]
7. 一阶逻辑的语法和语义
7.1 基本符号
一阶逻辑的基本元素:
常量 :指代具体对象,如 Robbie、Bob、USTC。
变量 :如 x , y , z x, y, z x , y , z ,由量词绑定。
函数 :从对象到对象,如 Mother ( x ) \text{Mother}(x) Mother ( x ) 、Father ( Bob ) \text{Father}(\text{Bob}) Father ( Bob ) 。
谓词 :返回真或假,如 Robot ( x ) \text{Robot}(x) Robot ( x ) 、Owns ( x , y ) \text{Owns}(x, y) 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)) x , Bob , Mother ( x ) , Father ( 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} Robot ( Robbie ) , Loves ( Bob , Mother ( Bob ) ) , Father ( x ) = John 。
函数项不能单独为真或假。谓词公式才能为真或假。
7.3 一阶逻辑模型和解释
一阶逻辑中的模型包含域元素以及它们之间的关系。解释负责说明符号指代什么:
常量符号指向域中的对象。
谓词符号指向域上的关系。
函数符号指向域上的函数关系。
原子语句 Predicate ( t 1 , … , t n ) \text{Predicate}(t_1, \dots, t_n) Predicate ( t 1 , … , t n ) 为真,当且仅当 t 1 , … , t n t_1, \dots, t_n t 1 , … , t n 指代的对象确实处在该谓词指代的关系中。
FOL 的模型远多于命题逻辑:域大小可以从 1 到无穷;每个谓词都可解释为不同关系;常量也可指向不同对象。因此直接枚举一阶模型通常不可行。
8. 量词
8.1 全称量词
全称量词 ∀ x P ( x ) \forall x\, P(x) ∀ x P ( x ) 表示域中每个对象都使 P ( x ) P(x) P ( x ) 成立。它大致相当于所有实例的合取:P ( a 1 ) ∧ P ( a 2 ) ∧ … P(a_1) \land P(a_2) \land \dots P ( a 1 ) ∧ P ( a 2 ) ∧ … 。
"所有 A 都是 B"的标准模板:∀ x ( A ( x ) ⇒ B ( x ) ) \forall x\, (A(x) \Rightarrow B(x)) ∀ x ( A ( x ) ⇒ B ( x ) ) 。
不要写成 ∀ x ( A ( x ) ∧ B ( x ) ) \forall x\, (A(x) \land B(x)) ∀ x ( A ( x ) ∧ B ( x ) ) ,后者表示世界中每个对象都是 A 且都是 B,太强。
8.2 存在量词
存在量词 ∃ x P ( x ) \exists x\, P(x) ∃ x P ( x ) 表示至少有一个对象使 P ( x ) P(x) P ( x ) 成立。它大致相当于所有实例的析取:P ( a 1 ) ∨ P ( a 2 ) ∨ … P(a_1) \lor P(a_2) \lor \dots P ( a 1 ) ∨ P ( a 2 ) ∨ … 。
"有些 A 是 B"的标准模板:∃ x ( A ( x ) ∧ B ( x ) ) \exists x\, (A(x) \land B(x)) ∃ x ( A ( x ) ∧ B ( x ) ) 。
不要写成 ∃ x ( A ( x ) ⇒ B ( x ) ) \exists x\, (A(x) \Rightarrow B(x)) ∃ x ( A ( x ) ⇒ B ( x ) ) ,因为只要选到一个不是 A 的对象,蕴涵就可能为真,表达会太弱。
8.3 量词交换和对偶
同类量词可交换:
∀ x ∀ y P ( x , y ) ≡ ∀ y ∀ x P ( x , y ) \forall x \forall y\, P(x,y) \equiv \forall y \forall x\, P(x,y)
∀ x ∀ y P ( x , y ) ≡ ∀ y ∀ x P ( x , y )
∃ x ∃ y P ( x , y ) ≡ ∃ y ∃ x P ( x , y ) \exists x \exists y\, P(x,y) \equiv \exists y \exists x\, P(x,y)
∃ x ∃ y P ( x , y ) ≡ ∃ y ∃ x P ( x , y )
不同类量词一般不可交换:
∃ x ∀ y Loves ( x , y ) \exists x \forall y\, \text{Loves}(x,y) ∃ x ∀ y Loves ( x , y ) 表示"存在某个人爱所有人"。
∀ y ∃ x Loves ( x , y ) \forall y \exists x\, \text{Loves}(x,y) ∀ y ∃ x Loves ( x , y ) 表示"每个人都至少被某个人爱"。
量词对偶:
¬ ∀ x P ( x ) ≡ ∃ x ¬ P ( x ) \lnot \forall x\, P(x) \equiv \exists x\, \lnot P(x)
¬ ∀ x P ( x ) ≡ ∃ x ¬ P ( x )
¬ ∃ x P ( x ) ≡ ∀ x ¬ P ( x ) \lnot \exists x\, P(x) \equiv \forall x\, \lnot P(x)
¬ ∃ x P ( x ) ≡ ∀ x ¬ P ( x )
∀ x P ( x ) ≡ ¬ ∃ x ¬ P ( x ) \forall x\, P(x) \equiv \lnot \exists x\, \lnot P(x)
∀ x P ( x ) ≡ ¬ ∃ x ¬ P ( x )
∃ x P ( x ) ≡ ¬ ∀ x ¬ P ( x ) \exists x\, P(x) \equiv \lnot \forall x\, \lnot P(x)
∃ x P ( x ) ≡ ¬ ∀ x ¬ P ( x )
变量名本身不重要,但改名必须避免变量捕获。
8.4 等号
等号表示两个项指代同一对象:t 1 = t 2 t_1 = t_2 t 1 = t 2 。常用于唯一性、计数、不同对象约束:x ≠ y x \neq y x = y 。
Sibling 例子可以写成:
∀ x ∀ y ( Sibling ( x , y ) ⇔ ( x ≠ y ∧ ∃ m ∃ f ( m ≠ f ∧ Parent ( m , x ) ∧ Parent ( f , x ) ∧ Parent ( m , y ) ∧ Parent ( f , y ) ) ) ) \forall x \forall y\, (\text{Sibling}(x,y) \Leftrightarrow (x \neq y \land \exists m \exists f\, (m \neq f \land \text{Parent}(m,x) \land \text{Parent}(f,x) \land \text{Parent}(m,y) \land \text{Parent}(f,y))))
∀ x ∀ y ( Sibling ( x , y ) ⇔ ( x = y ∧ ∃ m ∃ f ( m = f ∧ Parent ( m , x ) ∧ Parent ( f , x ) ∧ Parent ( m , y ) ∧ Parent ( f , y ) ) ) )
9. 自然语言翻译模板
9.1 所有 A 都是 B :∀ x ( A ( x ) ⇒ B ( x ) ) \forall x\, (A(x) \Rightarrow B(x)) ∀ x ( A ( x ) ⇒ B ( x ) )
9.2 有些 A 是 B :∃ x ( A ( x ) ∧ B ( x ) ) \exists x\, (A(x) \land B(x)) ∃ x ( A ( x ) ∧ B ( x ) )
9.3 没有 A 是 B :∀ x ( A ( x ) ⇒ ¬ B ( x ) ) \forall x\, (A(x) \Rightarrow \lnot B(x)) ∀ x ( A ( x ) ⇒ ¬ B ( x ) ) ,等价于 ¬ ∃ x ( A ( x ) ∧ B ( x ) ) \lnot \exists x\, (A(x) \land B(x)) ¬ ∃ x ( A ( x ) ∧ B ( x ) )
9.4 每个 A 都有一个 B :∀ x ( A ( x ) ⇒ ∃ y ( B ( y ) ∧ R ( x , y ) ) ) \forall x\, (A(x) \Rightarrow \exists y\, (B(y) \land R(x,y))) ∀ x ( A ( x ) ⇒ ∃ y ( B ( y ) ∧ R ( x , y ) ) )
例:“每个哺乳动物都有一个家长”:∀ x ( Mammal ( x ) ⇒ ∃ y Parent ( y , x ) ) \forall x\, (\text{Mammal}(x) \Rightarrow \exists y\, \text{Parent}(y, x)) ∀ x ( Mammal ( x ) ⇒ ∃ y 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))) ∃ y ( B ( y ) ∧ ∀ x ( A ( x ) ⇒ R ( x , y ) ) )
对比:∀ x ∃ y R ( x , y ) \forall x \exists y\, R(x,y) ∀ x ∃ y R ( x , y ) (每个 x x x 可以对应不同 y y y );∃ y ∀ x R ( x , y ) \exists y \forall x\, R(x,y) ∃ y ∀ x R ( x , y ) (同一个 y y y 对所有 x x x 适用)。
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))))
∀ x ( Child ( x ) ⇒ ( Loves ( x , Mother ( x ) ) ∨ Loves ( x , Father ( x ) ) ) )
错误直觉是把 Mother ( x ) \text{Mother}(x) Mother ( x ) 和 Father ( x ) \text{Father}(x) Father ( x ) 当成能析取的命题。它们是函数项,是对象,不是真假句子。
9.7 只有一个、至多一个、恰好两个 :
“只有一个对象满足 P P P ”:∃ x ( P ( x ) ∧ ∀ y ( P ( y ) ⇒ y = x ) ) \exists x\, (P(x) \land \forall y\, (P(y) \Rightarrow y = x)) ∃ x ( P ( x ) ∧ ∀ y ( P ( y ) ⇒ y = x ) )
“至多一个对象满足 P P P ”:∀ x ∀ y ( ( P ( x ) ∧ P ( y ) ) ⇒ x = y ) \forall x \forall y\, ((P(x) \land P(y)) \Rightarrow x = y) ∀ x ∀ y ( ( P ( x ) ∧ P ( y ) ) ⇒ x = y )
“恰好两个对象满足 P P P ”:∃ x ∃ y ( x ≠ y ∧ P ( x ) ∧ P ( y ) ∧ ∀ z ( P ( z ) ⇒ ( z = x ∨ z = y ) ) ) \exists x \exists y\, (x \neq y \land P(x) \land P(y) \land \forall z\, (P(z) \Rightarrow (z = x \lor z = y))) ∃ x ∃ y ( x = y ∧ P ( x ) ∧ P ( y ) ∧ ∀ z ( P ( z ) ⇒ ( z = x ∨ z = y ) ) )
9.8 函数还是谓词
若每个对象唯一对应另一个对象,用函数:Mother ( x ) \text{Mother}(x) Mother ( x ) 。
若关系可能一对多、零个或多个,用谓词:Friend ( x , y ) \text{Friend}(x, y) Friend ( x , y ) 。
"母亲"通常可作为函数;"朋友"通常不应写成函数。
10. 一阶逻辑知识工程
10.1 七步法
课件给出的一阶逻辑知识工程流程:
确定任务。
搜集相关知识。
决定谓词、函数、常量的词汇表。
编码领域通用知识。
编码具体问题实例。
向推理过程提交查询并获取答案。
调试知识库。
考试翻译题最关键的是第 3 步:先定义一致的谓词表,后面不要混用关系方向。
10.2 与 FOL KB 交互
在一阶逻辑知识库中,ASK 常返回一个代换。例如 Ask ( KB , ∃ a BestAction ( a , 5 ) ) \text{Ask}(\text{KB}, \exists a\, \text{BestAction}(a, 5)) Ask ( KB , ∃ a BestAction ( a , 5 ) ) 可能返回 { a ↦ Shoot } \{a \mapsto \text{Shoot}\} { a ↦ Shoot } 。
给定语句 S S S 和代换 σ \sigma σ ,S σ S\sigma S σ 表示把 σ \sigma σ 代入 S S S 。例如 S = Smarter ( x , y ) , σ = { x ↦ Hillary , y ↦ Bill } S = \text{Smarter}(x,y),\; \sigma = \{x \mapsto \text{Hillary}, y \mapsto \text{Bill}\} S = Smarter ( x , y ) , σ = { x ↦ Hillary , y ↦ Bill } ,则 S σ = Smarter ( Hillary , Bill ) S\sigma = \text{Smarter}(\text{Hillary}, \text{Bill}) S σ = Smarter ( Hillary , Bill ) 。
10.3 Wumpus 的 FOL 写法
感知规则:∀ t ∀ s ∀ b ( Percept ( [ s , b , Glitter ] , t ) ⇒ Glitter ( t ) ) \forall t \forall s \forall b\, (\text{Percept}([s, b, \text{Glitter}], t) \Rightarrow \text{Glitter}(t)) ∀ t ∀ s ∀ b ( Percept ( [ s , b , Glitter ] , t ) ⇒ Glitter ( t ) )
反射规则:∀ t ( Glitter ( t ) ⇒ BestAction ( Grab , t ) ) \forall t\, (\text{Glitter}(t) \Rightarrow \text{BestAction}(\text{Grab}, t)) ∀ t ( Glitter ( t ) ⇒ BestAction ( 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)) ∀ t ( AtGold ( t ) ∧ ¬ Holding ( Gold , t ) ⇒ BestAction ( Grab , t ) )
相邻定义:∀ x ∀ y ∀ a ∀ b ( Adjacent ( [ x , y ] , [ a , b ] ) ⇔ [ a , b ] ∈ { [ x + 1 , y ] , [ x − 1 , y ] , [ x , y + 1 ] , [ x , y − 1 ] } ) \forall x \forall y \forall a \forall b\, (\text{Adjacent}([x,y], [a,b]) \Leftrightarrow [a,b] \in \{[x+1,y], [x-1,y], [x,y+1], [x,y-1]\}) ∀ x ∀ y ∀ a ∀ b ( Adjacent ( [ x , y ] , [ a , b ] ) ⇔ [ a , b ] ∈ { [ x + 1 , y ] , [ x − 1 , y ] , [ x , y + 1 ] , [ x , y − 1 ] } )
从感知得到格子性质:∀ s ∀ t ( At ( Agent , s , t ) ∧ Breeze ( t ) ⇒ Breezy ( s ) ) \forall s \forall t\, (\text{At}(\text{Agent}, s, t) \land \text{Breeze}(t) \Rightarrow \text{Breezy}(s)) ∀ s ∀ t ( At ( Agent , s , t ) ∧ Breeze ( t ) ⇒ 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))) ∀ s ( Breezy ( s ) ⇒ ∃ r ( Adjacent ( r , s ) ∧ Pit ( r ) ) )
因果规则(从原因推结果):∀ r ∀ s ( Adjacent ( r , s ) ∧ Pit ( r ) ⇒ Breezy ( s ) ) \forall r \forall s\, (\text{Adjacent}(r, s) \land \text{Pit}(r) \Rightarrow \text{Breezy}(s)) ∀ r ∀ s ( Adjacent ( r , s ) ∧ Pit ( r ) ⇒ 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))) ∀ s ( Breezy ( s ) ⇔ ∃ r ( Adjacent ( r , s ) ∧ Pit ( r ) ) )
注意:只写向右、向上的相邻会漏掉方向;没有边界约束会生成不存在的格子;x + 1 x+1 x + 1 需要语言支持算术项。
10.4 亲属关系领域
兄弟是手足:∀ x ∀ y ( Brother ( x , y ) ⇒ Sibling ( x , y ) ) \forall x \forall y\, (\text{Brother}(x,y) \Rightarrow \text{Sibling}(x,y)) ∀ x ∀ y ( Brother ( x , y ) ⇒ Sibling ( x , y ) )
手足关系对称:∀ x ∀ y ( Sibling ( x , y ) ⇔ Sibling ( y , x ) ) \forall x \forall y\, (\text{Sibling}(x,y) \Leftrightarrow \text{Sibling}(y,x)) ∀ x ∀ y ( Sibling ( x , y ) ⇔ Sibling ( y , x ) )
母亲是女性家长:∀ x ∀ y ( Mother ( x , y ) ⇔ ( Female ( x ) ∧ Parent ( x , y ) ) ) \forall x \forall y\, (\text{Mother}(x,y) \Leftrightarrow (\text{Female}(x) \land \text{Parent}(x,y))) ∀ x ∀ y ( Mother ( x , y ) ⇔ ( Female ( x ) ∧ Parent ( x , y ) ) )
堂表亲是父母手足的孩子:∀ x ∀ y ( Cousin ( x , y ) ⇔ ∃ p ∃ p s ( Parent ( p , x ) ∧ Sibling ( p s , p ) ∧ Parent ( p s , 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))) ∀ x ∀ y ( Cousin ( x , y ) ⇔ ∃ p ∃ p s ( Parent ( p , x ) ∧ Sibling ( p s , p ) ∧ Parent ( p s , y ) ) )
10.5 集合领域
集合的递归构造:∀ s ( Set ( s ) ⇔ ( s = { } ∨ ∃ x ∃ s 2 ( Set ( s 2 ) ∧ s = { x ∣ s 2 } ) ) ) \forall s\, (\text{Set}(s) \Leftrightarrow (s = \{\} \lor \exists x \exists s_2\, (\text{Set}(s_2) \land s = \{x \mid s_2\}))) ∀ s ( Set ( s ) ⇔ ( s = { } ∨ ∃ x ∃ s 2 ( Set ( s 2 ) ∧ s = { x ∣ s 2 } ) ) )
空集不能分解:¬ ∃ x ∃ s ( { x ∣ s } = { } ) \lnot \exists x \exists s\, (\{x \mid s\} = \{\}) ¬ ∃ x ∃ s ( { x ∣ s } = { } )
元素属于集合的递归定义:∀ x ∀ s ( x ∈ s ⇔ ∃ y ∃ s 2 ( s = { y ∣ s 2 } ∧ ( x = y ∨ x ∈ s 2 ) ) ) \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))) ∀ x ∀ s ( x ∈ s ⇔ ∃ y ∃ s 2 ( s = { y ∣ s 2 } ∧ ( x = y ∨ x ∈ s 2 ) ) )
子集:∀ s 1 ∀ s 2 ( s 1 ⊆ s 2 ⇔ ∀ x ( x ∈ s 1 ⇒ x ∈ s 2 ) ) \forall s_1 \forall s_2\, (s_1 \subseteq s_2 \Leftrightarrow \forall x\, (x \in s_1 \Rightarrow x \in s_2)) ∀ s 1 ∀ s 2 ( s 1 ⊆ s 2 ⇔ ∀ x ( x ∈ s 1 ⇒ x ∈ s 2 ) )
集合相等:∀ s 1 ∀ s 2 ( s 1 = s 2 ⇔ ( s 1 ⊆ s 2 ∧ s 2 ⊆ s 1 ) ) \forall s_1 \forall s_2\, (s_1 = s_2 \Leftrightarrow (s_1 \subseteq s_2 \land s_2 \subseteq s_1)) ∀ s 1 ∀ s 2 ( s 1 = s 2 ⇔ ( s 1 ⊆ s 2 ∧ s 2 ⊆ s 1 ) )
交集:∀ x ∀ s 1 ∀ s 2 ( x ∈ ( s 1 ∩ s 2 ) ⇔ ( x ∈ s 1 ∧ x ∈ s 2 ) ) \forall x \forall s_1 \forall s_2\, (x \in (s_1 \cap s_2) \Leftrightarrow (x \in s_1 \land x \in s_2)) ∀ x ∀ s 1 ∀ s 2 ( x ∈ ( s 1 ∩ s 2 ) ⇔ ( x ∈ s 1 ∧ x ∈ s 2 ) )
并集:∀ x ∀ s 1 ∀ s 2 ( x ∈ ( s 1 ∪ s 2 ) ⇔ ( x ∈ s 1 ∨ x ∈ s 2 ) ) \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)) ∀ x ∀ s 1 ∀ s 2 ( x ∈ ( s 1 ∪ s 2 ) ⇔ ( x ∈ s 1 ∨ x ∈ s 2 ) )
10.6 电路领域
课件用一位全加器说明知识工程。
任务:验证电路是否正确相加。
相关知识:电路由导线和门组成;门类型包括 AND、OR、XOR、NOT;门的大小、颜色、成本通常无关。
词汇表有不同选择:Type ( X 1 ) = XOR \text{Type}(X_1) = \text{XOR} Type ( X 1 ) = XOR / Type ( X 1 , XOR ) \text{Type}(X_1, \text{XOR}) Type ( X 1 , XOR ) / XOR ( X 1 ) \text{XOR}(X_1) XOR ( X 1 ) 。
通用公理:
相连端口信号相同:∀ t 1 ∀ t 2 ( Connected ( t 1 , t 2 ) ⇒ Signal ( t 1 ) = Signal ( t 2 ) ) \forall t_1 \forall t_2\, (\text{Connected}(t_1, t_2) \Rightarrow \text{Signal}(t_1) = \text{Signal}(t_2)) ∀ t 1 ∀ t 2 ( Connected ( t 1 , t 2 ) ⇒ Signal ( t 1 ) = Signal ( t 2 ) )
信号只能是 0 或 1:∀ t ( Signal ( t ) = 1 ∨ Signal ( t ) = 0 ) \forall t\, (\text{Signal}(t) = 1 \lor \text{Signal}(t) = 0) ∀ t ( Signal ( t ) = 1 ∨ Signal ( t ) = 0 ) ,并且 1 ≠ 0 1 \neq 0 1 = 0 。
连接关系对称:∀ t 1 ∀ t 2 ( Connected ( t 1 , t 2 ) ⇒ Connected ( t 2 , t 1 ) ) \forall t_1 \forall t_2\, (\text{Connected}(t_1, t_2) \Rightarrow \text{Connected}(t_2, t_1)) ∀ t 1 ∀ t 2 ( Connected ( t 1 , t 2 ) ⇒ Connected ( t 2 , t 1 ) )
或门:∀ g ( Type ( g ) = OR ⇒ ( Signal ( Out ( 1 , g ) ) = 1 ⇔ ∃ n ( Signal ( In ( n , g ) ) = 1 ) ) ) \forall g\, (\text{Type}(g) = \text{OR} \Rightarrow (\text{Signal}(\text{Out}(1, g)) = 1 \Leftrightarrow \exists n\, (\text{Signal}(\text{In}(n, g)) = 1))) ∀ g ( Type ( g ) = OR ⇒ ( Signal ( Out ( 1 , g ) ) = 1 ⇔ ∃ n ( Signal ( In ( n , g ) ) = 1 ) ) )
与门:∀ g ( Type ( g ) = AND ⇒ ( Signal ( Out ( 1 , g ) ) = 0 ⇔ ∃ n ( Signal ( In ( n , g ) ) = 0 ) ) ) \forall g\, (\text{Type}(g) = \text{AND} \Rightarrow (\text{Signal}(\text{Out}(1, g)) = 0 \Leftrightarrow \exists n\, (\text{Signal}(\text{In}(n, g)) = 0))) ∀ g ( Type ( g ) = AND ⇒ ( Signal ( Out ( 1 , g ) ) = 0 ⇔ ∃ n ( Signal ( In ( n , g ) ) = 0 ) ) )
异或门:∀ g ( Type ( g ) = XOR ⇒ ( Signal ( Out ( 1 , g ) ) = 1 ⇔ Signal ( In ( 1 , g ) ) ≠ Signal ( In ( 2 , g ) ) ) ) \forall g\, (\text{Type}(g) = \text{XOR} \Rightarrow (\text{Signal}(\text{Out}(1, g)) = 1 \Leftrightarrow \text{Signal}(\text{In}(1, g)) \neq \text{Signal}(\text{In}(2, g)))) ∀ g ( Type ( g ) = XOR ⇒ ( Signal ( Out ( 1 , g ) ) = 1 ⇔ Signal ( In ( 1 , g ) ) = Signal ( In ( 2 , g ) ) ) )
非门:∀ g ( Type ( g ) = NOT ⇒ Signal ( Out ( 1 , g ) ) ≠ Signal ( In ( 1 , g ) ) ) \forall g\, (\text{Type}(g) = \text{NOT} \Rightarrow \text{Signal}(\text{Out}(1, g)) \neq \text{Signal}(\text{In}(1, g))) ∀ g ( Type ( g ) = NOT ⇒ Signal ( Out ( 1 , g ) ) = Signal ( In ( 1 , g ) ) )
调试知识库时要特别注意补上 1 ≠ 0 1 \neq 0 1 = 0 ,否则 XOR 等规则可能不能按预期工作。
11. 一阶逻辑实例化
11.1 为什么一阶推理比命题推理难
命题逻辑中命题符号固定;一阶逻辑中有变量、量词和函数项。因此推理常要先回答:哪些对象能让两个谓词匹配?这就是合一。
11.2 全称实例化
全称语句蕴涵它的所有实例。若有 ∀ v α \forall v\, \alpha ∀ v α 则任意基项 g g g 都可实例化。例:
∀ x ( King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) ) \forall x\, (\text{King}(x) \land \text{Greedy}(x) \Rightarrow \text{Evil}(x))
∀ x ( King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) )
可推出 King ( John ) ∧ Greedy ( John ) ⇒ Evil ( John ) \text{King}(\text{John}) \land \text{Greedy}(\text{John}) \Rightarrow \text{Evil}(\text{John}) King ( John ) ∧ Greedy ( John ) ⇒ Evil ( 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})) King ( Father ( John ) ) ∧ Greedy ( Father ( John ) ) ⇒ Evil ( Father ( John ) ) 。
全称实例化可以多次应用;加入实例后与原知识库在逻辑上等价。
11.3 存在实例化
若有 ∃ v α \exists v\, \alpha ∃ v α ,可引入一个全新的 Skolem 常量 k k k :Subst ( { v ↦ k } , α ) \text{Subst}(\{v \mapsto k\}, \alpha) Subst ( { v ↦ k } , α ) 。例:
∃ x ( Crown ( x ) ∧ OnHead ( x , John ) ) \exists x\, (\text{Crown}(x) \land \text{OnHead}(x, \text{John}))
∃ x ( Crown ( x ) ∧ OnHead ( x , John ) )
可替换为 Crown ( C 1 ) ∧ OnHead ( C 1 , John ) \text{Crown}(C_1) \land \text{OnHead}(C_1, \text{John}) Crown ( C 1 ) ∧ OnHead ( C 1 , John ) ,前提是 C 1 C_1 C 1 是新常量。
重要区别:
全称实例化可以反复添加实例。
存在实例化一般用一次,并用新式子替代原存在语句。
替换后的 KB 不与原 KB 逻辑等价,但与原 KB 可满足性等价。
因此 ∃ x AsHighAs ( x , Everest ) \exists x\, \text{AsHighAs}(x, \text{Everest}) ∃ x AsHighAs ( x , Everest ) 不能随便实例化为 AsHighAs ( Everest , Everest ) \text{AsHighAs}(\text{Everest}, \text{Everest}) AsHighAs ( Everest , Everest ) ,因为存在量词只保证某个对象存在,不保证就是已有常量 Everest。
11.4 命题化
一阶逻辑可通过实例化变成命题逻辑。例如知识库:
∀ x ( King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) ) \forall x\, (\text{King}(x) \land \text{Greedy}(x) \Rightarrow \text{Evil}(x))
∀ x ( King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) )
King ( John ) \text{King}(\text{John})
King ( John )
Greedy ( John ) \text{Greedy}(\text{John})
Greedy ( John )
命题化后有命题符号 King ( John ) , Greedy ( John ) , Evil ( John ) \text{King}(\text{John}),\; \text{Greedy}(\text{John}),\; \text{Evil}(\text{John}) King ( John ) , Greedy ( John ) , Evil ( John ) 。
课件结论:每个一阶知识库都可以命题化以保持蕴涵。基础语句被原 KB 蕴涵,当且仅当被命题化 KB 蕴涵。若有函数符号,基项无限多,例如 Father ( Father ( Father ( John ) ) ) \text{Father}(\text{Father}(\text{Father}(\text{John}))) Father ( Father ( Father ( John ) ) ) 。
Herbrand 定理 :若一阶 KB 蕴涵 α \alpha α ,则存在命题化 KB 的某个有限子集已经蕴涵 α \alpha α 。推理思路:
按项深度 0, 1, 2, … 逐步命题化。
对每个有限命题化 KB 做命题推理。
若 α \alpha α 被蕴涵,最终会找到证明。
若不被蕴涵,可能永远停不下来。
这就是一阶逻辑蕴涵的半可判定性 :被蕴涵的结论存在算法最终回答"是";不被蕴涵的结论不存在通用算法保证有限时间回答"否"。
命题化还会产生大量无关实例。若有 p p p 个 k k k 元谓词和 n n n 个常量,基础原子数量可达 p ⋅ n k p \cdot n^k p ⋅ n k ;有函数符号时更糟。
12. 合一与代换
12.1 代换
代换是变量到项的映射:θ = { x ↦ John , y ↦ Father ( John ) } \theta = \{x \mapsto \text{John}, y \mapsto \text{Father}(\text{John})\} θ = { x ↦ John , y ↦ Father ( John ) } 。应用代换:
Knows ( x , y ) θ = Knows ( John , Father ( John ) ) \text{Knows}(x, y)\theta = \text{Knows}(\text{John}, \text{Father}(\text{John}))
Knows ( x , y ) θ = Knows ( John , Father ( John ) )
12.2 合一
合一寻找一个代换 θ \theta θ ,使两个表达式变得相同:Unify ( α , β ) = θ \text{Unify}(\alpha, \beta) = \theta Unify ( α , β ) = θ 当且仅当 α θ = β θ \alpha\theta = \beta\theta α θ = β θ 。
最一般合一 MGU 是限制最少、最通用的合一;对每对可合一表达式,MGU 在变量改名意义下唯一。例:
Unify ( Knows ( John , x ) , Knows ( John , Jane ) ) = { x ↦ Jane } \text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(\text{John}, \text{Jane})) = \{x \mapsto \text{Jane}\}
Unify ( Knows ( John , x ) , Knows ( John , Jane ) ) = { x ↦ Jane }
Unify ( Knows ( John , x ) , Knows ( y , OJ ) ) = { x ↦ OJ , y ↦ John } \text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(y, \text{OJ})) = \{x \mapsto \text{OJ}, y \mapsto \text{John}\}
Unify ( Knows ( John , x ) , Knows ( y , OJ ) ) = { x ↦ OJ , y ↦ John }
Unify ( Knows ( John , x ) , Knows ( y , Mother ( y ) ) ) = { y ↦ John , x ↦ Mother ( John ) } \text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(y, \text{Mother}(y))) = \{y \mapsto \text{John}, x \mapsto \text{Mother}(\text{John})\}
Unify ( Knows ( John , x ) , Knows ( y , Mother ( y ) ) ) = { y ↦ John , x ↦ Mother ( John ) }
而 Unify ( Knows ( John , x ) , Knows ( x , OJ ) ) \text{Unify}(\text{Knows}(\text{John}, x), \text{Knows}(x, \text{OJ})) Unify ( Knows ( John , x ) , Knows ( x , OJ ) ) 失败,因为它要求 x x x 同时匹配 John 和 OJ。
12.3 合一规则
可合一的情况:
相同常量与相同常量:成功。
变量与不含自身的项:绑定变量。
同名谓词或函数:参数逐一合一。
失败的情况:
不同常量。
不同谓词名。
元数不同。
occurs check 失败,即变量要绑定到包含自己的项。
occurs check 例:x = f ( x ) x = f(x) x = f ( x ) 失败。
常见不可合一选择题:p ( x , x ) p(x, x) p ( x , x ) 与 p ( y , f ( y ) ) p(y, f(y)) p ( y , f ( y ) ) 。若合一,需要 x = y ∧ x = f ( y ) x = y \land x = f(y) x = y ∧ x = f ( y ) ,推出 y = f ( y ) y = f(y) y = f ( y ) ,变量出现在自己的函数项中,失败。
12.4 标准化分离
两个子句归结或规则匹配前,若变量名可能冲突,需要标准化分离,把不同句子的变量改成彼此不同。例如把一个句子里的 x x x 改名为 z 17 z_{17} z 1 7 。变量名不重要,作用域才重要。
13. 一般化分离规则 GMP
13.1 GMP 形式
命题 Modus Ponens:
P , P ⇒ Q Q \frac{P,\quad P \Rightarrow Q}{Q}
Q P , P ⇒ Q
一阶逻辑的 GMP 加上了合一。若有事实 p 1 ′ , … , p n ′ p'_1, \dots, p'_n p 1 ′ , … , p n ′ 和规则 p 1 ∧ p 2 ∧ ⋯ ∧ p n ⇒ q p_1 \land p_2 \land \dots \land p_n \Rightarrow q p 1 ∧ p 2 ∧ ⋯ ∧ p n ⇒ q ,存在代换 θ \theta θ 使每个前提匹配 p i ′ θ = p i θ p'_i \theta = p_i \theta p i ′ θ = p i θ ,则可推出 q θ q\theta q θ 。
例:
King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x ) \text{King}(x) \land \text{Greedy}(x) \Rightarrow \text{Evil}(x)
King ( x ) ∧ Greedy ( x ) ⇒ Evil ( x )
King ( John ) \text{King}(\text{John})
King ( John )
Greedy ( John ) \text{Greedy}(\text{John})
Greedy ( John )
代换 θ = { x ↦ John } \theta = \{x \mapsto \text{John}\} θ = { x ↦ John } ,推出 Evil ( John ) \text{Evil}(\text{John}) Evil ( John ) 。
13.2 GMP 的边界
GMP 通常用于确定子句 KB,所有变量默认全称量化。课件结论:
GMP 可靠。
GMP 对一阶确定子句 KB 完备。
GMP 对一般 FOL 不完备,因为并非所有句子都能化成 Horn 形式。
即使限制在 Horn 子句,一阶逻辑仍是半可判定的。
14. 一阶前向链与后向链
14.1 一阶前向链
一阶前向链从事实出发,用 GMP 不断推出新事实。性质:
对一阶确定子句可靠。
对一阶确定子句完备。
若没有函数符号,即 Datalog,可在多项式轮数内终止。Datalog 中最多产生 p ⋅ n k p \cdot n^k p ⋅ n k 个基础文字。
一般一阶确定子句若含函数符号,当前查询不被蕴涵时可能不终止。
效率要点:
没必要每轮匹配所有规则,只需检查前一轮新增事实涉及的规则。
数据库索引可让已知事实检索接近 O ( 1 ) O(1) O ( 1 ) 。
合取前提与事实集匹配本身是 NP-hard。
14.2 一阶后向链
一阶后向链从查询出发,找能推出该查询的规则,再用合一生成子目标。Prolog 风格:
查询 q q q 。
找规则结论 q ′ q' q ′ 。
合一 q q q 与 q ′ q' q ′ 。
在代换下递归证明规则前提。
性质:深度优先递归证明搜索;空间与证明大小线性相关;因无限循环可能不完备;可通过检查目标栈避免直接循环;可用缓存减少重复子目标;广泛用于逻辑程序设计。
14.3 FC/BC 对一般 FOL 的不完备
前向链和后向链对 Horn KB 完备,但对一般 FOL KB 不完备。原因是一般 FOL 可以包含非 Horn 子句、析取结论、复杂否定等结构,不能只靠确定子句上的 GMP 覆盖所有有效推理。要覆盖一般 FOL,使用一阶归结。
15. 一阶 CNF、Skolem 化与归结
15.1 一阶 CNF 标准化流程
要用归结,先把 FOL 公式转成子句集:
消去双向蕴涵。
消去蕴涵。
否定内移。
标准化变量名,使不同量词使用不同变量。
Skolem 化消去存在量词。
去掉全称量词。
用分配律得到 CNF。
拆成子句。
15.2 Skolem 化
存在量词不在任何全称量词作用域内:∃ x P ( x ) \exists x\, P(x) ∃ x P ( x ) 变为 P ( A ) P(A) P ( A ) ,其中 A A A 是新的 Skolem 常量。
存在量词在全称量词作用域内:∀ x ∃ y Parent ( y , x ) \forall x \exists y\, \text{Parent}(y, x) ∀ x ∃ y Parent ( y , x ) ,这里 y y y 依赖于 x x x ,变为 ∀ x Parent ( F ( x ) , x ) \forall x\, \text{Parent}(F(x), x) ∀ x Parent ( F ( x ) , x ) ,其中 F F F 是新的 Skolem 函数。
一般规律:Skolem 函数的参数是包住该存在变量的所有全称变量。
15.3 课件 CNF 例题
原句:
∀ x ( ( ∀ y ( Animal ( y ) ⇒ Loves ( x , y ) ) ) ⇒ ∃ y Loves ( y , x ) ) \forall x\, ((\forall y\, (\text{Animal}(y) \Rightarrow \text{Loves}(x, y))) \Rightarrow \exists y\, \text{Loves}(y, x))
∀ x ( ( ∀ y ( Animal ( y ) ⇒ Loves ( x , y ) ) ) ⇒ ∃ y Loves ( y , x ) )
意思:每个爱所有动物的人,都被某个人爱。
消去蕴涵:∀ x ( ¬ ∀ y ( ¬ Animal ( y ) ∨ Loves ( x , y ) ) ∨ ∃ y Loves ( y , x ) ) \forall x\, (\lnot \forall y\, (\lnot \text{Animal}(y) \lor \text{Loves}(x, y)) \lor \exists y\, \text{Loves}(y, x)) ∀ x ( ¬ ∀ y ( ¬ Animal ( y ) ∨ Loves ( x , y ) ) ∨ ∃ y Loves ( y , x ) )
否定内移:∀ x ( ∃ y ( Animal ( y ) ∧ ¬ Loves ( x , y ) ) ∨ ∃ y Loves ( y , x ) ) \forall x\, (\exists y\, (\text{Animal}(y) \land \lnot \text{Loves}(x, y)) \lor \exists y\, \text{Loves}(y, x)) ∀ x ( ∃ y ( Animal ( y ) ∧ ¬ Loves ( x , y ) ) ∨ ∃ y Loves ( y , x ) )
标准化变量:∀ x ( ∃ y ( Animal ( y ) ∧ ¬ Loves ( x , y ) ) ∨ ∃ z Loves ( z , x ) ) \forall x\, (\exists y\, (\text{Animal}(y) \land \lnot \text{Loves}(x, y)) \lor \exists z\, \text{Loves}(z, x)) ∀ x ( ∃ y ( Animal ( y ) ∧ ¬ Loves ( x , y ) ) ∨ ∃ z 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)) ∀ x ( ( Animal ( F ( x ) ) ∧ ¬ Loves ( x , F ( x ) ) ) ∨ 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 ( x , F ( x ) ) ) ∨ 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 ) ) ∧ ( ¬ Loves ( x , F ( x ) ) ∨ Loves ( G ( x ) , x ) )
得到两个子句:
Animal ( F ( x ) ) ∨ Loves ( G ( x ) , x ) \text{Animal}(F(x)) \lor \text{Loves}(G(x), x)
Animal ( F ( x ) ) ∨ Loves ( G ( x ) , x )
¬ Loves ( x , F ( x ) ) ∨ Loves ( G ( x ) , x ) \lnot \text{Loves}(x, F(x)) \lor \text{Loves}(G(x), x)
¬ Loves ( x , F ( x ) ) ∨ Loves ( G ( x ) , x )
15.4 一阶归结规则
若两个子句中有可合一的互补文字:
L 1 ∨ ⋯ ∨ L k 和 M 1 ∨ ⋯ ∨ M n L_1 \lor \dots \lor L_k \quad \text{和} \quad M_1 \lor \dots \lor M_n
L 1 ∨ ⋯ ∨ L k 和 M 1 ∨ ⋯ ∨ M n
且 Unify ( L i , ¬ M j ) = θ \text{Unify}(L_i, \lnot M_j) = \theta Unify ( L i , ¬ M j ) = θ ,则推出:
( L 1 ∨ ⋯ ∨ L i − 1 ∨ L i + 1 ∨ ⋯ ∨ L k ∨ M 1 ∨ ⋯ ∨ M j − 1 ∨ M j + 1 ∨ ⋯ ∨ M n ) θ (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
( L 1 ∨ ⋯ ∨ L i − 1 ∨ L i + 1 ∨ ⋯ ∨ L k ∨ M 1 ∨ ⋯ ∨ M j − 1 ∨ M j + 1 ∨ ⋯ ∨ M n ) θ
归结前两个子句要标准化分离,避免共享变量名造成误绑定。
例:
¬ Rich ( x ) ∨ Unhappy ( x ) \lnot \text{Rich}(x) \lor \text{Unhappy}(x)
¬ Rich ( x ) ∨ Unhappy ( x )
Rich ( Ken ) \text{Rich}(\text{Ken})
Rich ( Ken )
合一 θ = { x ↦ Ken } \theta = \{x \mapsto \text{Ken}\} θ = { x ↦ Ken } ,推出 Unhappy ( Ken ) \text{Unhappy}(\text{Ken}) Unhappy ( Ken ) 。
一阶归结应用于 CNF ( KB ∧ ¬ α ) \text{CNF}(\text{KB} \land \lnot\alpha) CNF ( KB ∧ ¬ α ) ,对 FOL 是完备的。
16. 完整证明例题
16.1 Robbie 友好证明
知识库:
Robot ( Robbie ) \text{Robot}(\text{Robbie})
Robot ( Robbie )
Owner ( Bob , Robbie ) \text{Owner}(\text{Bob}, \text{Robbie})
Owner ( Bob , Robbie )
∀ x ∀ y ( ( Robot ( x ) ∧ Owner ( y , x ) ) ⇒ FriendlyTo ( x , y ) ) \forall x \forall y\, ((\text{Robot}(x) \land \text{Owner}(y, x)) \Rightarrow \text{FriendlyTo}(x, y))
∀ x ∀ y ( ( Robot ( x ) ∧ Owner ( y , x ) ) ⇒ FriendlyTo ( x , y ) )
目标:FriendlyTo ( Robbie , Bob ) \text{FriendlyTo}(\text{Robbie}, \text{Bob}) FriendlyTo ( Robbie , 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) ¬ Robot ( x ) ∨ ¬ Owner ( y , x ) ∨ FriendlyTo ( x , y )
加入否定目标:¬ FriendlyTo ( Robbie , Bob ) \lnot \text{FriendlyTo}(\text{Robbie}, \text{Bob}) ¬ FriendlyTo ( Robbie , Bob )
归结:
规则与 Robot ( Robbie ) \text{Robot}(\text{Robbie}) Robot ( Robbie ) 归结,代换 θ 1 = { x ↦ Robbie } \theta_1 = \{x \mapsto \text{Robbie}\} θ 1 = { x ↦ Robbie } ,得到 ¬ Owner ( y , Robbie ) ∨ FriendlyTo ( Robbie , y ) \lnot \text{Owner}(y, \text{Robbie}) \lor \text{FriendlyTo}(\text{Robbie}, y) ¬ Owner ( y , Robbie ) ∨ FriendlyTo ( Robbie , y ) 。
与 Owner ( Bob , Robbie ) \text{Owner}(\text{Bob}, \text{Robbie}) Owner ( Bob , Robbie ) 归结,代换 θ 2 = { y ↦ Bob } \theta_2 = \{y \mapsto \text{Bob}\} θ 2 = { y ↦ Bob } ,得到 FriendlyTo ( Robbie , Bob ) \text{FriendlyTo}(\text{Robbie}, \text{Bob}) FriendlyTo ( Robbie , Bob ) 。
与否定目标归结:□ \square □
因此 K B ⊨ FriendlyTo ( Robbie , Bob ) KB \models \text{FriendlyTo}(\text{Robbie}, \text{Bob}) K B ⊨ FriendlyTo ( Robbie , Bob ) 。
16.2 为什么不能证明 Bob 聪明
若知识库只有:
Robot ( Robbie ) \text{Robot}(\text{Robbie})
Robot ( Robbie )
Owner ( Bob , Robbie ) \text{Owner}(\text{Bob}, \text{Robbie})
Owner ( Bob , Robbie )
∃ y ∃ x ( Owns ( y , x ) ∧ Robot ( x ) ∧ Smart ( y ) ) \exists y \exists x\, (\text{Owns}(y, x) \land \text{Robot}(x) \land \text{Smart}(y))
∃ y ∃ x ( Owns ( y , x ) ∧ Robot ( x ) ∧ Smart ( y ) )
不能推出 Smart ( Bob ) \text{Smart}(\text{Bob}) Smart ( 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)) ∀ y ( ( ∃ x ( Owns ( y , x ) ∧ Robot ( x ) ) ) ⇒ Smart ( y ) ) 。
如果题目只给存在句,不要擅自把存在对象绑定到 Bob。
16.3 West 犯罪例题
自然语言:美国人向敌对国家出售武器是犯罪。Nono 是美国的敌人,有一些导弹;它所有导弹都是美国人 West 卖给它的。证明 West 是罪犯。
知识库:
∀ x ∀ y ∀ z ( American ( x ) ∧ Weapon ( y ) ∧ Sells ( x , y , z ) ∧ Hostile ( z ) ⇒ Criminal ( x ) ) \forall x \forall y \forall z\, (\text{American}(x) \land \text{Weapon}(y) \land \text{Sells}(x, y, z) \land \text{Hostile}(z) \Rightarrow \text{Criminal}(x))
∀ x ∀ y ∀ z ( American ( x ) ∧ Weapon ( y ) ∧ Sells ( x , y , z ) ∧ Hostile ( z ) ⇒ Criminal ( x ) )
Nono 有某个导弹,Skolem 化为:Owns ( Nono , M 1 ) \text{Owns}(\text{Nono}, M_1) Owns ( Nono , M 1 ) ,Missile ( M 1 ) \text{Missile}(M_1) 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 ) ∧ Owns ( Nono , x ) ⇒ Sells ( West , x , Nono ) )
导弹是武器:∀ x ( Missile ( x ) ⇒ Weapon ( x ) ) \forall x\, (\text{Missile}(x) \Rightarrow \text{Weapon}(x)) ∀ x ( Missile ( x ) ⇒ Weapon ( x ) )
美国的敌人是敌对国家:∀ x ( Enemy ( x , America ) ⇒ Hostile ( x ) ) \forall x\, (\text{Enemy}(x, \text{America}) \Rightarrow \text{Hostile}(x)) ∀ x ( Enemy ( x , America ) ⇒ Hostile ( x ) )
事实:American ( West ) \text{American}(\text{West}) American ( West ) ,Enemy ( Nono , America ) \text{Enemy}(\text{Nono}, \text{America}) Enemy ( Nono , America )
推理链:
Missile ( M 1 ) ⇒ Weapon ( M 1 ) \text{Missile}(M_1) \Rightarrow \text{Weapon}(M_1)
Missile ( M 1 ) ⇒ Weapon ( M 1 )
Missile ( M 1 ) ∧ Owns ( Nono , M 1 ) ⇒ Sells ( West , M 1 , Nono ) \text{Missile}(M_1) \land \text{Owns}(\text{Nono}, M_1) \Rightarrow \text{Sells}(\text{West}, M_1, \text{Nono})
Missile ( M 1 ) ∧ Owns ( Nono , M 1 ) ⇒ Sells ( West , M 1 , Nono )
Enemy ( Nono , America ) ⇒ Hostile ( Nono ) \text{Enemy}(\text{Nono}, \text{America}) \Rightarrow \text{Hostile}(\text{Nono})
Enemy ( Nono , America ) ⇒ Hostile ( Nono )
于是犯罪规则四个前提都满足:
American ( West ) ∧ Weapon ( M 1 ) ∧ Sells ( West , M 1 , 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})
American ( West ) ∧ Weapon ( M 1 ) ∧ Sells ( West , M 1 , Nono ) ∧ Hostile ( Nono )
推出 Criminal ( West ) \text{Criminal}(\text{West}) Criminal ( West ) 。
17. 考试速查
17.1 概念判断
K B ⊨ α KB \models \alpha K B ⊨ α 是语义蕴涵,不是算法运行结果。
K B ⊢ i α KB \vdash_i \alpha K B ⊢ i α 是推理过程 i i i 的导出关系。
可靠性:导出的都被蕴涵。
完备性:被蕴涵的都能导出。
命题逻辑归结可靠且完备。
一阶归结对 FOL 完备。
GMP 对一阶确定子句完备,对一般 FOL 不完备。
前向链和后向链对 Horn KB 完备,对一般 FOL 不完备。
一阶逻辑蕴涵半可判定。
17.2 翻译题
"所有"通常主连接词是 ⇒ \Rightarrow ⇒ 。
"存在"通常主连接词是 ∧ \land ∧ 。
∀ x ∃ y \forall x \exists y ∀ x ∃ y 与 ∃ y ∀ x \exists y \forall x ∃ y ∀ x 一般不同。
函数返回对象,谓词返回真假。
函数项不能单独放在公式里当命题。
先定义谓词表,注意参数顺序。
用等号表达唯一性、至多一个、恰好几个。
17.3 合一题
检查顺序:
谓词名是否相同。
元数是否相同。
常量是否冲突。
函数名是否冲突。
变量绑定是否违反 occurs check。
是否需要标准化分离。
常见失败:x = f ( x ) x = f(x) x = f ( x ) 。常见 MGU 不是"越具体越好",而是"限制越少越好"。
17.4 CNF 与 Skolem
CNF 流程:消去 ⇔ \Leftrightarrow ⇔ → 消去 ⇒ \Rightarrow ⇒ → ¬ \lnot ¬ 内移 → 变量标准化 → Skolem 化 → ∀ \forall ∀ 删除 → ∨ \lor ∨ 分配到 ∧ \land ∧ → 拆子句。
Skolem:
不依赖全称变量:新常量。
依赖全称变量:新函数。
存在实例化或 Skolem 化一定要用新符号。
17.5 归结证明
证明 K B ⊨ α KB \models \alpha K B ⊨ α ,就做 CNF ( KB ∧ ¬ α ) \text{CNF}(\text{KB} \land \lnot\alpha) CNF ( KB ∧ ¬ α ) ,然后归结出 □ \square □ 。每一步写清:选择哪两个子句;哪两个文字互补;MGU 是什么;得到的新子句是什么。检查空子句是否真的来自互补文字全部消去。
18. 最后一页压缩版
逻辑智能体:TELL ( KB, percept ) , ASK ( KB, query ) \text{TELL}(\text{KB, percept}),\; \text{ASK}(\text{KB, query}) TELL ( KB, percept ) , ASK ( KB, query )
蕴涵:K B ⊨ α ⟺ M ( K B ) ⊆ M ( α ) KB \models \alpha \iff M(KB) \subseteq M(\alpha) K B ⊨ α ⟺ M ( K B ) ⊆ M ( α )
可靠与完备:K B ⊢ i α ⇒ K B ⊨ α KB \vdash_i \alpha \Rightarrow KB \models \alpha K B ⊢ i α ⇒ K B ⊨ α ;K B ⊨ α ⇒ K B ⊢ i α KB \models \alpha \Rightarrow KB \vdash_i \alpha K B ⊨ α ⇒ K B ⊢ i α
反证归结:K B ⊨ α ⟺ K B ∧ ¬ α KB \models \alpha \iff KB \land \lnot\alpha K B ⊨ α ⟺ K B ∧ ¬ α 不可满足
命题 CNF:( A ∨ ¬ B ) ∧ ( ¬ A ∨ C ) (A \lor \lnot B) \land (\lnot A \lor C) ( A ∨ ¬ B ) ∧ ( ¬ A ∨ C )
Horn 子句:P 1 ∧ ⋯ ∧ P m ⇒ Q P_1 \land \dots \land P_m \Rightarrow Q P 1 ∧ ⋯ ∧ P m ⇒ Q
所有 A 是 B:∀ x ( A ( x ) ⇒ B ( x ) ) \forall x\, (A(x) \Rightarrow B(x)) ∀ x ( A ( x ) ⇒ B ( x ) )
有些 A 是 B:∃ x ( A ( x ) ∧ B ( x ) ) \exists x\, (A(x) \land B(x)) ∃ x ( A ( x ) ∧ 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))) ∀ x ( A ( x ) ⇒ ∃ y ( B ( y ) ∧ R ( x , y ) ) )
合一:Unify ( α , β ) = θ ⟺ α θ = β θ \text{Unify}(\alpha, \beta) = \theta \iff \alpha\theta = \beta\theta Unify ( α , β ) = θ ⟺ α θ = β θ
GMP:p 1 ′ , … , p n ′ , p 1 ∧ ⋯ ∧ p n ⇒ q ⇒ q θ p'_1, \dots, p'_n,\; p_1 \land \dots \land p_n \Rightarrow q \;\Rightarrow\; q\theta p 1 ′ , … , p n ′ , p 1 ∧ ⋯ ∧ p n ⇒ q ⇒ q θ ,其中 p i ′ θ = p i θ p'_i \theta = p_i \theta p i ′ θ = p i θ
一阶归结:Unify ( L i , ¬ M j ) = θ \text{Unify}(L_i, \lnot M_j) = \theta Unify ( L i , ¬ M j ) = θ ,推出删去互补文字后的合并子句,并整体应用 θ \theta θ 。
记住:命题逻辑靠枚举模型或归结;FOL 由于变量和量词,要先处理实例化、合一、Skolem 化。前向链和后向链适合 Horn 子句;一般 FOL 证明靠一阶归结。
Ch10 不确定性与贝叶斯网络 (Uncertainty & Bayesian Networks)
课件:lec10.pdf (96 页) + bnet.pdf (60 页)
教材:Artificial Intelligence: A Modern Approach (Russell & Norvig),Ch13 (Quantifying Uncertainty) & Ch14 (Probabilistic Reasoning)
教师:吉建民,USTC
0. 本章概述
不确定性是真实世界的常态:传感器有噪声、动作结果不可预知、环境部分可观测。纯逻辑方法在例外情况下要么"冒着说错的风险",要么"结论过弱无法决策"。概率论 (Probability theory) 提供了处理不确定知识的严密形式化方法,而贝叶斯网络 (Bayesian Networks) 则用概率论与图论的联姻,把指数级爆炸的联合概率分布分解为局部、紧凑的模块,是现代 AI 中不确定性推理的核心工具。
本章由"不确定性/概率基础"与"贝叶斯网络"两部分合并:前者建立概率公理、条件独立与贝叶斯规则;后者给出网络的定义、语义、构造、d-分离、精确推理(枚举 / 变量消元 / 团树传播)、近似推理(重要性抽样 / 拒绝采样 / 似然加权 / Gibbs-MCMC)以及朴素贝叶斯模型。
子主题
核心内容
重要程度
为什么用概率
惰性 + 无知;主观/频率解释;决策理论 = 概率 + 效用
⭐⭐
概率基础
随机变量、原子事件、联合/边缘/条件分布、概率公理
⭐⭐⭐
全概率工具
乘法规则、链式法则、全概率公式、归一化
⭐⭐⭐
独立与条件独立
X ⊥ Y X\perp Y X ⊥ Y 、X ⊥ Y ∣ Z X\perp Y\mid Z X ⊥ Y ∣ Z ;条件独立把表示从指数降为线性
⭐⭐⭐
期望与方差
E , Var \mathbb{E},\,\text{Var} E , Var 定义与性质
⭐⭐
贝叶斯规则
P ( Cause ∣ Effect ) = α P ( Effect ∣ Cause ) P ( Cause ) P(\text{Cause}\mid\text{Effect})=\alpha P(\text{Effect}\mid\text{Cause})P(\text{Cause}) P ( Cause ∣ Effect ) = α P ( Effect ∣ Cause ) P ( Cause )
⭐⭐⭐
枚举推理 Enumeration-Ask
固定证据、对隐藏变量求和;O ( d n ) O(d^n) O ( d n )
⭐⭐⭐
贝叶斯网络定义/语义
DAG + CPT;P = ∏ i P ( X i ∣ Parents ( X i ) ) P=\prod_i P(X_i\mid\text{Parents}(X_i)) P = ∏ i P ( X i ∣ Parents ( X i ) )
⭐⭐⭐
网络构造与紧致性
因果顺序优先;O ( n ⋅ 2 k ) O(n\cdot 2^k) O ( n ⋅ 2 k ) vs O ( 2 n ) O(2^n) O ( 2 n )
⭐⭐⭐
条件独立与 d-分离
顺连/分连/汇连三情形;整体马尔可夫性
⭐⭐⭐
变量消元 VE
因子 (factor);按消元顺序右乘左求和
⭐⭐⭐
团树传播
共享中间结果;VE 的另一组织形式
⭐⭐
近似推理
拒绝采样、似然加权、Gibbs/MCMC
⭐⭐⭐
朴素贝叶斯
P ( Cause , Effects ) = P ( Cause ) ∏ i P ( Effect i ∣ Cause ) P(\text{Cause},\text{Effects})=P(\text{Cause})\prod_i P(\text{Effect}_i\mid\text{Cause}) P ( Cause , Effects ) = P ( Cause ) ∏ i P ( Effect i ∣ Cause )
⭐⭐⭐
MAP / MPE
最大后验假设 / 最大可能解释
⭐⭐
第一部分:不确定性与概率基础
1.1 为什么需要不确定性
以"提前 t t t 分钟出发去机场能否按时到"为例,纯逻辑方法的问题:
部分可观测性 (partial observability) :路况、他人计划未知;
噪声传感器 (noisy sensors) :交通报道不准;
动作结果的不确定性 (uncertain outcomes) :可能爆胎;
建模与预测的巨大复杂性 。
纯逻辑要么 risk falsehood(冒错误风险) :“A25 一定能准时到”,要么 结论过弱 :“A25 能准时到,前提是桥上没事故、不下雨、轮胎完好……”。而概率方法可给出 P ( A 25 到达 ∣ 无事故报道 ) = 0.04 P(A25\text{ 到达 }\mid\text{ 无事故报道})=0.04 P ( A 2 5 到达 ∣ 无事故报道 ) = 0 . 0 4 这样的信度 (degree of belief) 。
概率方法的两大动因
概率断言概括了两类来源的不确定性:
Laziness(惰性) :懒得穷举所有例外 (exceptions)、限定条件 (qualifications);
Ignorance(无知) :缺乏相关事实、初始条件等。
概率的两种解释
解释
含义
局限
频率解释 (Frequentist)
P ( A ) = n / N P(A)=n/N P ( A ) = n / N ,长期重复试验中的相对频率;大数定律保证 N → ∞ N\to\infty N → ∞ 时频率趋于概率
无法处理一次性事件(如第三次世界大战、总统竞选结果)
贝叶斯/主观解释 (Bayesian/Subjective)
概率是人在不完全知识下对事件发生的个人信度 (置信度)
主观;但须满足 Kolmogorov 公理,否则可构造必输赌局
⭐ 本课/教材采用主观概率 :概率把命题与智能体自身的知识状态相联系,而非对世界的客观断言。例如 P ( A 25 ∣ 无事故报道 ) = 0.06 P(A25\mid\text{无事故报道})=0.06 P ( A 2 5 ∣ 无事故报道 ) = 0 . 0 6 ,而补充"早上 5 点"后变为 P ( A 25 ∣ 无事故报道 , 5 a.m. ) = 0.15 P(A25\mid\text{无事故报道},5\text{a.m.})=0.15 P ( A 2 5 ∣ 无事故报道 , 5 a.m. ) = 0 . 1 5 。
决策理论
决策理论 (Decision theory) = 概率理论 (Probability) + 效用理论 (Utility theory) \boxed{\,\text{决策理论 (Decision theory) = 概率理论 (Probability) + 效用理论 (Utility theory)}\,}
决策理论 (Decision theory) = 概率理论 (Probability) + 效用理论 (Utility theory)
选择哪个动作取决于对"误机"vs"等待时间"等的偏好 (preferences) ,由效用函数刻画。
1.2 概率的语法 (Syntax)
随机变量 (Random Variable)
基本元素,类似于命题逻辑中的命题,取值定义"可能世界 (possible worlds)"。
布尔随机变量 (Boolean) :如 Cavity(有无牙洞)∈ {true, false};
离散随机变量 (Discrete) :如 Weather ∈ ⟨sunny, rainy, cloudy, snow⟩。取值必须穷尽 (exhaustive) 且互斥 (mutually exclusive) ;
连续随机变量 (Continuous) :如 Temp = 21.6。
原子事件 (Atomic Event)
对智能体无法确定的世界状态的一个完整 详细描述(即对所有随机变量的一组完整赋值)。原子事件互斥且穷尽。
例:世界仅含两个布尔变量 Cavity、Toothache 时有 4 个原子事件:
{ C = f ∧ T = f , C = f ∧ T = t , C = t ∧ T = f , C = t ∧ T = t } \{C\!=\!f\wedge T\!=\!f,\; C\!=\!f\wedge T\!=\!t,\; C\!=\!t\wedge T\!=\!f,\; C\!=\!t\wedge T\!=\!t\} { C = f ∧ T = f , C = f ∧ T = t , C = t ∧ T = f , C = t ∧ T = t } 。
概率公理 (Kolmogorov Axioms)
对任意命题 A , B A,B A , B :
0 ≤ P ( A ) ≤ 1 0\le P(A)\le 1 0 ≤ P ( A ) ≤ 1 (非负性);
P ( true ) = 1 P(\text{true})=1 P ( true ) = 1 ,P ( false ) = 0 P(\text{false})=0 P ( false ) = 0 (规范性,P ( Ω ) = 1 P(\Omega)=1 P ( Ω ) = 1 );
P ( A ∨ B ) = P ( A ) + P ( B ) − P ( A ∧ B ) P(A\vee B)=P(A)+P(B)-P(A\wedge B) P ( A ∨ B ) = P ( A ) + P ( B ) − P ( A ∧ B ) ;若 A ∩ B = ∅ A\cap B=\varnothing A ∩ B = ∅ 则 P ( A ∪ B ) = P ( A ) + P ( B ) P(A\cup B)=P(A)+P(B) P ( A ∪ B ) = P ( A ) + P ( B ) (有限可加性)。
形式化地,概率测度是 P : 2 Ω → [ 0 , 1 ] P:2^{\Omega}\to[0,1] P : 2 Ω → [ 0 , 1 ] 的映射。
1.3 联合、边缘、先验分布
先验/无条件概率 (Prior / Unconditional Probability)
在没有任何其它信息存在时对命题的信度。例:P ( Cavity = t r u e ) = 0.1 P(\text{Cavity}=true)=0.1 P ( Cavity = t r u e ) = 0 . 1 。
概率分布 (Probability distribution) 给出一个随机变量所有可能取值的概率(归一化,和为 1):
P ( Weather ) = ⟨ 0.72 , 0.1 , 0.08 , 0.1 ⟩ P(\text{Weather})=\langle 0.72,\,0.1,\,0.08,\,0.1\rangle
P ( Weather ) = ⟨ 0 . 7 2 , 0 . 1 , 0 . 0 8 , 0 . 1 ⟩
联合概率分布 (Joint Probability Distribution)
给出随机变量集所有取值组合的概率,即每个原子事件(样本点)的概率:
P ( Weather , Cavity ) = sunny rainy cloudy snow Cavity = t 0.144 0.02 0.016 0.02 Cavity = f 0.576 0.08 0.064 0.08 P(\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}
P ( Weather , Cavity ) = Cavity = t Cavity = f sunny 0 . 1 4 4 0 . 5 7 6 rainy 0 . 0 2 0 . 0 8 cloudy 0 . 0 1 6 0 . 0 6 4 snow 0 . 0 2 0 . 0 8
⭐ 任何关于该领域的问题都可以由联合分布回答 ,因为每个事件都是样本点之和。
对 n n n 个变量,联合分布表含 ∏ i ∣ Ω X i ∣ \prod_i|\Omega_{X_i}| ∏ i ∣ Ω X i ∣ 个状态组合(二元变量即 2 n − 1 2^n-1 2 n − 1 个独立参数),随变量数指数增长 。
边缘化 (Marginalization)
设 X = { X 1 , … , X n } X=\{X_1,\dots,X_n\} X = { X 1 , … , X n } ,Y ⊂ X Y\subset X Y ⊂ X ,Z = X ∖ Y Z=X\setminus Y Z = X ∖ Y ,则 Y Y Y 的边缘分布 (marginal distribution) :
P ( Y ) = ∑ Z P ( X 1 , … , X n ) = ∑ z P ( Y , z ) P(Y)=\sum_{Z} P(X_1,\dots,X_n)=\sum_{z} P(Y,z)
P ( Y ) = Z ∑ P ( X 1 , … , X n ) = z ∑ P ( Y , z )
连续变量
用参数化密度函数表示,如均匀分布 U [ 18 , 26 ] U[18,26] U [ 1 8 , 2 6 ] 、正态分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N ( μ , σ 2 ) ;
P P P 是密度 (density) ,积分等于 1;P ( X = 20.5 ) = 0.125 P(X=20.5)=0.125 P ( X = 2 0 . 5 ) = 0 . 1 2 5 表示 lim d x → 0 P ( 20.5 ≤ X ≤ 20.5 + d x ) / d x = 0.125 \lim_{dx\to0}P(20.5\le X\le 20.5+dx)/dx=0.125 lim d x → 0 P ( 2 0 . 5 ≤ X ≤ 2 0 . 5 + d x ) / d x = 0 . 1 2 5 。
1.4 条件概率与全概率工具
条件概率 (Conditional Probability)
后验概率 (posterior probability) :P ( a ∣ b ) P(a\mid b) P ( a ∣ b ) ,给定 b b b 时 a a a 的概率。
⭐ 定义 (P ( b ) > 0 P(b)>0 P ( b ) > 0 ):
P ( a ∣ b ) = P ( a ∧ b ) P ( b ) \boxed{\,P(a\mid b)=\dfrac{P(a\wedge b)}{P(b)}\,}
P ( a ∣ b ) = P ( b ) P ( a ∧ b )
乘法规则 (Product Rule)
P ( a ∧ b ) = P ( a ∣ b ) P ( b ) = P ( b ∣ a ) P ( a ) P(a\wedge b)=P(a\mid b)P(b)=P(b\mid a)P(a)
P ( a ∧ b ) = P ( a ∣ b ) P ( b ) = P ( b ∣ a ) P ( a )
分布形式:P ( Weather , Cavity ) = P ( Weather ∣ Cavity ) P ( Cavity ) P(\text{Weather},\text{Cavity})=P(\text{Weather}\mid\text{Cavity})P(\text{Cavity}) P ( Weather , Cavity ) = P ( Weather ∣ Cavity ) P ( Cavity ) 。
链式法则 (Chain Rule)
对乘法规则反复应用:
P ( X 1 , … , X n ) = P ( X 1 ) P ( X 2 ∣ X 1 ) ⋯ P ( X n ∣ X 1 , … , X n − 1 ) = ∏ i = 1 n P ( X i ∣ X 1 , … , X i − 1 ) P(X_1,\dots,X_n)=P(X_1)\,P(X_2\mid X_1)\cdots P(X_n\mid X_1,\dots,X_{n-1})=\prod_{i=1}^{n}P(X_i\mid X_1,\dots,X_{i-1})
P ( X 1 , … , X n ) = P ( X 1 ) P ( X 2 ∣ X 1 ) ⋯ P ( X n ∣ X 1 , … , X n − 1 ) = i = 1 ∏ n P ( X i ∣ X 1 , … , X i − 1 )
全概率公式 (Law of Total Probability)
由边缘化 + 乘法规则得:
P ( a ) = ∑ b P ( a , b ) = ∑ b P ( a ∣ b ) P ( b ) P(a)=\sum_{b}P(a,b)=\sum_{b}P(a\mid b)P(b)
P ( a ) = b ∑ P ( a , b ) = b ∑ P ( a ∣ b ) P ( b )
(先按 b b b 分解、再求和消去 b b b 。)
归一化 (Normalization)
分母可视为归一化常数 α \alpha α :
P ( Cavity ∣ toothache ) = α P ( Cavity , toothache ) = α ⟨ 0.12 , 0.08 ⟩ = ⟨ 0.6 , 0.4 ⟩ P(\text{Cavity}\mid\text{toothache})=\alpha\,P(\text{Cavity},\text{toothache})=\alpha\langle 0.12,\,0.08\rangle=\langle 0.6,\,0.4\rangle
P ( Cavity ∣ toothache ) = α P ( Cavity , toothache ) = α ⟨ 0 . 1 2 , 0 . 0 8 ⟩ = ⟨ 0 . 6 , 0 . 4 ⟩
期望与方差 (Expectation & Variance)
期望 (Expectation) :E [ X ] = ∑ x x P ( X = x ) \mathbb{E}[X]=\sum_x x\,P(X=x) E [ X ] = ∑ x x P ( X = x ) (离散)/ ∫ x p ( x ) d x \int x\,p(x)\,dx ∫ x p ( x ) d x (连续)。
方差 (Variance) :Var ( X ) = E [ ( X − E [ X ] ) 2 ] = E [ X 2 ] − ( E [ X ] ) 2 \text{Var}(X)=\mathbb{E}\big[(X-\mathbb{E}[X])^2\big]=\mathbb{E}[X^2]-(\mathbb{E}[X])^2 Var ( X ) = E [ ( X − E [ X ] ) 2 ] = E [ X 2 ] − ( E [ X ] ) 2 。
线性性:E [ a X + b ] = a E [ X ] + b \mathbb{E}[aX+b]=a\mathbb{E}[X]+b E [ a X + b ] = a E [ X ] + b ;Var ( a X + b ) = a 2 Var ( X ) \text{Var}(aX+b)=a^2\text{Var}(X) Var ( a X + b ) = a 2 Var ( X ) 。
若 X , Y X,Y X , Y 独立:E [ X Y ] = E [ X ] E [ Y ] \mathbb{E}[XY]=\mathbb{E}[X]\mathbb{E}[Y] E [ X Y ] = E [ X ] E [ Y ] ,Var ( X + Y ) = Var ( X ) + Var ( Y ) \text{Var}(X+Y)=\text{Var}(X)+\text{Var}(Y) Var ( X + Y ) = Var ( X ) + Var ( Y ) 。
注:期望/方差在 lec10/bnet 课件正文中着墨较少,按标准概率论补充;属一般考点。
1.5 独立性与条件独立性 ⭐
边缘独立 (Marginal Independence)
A A A 与 B B B 独立 iff:
P ( A ∣ B ) = P ( A ) 或 P ( B ∣ A ) = P ( B ) 或 P ( A , B ) = P ( A ) P ( B ) P(A\mid B)=P(A)\quad\text{或}\quad P(B\mid A)=P(B)\quad\text{或}\quad P(A,B)=P(A)P(B)
P ( A ∣ B ) = P ( A ) 或 P ( B ∣ A ) = P ( B ) 或 P ( A , B ) = P ( A ) P ( B )
记作 A ⊥ B A\perp B A ⊥ B 或 X ⊥ Y X\perp Y X ⊥ Y 。例:掷两颗骰子 P ( 1 , 3 ) = 1 6 ⋅ 1 6 = 1 36 P(1,3)=\tfrac{1}{6}\cdot\tfrac{1}{6}=\tfrac{1}{36} P ( 1 , 3 ) = 6 1 ⋅ 6 1 = 3 6 1 。
绝对独立功能强大但罕见 。例如牙科领域数百个变量几乎两两不独立。
条件独立 (Conditional Independence) ⭐⭐⭐
⭐ X X X 与 Y Y Y 在给定 Z Z Z 时条件独立,记 X ⊥ Y ∣ Z X\perp Y\mid Z X ⊥ Y ∣ Z :
P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) ⟺ P ( X ∣ Y , Z ) = P ( X ∣ Z ) \boxed{\,P(X,Y\mid Z)=P(X\mid Z)\,P(Y\mid Z)\;\iff\;P(X\mid Y,Z)=P(X\mid Z)\,}
P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) ⟺ P ( X ∣ Y , Z ) = P ( X ∣ Z )
例:探针是否卡住 (Catch) 与牙疼 (Toothache) 在给定是否有牙洞 (Cavity) 后条件独立:
P ( catch ∣ toothache , cavity ) = P ( catch ∣ cavity ) P(\text{catch}\mid\text{toothache},\text{cavity})=P(\text{catch}\mid\text{cavity})
P ( catch ∣ toothache , cavity ) = P ( catch ∣ cavity )
⭐ 等价刻画(7 条相互等价,给定 P ( Z ) > 0 P(Z)>0 P ( Z ) > 0 ) :
P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) P(X,Y\mid Z)=P(X\mid Z)P(Y\mid Z) P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) ;
P ( X ∣ Y , Z ) = P ( X ∣ Z ) P(X\mid Y,Z)=P(X\mid Z) P ( X ∣ Y , Z ) = P ( X ∣ Z ) ;
P ( X , Y ∣ Z ) = f ( X , Z ) g ( Y , Z ) P(X,Y\mid Z)=f(X,Z)\,g(Y,Z) P ( X , Y ∣ Z ) = f ( X , Z ) g ( Y , Z ) ;
P ( X ∣ Y , Z ) = f ( X , Z ) P(X\mid Y,Z)=f(X,Z) P ( X ∣ Y , Z ) = f ( X , Z ) ;
P ( X , Y , Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) P ( Z ) P(X,Y,Z)=P(X\mid Z)P(Y\mid Z)P(Z) P ( X , Y , Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) P ( Z ) ;
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)} P ( X , Y , Z ) = P ( Z ) P ( X , Z ) P ( Y , Z ) ;
P ( X , Y , Z ) = f ( X , Z ) g ( Y , Z ) P(X,Y,Z)=f(X,Z)\,g(Y,Z) P ( X , Y , Z ) = f ( X , Z ) g ( Y , Z ) 。
条件独立降低复杂度 ⭐⭐⭐
利用条件独立,牙科三变量联合分布可写为:
P ( Toothache , Catch , Cavity ) = P ( Toothache ∣ Cavity ) P ( Catch ∣ Cavity ) P ( Cavity ) P(\text{Toothache},\text{Catch},\text{Cavity})=P(\text{Toothache}\mid\text{Cavity})\,P(\text{Catch}\mid\text{Cavity})\,P(\text{Cavity})
P ( Toothache , Catch , Cavity ) = P ( Toothache ∣ Cavity ) P ( Catch ∣ Cavity ) P ( Cavity )
独立参数从 2 3 − 1 = 7 2^3-1=7 2 3 − 1 = 7 降到 2 + 2 + 1 = 5 2+2+1=5 2 + 2 + 1 = 5 。
⭐ 在大多数情况下,使用条件独立性能将全联合概率的表示由 n n n 的指数关系减为 n n n 的线性关系 。
条件独立性是我们关于不确定环境的最基本、最稳健的知识形式 (our most basic and robust form of knowledge about uncertain environments) 。
1.6 贝叶斯规则 (Bayes’ Rule) ⭐⭐⭐
由乘法规则 P ( a ∣ b ) P ( b ) = P ( b ∣ a ) P ( a ) P(a\mid b)P(b)=P(b\mid a)P(a) P ( a ∣ b ) P ( b ) = P ( b ∣ a ) P ( a ) 直接得:
P ( a ∣ b ) = P ( b ∣ a ) P ( a ) P ( b ) , 分布形式: P ( Y ∣ X ) = α P ( X ∣ Y ) P ( Y ) \boxed{\,P(a\mid b)=\dfrac{P(b\mid a)\,P(a)}{P(b)}\,,\quad\text{分布形式:}P(Y\mid X)=\alpha\,P(X\mid Y)P(Y)\,}
P ( a ∣ b ) = P ( b ) P ( b ∣ a ) P ( a ) , 分布形式: P ( Y ∣ X ) = α P ( X ∣ Y ) P ( Y )
用途:从因果概率 (causal probability) 评估诊断概率 (diagnostic probability) :
P ( Cause ∣ Effect ) = P ( Effect ∣ Cause ) P ( Cause ) P ( Effect ) P(\text{Cause}\mid\text{Effect})=\dfrac{P(\text{Effect}\mid\text{Cause})\,P(\text{Cause})}{P(\text{Effect})}
P ( Cause ∣ Effect ) = P ( Effect ) P ( Effect ∣ Cause ) P ( Cause )
例 1:脑膜炎诊断
M M M =脑膜炎,S S S =脖子僵硬:P ( s ∣ m ) = 0.8 , P ( m ) = 1 10000 , P ( s ) = 0.1 P(s\mid m)=0.8,\;P(m)=\tfrac{1}{10000},\;P(s)=0.1 P ( s ∣ m ) = 0 . 8 , P ( m ) = 1 0 0 0 0 1 , P ( s ) = 0 . 1 。
P ( m ∣ s ) = 0.8 × 0.0001 0.1 = 0.0008 P(m\mid s)=\dfrac{0.8\times 0.0001}{0.1}=0.0008
P ( m ∣ s ) = 0 . 1 0 . 8 × 0 . 0 0 0 1 = 0 . 0 0 0 8
后验概率仍极小!
例 2:流感 vs 头痛(易错点)
H H H =头痛,F F F =流感:P ( H ) = 1 10 , P ( F ) = 1 40 , P ( H ∣ F ) = 1 2 P(H)=\tfrac{1}{10},\;P(F)=\tfrac{1}{40},\;P(H\mid F)=\tfrac{1}{2} P ( H ) = 1 0 1 , P ( F ) = 4 0 1 , P ( H ∣ F ) = 2 1 。
"50% 流感伴随头痛 ⇒ 我有 50% 概率得流感"是错的 :
P ( F ∣ H ) = P ( H ∣ F ) P ( F ) P ( H ) = ( 1 / 2 ) ( 1 / 40 ) 1 / 10 = 1 8 = 0.125 ≠ P ( H ∣ F ) = 0.5 P(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
P ( F ∣ H ) = P ( H ) P ( H ∣ F ) P ( F ) = 1 / 1 0 ( 1 / 2 ) ( 1 / 4 0 ) = 8 1 = 0 . 1 2 5 = P ( H ∣ F ) = 0 . 5
先验 vs 后验
先验概率 (prior) P ( H = h ) P(H=h) P ( H = h ) :考虑证据 E = e E=e E = e 之前;
后验概率 (posterior) P ( H = h ∣ E = e ) P(H=h\mid E=e) P ( H = h ∣ E = e ) :考虑证据之后。
1.7 概率分布从何而来?
领域专家 (Domain experts) 主观给出;
用更简单的概率事实 + 代数 (链式规则 + 独立性假设)推导联合分布;
从数据学习 (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) :
一组节点,每个节点对应一个变量;
一个有向 (directed)、无环 (acyclic) 图(边 ≈ “直接影响”);
每个节点附有给定其父节点时的条件分布 P ( X i ∣ Parents ( X i ) ) P(X_i\mid\text{Parents}(X_i)) P ( X i ∣ Parents ( X i ) ) ——量化父节点对该节点的影响。
最简单情形下,条件分布表示为条件概率表 (Conditional Probability Table, CPT) ,给出父节点每种取值组合下 X i X_i X i 的分布。
全局语义 (Global Semantics) ⭐⭐⭐
⭐ 全联合分布 = 所有局部条件分布的乘积:
P ( x 1 , … , x n ) = ∏ i = 1 n P ( x i ∣ parents ( X i ) ) \boxed{\,P(x_1,\dots,x_n)=\prod_{i=1}^{n}P\big(x_i\mid\text{parents}(X_i)\big)\,}
P ( x 1 , … , x n ) = i = 1 ∏ n P ( x i ∣ parents ( X i ) )
例(防盗网络):P ( j ∧ m ∧ a ∧ ¬ b ∧ ¬ e ) = P ( j ∣ a ) P ( m ∣ a ) P ( a ∣ ¬ b , ¬ e ) P ( ¬ b ) P ( ¬ e ) P(j\wedge m\wedge a\wedge\lnot b\wedge\lnot e)=P(j\mid a)P(m\mid a)P(a\mid\lnot b,\lnot e)P(\lnot b)P(\lnot e) P ( j ∧ m ∧ a ∧ ¬ b ∧ ¬ e ) = P ( j ∣ a ) P ( m ∣ a ) P ( a ∣ ¬ b , ¬ e ) P ( ¬ b ) P ( ¬ e )
= 0.9 × 0.7 × 0.001 × 0.999 × 0.998 ≈ 0.00063 =0.9\times 0.7\times 0.001\times 0.999\times 0.998\approx 0.00063 = 0 . 9 × 0 . 7 × 0 . 0 0 1 × 0 . 9 9 9 × 0 . 9 9 8 ≈ 0 . 0 0 0 6 3 。
局部语义 (Local Semantics)
每个节点在给定其父节点后,与它的非后代节点 (nondescendants) 条件独立 :
P ( X i ∣ Parents ( X i ) , Nondescendants ( X i ) ) = P ( X i ∣ Parents ( X i ) ) P(X_i\mid\text{Parents}(X_i),\,\text{Nondescendants}(X_i))=P(X_i\mid\text{Parents}(X_i))
P ( X i ∣ Parents ( X i ) , Nondescendants ( X i ) ) = P ( X i ∣ Parents ( X i ) )
⭐ 定理 :局部语义 ⟺ \iff ⟺ 全局语义(二者等价)。
2.3 经典示例:防盗 (Burglary) 网络
变量:Burglary(入室行窃)、Earthquake(地震)、Alarm(警报)、JohnCalls、MaryCalls。网络拓扑反映因果知识:盗贼/地震可触发警报;警报导致 John/Mary 打电话。
拓扑结构编码了条件独立性断言:
Weather 与其它变量独立;
给定 Cavity,Toothache 与 Catch 条件独立。
2.4 紧致性 (Compactness) ⭐
一个布尔变量 X i X_i X i 有 k k k 个布尔父节点时,其 CPT 有 2 k 2^k 2 k 行(父节点取值组合),每行需指定 X i = t r u e X_i=true X i = t r u e 的概率 p p p (X i = f a l s e X_i=false X i = f a l s e 即 1 − p 1-p 1 − p )。
⭐ 若每个变量至多有 k k k 个父节点,整个网络只需 O ( n ⋅ 2 k ) O(n\cdot 2^k) O ( n ⋅ 2 k ) 个数——随 n n n 线性增长 ;而完整联合分布需 O ( 2 n ) O(2^n) O ( 2 n ) 个数。
防盗网络:1 + 1 + 4 + 2 + 2 = 10 1+1+4+2+2=10 1 + 1 + 4 + 2 + 2 = 1 0 个数(vs 全联合分布 2 5 − 1 = 31 2^5-1=31 2 5 − 1 = 3 1 )。
2.5 贝叶斯网络的构造 ⭐⭐⭐
需要一种方法使得局部条件独立关系能保证全局语义成立。
构造算法 :
选定一组刻画问题的随机变量 { X 1 , … , X n } \{X_1,\dots,X_n\} { X 1 , … , X n } ;
选择变量次序 α = ⟨ X 1 , … , X n ⟩ \alpha=\langle X_1,\dots,X_n\rangle α = ⟨ X 1 , … , X n ⟩ ;
从空图出发,按次序逐个加入 X i X_i X i :
利用背景知识,在 X 1 , … , X i − 1 X_1,\dots,X_{i-1} X 1 , … , X i − 1 中选一个尽可能小 的子集 π ( X i ) \pi(X_i) π ( X i ) (即父节点集),使得"给定 π ( X i ) \pi(X_i) π ( X i ) ,X i X_i X i 与图中其它变量条件独立"合理;
从 π ( X i ) \pi(X_i) π ( X i ) 中每个节点画一条指向 X i X_i X i 的有向边。
为何这样保证全局语义 :
P ( X 1 , … , X n ) = ∏ i = 1 n P ( X i ∣ X 1 , … , X i − 1 ) ( 链式规则 ) = ∏ i = 1 n P ( X i ∣ π ( X i ) ) ( 由构造 ) 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{由构造})
P ( X 1 , … , X n ) = i = 1 ∏ n P ( X i ∣ X 1 , … , X i − 1 ) ( 链式规则 ) = i = 1 ∏ n P ( X i ∣ π ( X i ) ) ( 由构造 )
⭐ 添加节点的正确次序:先加"根本原因"节点,再加受其直接影响的变量,以此类推 ——即按因果顺序 (causal order) ,原因在前、结果在后。
变量顺序的影响
反例(防盗网络选次序 M , J , A , B , E M,J,A,B,E M , J , A , B , E ):每次都要判断条件独立,在非因果 (noncausal) 方向上判断条件独立很困难(人对因果与条件独立似乎"硬连线"),且得到的网络更不紧凑:需 1 + 2 + 4 + 2 + 4 = 13 1+2+4+2+4=13 1 + 2 + 4 + 2 + 4 = 1 3 个数(vs 因果顺序的 10)。
关于变量顺序的不同主张:
Smith (1989):以模型复杂性为标准;
Howard & Matheson (1984):以条件概率评估的难易程度为标准;
Pearl (2000):用因果关系决定变量顺序 (建议)。
因果关系与因果马尔可夫假设
因果关系尚无被广泛接受的严格定义。实用中:若"上帝介入改变 X X X 的状态会影响对 Y Y Y 的信度",且反过来不成立,则称 X X X 是 Y Y Y 的原因。利用因果关系建网实际上是在做条件独立假设,可归纳为因果马尔可夫假设 (causal Markov assumption) 。
确定网络参数
通过数据分析或从问题特性直接得到(参数学习见 §4.7)。
2.6 推理任务分类 (Inference Tasks)
⭐ 贝叶斯网推理 (inference) 是通过计算回答查询的过程,主要有三大类:
任务
形式
说明
后验概率问题
P ( Q ∣ E = e ) P(Q\mid E=e) P ( Q ∣ E = e )
从结果到原因的诊断推理、从原因到结果的预测推理、同一结果的不同原因间的原因关联推理、混合推理
最大后验假设 (MAP)
h ∗ = arg max h P ( H = h ∣ E = e ) h^*=\arg\max_h P(H=h\mid E=e) h ∗ = arg max h P ( H = h ∣ E = e )
给定证据,求部分变量的后验最大的状态组合
最大可能解释 (MPE)
arg max 全部非证据变量 P ( ⋅ ∣ E = e ) \arg\max_{\text{全部非证据变量}}P(\cdot\mid E=e) arg max 全部非证据变量 P ( ⋅ ∣ E = e )
网络全部变量的、与证据相一致的状态组合中概率最大者;可视作 MAP 的特例(假设变量 = 所有非证据变量)
简单查询例:P ( NoGas ∣ Gauge=empty, Lights=on, Starts=false ) P(\text{NoGas}\mid\text{Gauge=empty, Lights=on, Starts=false}) P ( NoGas ∣ Gauge=empty, Lights=on, Starts=false ) 。
第三部分:图分隔与变量独立 (d-Separation)
3.1 三种连接结构 ⭐⭐⭐
变量 X X X 和 Y Y Y 通过第三个变量 Z Z Z 间接相连,有三种情形(决定信息能否在 X , Y X,Y X , Y 间传递):
结构
图示
Z Z Z 未知时
Z Z Z 已知时
顺连 (Serial / Chain) X → Z → Y X\to Z\to Y X → Z → Y
链式
信息从 X X X 经 Z Z Z 传到 Y Y Y ,X , Y X,Y X , Y 关联
阻断 :了解 X X X 不影响对 Y Y Y 的信度,X ⊥ Y ∣ Z X\perp Y\mid Z X ⊥ Y ∣ Z
分连 (Diverging / Common Cause) X ← Z → Y X\leftarrow Z\to Y X ← Z → Y
共同原因
信息可在 X , Y X,Y X , Y 间传递,关联
阻断 :X ⊥ Y ∣ Z X\perp Y\mid Z X ⊥ Y ∣ Z
汇连 (Converging / Common Effect / V-structure) X → Z ← Y X\to Z\leftarrow Y X → Z ← Y
共同结果(多因一果)
信息从 X X X (或 Y Y Y )经 Z Z Z “漏掉”,X ⊥ Y X\perp Y X ⊥ Y
激活 :"漏洞"被堵上,X , Y X,Y X , Y 变得相关 (即使本无条件独立)
⭐ 关键反直觉点 :汇连(V 结构)情形下,观察 Z Z Z 反而使原本独立的 X , Y X,Y X , Y 变得相关 (“explaining away” 现象)。不仅如此,观察 Z Z Z 的任一后代 也会激活该通路。
3.2 d-分隔判据 (d-Separation) ⭐⭐⭐
设 Z Z Z 为一节点集合,X , Y X,Y X , Y 是不在 Z Z Z 中的两个节点。考虑 X X X 和 Y Y Y 之间的一条通路 (path) α \alpha α (在忽略方向的无向图中)。
⭐ 通路 α \alpha α 被 Z Z Z 阻塞 (blocked) 当且仅当满足下列条件之一:
α \alpha α 上有一个在 Z Z Z 中的顺连节点 (chain,中间节点 Z Z Z 已知 → 阻断);
α \alpha α 上有一个在 Z Z Z 中的分连节点 (common cause,中间节点 Z Z Z 已知 → 阻断);
α \alpha α 上有一个汇连节点 W W W ,且 W W W 及其所有后代节点均不在 Z Z Z 中 (V 结构未被观察 → 阻断;反之若 W W W 或其后代被观察则激活)。
⭐ d-分隔定义 :若 X X X 和 Y Y Y 之间的所有通路 都被 Z Z Z 阻塞,则称 Z Z Z 有向分隔 (d-separate) X X X 和 Y Y Y ,简称 d-分隔 (d-separation) 。
整体马尔可夫性 (Global Markov Property) ⭐⭐⭐
定理 :设 X , Y X,Y X , Y 为贝叶斯网中的两个变量,Z Z Z 为不包含 X , Y X,Y X , Y 的节点集合。若 Z Z Z d-分隔 X X X 和 Y Y Y ,则
X ⊥ Y ∣ Z \boxed{\,X\perp Y\mid Z\,}
X ⊥ Y ∣ Z
即 X X X 与 Y Y Y 在给定 Z Z Z 时条件独立。
d-分隔是图论 概念,条件独立是概率论 概念;该定理揭示了贝叶斯网图论侧面与概率论侧面之间的深刻联系。
d-分隔举例(参课件图)
设 Z = ∅ Z=\varnothing Z = ∅ :节点 A , E A,E A , E 间通路 A → D → B → E A\to D\to B\to E A → D → B → E 未被阻塞 → A , E A,E A , E 不 被 d-分隔;而 A , C A,C A , C 间所有通路都有汇连节点且其及后代不在 Z Z Z 中 → A , C A,C A , C 被 d-分隔。
设 Z = { B , M } Z=\{B,M\} Z = { B , M } :考察 A , C A,C A , C ,通路中 2 条在 B B B 处顺连被阻塞,另 2 条在 K K K 处汇连,但 K K K 有后代 M ∈ Z M\in Z M ∈ Z 故不被阻塞 → A , C A,C A , C 不 被 d-分隔。
3.3 马尔可夫边界与端正图
马尔可夫边界 (Markov Boundary)
⭐ 节点 X X X 的马尔可夫边界 m b ( X ) mb(X) m b ( X ) 包括:父节点、子节点、以及子节点的其它父节点(配偶) 。
推论 :给定 m b ( X ) mb(X) m b ( X ) ,则 X X X 条件独立于网络中所有其它变量。
端正图 (Moral Graph)
将有向无环图 G G G 中每个节点的不同父节点"结婚"(在父节点之间加边),再去掉所有边的方向,所得无向图称为 G G G 的端正图 (moral graph) 。
有向分隔与无向分隔的等价定理
设 X , Y , Z X,Y,Z X , Y , Z 是有向无圈图 G G G 中三个两两不相交的节点集。( G an ( X ∪ Y ∪ Z ) ) m (G_{\text{an}(X\cup Y\cup Z)})_m ( G an ( X ∪ Y ∪ Z ) ) m 表示把 G G G 限制在 an ( X ∪ Y ∪ Z ) \text{an}(X\cup Y\cup Z) an ( X ∪ Y ∪ Z ) (含 X ∪ Y ∪ Z X\cup Y\cup Z X ∪ Y ∪ Z 的最小祖先闭集)上、再端正化得到的无向图。
定理 :Z Z Z 在 G G G 中 d-分隔 X X X 和 Y Y Y ⟺ \iff ⟺ Z Z Z 在 ( G an ( X ∪ Y ∪ Z ) ) m (G_{\text{an}(X\cup Y\cup Z)})_m ( G an ( X ∪ Y ∪ Z ) ) m 中 u-分隔 (undirected separate) X X X 和 Y Y Y (即去掉 Z Z Z 后 X , Y X,Y X , Y 间无通路)。
第四部分:贝叶斯网络中的推理 (Inference)
4.1 枚举推理 (Inference by Enumeration / Enumeration-Ask) ⭐⭐⭐
从全联合分布出发,不显式构造联合分布表 地求和消去变量。
基本思想
对任意命题 φ \varphi φ ,其概率等于所有使其为真的原子事件的概率和:
P ( φ ) = ∑ ω : ω ⊨ φ P ( ω ) P(\varphi)=\sum_{\omega:\omega\models\varphi}P(\omega)
P ( φ ) = ω : ω ⊨ φ ∑ P ( ω )
查询的一般框架 ⭐⭐⭐
设查询变量为 Y Y Y ,证据变量 E = e E=e E = e ,隐藏变量 H = X − Y − E H=X-Y-E H = X − Y − E (Y , E , H Y,E,H Y , E , H 构成所有变量的完整集合):
P ( Y ∣ E = e ) = α P ( Y , E = e ) = α ∑ h P ( 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)\,}
P ( Y ∣ E = e ) = α P ( Y , E = e ) = α h ∑ P ( Y , E = e , H = h )
其中 α \alpha α 是归一化常数(1 / P ( E = e ) 1/P(E=e) 1 / P ( E = e ) )。
在贝叶斯网中的应用
将联合分布写成 CPT 乘积 ∏ i P ( X i ∣ Parents ( X i ) ) \prod_i P(X_i\mid\text{Parents}(X_i)) ∏ i P ( X i ∣ Parents ( X i ) ) ,通过"计算条件概率乘积并求和"回答查询。
防盗网络例 :
P ( B ∣ j , m ) = α P ( B , j , m ) = α ∑ e ∑ a P ( B ) P ( e ) P ( a ∣ B , e ) P ( j ∣ a ) P ( m ∣ a ) P(B\mid j,m)=\alpha P(B,j,m)=\alpha\sum_{e}\sum_{a}P(B)\,P(e)\,P(a\mid B,e)\,P(j\mid a)\,P(m\mid a)
P ( B ∣ j , m ) = α P ( B , j , m ) = α e ∑ a ∑ P ( B ) P ( e ) P ( a ∣ B , e ) P ( j ∣ a ) P ( m ∣ a )
= α P ( B ) ∑ e P ( e ) ∑ a P ( a ∣ B , e ) P ( j ∣ a ) P ( m ∣ a ) =\alpha\,P(B)\sum_{e}P(e)\sum_{a}P(a\mid B,e)\,P(j\mid a)\,P(m\mid a)
= α P ( B ) e ∑ P ( e ) a ∑ P ( a ∣ B , e ) P ( j ∣ a ) P ( m ∣ a )
复杂度与缺陷 ⭐
递归深度优先枚举:O ( n ) O(n) O ( n ) 空间,O ( d n ) O(d^n) O ( d n ) 时间(d d d 为最大取值数);
枚举低效 :存在大量重复计算(如对 e e e 的每个取值都重复计算 P ( j ∣ a ) P ( m ∣ a ) P(j\mid a)P(m\mid a) P ( j ∣ a ) P ( m ∣ a ) );
全联合分布存储:空间 O ( d n ) O(d^n) O ( d n ) ;且 O ( d n ) O(d^n) O ( d n ) 个表项的数字从何而来?
变量消元法正是为消除这种重复计算而设计。
4.2 变量消元算法 (Variable Elimination, VE) ⭐⭐⭐
⭐ 核心思想 :把求和从右到左 进行,存储中间结果(因子 factor ),避免重复计算。本质上是边缘化过程的局部化。
因子 (Factor)
因子是多元函数 f ( X 1 , … , X k ) f(X_1,\dots,X_k) f ( X 1 , … , X k ) ,以表的形式存储。VE 中因子来自 CPT 或中间运算结果 ψ \psi ψ 。因子运算有两类:
因子乘积 (pointwise product) :f 1 ⊗ f 2 f_1\otimes f_2 f 1 ⊗ f 2 ;
因子边缘化(变量求和消去) :∑ X f \sum_X f ∑ X f 。
算法步骤
给定消元顺序 ρ \rho ρ ,证据 E = e E=e E = e :
设置证据 :把因子中的证据变量固定为 e e e ;
按 ρ \rho ρ 依次消去变量 X X X :
收集所有含 X X X 的因子 { f 1 , … , f k } \{f_1,\dots,f_k\} { f 1 , … , f k } ;
计算乘积 g = ∏ i f i g=\prod_i f_i g = ∏ i f i ;
对 X X X 求和得新因子 ψ = ∑ X g \psi=\sum_X g ψ = ∑ X g ;
用 ψ \psi ψ 替换原因子集。
对剩余因子求乘积 h h h ;
归一化:P ( Q ∣ e ) = h ∑ Q h P(Q\mid e)=\dfrac{h}{\sum_Q h} P ( Q ∣ e ) = ∑ Q h h 。
完整举例(参 bnet 课件)
贝叶斯网给出分解 F = { P ( A ) , P ( B ) , P ( C ) , P ( D ∣ A , B ) , P ( E ∣ B , C ) , P ( F ∣ D , E ) } \mathcal{F}=\{P(A),P(B),P(C),P(D\mid A,B),P(E\mid B,C),P(F\mid D,E)\} F = { P ( A ) , P ( B ) , P ( C ) , P ( D ∣ A , B ) , P ( E ∣ B , C ) , P ( F ∣ D , E ) } ,证据 F = 0 F=0 F = 0 ,求 P ( A ∣ F = 0 ) P(A\mid F=0) P ( A ∣ F = 0 ) ,消元顺序 ρ = ⟨ C , E , B , D ⟩ \rho=\langle C,E,B,D\rangle ρ = ⟨ C , E , B , D ⟩ :
设置证据:F = { P ( A ) , P ( B ) , P ( C ) , P ( D ∣ A , B ) , P ( E ∣ B , C ) , P ( F = 0 ∣ D , E ) } \mathcal{F}=\{P(A),P(B),P(C),P(D\mid A,B),P(E\mid B,C),P(F=0\mid D,E)\} F = { P ( A ) , P ( B ) , P ( C ) , P ( D ∣ A , B ) , P ( E ∣ B , C ) , P ( F = 0 ∣ D , E ) } ;
消去 C C C :ψ 1 ( B , E ) = ∑ C P ( C ) P ( E ∣ B , C ) \psi_1(B,E)=\sum_C P(C)P(E\mid B,C) ψ 1 ( B , E ) = ∑ C P ( C ) P ( E ∣ B , C ) ;
消去 E E E :ψ 2 ( B , D ) = ∑ E P ( F = 0 ∣ D , E ) ψ 1 ( B , E ) \psi_2(B,D)=\sum_E P(F=0\mid D,E)\psi_1(B,E) ψ 2 ( B , D ) = ∑ E P ( F = 0 ∣ D , E ) ψ 1 ( B , E ) ;
消去 B B B :ψ 3 ( A , D ) = ∑ B P ( B ) P ( D ∣ A , B ) ψ 2 ( B , D ) \psi_3(A,D)=\sum_B P(B)P(D\mid A,B)\psi_2(B,D) ψ 3 ( A , D ) = ∑ B P ( B ) P ( D ∣ A , B ) ψ 2 ( B , D ) ;
消去 D D D :ψ 4 ( A ) = ∑ D ψ 3 ( A , D ) \psi_4(A)=\sum_D \psi_3(A,D) ψ 4 ( A ) = ∑ D ψ 3 ( A , D ) ;
h ( A ) = P ( A ) ψ 4 ( A ) h(A)=P(A)\,\psi_4(A) h ( A ) = P ( A ) ψ 4 ( A ) ;
返回 P ( A ∣ F = 0 ) = h ( A ) ∑ A h ( A ) P(A\mid F=0)=\dfrac{h(A)}{\sum_A h(A)} P ( A ∣ F = 0 ) = ∑ A h ( A ) h ( A ) 。
消元顺序与复杂度
⭐ 不同消元顺序导致不同计算复杂度 ;寻找最优消元顺序是 NP-hard 。
启发式:最大势搜索 (max-cardinality search)、最小缺边搜索 (min-fill search) 。
精确推理的复杂度 ⭐
网络类型
定义
复杂度
单联通网络 (Singly connected / polytree)
任意两节点间至多一条(无向)路径
时间、空间均 O ( d k n ) O(d^k n) O ( d k n ) ,与网络规模线性
多联通网络 (Multiply connected)
一般网络
精确推理可归约自 3SAT → NP-hard ;计数版本 → #P-complete
4.3 团树传播算法 (Clique Tree / Junction Tree Propagation) ⭐⭐
实际中常需在同一网络进行多次推理,不同推理之间存在相同步骤。团树传播利用步骤共享 加速推理。
团树 (Clique Tree)
一种无向树,每个节点代表一个变量集合,称为团 (clique) 。须满足变量连通性 (running intersection) :若两团 C 1 , C 2 C_1,C_2 C 1 , C 2 同时含变量 X X X ,则连接它们的通路上所有团都含 X X X 。
团树 J J J 覆盖贝叶斯网 N N N 当:
对 N N N 中任一变量 X X X ,J J J 中存在团 C C C 使 X ∈ C X\in C X ∈ C 且 π ( X ) ⊆ C \pi(X)\subseteq C π ( X ) ⊆ C ;
所有团的并集恰为 N N N 的全部变量。
算法步骤
将贝叶斯网转化为团树;
初始化 :把贝叶斯网的概率函数分配到各团节点存储;
设置证据 :改变相应团中存储的概率函数;
选含查询变量 Q Q Q 的团 C Q C_Q C Q 作为枢纽节点 (pivot) ;
对 C Q C_Q C Q 的相邻节点逐一调用 CollectMessage(从相邻节点收集信息);
据收到的信息及自身概率函数,得到关于 C Q C_Q C Q 的函数;
消去 C Q C_Q C Q 中除 Q Q Q 外的变量,归一化得 P ( Q ∣ e ) P(Q\mid e) P ( Q ∣ e ) 。
性质
团树传播本质与变量消元没有区别 ,是 VE 的另一种组织形式(精确推理);
优点:清楚看到两次推理间的共享步骤,可用 SaveMessage/RetrieveMessage 存取中间结果实现计算共享。
4.4 近似推理:随机抽样 (Stochastic Sampling) ⭐⭐⭐
当网络节点众多且连接稠密时,精确推理复杂度过高,转用近似推理。随机抽样 (stochastic sampling / Monte Carlo) 基本思想:从某概率分布随机抽样生成一组样本,再由样本近似估计要计算的量。
分为两大类:重要性抽样 (importance sampling) 与 马尔可夫链蒙特卡洛 (MCMC) 。
4.4.1 重要性抽样 (Importance Sampling) ⭐⭐
考虑积分 I = ∫ Ω X f ( X ) d X I=\int_{\Omega_X} f(X)\,dX I = ∫ Ω X f ( X ) d X ,改写为期望:
I = ∫ Ω X f ( X ) p ( X ) p ( X ) d X I=\int_{\Omega_X}\dfrac{f(X)}{p(X)}\,p(X)\,dX
I = ∫ Ω X p ( X ) f ( X ) p ( X ) d X
(要求:若 f ( X = x ) ≠ 0 f(X=x)\neq 0 f ( X = x ) = 0 则 p ( X = x ) ≠ 0 p(X=x)\neq 0 p ( X = x ) = 0 )。从 p ( X ) p(X) p ( X ) 独立抽取 m m m 个样本 D 1 , … , D m D_1,\dots,D_m D 1 , … , D m ,估计:
I ^ m = 1 m ∑ i = 1 m f ( D i ) p ( D i ) \boxed{\,\hat{I}_m=\dfrac{1}{m}\sum_{i=1}^{m}\dfrac{f(D_i)}{p(D_i)}\,}
I ^ m = m 1 i = 1 ∑ m p ( D i ) f ( D i )
当 m → ∞ m\to\infty m → ∞ 时 I ^ m \hat{I}_m I ^ m 几乎必然收敛于 I I I 。
4.4.2 概率推理中的采样方法
定义示性函数 χ Y = y ( W ) = { 1 , Y = y 0 , 否则 \chi_{Y=y}(W)=\begin{cases}1,&Y=y\\0,&\text{否则}\end{cases} χ Y = y ( W ) = { 1 , 0 , Y = y 否则 ,则条件概率可写为期望比:
P ( Q = q ∣ E = e ) = P ( Q = q , E = e ) P ( E = e ) = ∑ X χ Q = q ( X ) χ E = e ( X ) P ( X ) ∑ X χ E = e ( X ) P ( X ) P(Q=q\mid E=e)=\dfrac{P(Q=q,E=e)}{P(E=e)}=\dfrac{\sum_X\chi_{Q=q}(X)\chi_{E=e}(X)P(X)}{\sum_X\chi_{E=e}(X)P(X)}
P ( Q = q ∣ E = e ) = P ( E = e ) P ( Q = q , E = e ) = ∑ X χ E = e ( X ) P ( X ) ∑ X χ Q = q ( X ) χ E = e ( X ) P ( X )
(a) 拒绝采样 (Rejection Sampling) ⭐⭐
用先验分布(网络本身)生成样本;丢弃 所有与证据 E = e E=e E = e 不一致的样本;
在保留的样本中统计 Q = q Q=q Q = q 的频率来估计 P ( Q = q ∣ E = e ) P(Q=q\mid E=e) P ( Q = q ∣ E = e ) 。
⚠️ 缺点:当证据概率很小时(稀有证据),绝大多数样本被拒绝,效率极低 。
(b) 逻辑抽样 (Logic Sampling) ⭐
bnet 课件术语:选择 P ( X ) P(X) P ( X ) 本身作为重要性分布时的重要性抽样,即称为逻辑抽样 (logic sampling) 。它与拒绝采样在精神上一致——按网络先验向前采样。
权重 w = f ( D i ) / p ( D i ) w=f(D_i)/p(D_i) w = f ( D i ) / p ( D i ) ;对一致样本权重为 1(退化为拒绝采样的频率统计)。
© 似然加权 (Likelihood Weighting) ⭐⭐⭐
为避免拒绝样本:固定证据变量 E = e E=e E = e ,只对非证据变量按 CPT 向前采样;每固定一个证据变量 E j E_j E j ,把其 CPT 项 P ( E j = e j ∣ Parents ( E j ) ) P(E_j=e_j\mid\text{Parents}(E_j)) P ( E j = e j ∣ Parents ( E j ) ) 乘入样本权重。
⭐ 样本权重 :
w = ∏ j P ( E j = e j ∣ Parents ( E j ) = 采样值 ) \boxed{\,w=\prod_{j}P(E_j=e_j\mid\text{Parents}(E_j)=\text{采样值})\,}
w = j ∏ P ( E j = e j ∣ Parents ( E j ) = 采样值 )
估计:P ( Q = q ∣ E = e ) ≈ ∑ i : Q i = q w i ∑ i w i P(Q=q\mid E=e)\approx\dfrac{\sum_{i:Q_i=q}w_i}{\sum_i w_i} P ( Q = q ∣ E = e ) ≈ ∑ i w i ∑ i : Q i = q w i (带权频率)。
优点:不丢弃样本 ,每个样本都用上;缺点:当证据变量很多或位于网络下游时,权重方差大、效率下降。
4.4.3 MCMC / 吉布斯抽样 (Gibbs Sampling) ⭐⭐⭐
重要性抽样中样本相互独立;MCMC 中不同样本不独立 (形成马尔可夫链)。
吉布斯抽样步骤 :
随机生成一个与证据 E = e E=e E = e 一致的起始样本 D 1 D_1 D 1 ;
此后每个样本 D i D_i D i 依赖前一个 D i − 1 D_{i-1} D i − 1 ,且 D i D_i D i 与 D i − 1 D_{i-1} D i − 1 至多只有一个非证据变量取值不同 ,记被改变的变量为 X X X (可随机选或按固定顺序轮流);
X X X 的新值由如下分布抽样:
P ( X ∣ D i − 1 ∖ X ) = P ( X ∣ m b ( X ) D i − 1 ) \boxed{\,P(X\mid D_{i-1}\setminus X)=P\big(X\mid mb(X)_{D_{i-1}}\big)\,}
P ( X ∣ D i − 1 ∖ X ) = P ( X ∣ m b ( X ) D i − 1 )
其中 m b ( X ) D i − 1 mb(X)_{D_{i-1}} m b ( X ) D i − 1 是 X X X 的马尔可夫边界 在 D i − 1 D_{i-1} D i − 1 中的当前取值。
⭐ 收敛性 :由马氏链理论保证,当样本数趋于无穷时算法返回的结果收敛于真正的后验概率。
⚠️ 缺点 :收敛速度慢,马氏链往往需很长时间才真正达到平稳分布 (stationary distribution);且样本间相关使估计方差分析更复杂。
4.5 朴素贝叶斯模型 (Naïve Bayes) ⭐⭐⭐
⭐ 朴素贝叶斯模型 :单一父变量(原因 Cause)+ 一组子变量(效果 Effect1 , … , _1,\dots, 1 , … , Effectn _n n ),子变量在给定父变量后彼此条件独立 。
P ( Cause , Effect 1 , … , Effect n ) = P ( Cause ) ∏ i = 1 n P ( Effect i ∣ Cause ) \boxed{\,P(\text{Cause},\text{Effect}_1,\dots,\text{Effect}_n)=P(\text{Cause})\prod_{i=1}^{n}P(\text{Effect}_i\mid\text{Cause})\,}
P ( Cause , Effect 1 , … , Effect n ) = P ( Cause ) i = 1 ∏ n P ( Effect i ∣ Cause )
由贝叶斯规则 + 条件独立:
P ( Cause ∣ Effect 1 , … , Effect n ) = α P ( Cause ) ∏ i P ( Effect i ∣ Cause ) P(\text{Cause}\mid\text{Effect}_1,\dots,\text{Effect}_n)=\alpha\,P(\text{Cause})\prod_{i}P(\text{Effect}_i\mid\text{Cause})
P ( Cause ∣ Effect 1 , … , Effect n ) = α P ( Cause ) i ∏ P ( Effect i ∣ Cause )
⭐ 总参数个数关于 n n n 线性 。
经典应用
垃圾邮件检测 (Spam detection) :变量 Caps(标题是否全大写)、Free(是否含"free")、Spam。模型 P ( Free , Caps , Spam ) = P ( Spam ) P ( Caps ∣ Spam ) P ( Free ∣ Spam ) P(\text{Free},\text{Caps},\text{Spam})=P(\text{Spam})P(\text{Caps}\mid\text{Spam})P(\text{Free}\mid\text{Spam}) P ( Free , Caps , Spam ) = P ( Spam ) P ( Caps ∣ Spam ) P ( Free ∣ Spam ) 。
文本分类 (20 Newsgroups) :查询变量 = 文档类别;效果变量 = 每个词是否出现。先验 P ( Category = c ) P(\text{Category}=c) P ( Category = c ) = 该类文档占比;P ( word i = true ∣ c ) P(\text{word}_i=\text{true}\mid c) P ( word i = true ∣ c ) = c c c 类中含词 i i i 的文档占比。朴素贝叶斯达 89% 分类准确率。
数字识别 (Digit Recognizer) :每个像素 ( i , j ) (i,j) ( i , j ) 一布尔特征 F i j F_{ij} F i j (强度是否 > 0.5 >0.5 > 0 . 5 ):
P ( Y ∣ F 0 , 0 , … , F 15 , 15 ) ∝ P ( Y ) ∏ i , j P ( F i , j ∣ Y ) P(Y\mid F_{0,0},\dots,F_{15,15})\propto P(Y)\prod_{i,j}P(F_{i,j}\mid Y)
P ( Y ∣ F 0 , 0 , … , F 1 5 , 1 5 ) ∝ P ( Y ) i , j ∏ P ( F i , j ∣ Y )
评价 ⭐
通过强条件独立假设 使概率推理变得可行;
尽管假设强,实际效果相当好,与其它分类方法在标准数据集上颇具竞争力;
在文本分类(如垃圾邮件过滤)中尤其流行 。
4.6 概率分布的来源与变分法
除 §1.7 三种来源外,近似推理还包括变分法 (variational methods) ——把推理转化为优化问题(求近似分布逼近真实后验),与随机抽样并列。
4.7 贝叶斯网络的学习 (Bayesian Network Learning)
⭐ 从数据获得贝叶斯网的过程分两类:
结构学习 (Structure learning) :发现变量之间的图关系(即网络拓扑);
参数学习 (Parameter learning) :在结构已知的前提下,决定变量间关联的量化关系(CPT 表项)。
当数据足够多时,主观先验对数据分析的影响不大。
贝叶斯网应用领域
医疗诊断、故障诊断(工业设备/计算机系统/垃圾邮件过滤)、金融分析、模式识别(分类/语义理解)、军事(目标识别/多目标跟踪/身份识别)、生态学(人类活动对环境与动物的影响)、生物信息学(基因连锁分析)、编码学、机器学习(分类/聚类)、时序数据与动态模型(如 HMM)。
4.8 TF-IDF(文本相关补充)
词频 (Term Frequency) :TF w = 某类中词 w 出现次数 该类所有词条数 \text{TF}_w=\dfrac{\text{某类中词 }w\text{ 出现次数}}{\text{该类所有词条数}} TF w = 该类所有词条数 某类中词 w 出现次数 ;
逆文档频率 (Inverse Document Frequency) :IDF w = log ( 语料库文档总数 含词 w 的文档数 + 1 ) \text{IDF}_w=\log\!\left(\dfrac{\text{语料库文档总数}}{\text{含词 }w\text{ 的文档数}+1}\right) IDF w = log ( 含词 w 的文档数 + 1 语料库文档总数 ) ;
TFIDF w = TF w × IDF w \text{TFIDF}_w=\text{TF}_w\times\text{IDF}_w TFIDF w = TF w × 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. 一句话总图
逻辑推理问的是:K B ⊨ α KB \models \alpha K B ⊨ α
概率推理问的是:P ( α ∣ e ) P(\alpha \mid e) P ( α ∣ e )
也就是"已经看到证据 e e e 后,结论 α \alpha α 有多可信"。第 13 章先给概率语言本身,第 14 章再给一种紧凑表示概率分布的图模型:贝叶斯网络。
这两章的知识可以串成一条链:
不确定性来自部分可观察、传感器噪声、行动结果不确定、模型太复杂、惰性和无知。
概率把"不确定的命题"变成 [ 0 , 1 ] [0, 1] [ 0 , 1 ] 中的信念程度。
完整联合分布能回答一切查询,但对 n n n 个布尔变量需要指数规模。
边缘化、条件化、乘法规则、链式法则是概率推理的代数工具。
独立和条件独立能把巨大联合分布分解成小块。
贝叶斯网络用有向无环图表达条件独立,用每个节点的 CPT 定义完整联合分布。
查询时用枚举或变量消元把隐藏变量求和消去,最后归一化。
朴素贝叶斯是最简单的贝叶斯网络之一,用强条件独立假设换取高效分类。
1. 为什么 AI 需要概率
1.1 逻辑不够用的地方
现实智能体很少能完全确定世界状态。例如出发去机场时,智能体要考虑路况、其他司机、天气、轮胎、交通报告和许多无法完整建模的因素。
如果只用逻辑规则,容易出现两个极端:
规则太强,会推出错误结论,例如"提前 25 分钟出发一定能赶上飞机"。
规则太弱,必须列出所有例外,最后得到难以行动的条件句,例如"如果桥上没事故、不下雨、轮胎没坏、路上不堵……那么可以赶上"。
概率推理把这种问题改写成:
P ( OnTime ∣ Leave25 , e ) = 0.04 P(\text{OnTime} \mid \text{Leave25}, e) = 0.04
P ( OnTime ∣ Leave25 , e ) = 0 . 0 4
这句话不保证一定到达,也不说完全不知道,而是给出在当前证据 e e e 下的信念程度。
课件开头用三个任务提醒你:手写数字识别、文本分类、图像分割本质上都不是"确定地套规则",而是在证据不完整、特征有噪声、类别边界不绝对清楚时做判断。概率模型就是给这些分类判断提供统一语言。
1.2 不确定性的来源
课件把不确定性来源分成几类:
真实随机性:有些过程本身就是概率性的,例如掷骰子、抛硬币。
惰性:严格列举所有例外太费劲,规则太大也难以使用。
理论无知:领域没有完整一致的理论,例如医学诊断。
实践无知:理论上相关因素存在,但当前个案没有收集到所有信息。
传感器噪声:观测结果不一定等于真实状态。
行动结果不确定:同一行动在不同隐藏状态下可能产生不同结果。
所以概率不是"世界必然随机"的同义词,它也可以表示智能体因为信息不足而产生的主观信念。
1.3 频率主义与贝叶斯观点
频率主义把概率看作长期重复试验中的极限频率:
P ( A ) = lim N → ∞ n A N P(A) = \lim_{N \to \infty} \frac{n_A}{N}
P ( A ) = N → ∞ lim N n A
其中 n A n_A n A 是事件 A A A 在 N N N 次机会中发生的次数。这个解释适合抛硬币、抽样检测等可重复实验。
贝叶斯观点把概率看作在不完整知识下对事件可信度的度量。例如"第三次世界大战发生的概率"无法靠大量重复试验定义,但仍可以讨论给定证据下的主观可信度。
AI 中常用贝叶斯观点,因为智能体面对的往往是单次决策、单个病人、单封邮件或单张图片。
1.4 概率和效用分工
概率回答"我相信什么":P ( ArriveOnTime ∣ a , e ) P(\text{ArriveOnTime} \mid a, e) P ( ArriveOnTime ∣ a , e )
效用回答"我偏好什么":U ( arrive, wait, miss ) U(\text{arrive, wait, miss}) U ( arrive, wait, miss )
决策论把二者合起来:
Decision theory = Probability theory + Utility theory \text{Decision theory} = \text{Probability theory} + \text{Utility theory}
Decision theory = Probability theory + Utility theory
如果提前 1440 分钟出发几乎一定赶上飞机,但要在机场过夜,是否值得取决于效用,而不只取决于概率。
3. 概率分布
3.1 先验概率和概率分布
先验概率是在没有新证据时对命题的信念:P ( Cavity = true ) = 0.1 P(\text{Cavity} = \text{true}) = 0.1 P ( Cavity = true ) = 0 . 1 。
一个随机变量的概率分布给出它所有可能取值的概率。例如:
P ( Weather ) = ⟨ 0.72 , 0.10 , 0.08 , 0.10 ⟩ P(\text{Weather}) = \langle 0.72, 0.10, 0.08, 0.10 \rangle
P ( Weather ) = ⟨ 0 . 7 2 , 0 . 1 0 , 0 . 0 8 , 0 . 1 0 ⟩
它是归一化的:∑ w P ( Weather = w ) = 1 \sum_w P(\text{Weather} = w) = 1 ∑ w P ( Weather = w ) = 1 。
3.2 完整联合分布
完整联合分布给出一组随机变量每种完整赋值的概率。若变量为 X 1 , … , X n X_1, \dots, X_n X 1 , … , X n ,完整联合分布就是:
P ( X 1 , … , X n ) P(X_1, \dots, X_n)
P ( X 1 , … , X n )
对 n n n 个布尔变量,需要 2 n 2^n 2 n 个原子事件概率;因为总和必须为 1,独立参数数目是:2 n − 1 2^n - 1 2 n − 1 。
完整联合分布的优点是原则上能回答所有查询。缺点也非常致命:变量稍多就无法存储、无法人工填写、无法高效求和。
3.3 边缘分布和边缘化
边缘化就是把不关心的变量求和消掉。若有联合分布 P ( A , B ) P(A, B) P ( A , B ) ,则:
P ( A ) = ∑ b P ( A , b ) P(A) = \sum_b P(A, b)
P ( A ) = b ∑ P ( A , b )
若变量更多:
P ( A ) = ∑ b ∑ c P ( A , b , c ) P(A) = \sum_b \sum_c P(A, b, c)
P ( A ) = b ∑ c ∑ P ( A , b , c )
更一般地,对命题 φ \varphi φ :
P ( φ ) = ∑ ω : ω ⊨ φ P ( ω ) P(\varphi) = \sum_{\omega:\, \omega \models \varphi} P(\omega)
P ( φ ) = ω : ω ⊨ φ ∑ P ( ω )
其中 ω \omega ω 是原子事件。
4. 条件概率、乘法规则和链式法则
4.1 条件概率
条件概率表示在证据 B B B 已知为真后,对 A A A 的信念:
P ( A ∣ B ) = P ( A , B ) P ( B ) P(A \mid B) = \frac{P(A, B)}{P(B)}
P ( A ∣ B ) = P ( B ) P ( A , B )
前提是:P ( B ) > 0 P(B) > 0 P ( B ) > 0 。条件概率也满足概率公理。例如 0 ≤ P ( A ∣ e ) ≤ 1 0 \leq P(A \mid e) \leq 1 0 ≤ P ( A ∣ e ) ≤ 1 。对变量 A A A 的所有取值 a 1 , … , a k a_1, \dots, a_k a 1 , … , a k :∑ i = 1 k P ( A = a i ∣ e ) = 1 \sum_{i=1}^{k} P(A = a_i \mid e) = 1 ∑ i = 1 k P ( A = a i ∣ e ) = 1 。布尔变量有:P ( ¬ a ∣ e ) = 1 − P ( a ∣ e ) P(\lnot a \mid e) = 1 - P(a \mid e) P ( ¬ a ∣ e ) = 1 − P ( a ∣ e ) 。
4.2 乘法规则
条件概率定义可改写为乘法规则:
P ( A ∧ B ) = P ( A ∣ B ) P ( B ) P(A \land B) = P(A \mid B)P(B)
P ( A ∧ B ) = P ( A ∣ B ) P ( B )
也可以写成:P ( A ∧ B ) = P ( B ∣ A ) P ( A ) P(A \land B) = P(B \mid A)P(A) P ( A ∧ B ) = P ( B ∣ A ) P ( A ) 。因此:P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A \mid B)P(B) = P(B \mid A)P(A) P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) 。
4.3 链式法则
链式法则由乘法规则反复使用得到:
P ( X 1 , … , X n ) = ∏ i = 1 n P ( X i ∣ X 1 , … , X i − 1 ) P(X_1, \dots, X_n) = \prod_{i=1}^{n} P(X_i \mid X_1, \dots, X_{i-1})
P ( X 1 , … , X n ) = i = 1 ∏ n P ( X i ∣ X 1 , … , X i − 1 )
例如:
P ( A , B , C ) = P ( A ∣ B , C ) P ( B ∣ C ) P ( C ) P(A, B, C) = P(A \mid B, C)\,P(B \mid C)\,P(C)
P ( A , B , C ) = P ( A ∣ B , C ) P ( B ∣ C ) P ( C )
也可以按其他顺序写:P ( A , B , C ) = P ( C ∣ A , B ) P ( B ∣ A ) P ( A ) P(A, B, C) = P(C \mid A, B)\,P(B \mid A)\,P(A) P ( A , B , C ) = P ( C ∣ A , B ) P ( B ∣ A ) P ( A ) 。
没有独立性假设时,不能随便把联合概率拆成 P ( A ) P ( B ) P ( C ) P(A)P(B)P(C) P ( A ) P ( B ) P ( C ) 。但链式法则永远成立,只是条件项可能很复杂。
5. 用完整联合分布做推理
5.1 枚举推理思想
如果手里有完整联合分布,任何查询都可以通过枚举原子事件来做。查询 P ( Y ∣ E = e ) P(Y \mid E = e) P ( Y ∣ E = e ) ,设隐藏变量为 H = X − Y − E H = X - Y - E H = X − Y − E ,则:
P ( Y ∣ E = e ) = α P ( Y , E = e ) P(Y \mid E = e) = \alpha\, P(Y, E = e)
P ( Y ∣ E = e ) = α P ( Y , E = e )
其中:
P ( Y , E = e ) = ∑ h P ( Y , E = e , H = h ) P(Y, E = e) = \sum_h P(Y, E = e, H = h)
P ( Y , E = e ) = h ∑ P ( Y , E = e , H = h )
归一化常数 α \alpha α 让查询变量所有取值的概率和为 1。
5.2 归一化
很多推理题不必先算分母,可以先算未归一化向量。例如:
P ( Cavity ∣ t ) = α P ( Cavity , t ) P(\text{Cavity} \mid t) = \alpha\, P(\text{Cavity}, t)
P ( Cavity ∣ t ) = α P ( Cavity , t )
若求和得到 P ( Cavity , t ) = ⟨ 0.12 , 0.08 ⟩ P(\text{Cavity}, t) = \langle 0.12, 0.08 \rangle P ( Cavity , t ) = ⟨ 0 . 1 2 , 0 . 0 8 ⟩ ,则归一化:
α = 1 0.12 + 0.08 = 5 \alpha = \frac{1}{0.12 + 0.08} = 5
α = 0 . 1 2 + 0 . 0 8 1 = 5
所以:P ( Cavity ∣ t ) = ⟨ 0.6 , 0.4 ⟩ P(\text{Cavity} \mid t) = \langle 0.6, 0.4 \rangle P ( Cavity ∣ t ) = ⟨ 0 . 6 , 0 . 4 ⟩ 。
考试中常写成 Q ( x ) = P ( x , e ) Q(x) = P(x, e) Q ( x ) = P ( x , e ) ,再用:
P ( x ∣ e ) = Q ( x ) ∑ x ′ Q ( x ′ ) P(x \mid e) = \frac{Q(x)}{\sum_{x'} Q(x')}
P ( x ∣ e ) = ∑ x ′ Q ( x ′ ) Q ( x )
5.3 完整联合分布推理的问题
若最大变量取值数为 d d d ,变量数为 n n n ,枚举完整联合分布最坏时间复杂度为 O ( d n ) O(d^n) O ( d n ) ,存储完整联合分布也需要 O ( d n ) O(d^n) O ( d n ) 。
此外还要问:这些 O ( d n ) O(d^n) O ( d n ) 个概率从哪里来?这直接引出独立性、条件独立性和贝叶斯网络。
7. 条件独立
7.1 条件独立的定义
A A A 和 B B B 在给定 C C C 后条件独立,记为 A ⊥ B ∣ C A \perp B \mid C A ⊥ B ∣ C ,等价写法:
P ( A ∣ B , C ) = P ( A ∣ C ) P(A \mid B, C) = P(A \mid C)
P ( A ∣ B , C ) = P ( A ∣ C )
P ( B ∣ A , C ) = P ( B ∣ C ) P(B \mid A, C) = P(B \mid C)
P ( B ∣ A , C ) = P ( B ∣ C )
P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C ) P(A, B \mid C) = P(A \mid C)P(B \mid C)
P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C )
含义:在已经知道 C C C 后,B B B 不再给 A A A 提供额外信息。
7.2 条件独立不等于独立
报警器例子:
JohnCalls:John 打电话。
MaryCalls:Mary 打电话。
Alarm:警报响。
不观测警报时,John 打电话会提高 Mary 打电话的概率,因为它暗示警报可能响了:
P ( MaryCalls ∣ JohnCalls ) ≠ P ( MaryCalls ) P(\text{MaryCalls} \mid \text{JohnCalls}) \neq P(\text{MaryCalls})
P ( MaryCalls ∣ JohnCalls ) = P ( MaryCalls )
但若已经知道警报状态,John 是否打电话不再影响 Mary 是否打电话:
P ( MaryCalls ∣ Alarm, JohnCalls ) = P ( MaryCalls ∣ Alarm ) P(\text{MaryCalls} \mid \text{Alarm, JohnCalls}) = P(\text{MaryCalls} \mid \text{Alarm})
P ( MaryCalls ∣ Alarm, JohnCalls ) = P ( MaryCalls ∣ Alarm )
所以二者不独立,但在给定 Alarm 后条件独立。
8. 贝叶斯公式
8.1 贝叶斯公式
由乘法规则 P ( A ∧ B ) = P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A \land B) = P(A \mid B)P(B) = P(B \mid A)P(A) P ( A ∧ B ) = P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) 得到贝叶斯公式:
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A \mid B) = \frac{P(B \mid A)P(A)}{P(B)}
P ( A ∣ B ) = P ( B ) P ( B ∣ A ) P ( A )
若把假设写成 H H H ,证据写成 e e e :
P ( H ∣ e ) = P ( e ∣ H ) P ( H ) P ( e ) P(H \mid e) = \frac{P(e \mid H)P(H)}{P(e)}
P ( H ∣ e ) = P ( e ) P ( e ∣ H ) P ( H )
其中:
P ( H ) P(H) P ( H ) 是先验。
P ( e ∣ H ) P(e \mid H) P ( e ∣ H ) 是似然。
P ( H ∣ e ) P(H \mid e) P ( H ∣ e ) 是后验。
P ( e ) P(e) P ( e ) 是证据概率,也是归一化分母。
常用归一化写法:P ( H ∣ e ) = α P ( e ∣ H ) P ( H ) P(H \mid e) = \alpha\, P(e \mid H)P(H) P ( H ∣ e ) = α P ( e ∣ H ) P ( H ) 。
8.2 为什么贝叶斯公式重要
很多领域中,因果概率容易给出,诊断概率才是我们想问的。
因果方向:P ( Effect ∣ Cause ) P(\text{Effect} \mid \text{Cause}) P ( Effect ∣ Cause )
诊断方向:P ( Cause ∣ Effect ) P(\text{Cause} \mid \text{Effect}) P ( Cause ∣ Effect )
贝叶斯公式把二者联系起来:
P ( Cause ∣ Effect ) = P ( Effect ∣ Cause ) P ( Cause ) P ( Effect ) P(\text{Cause} \mid \text{Effect}) = \frac{P(\text{Effect} \mid \text{Cause})P(\text{Cause})}{P(\text{Effect})}
P ( Cause ∣ Effect ) = P ( Effect ) P ( Effect ∣ Cause ) P ( Cause )
这也是为什么很多 AI 系统(如语音识别和机器翻译)会把难求的后验转为更容易估计的似然和先验。
8.3 全概率公式展开分母
若 B 1 , … , B k B_1, \dots, B_k B 1 , … , B k 构成互斥完备划分,则:
P ( A ) = ∑ i P ( A ∣ B i ) P ( B i ) P(A) = \sum_i P(A \mid B_i)P(B_i)
P ( A ) = i ∑ P ( A ∣ B i ) P ( B i )
布尔情形:P ( A ) = P ( A ∣ B ) P ( B ) + P ( A ∣ ¬ B ) P ( ¬ B ) P(A) = P(A \mid B)P(B) + P(A \mid \lnot B)P(\lnot B) P ( A ) = P ( A ∣ B ) P ( B ) + P ( A ∣ ¬ B ) P ( ¬ B ) 。
贝叶斯题里分母通常就是用全概率公式展开。
9. 多证据贝叶斯和朴素贝叶斯
9.1 多证据贝叶斯
若一个原因 C C C 产生多个证据 E 1 , … , E n E_1, \dots, E_n E 1 , … , E n ,贝叶斯公式给出:
P ( C ∣ E 1 , … , E n ) = α P ( E 1 , … , E n ∣ C ) P ( C ) P(C \mid E_1, \dots, E_n) = \alpha\, P(E_1, \dots, E_n \mid C)P(C)
P ( C ∣ E 1 , … , E n ) = α P ( E 1 , … , E n ∣ C ) P ( C )
如果给定原因 C C C 后,各证据条件独立 E i ⊥ E j ∣ C E_i \perp E_j \mid C E i ⊥ E j ∣ C ,则:
P ( E 1 , … , E n ∣ C ) = ∏ i P ( E i ∣ C ) P(E_1, \dots, E_n \mid C) = \prod_i P(E_i \mid C)
P ( E 1 , … , E n ∣ C ) = i ∏ P ( E i ∣ C )
于是:
P ( C ∣ E 1 , … , E n ) = α P ( C ) ∏ i P ( E i ∣ C ) P(C \mid E_1, \dots, E_n) = \alpha\, P(C) \prod_i P(E_i \mid C)
P ( C ∣ E 1 , … , E n ) = α P ( C ) i ∏ P ( E i ∣ C )
这就是朴素贝叶斯的核心。
9.2 朴素贝叶斯假设
朴素贝叶斯假设是:给定类别 Y Y Y 后,所有属性 X 1 , … , X n X_1, \dots, X_n X 1 , … , X n 条件独立。
P ( X 1 , … , X n ∣ Y ) = ∏ i P ( X i ∣ Y ) P(X_1, \dots, X_n \mid Y) = \prod_i P(X_i \mid Y)
P ( X 1 , … , X n ∣ Y ) = i ∏ P ( X i ∣ Y )
分类时:
y ^ = arg max y P ( y ∣ x 1 , … , x n ) \hat{y} = \arg\max_y P(y \mid x_1, \dots, x_n)
y ^ = arg y max P ( y ∣ x 1 , … , x n )
由贝叶斯公式:
y ^ = arg max y P ( y ) ∏ i P ( x i ∣ y ) \hat{y} = \arg\max_y P(y) \prod_i P(x_i \mid y)
y ^ = arg y max P ( y ) i ∏ P ( x i ∣ y )
注意:朴素贝叶斯不是说特征无条件独立,而是说它们在给定类别后条件独立。
9.3 文本分类
文本分类中:
C C C :文档类别。
W i W_i W i :第 i i i 个词是否出现。
模型参数:P ( C = c ) P(C = c) P ( C = c ) 、P ( W i = true ∣ C = c ) P(W_i = \text{true} \mid C = c) P ( W i = true ∣ C = c ) 。
训练时:
P ( C = c ) = # { 类别为 c 的文档 } # { 全部文档 } P(C = c) = \frac{\#\{\text{类别为 } c \text{ 的文档}\}}{\#\{\text{全部文档}\}}
P ( C = c ) = # { 全部文档 } # { 类别为 c 的文档 }
P ( W i = true ∣ C = c ) = # { 类别 c 中包含词 i 的文档 } # { 类别为 c 的文档 } P(W_i = \text{true} \mid C = c) = \frac{\#\{\text{类别 } c \text{ 中包含词 } i \text{ 的文档}\}}{\#\{\text{类别为 } c \text{ 的文档}\}}
P ( W i = true ∣ C = c ) = # { 类别为 c 的文档 } # { 类别 c 中包含词 i 的文档 }
分类新文档:
score ( c ) = P ( C = c ) ∏ i P ( W i = w i ∣ C = c ) \text{score}(c) = P(C = c) \prod_i P(W_i = w_i \mid C = c)
score ( c ) = P ( C = c ) i ∏ P ( W i = w i ∣ C = c )
为避免连乘下溢,实际常取对数:
log score ( c ) = log P ( C = c ) + ∑ i log P ( W i = w i ∣ C = c ) \log \text{score}(c) = \log P(C = c) + \sum_i \log P(W_i = w_i \mid C = c)
log score ( c ) = log P ( C = c ) + i ∑ log P ( W i = w i ∣ C = c )
需要平滑,否则某个词从未出现会让整个乘积变成 0。最常见是拉普拉斯平滑:
P ( W i = true ∣ C = c ) = N i c + 1 N c + 2 P(W_i = \text{true} \mid C = c) = \frac{N_{ic} + 1}{N_c + 2}
P ( W i = true ∣ C = c ) = N c + 2 N i c + 1
其中 N i c N_{ic} N i c 是类别 c c c 中包含词 i i i 的文档数,N c N_c N c 是类别 c c c 的文档数,布尔词特征有两个取值。
9.4 数字识别例子
手写数字识别可以把每个像素位置作为一个特征:F i j ∈ { on, off } F_{ij} \in \{\text{on, off}\} F i j ∈ { on, off } ,类别是数字 D ∈ { 0 , 1 , … , 9 } D \in \{0, 1, \dots, 9\} D ∈ { 0 , 1 , … , 9 } 。
朴素贝叶斯模型:
P ( D , F 11 , F 12 , … ) = P ( D ) ∏ i , j P ( F i j ∣ D ) P(D, F_{11}, F_{12}, \dots) = P(D) \prod_{i,j} P(F_{ij} \mid D)
P ( D , F 1 1 , F 1 2 , … ) = P ( D ) i , j ∏ P ( F i j ∣ D )
要学习的是类别先验 P ( D ) P(D) P ( D ) 和每个数字下每个像素亮灭的条件概率表。它忽略了相邻像素之间的相关性,但换来了非常简单的学习和推理。
10. 概率分布从哪里来
10.1 三种来源
课件给了三种来源:
专家给出 :例如医生、工程师或领域专家直接估计条件概率。
简单概率事实加代数推导 :用乘法规则、链式法则、独立假设组合出联合分布。
从数据中学习 :机器学习的很大一部分就是学习概率模型的参数或结构。
专家估计并不简单,例如问"冷天时下雨概率是多少"就可能很难稳定回答。
10.2 最大似然估计
估计一个离散随机变量 X X X 的分布时,最大似然估计使用经验频率:
P ^ ( X = x ) = N x N \hat{P}(X = x) = \frac{N_x}{N}
P ^ ( X = x ) = N N x
其中 N x N_x N x 是观测到 X = x X = x X = x 的次数,N N N 是总观测次数。这个估计最大化观测数据出现的似然:L ( θ ) = P ( D ∣ θ ) L(\theta) = P(D \mid \theta) L ( θ ) = P ( D ∣ θ ) 。
10.3 最大似然的问题和先验
如果只抛一次硬币且结果为正面,最大似然会给 P ^ ( Heads ) = 1 \hat{P}(\text{Heads}) = 1 P ^ ( Heads ) = 1 ,这显然过于激进。课件强调一个基本思想:
证据很少时,估计应更多受先验影响。
证据很多时,估计应更多听数据。
这也是平滑和贝叶斯参数估计的动机。朴素贝叶斯中文本分类必须加平滑,就是为了避免小样本下把未见事件估为 0。
11. 贝叶斯网络
11.1 图模型是什么
概率图模型把概率分布和图论结合起来:
节点表示随机变量或变量组。
边表示变量之间的概率关系。
图结构帮助人理解模型,也帮助算法设计高效推理。图模型的价值:
可视化复杂概率模型结构。
从图中读出条件独立性质。
把复杂推理和学习变成图上的操作。
有向图模型包括贝叶斯网络;无向图模型包括马尔可夫随机场。贝叶斯网络更常用于表示因果关系,马尔可夫随机场更适合表示软约束。
11.2 贝叶斯网络的语法
贝叶斯网络是一个有向无环图,即 DAG。它包含:
一组节点,每个节点对应一个随机变量。
有向边,A → B A \to B A → B 表示 A A A 直接影响 B B B ,A A A 是 B B B 的父亲。
如果两个节点之间没有直接的边相连,这意味着它们在给定某些其他变量的条件下是条件独立的。
每个节点有一个条件概率分布:P ( X i ∣ Parents ( X i ) ) P(X_i \mid \text{Parents}(X_i)) P ( X i ∣ Parents ( X i ) ) 。注意是 P ( X i ∣ Parents ( X i ) ) P(X_i \mid \text{Parents}(X_i)) P ( X i ∣ Parents ( X i ) ) 即所有父亲的组合条件概率。离散情形中,这个条件概率分布通常写成 CPT(条件概率表),若没有父亲,就是先验概率。
11.3 贝叶斯网络的全局语义
贝叶斯网络的拓扑结构和所有 CPT 一起定义完整联合分布:
P ( X 1 , … , X n ) = ∏ i P ( X i ∣ Parents ( X i ) ) P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))
P ( X 1 , … , X n ) = i ∏ P ( X i ∣ Parents ( X i ) )
这是贝叶斯网络最常用公式。题目给图和 CPT,要求写联合概率时,先按每个节点的父节点列出这一乘积。
例:若图为 A → C ← B , C → D A \to C \leftarrow B,\; C \to D A → C ← B , C → D ,则:
P ( A , B , C , D ) = P ( A ) P ( B ) P ( C ∣ A , B ) P ( D ∣ C ) P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C)
P ( A , B , C , D ) = P ( A ) P ( B ) P ( C ∣ A , B ) P ( D ∣ C )
若求某个具体原子事件,如 P ( a , ¬ b , c , d ) P(a, \lnot b, c, d) P ( a , ¬ b , c , d ) ,就把对应真假值代入每个 CPT;遇到假值要用补概率:P ( ¬ X ∣ u ) = 1 − P ( X ∣ u ) P(\lnot X \mid u) = 1 - P(X \mid u) P ( ¬ X ∣ u ) = 1 − P ( X ∣ u ) 。
11.4 参数量优势
完整联合分布对 n n n 个布尔变量需要 2 n − 1 2^n - 1 2 n − 1 个独立参数。
若每个布尔节点最多有 k k k 个布尔父节点,每个 CPT 有 2 k 2^k 2 k 行,每行只需一个参数:O ( n ⋅ 2 k ) O(n \cdot 2^k) O ( n ⋅ 2 k ) 。如果 k k k 很小,贝叶斯网络随变量数近似线性增长。
课件的报警器网络有五个布尔变量:Burglary、Earthquake、Alarm、JohnCalls、MaryCalls。完整联合分布需要 2 5 − 1 = 31 2^5 - 1 = 31 2 5 − 1 = 3 1 个独立参数。按因果网络:
Burglary → Alarm
Earthquake → Alarm
Alarm → JohnCalls
Alarm → MaryCalls
参数数目为:1 + 1 + 4 + 2 + 2 = 10 1 + 1 + 4 + 2 + 2 = 10 1 + 1 + 4 + 2 + 2 = 1 0 。这就是结构化表示的威力。
11.5 贝叶斯网络的局部语义
局部语义:给定父节点后,一个节点与它的所有非后代节点条件独立。若节点为 X i X_i X i ,父节点为 Parents ( X i ) \text{Parents}(X_i) Parents ( X i ) ,非后代集合为 NonDescendants ( X i ) \text{NonDescendants}(X_i) NonDescendants ( X i ) ,则:
X i ⊥ NonDescendants ( X i ) ∣ Parents ( X i ) X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)
X i ⊥ NonDescendants ( X i ) ∣ Parents ( X i )
课件结论:local semantics ⟺ global semantics。也就是说,局部条件独立断言和全联合分布的乘积分解是等价的。
12. 贝叶斯网络节点独立性判断(d-separation)
12.1 链式结构
结构:X → Y → Z X \to Y \to Z X → Y → Z
不观测 Y Y Y 时,X X X 可能影响 Z Z Z ,二者通常相关。给定 Y Y Y 后,路径被阻断:X ⊥ Z ∣ Y X \perp Z \mid Y X ⊥ Z ∣ Y 。
直觉:如果已经知道中间状态 Y Y Y ,更早的原因 X X X 对更晚结果 Z Z Z 不再提供额外信息。
12.2 共同原因结构
结构:X ← Y → Z X \leftarrow Y \to Z X ← Y → Z
Y Y Y 是 X X X 和 Z Z Z 的共同原因。不观测 Y Y Y 时,X X X 和 Z Z Z 通常相关;给定 Y Y Y 后,路径被阻断:X ⊥ Z ∣ Y X \perp Z \mid Y X ⊥ Z ∣ Y 。
直觉:如果已经知道共同原因,两个结果之间的相关性被解释掉。
12.3 共同结果结构
结构:X → Y ← Z X \to Y \leftarrow Z X → Y ← Z
Y Y Y 是 collider,也叫共同结果或 V-structure。
不观测 Y Y Y 及其后代时,路径阻断:X ⊥ Z X \perp Z X ⊥ Z 。
但若观测 Y Y Y 或 Y Y Y 的后代,路径被打开:X ⊥̸ Z ∣ Y X \not\perp Z \mid Y X ⊥ Z ∣ Y 。
这叫 explaining away。例子:下雨和球赛都会导致交通堵塞;若看到堵车,知道有球赛会降低"下雨导致堵车"的后验概率。
12.4 d-separation 判断步骤
判断 A A A 与 B B B 在给定证据集合 E E E 后是否条件独立:
把有向图当成无向图,列出 A A A 到 B B B 的所有路径。
对每条路径检查是否被阻断。
链式节点和共同原因节点若被观测,则阻断路径。
collider 节点若自身及其后代都未被观测,则阻断路径。
只有所有路径都被阻断,才有条件独立。
考试记忆:
链和 fork:观测中间点会堵住。
collider:默认堵住,观测它或它的后代会打开。
12.5 马尔可夫毯
一个节点的马尔可夫毯包括:父节点;子节点;子节点的其他父节点。
给定马尔可夫毯后,该节点与网络中其他所有节点条件独立:
X ⊥ rest ∣ M B ( X ) X \perp \text{rest} \mid MB(X)
X ⊥ rest ∣ M B ( X )
这是贝叶斯网络中局部推理和采样算法的重要概念;若考试只考概念,记清楚"父、子、子之父"。
13. 如何构建贝叶斯网络
13.1 一般构建算法
课件给出构建网络的方法:
选择变量顺序:X 1 , … , X n X_1, \dots, X_n X 1 , … , X n 。
对 i = 1 i = 1 i = 1 到 n n n ,把 X i X_i X i 加入网络。
从更早变量 X 1 , … , X i − 1 X_1, \dots, X_{i-1} X 1 , … , X i − 1 中选择父节点,使:
P ( X i ∣ Parents ( X i ) ) = P ( X i ∣ X 1 , … , X i − 1 ) P(X_i \mid \text{Parents}(X_i)) = P(X_i \mid X_1, \dots, X_{i-1})
P ( X i ∣ Parents ( X i ) ) = P ( X i ∣ X 1 , … , X i − 1 )
尽量选择满足这个条件的最小父集。
这样做保证:
P ( X 1 , … , X n ) = ∏ i P ( X i ∣ X 1 , … , X i − 1 ) = ∏ i P ( X i ∣ Parents ( X i ) ) 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))
P ( X 1 , … , X n ) = i ∏ P ( X i ∣ X 1 , … , X i − 1 ) = i ∏ P ( X i ∣ Parents ( X i ) )
第一步来自链式法则,第二步来自父节点选择。
13.2 为什么因果顺序通常更好
若网络反映真实因果模式,通常:节点父节点更少;人更容易判断条件概率;专家更容易给出 CPT;网络更紧凑,推理可能更高效。
报警器例子用因果方向只需 10 个参数。如果采用非因果顺序(如先加 MaryCalls、再加 JohnCalls、再加 Alarm 等),判断条件独立会更难,参数可能增加到 13 个。
13.3 箭头不一定等于因果
贝叶斯网络的箭头真正编码的是条件独立结构,不一定是世界中的真实因果关系。如果模型里缺少关键变量,或者领域本身没有清晰因果结构,箭头可能只是在表达相关性。正确态度是:
因果方向常常更自然、更紧凑。
但 BN 的数学语义是联合分布分解和条件独立,不是因果干预语义。
13.4 望远镜作业题
变量:
N N N :真实恒星数。
F 1 , F 2 F_1, F_2 F 1 , F 2 :两个望远镜是否失焦。
M 1 , M 2 M_1, M_2 M 1 , M 2 :两次测量结果。
合理因果结构:N → M 1 , F 1 → M 1 , N → M 2 , F 2 → M 2 N \to M_1,\; F_1 \to M_1,\; N \to M_2,\; F_2 \to M_2 N → M 1 , F 1 → M 1 , N → M 2 , F 2 → M 2 。
真实恒星数影响观测结果,望远镜状态也影响观测结果。不要把观测值画成真实恒星数的原因。给定 N , F 1 , F 2 N, F_1, F_2 N , F 1 , F 2 后:M 1 ⊥ M 2 ∣ N , F 1 , F 2 M_1 \perp M_2 \mid N, F_1, F_2 M 1 ⊥ M 2 ∣ N , F 1 , F 2 。若只给定 N N N ,还要看 F 1 F_1 F 1 和 F 2 F_2 F 2 是否独立以及图中是否有其他路径。
14. 贝叶斯网络中的概率计算
14.1 常见概率计算
简单查询:P ( X i ∣ E = e ) P(X_i \mid E = e) P ( X i ∣ E = e ) ,例如 P ( NoGas ∣ Gauge = empty, Lights = on, Starts = false ) P(\text{NoGas} \mid \text{Gauge} = \text{empty, Lights} = \text{on, Starts} = \text{false}) P ( NoGas ∣ Gauge = empty, Lights = on, Starts = false ) 。
联合查询:P ( X i , X j ∣ E = e ) P(X_i, X_j \mid E = e) P ( X i , X j ∣ E = e ) ,可以分解为 P ( X i , X j ∣ E = e ) = P ( X i ∣ E = e ) P ( X j ∣ X i , 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 ( X i , X j ∣ E = e ) = P ( X i ∣ E = e ) P ( X j ∣ X i , E = e ) 。
决策网络还会加入效用信息,但仍需要概率推理来计算 P ( Outcome ∣ Action, Evidence ) P(\text{Outcome} \mid \text{Action, Evidence}) P ( Outcome ∣ Action, Evidence ) 。
14.2 用例
为了把概率计算讲清楚,下面都用同一个贝叶斯网络:A → C , B → C , C → D A \to C,\; B \to C,\; C \to D A → C , B → C , C → D ,其中 A , B A, B A , B 是根节点,C C C 的父节点是 A , B A, B A , B ,D D D 的父节点是 C C C 。这张图的联合分布分解为:
P ( A , B , C , D ) = P ( A ) P ( B ) P ( C ∣ A , B ) P ( D ∣ C ) P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C)
P ( A , B , C , D ) = P ( A ) P ( B ) P ( C ∣ A , B ) P ( D ∣ C )
这一个式子是所有概率计算的起点。考试时不管问什么,第一步都应先写出这个联合分解,再决定哪些变量代入、哪些变量求和、是否需要归一化。
四类变量身份:
查询变量:题目最终要你求分布的变量,例如 A A A 。
证据变量:条件竖线右边已经观测到的变量,例如 d d d 。
隐藏变量:既不是查询,也不是证据,但网络里存在,必须求和消掉,例如求 P ( A ∣ d ) P(A \mid d) P ( A ∣ d ) 时的 B , C B, C B , C 。
被固定变量:在完整联合事件中已经给定取值的变量,例如 P ( a , ¬ b , c , d ) P(a, \lnot b, c, d) P ( a , ¬ b , c , d ) 中四个变量都被固定。
判断一道 BN 概率题怎么做,其实就是先给每个变量分身份。
14.3 第一类:完整联合概率怎么计算
完整联合概率指所有变量都给了具体取值,例如 P ( a , ¬ b , c , d ) P(a, \lnot b, c, d) P ( a , ¬ b , c , d ) 。这种题不用求和,也不用归一化,只要按图分解并代入 CPT:
P ( a , ¬ b , c , d ) = P ( a ) P ( ¬ b ) P ( c ∣ a , ¬ b ) P ( d ∣ c ) P(a, \lnot b, c, d) = P(a)\,P(\lnot b)\,P(c \mid a, \lnot b)\,P(d \mid c)
P ( a , ¬ b , c , d ) = P ( a ) P ( ¬ b ) P ( c ∣ a , ¬ b ) P ( d ∣ c )
如果 CPT 只给 P ( b ) P(b) P ( b ) ,没有直接给 P ( ¬ b ) P(\lnot b) P ( ¬ b ) ,就用补概率:P ( ¬ b ) = 1 − P ( b ) P(\lnot b) = 1 - P(b) P ( ¬ b ) = 1 − P ( b ) 。如果 CPT 只给 P ( c ∣ a , ¬ b ) P(c \mid a, \lnot b) P ( c ∣ a , ¬ b ) ,而题目要 P ( ¬ c ∣ a , ¬ b ) P(\lnot c \mid a, \lnot b) P ( ¬ c ∣ a , ¬ b ) ,也用补概率:P ( ¬ c ∣ a , ¬ b ) = 1 − P ( c ∣ a , ¬ b ) P(\lnot c \mid a, \lnot b) = 1 - P(c \mid a, \lnot b) P ( ¬ c ∣ a , ¬ b ) = 1 − P ( c ∣ a , ¬ b ) 。
考试口诀:完整联合概率就是"每个节点查一次表,根节点查先验,非根节点查父节点条件下的 CPT,然后全部相乘"。
14.4 第二类:边缘概率怎么计算
边缘概率是只问某些变量,不关心其他变量。例如 P ( d ) P(d) P ( d ) 。网络里还有 A , B , C A, B, C A , B , C ,它们没有出现在查询中,也不是证据,所以都是隐藏变量。完整写法是:
P ( d ) = ∑ a ∑ b ∑ c P ( a , b , c , d ) P(d) = \sum_a \sum_b \sum_c P(a, b, c, d)
P ( d ) = a ∑ b ∑ c ∑ P ( a , b , c , d )
再代入 BN 分解:
P ( d ) = ∑ a ∑ b ∑ c P ( a ) P ( b ) P ( c ∣ a , b ) P ( d ∣ c ) P(d) = \sum_a \sum_b \sum_c P(a)\,P(b)\,P(c \mid a, b)\,P(d \mid c)
P ( d ) = a ∑ b ∑ c ∑ P ( a ) P ( b ) P ( c ∣ a , b ) P ( d ∣ c )
如果 A , B , C A, B, C A , B , C 都是布尔变量,展开共有八种情况。这就是"边缘化":把没有问、没有观测的变量全部枚举并加起来。
14.5 第三类:部分联合概率怎么计算
部分联合概率给了一部分变量的取值,但没有竖线,例如 P ( a , d ) P(a, d) P ( a , d ) 。这里 A , D A, D A , D 被固定,B , C B, C B , C 没出现,所以 B , C B, C B , C 是隐藏变量:
P ( a , d ) = ∑ b ∑ c P ( a , b , c , d ) P(a, d) = \sum_b \sum_c P(a, b, c, d)
P ( a , d ) = b ∑ c ∑ P ( a , b , c , d )
代入 BN 分解:
P ( a , d ) = ∑ b ∑ c P ( a ) P ( b ) P ( c ∣ a , b ) P ( d ∣ c ) P(a, d) = \sum_b \sum_c P(a)\,P(b)\,P(c \mid a, b)\,P(d \mid c)
P ( a , d ) = b ∑ c ∑ P ( a ) P ( b ) P ( c ∣ a , b ) P ( d ∣ c )
展开 b , c b, c b , c 所有情况。注意:部分联合概率没有条件竖线,因此最后不需要归一化;它本身就是一个普通概率。
14.6 第四类:条件概率怎么计算
条件概率最原始的定义是:
P ( X ∣ e ) = P ( X , e ) P ( e ) P(X \mid e) = \frac{P(X, e)}{P(e)}
P ( X ∣ e ) = P ( e ) P ( X , e )
在 BN 题里通常不用直接算大分母,而是用归一化:P ( X ∣ e ) = α P ( X , e ) P(X \mid e) = \alpha\, P(X, e) P ( X ∣ e ) = α P ( X , e ) ,其中 α \alpha α 让 X X X 的所有取值加起来等于 1。
例如求 P ( c ∣ a , b , d ) P(c \mid a, b, d) P ( c ∣ a , b , d ) ,查询变量是 C C C ,证据是 a , b , d a, b, d a , b , d 。没有隐藏变量,因为四个变量都已经出现在查询或证据中。先算两个未归一化值:
q ( c ) = P ( c , a , b , d ) = P ( a ) P ( b ) P ( c ∣ a , b ) P ( d ∣ c ) q(c) = P(c, a, b, d) = P(a)\,P(b)\,P(c \mid a, b)\,P(d \mid c)
q ( c ) = P ( c , a , b , d ) = P ( a ) P ( b ) P ( c ∣ a , b ) P ( d ∣ c )
q ( ¬ c ) = P ( ¬ c , a , b , d ) = P ( a ) P ( b ) P ( ¬ c ∣ a , b ) P ( d ∣ ¬ c ) q(\lnot c) = P(\lnot c, a, b, d) = P(a)\,P(b)\,P(\lnot c \mid a, b)\,P(d \mid \lnot c)
q ( ¬ c ) = P ( ¬ c , a , b , d ) = P ( a ) P ( b ) P ( ¬ c ∣ a , b ) P ( d ∣ ¬ c )
归一化:
P ( c ∣ a , b , d ) = q ( c ) q ( c ) + q ( ¬ c ) = P ( c ∣ a , b ) P ( d ∣ c ) P ( c ∣ a , b ) P ( d ∣ c ) + P ( ¬ c ∣ a , b ) P ( d ∣ ¬ c ) P(c \mid a, b, d) = \frac{q(c)}{q(c) + q(\lnot c)} = \frac{P(c \mid a, b)\,P(d \mid c)}{P(c \mid a, b)\,P(d \mid c) + P(\lnot c \mid a, b)\,P(d \mid \lnot c)}
P ( c ∣ a , b , d ) = q ( c ) + q ( ¬ c ) q ( c ) = P ( c ∣ a , b ) P ( d ∣ c ) + P ( ¬ c ∣ a , b ) P ( d ∣ ¬ c ) P ( c ∣ a , b ) P ( d ∣ c )
上下都有 P ( a ) P ( b ) P(a)P(b) P ( a ) P ( b ) ,可以约掉。这一步很重要:证据中有些项会在归一化时抵消,但不要一开始凭感觉删,先写联合分解,再看哪些因子在查询变量不同取值下相同。
14.7 第五类:有隐藏变量的后验怎么计算
考试最常见的是这种:问一个变量的后验,但网络里有隐藏变量。例如 P ( A ∣ c , d ) P(A \mid c, d) P ( A ∣ c , d ) ,查询变量是 A A A ,证据是 c , d c, d c , d ,隐藏变量是 B B B 。
第一步,条件概率转联合概率:
P ( A ∣ c , d ) = α P ( A , c , d ) P(A \mid c, d) = \alpha\, P(A, c, d)
P ( A ∣ c , d ) = α P ( A , c , d )
第二步,展开隐藏变量求:
P ( A , c , d ) = ∑ b P ( A , b , c , d ) P(A, c, d) = \sum_b P(A, b, c, d)
P ( A , c , d ) = b ∑ P ( A , b , c , d )
第三步,代入 BN 分解:
P ( A , c , d ) = ∑ b P ( A ) P ( b ) P ( c ∣ A , b ) P ( d ∣ c ) P(A, c, d) = \sum_b P(A)\,P(b)\,P(c \mid A, b)\,P(d \mid c)
P ( A , c , d ) = b ∑ P ( A ) P ( b ) P ( c ∣ A , b ) P ( d ∣ c )
第四步,把与隐藏变量无关的概率提出来,其中由证据变量确定的常数概率可以在归一化时消掉:
P ( A , d ) = P ( A ) P ( d ∣ c ) ∑ b P ( b ) ∑ c P ( c ∣ A , b ) P(A, d) = P(A)\,P(d \mid c) \sum_b P(b) \sum_c P(c \mid A, b)
P ( A , d ) = P ( A ) P ( d ∣ c ) b ∑ P ( b ) c ∑ P ( c ∣ A , b )
第五步,分别计算 A = a A = a A = a 和 A = ¬ a A = \lnot a A = ¬ a 的未归一化值(P ( d ∣ c ) P(d \mid c) P ( d ∣ c ) 省略):
q ( a ) = P ( a ) ∑ b P ( b ) P ( c ∣ a , b ) q(a) = P(a) \sum_b P(b)\,P(c \mid a, b)
q ( a ) = P ( a ) b ∑ P ( b ) P ( c ∣ a , b )
q ( ¬ a ) = P ( ¬ a ) ∑ b P ( b ) P ( c ∣ ¬ a , b ) q(\lnot a) = P(\lnot a) \sum_b P(b)\,P(c \mid \lnot a, b)
q ( ¬ a ) = P ( ¬ a ) b ∑ P ( b ) P ( c ∣ ¬ a , b )
第六步,归一化:
P ( a ∣ d ) = q ( a ) q ( a ) + q ( ¬ a ) , P ( ¬ a ∣ d ) = q ( ¬ a ) q ( a ) + q ( ¬ a ) P(a \mid d) = \frac{q(a)}{q(a) + q(\lnot a)}, \quad P(\lnot a \mid d) = \frac{q(\lnot a)}{q(a) + q(\lnot a)}
P ( a ∣ d ) = q ( a ) + q ( ¬ a ) q ( a ) , P ( ¬ a ∣ d ) = q ( a ) + q ( ¬ a ) q ( ¬ a )
如果题目只问 P ( a ∣ d ) P(a \mid d) P ( a ∣ d ) ,也必须计算 q ( ¬ a ) q(\lnot a) q ( ¬ a ) ,因为它在分母里。除非题目给了 P ( d ) P(d) P ( d ) ,否则不能跳过归一化分母。
14.8 第六类:证据概率怎么计算
有时题目会问证据本身概率,例如 P ( d ) P(d) P ( d ) ,就是把所有非证据变量求和:
P ( d ) = ∑ a ∑ b ∑ c P ( a , b , c , d ) P(d) = \sum_a \sum_b \sum_c P(a, b, c, d)
P ( d ) = a ∑ b ∑ c ∑ P ( a , b , c , d )
或者利用上一节的未归一化值:P ( d ) = q ( a ) + q ( ¬ a ) P(d) = q(a) + q(\lnot a) P ( d ) = q ( a ) + q ( ¬ a ) ,其中 q ( a ) = P ( a , d ) q(a) = P(a, d) q ( a ) = P ( a , d ) ,q ( ¬ a ) = P ( ¬ a , d ) q(\lnot a) = P(\lnot a, d) q ( ¬ a ) = P ( ¬ a , d ) 。所以后验计算中的归一化分母其实就是证据概率:
P ( a ∣ d ) = P ( a , d ) P ( d ) , P ( d ) = P ( a , d ) + P ( ¬ a , d ) P(a \mid d) = \frac{P(a, d)}{P(d)}, \quad P(d) = P(a, d) + P(\lnot a, d)
P ( a ∣ d ) = P ( d ) P ( a , d ) , P ( d ) = P ( a , d ) + P ( ¬ a , d )
14.9 第七类:多个查询变量怎么计算
如果问 P ( A , C ∣ d ) P(A, C \mid d) P ( A , C ∣ d ) ,查询变量是二元组 ( A , C ) (A, C) ( A , C ) ,证据是 d d d ,隐藏变量是 B B B 。
先写未归一化:P ( A , C ∣ d ) = α P ( A , C , d ) P(A, C \mid d) = \alpha\, P(A, C, d) P ( A , C ∣ d ) = α P ( A , C , d ) 。对隐藏变量 B B B 求和:
P ( A , C , d ) = ∑ b P ( A ) P ( b ) P ( C ∣ A , b ) P ( d ∣ C ) P(A, C, d) = \sum_b P(A)\,P(b)\,P(C \mid A, b)\,P(d \mid C)
P ( A , C , d ) = b ∑ P ( A ) P ( b ) P ( C ∣ A , b ) P ( d ∣ C )
然后要对查询变量 ( A , C ) (A, C) ( A , C ) 的所有组合归一化。若 A , C A, C A , 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) q ( a , c ) , q ( a , ¬ c ) , q ( ¬ a , c ) , q ( ¬ a , ¬ c ) 。
归一化分母是四者之和:
P ( a , c ∣ d ) = q ( a , c ) q ( a , c ) + q ( a , ¬ c ) + q ( ¬ a , c ) + q ( ¬ a , ¬ c ) P(a, c \mid d) = \frac{q(a, c)}{q(a, c) + q(a, \lnot c) + q(\lnot a, c) + q(\lnot a, \lnot c)}
P ( a , c ∣ d ) = q ( a , c ) + q ( a , ¬ c ) + q ( ¬ a , c ) + q ( ¬ a , ¬ c ) q ( a , c )
多变量查询不是只算一个数,而是算一个联合后验分布。
14.10 什么时候可以消掉某个证据
不是所有证据都会影响查询。是否能消掉,要看条件独立。例如在示例网络中 A → C → D A \to C \to D A → C → D 并且 B → C B \to C B → C 。如果已经给定 C C C ,那么 D D D 是 C C C 的子节点,D D D 对 A A A 的信息会被 C C C 阻断:A ⊥ D ∣ C A \perp D \mid C A ⊥ D ∣ C ,所以 P ( A ∣ c , d ) = P ( A ∣ c ) P(A \mid c, d) = P(A \mid c) P ( A ∣ c , d ) = P ( A ∣ c ) 。
从代数上也能看出来:
P ( A , c , d ) = ∑ b P ( A ) P ( b ) P ( c ∣ A , b ) P ( d ∣ c ) P(A, c, d) = \sum_b P(A)\,P(b)\,P(c \mid A, b)\,P(d \mid c)
P ( A , c , d ) = b ∑ P ( A ) P ( b ) P ( c ∣ A , b ) P ( d ∣ c )
因为 P ( d ∣ c ) P(d \mid c) P ( d ∣ c ) 与 A A A 和 b b b 都无关,对不同 A A A 取值只是共同常数,归一化时会抵消:
P ( A ∣ c , d ) = α P ( d ∣ c ) P ( A ) ∑ b P ( b ) P ( c ∣ A , b ) P(A \mid c, d) = \alpha\, P(d \mid c)\, P(A) \sum_b P(b)\,P(c \mid A, b)
P ( A ∣ c , d ) = α P ( d ∣ c ) P ( A ) b ∑ P ( b ) P ( c ∣ A , b )
抵消后:P ( A ∣ c , d ) = α ′ P ( A ) ∑ b P ( b ) P ( c ∣ A , b ) = P ( A ∣ c ) P(A \mid c, d) = \alpha' P(A) \sum_b P(b)\,P(c \mid A, b) = P(A \mid c) P ( A ∣ c , d ) = α ′ P ( A ) ∑ b P ( b ) P ( c ∣ A , b ) = P ( A ∣ c ) 。
考试中可以用 d-separation 快速判断,也可以用这种"写出联合,看公共因子是否抵消"的方法验证。
14.11 变量消元
枚举推理会重复计算。变量消元把 CPT 看成因子,逐个消去隐藏变量,保存中间结果。步骤:
把每个 CPT 写成因子。
代入证据,删除或固定与证据不一致的行。
选择一个隐藏变量 Z Z Z 。
收集所有包含 Z Z Z 的因子。
将这些因子相乘。
对 Z Z Z 求和,得到不含 Z Z Z 的新因子。
重复直到隐藏变量消完。
剩余因子相乘并归一化。
核心操作:
g ( U ) = ∑ z ∏ j f j ( z , U j ) g(U) = \sum_z \prod_j f_j(z, U_j)
g ( U ) = z ∑ j ∏ f j ( z , U j )
其中 f j f_j f j 是包含 Z Z Z 的因子,求和后新因子 g g g 不再含 Z Z Z 。
14.12 变量消元完整推导:计算 P(A|d)
仍用示例网络:P ( A , B , C , D ) = P ( A ) P ( B ) P ( C ∣ A , B ) P ( D ∣ C ) P(A, B, C, D) = P(A)\,P(B)\,P(C \mid A, B)\,P(D \mid C) P ( A , B , C , D ) = P ( A ) P ( B ) P ( C ∣ A , B ) P ( D ∣ C ) ,要求 P ( A ∣ d ) P(A \mid d) P ( A ∣ d ) 。
第一步:写初始因子。
f A ( A ) = P ( A ) f_A(A) = P(A)
f A ( A ) = P ( A )
f B ( B ) = P ( B ) f_B(B) = P(B)
f B ( B ) = P ( B )
f C ( C , A , B ) = P ( C ∣ A , B ) f_C(C, A, B) = P(C \mid A, B)
f C ( C , A , B ) = P ( C ∣ A , B )
f D ( D , C ) = P ( D ∣ C ) f_D(D, C) = P(D \mid C)
f D ( D , C ) = P ( D ∣ C )
第二步:代入证据 d d d 。 D D D 已经固定为 d d d ,所以 f D ( D , C ) f_D(D, C) f D ( D , C ) 缩成只关于 C C C 的因子:f d ( C ) = P ( d ∣ C ) f_d(C) = P(d \mid C) f d ( C ) = P ( d ∣ C ) 。
现在要计算:
P ( A ∣ d ) = α f A ( A ) ∑ b ∑ c f B ( b ) f C ( c , A , b ) f d ( c ) P(A \mid d) = \alpha\, f_A(A) \sum_b \sum_c f_B(b)\, f_C(c, A, b)\, f_d(c)
P ( A ∣ d ) = α f A ( A ) b ∑ c ∑ f B ( b ) f C ( c , A , b ) f d ( c )
第三步:选择消元顺序。 隐藏变量是 B , C B, C B , C 。选择先消去 C C C ,再消去 B B B 。
第四步:消去 C C C 。 包含 C C C 的因子是 f C ( C , A , B ) , f d ( C ) f_C(C, A, B),\; f_d(C) f C ( C , A , B ) , f d ( C ) 。先相乘,再对 C C C 求和,得到新因子 h ( A , B ) h(A, B) h ( A , B ) :
h ( A , B ) = ∑ c f C ( c , A , B ) f d ( c ) h(A, B) = \sum_c f_C(c, A, B)\, f_d(c)
h ( A , B ) = c ∑ f C ( c , A , B ) f d ( c )
代回 CPT 记号:
h ( A , B ) = P ( c ∣ A , B ) P ( d ∣ c ) + P ( ¬ c ∣ A , B ) P ( d ∣ ¬ c ) h(A, B) = P(c \mid A, B)\,P(d \mid c) + P(\lnot c \mid A, B)\,P(d \mid \lnot c)
h ( A , B ) = P ( c ∣ A , B ) P ( d ∣ c ) + P ( ¬ c ∣ A , B ) P ( d ∣ ¬ c )
第五步:消去 B B B 。 现在包含 B B B 的因子是 f B ( B ) , h ( A , B ) f_B(B),\; h(A, B) f B ( B ) , h ( A , B ) 。相乘并对 B B B 求和,得到新因子 r ( A ) r(A) r ( A ) :
r ( A ) = ∑ b f B ( 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)
r ( A ) = b ∑ f B ( b ) h ( A , b ) = P ( b ) h ( A , b ) + P ( ¬ b ) h ( A , ¬ b )
第六步:乘上剩余因子。 剩余关于 A A A 的因子是 f A ( A ) f_A(A) f A ( A ) ,所以未归一化结果为:
q ( A ) = f A ( A ) r ( A ) = P ( A ) r ( A ) q(A) = f_A(A)\, r(A) = P(A)\, r(A)
q ( A ) = f A ( A ) r ( A ) = P ( A ) r ( A )
分别取 A = a A = a A = a 和 A = ¬ a A = \lnot a A = ¬ a :q ( a ) = P ( a ) r ( a ) q(a) = P(a)\,r(a) q ( a ) = P ( a ) r ( a ) ,q ( ¬ a ) = P ( ¬ a ) r ( ¬ a ) q(\lnot a) = P(\lnot a)\,r(\lnot a) q ( ¬ a ) = P ( ¬ a ) r ( ¬ a ) 。
第七步:归一化。
P ( a ∣ d ) = q ( a ) q ( a ) + q ( ¬ a ) , P ( ¬ a ∣ d ) = q ( ¬ a ) q ( a ) + q ( ¬ a ) P(a \mid d) = \frac{q(a)}{q(a) + q(\lnot a)}, \quad P(\lnot a \mid d) = \frac{q(\lnot a)}{q(a) + q(\lnot a)}
P ( a ∣ d ) = q ( a ) + q ( ¬ a ) q ( a ) , P ( ¬ a ∣ d ) = q ( a ) + q ( ¬ a ) q ( ¬ a )
这和枚举推理得到的结果完全相同,只是变量消元把公共中间量 h ( A , B ) h(A, B) h ( A , B ) 和 r ( A ) r(A) r ( A ) 存了下来,避免重复展开。
14.13 变量消元为什么更好
枚举推理像从联合分布中反复算同样的子表达式。变量消元把这些子表达式缓存成因子,避免重复。但变量消元并非总是多项式。复杂度主要由消元过程中产生的最大因子决定,而最大因子大小又取决于图结构和消元顺序。
14.14 精确推理复杂度
单连通网络或多树 :任意两个节点之间最多只有一条无向路径。若最大取值数为 d d d ,相关宽度为 k k k ,变量数为 n n n ,变量消元在多树上的时间和空间复杂度可写为 O ( d k n ) O(d^k n) O ( d k n ) 。当 k k k 很小时,它随网络规模近似线性。
多连通网络 :一般精确推理是 NP-hard。课件还指出它等价于计数 3SAT 模型,因此也涉及 #P-complete。
结论:贝叶斯网络让很多模型可推理,但一般图上的精确推理仍然很难。
15. 按图写联合分布和按图判独立
15.1 联合分布题模板
拿到 BN 图后,先为每个节点写它的父节点,然后套公式:
P ( X 1 , … , X n ) = ∏ i P ( X i ∣ Parents ( X i ) ) P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i))
P ( X 1 , … , X n ) = i ∏ P ( X i ∣ Parents ( X i ) )
例:I → P , H → P , H → L , P → E , L → E I \to P,\; H \to P,\; H \to L,\; P \to E,\; L \to E I → P , H → P , H → L , P → E , L → E ,联合分布:
P ( I , H , L , P , E ) = P ( I ) P ( H ) P ( L ∣ H ) P ( P ∣ I , H ) P ( E ∣ P , L ) P(I, H, L, P, E) = P(I)\,P(H)\,P(L \mid H)\,P(P \mid I, H)\,P(E \mid P, L)
P ( I , H , L , P , E ) = P ( I ) P ( H ) P ( L ∣ H ) P ( P ∣ I , H ) P ( E ∣ P , L )
如果题目给具体真假值,如 P ( i , h , ¬ l , p , e ) P(i, h, \lnot l, p, e) P ( i , h , ¬ l , p , e ) ,就写 P ( i ) P ( h ) P ( ¬ l ∣ h ) P ( p ∣ i , h ) P ( e ∣ p , ¬ l ) P(i)\,P(h)\,P(\lnot l \mid h)\,P(p \mid i, h)\,P(e \mid p, \lnot l) P ( i ) P ( h ) P ( ¬ l ∣ h ) P ( p ∣ i , h ) P ( e ∣ p , ¬ l ) ,其中 P ( ¬ l ∣ h ) = 1 − P ( l ∣ h ) P(\lnot l \mid h) = 1 - P(l \mid h) P ( ¬ l ∣ h ) = 1 − P ( l ∣ h ) 。
15.2 条件独立题模板
第一种方法:用局部马尔可夫性。每个节点在给定父节点后,与所有非后代节点条件独立:
X i ⊥ NonDescendants ( X i ) ∣ Parents ( X i ) X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i)
X i ⊥ NonDescendants ( X i ) ∣ Parents ( X i )
第二种方法:用 d-separation。
列出两个变量之间的所有无向路径。
逐条判断路径是否被证据阻断。
所有路径都阻断才独立。
特别提醒:不要只看两点之间有没有边。条件独立是关于所有路径和给定证据的性质。
15.3 概率计算题型总模板
考试里看到一个概率式,先不要急着代数值,先判断它是哪一类。
类型 1:完整联合概率。 形如 P ( x 1 , x 2 , … , x n ) P(x_1, x_2, \dots, x_n) P ( x 1 , x 2 , … , x n ) ,所有变量都有具体取值。做法是按 BN 分解直接相乘:P ( x 1 , … , x n ) = ∏ i P ( x i ∣ parents ( X i ) ) P(x_1, \dots, x_n) = \prod_i P(x_i \mid \text{parents}(X_i)) P ( x 1 , … , x n ) = ∏ i P ( x i ∣ parents ( X i ) ) 。不求和,不归一化。
类型 2:部分联合概率。 形如 P ( a , d ) P(a, d) P ( a , d ) ,有些变量没出现。没出现的变量是隐藏变量,要全部求和:P ( a , d ) = ∑ hidden P ( a , d , hidden ) P(a, d) = \sum_{\text{hidden}} P(a, d, \text{hidden}) P ( a , d ) = ∑ hidden P ( a , d , hidden ) ,再把联合项按 BN 分解。没有条件竖线,所以最后不归一化。
类型 3:边缘概率。 形如 P ( d ) P(d) P ( d ) ,它是部分联合概率的特例:只保留 d d d ,其余全部求和:P ( d ) = ∑ all other P ( d , others ) P(d) = \sum_{\text{all other}} P(d, \text{others}) P ( d ) = ∑ all other P ( d , others ) 。它经常作为贝叶斯公式的分母,也就是证据概率。
类型 4:普通条件概率。 形如 P ( X ∣ e ) P(X \mid e) P ( X ∣ e ) ,先写 P ( X ∣ e ) = α P ( X , e ) P(X \mid e) = \alpha\, P(X, e) P ( X ∣ e ) = α P ( X , e ) 。若有隐藏变量 Y Y Y :P ( X , e ) = ∑ Y P ( X , e , Y ) P(X, e) = \sum_Y P(X, e, Y) P ( X , e ) = ∑ Y P ( X , e , Y ) ,最后对 X X X 的所有取值归一化:
P ( x ∣ e ) = Q ( x ) ∑ x ′ Q ( x ′ ) , Q ( x ) = ∑ Y P ( x , e , Y ) P(x \mid e) = \frac{Q(x)}{\sum_{x'} Q(x')}, \quad Q(x) = \sum_Y P(x, e, Y)
P ( x ∣ e ) = ∑ x ′ Q ( x ′ ) Q ( x ) , Q ( x ) = Y ∑ P ( x , e , Y )
类型 5:多变量条件概率。 形如 P ( X 1 , X 2 ∣ e ) P(X_1, X_2 \mid e) P ( X 1 , X 2 ∣ e ) ,把 ( X 1 , X 2 ) (X_1, X_2) ( X 1 , X 2 ) 当成一个联合查询变量:P ( X 1 , X 2 ∣ e ) = α P ( X 1 , X 2 , e ) P(X_1, X_2 \mid e) = \alpha\, P(X_1, X_2, e) P ( X 1 , X 2 ∣ e ) = α P ( X 1 , X 2 , e ) 。若有隐藏变量 Y Y Y :Q ( x 1 , x 2 ) = ∑ Y P ( x 1 , x 2 , e , Y ) Q(x_1, x_2) = \sum_Y P(x_1, x_2, e, Y) Q ( x 1 , x 2 ) = ∑ Y P ( x 1 , x 2 , e , Y ) 。归一化时要对查询变量所有组合求和:
P ( x 1 , x 2 ∣ e ) = Q ( x 1 , x 2 ) ∑ x 1 ′ ∑ x 2 ′ Q ( x 1 ′ , x 2 ′ ) P(x_1, x_2 \mid e) = \frac{Q(x_1, x_2)}{\sum_{x'_1} \sum_{x'_2} Q(x'_1, x'_2)}
P ( x 1 , x 2 ∣ e ) = ∑ x 1 ′ ∑ x 2 ′ Q ( x 1 ′ , x 2 ′ ) Q ( x 1 , x 2 )
类型 6:已知完整联合分布时的查询。 如果题目直接给完整联合表,而不是 BN 图,则不用按父节点分解,直接从表中把满足条件的原子事件加起来:P ( φ ) = ∑ ω : ω ⊨ φ P ( ω ) P(\varphi) = \sum_{\omega:\, \omega \models \varphi} P(\omega) P ( φ ) = ∑ ω : ω ⊨ φ P ( ω ) 。条件概率仍然用 P ( φ ∣ e ) = P ( φ ∧ e ) P ( e ) P(\varphi \mid e) = \frac{P(\varphi \land e)}{P(e)} P ( φ ∣ e ) = P ( e ) P ( φ ∧ e ) ,其中分子和分母都从完整联合表中加和得到。
最后检查:
有没出现但网络里存在的变量?有就求和。
有没有条件竖线?有就最后归一化。
是不是完整联合事件?是就直接查 CPT 相乘。
变量取假值了吗?取假值通常要用 1 − p 1 - p 1 − p 。
查询变量有几个取值?每个取值都要算一个未归一化 Q Q Q 。
16. 朴素贝叶斯作为贝叶斯网络
16.1 图结构
朴素贝叶斯是一个单父节点模型:C → X 1 , C → X 2 , … , C → X n C \to X_1,\; C \to X_2,\; \dots,\; C \to X_n C → X 1 , C → X 2 , … , C → X n 。
联合分布:P ( C , X 1 , … , X n ) = P ( C ) ∏ i P ( X i ∣ C ) P(C, X_1, \dots, X_n) = P(C) \prod_i P(X_i \mid C) P ( C , X 1 , … , X n ) = P ( C ) ∏ i P ( X i ∣ C ) 。总参数量随特征数线性增长。
16.2 为什么朴素贝叶斯常常有效
朴素贝叶斯假设很强,因为真实特征往往相关。例如文本中的词并不独立,图像相邻像素也不独立。但它仍常有不错表现,原因包括:
分类只需要比较类别后验大小,不一定需要精确估计完整联合分布。
条件独立假设极大减少参数,降低过拟合风险。
参数估计简单,小数据下也能工作。
对文本分类、垃圾邮件过滤等高维稀疏任务尤其常用。
课件中的 Twenty Newsgroups 例子给每个新闻组 1000 篇训练文档,用朴素贝叶斯学习类别先验和词条件概率,再分类新文档。课件给出的结果是约 89% 的分类准确率,用来说明即使独立性假设明显过强,朴素贝叶斯仍然能在标准文本分类数据上有竞争力。
17. 考试速查
17.1 概率基础
条件概率:P ( A ∣ B ) = P ( A ∧ B ) P ( B ) P(A \mid B) = \dfrac{P(A \land B)}{P(B)} P ( A ∣ B ) = P ( B ) P ( A ∧ B )
乘法规则:P ( A ∧ B ) = P ( A ∣ B ) P ( B ) P(A \land B) = P(A \mid B)P(B) P ( A ∧ B ) = P ( A ∣ B ) P ( B )
链式法则:P ( X 1 , … , X n ) = ∏ i P ( X i ∣ X 1 , … , X i − 1 ) P(X_1, \dots, X_n) = \prod_i P(X_i \mid X_1, \dots, X_{i-1}) P ( X 1 , … , X n ) = ∏ i P ( X i ∣ X 1 , … , X i − 1 )
全概率:P ( A ) = ∑ i P ( A ∣ B i ) P ( B i ) P(A) = \sum_i P(A \mid B_i)P(B_i) P ( A ) = ∑ i P ( A ∣ B i ) P ( B i )
贝叶斯:P ( H ∣ e ) = P ( e ∣ H ) P ( H ) P ( e ) P(H \mid e) = \dfrac{P(e \mid H)P(H)}{P(e)} P ( H ∣ e ) = P ( e ) P ( e ∣ H ) P ( H )
17.2 独立性
独立:A ⊥ B ⟺ P ( A , B ) = P ( A ) P ( B ) A \perp B \iff P(A, B) = P(A)P(B) A ⊥ B ⟺ P ( A , B ) = P ( A ) P ( B )
条件独立:A ⊥ B ∣ C ⟺ P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C ) A \perp B \mid C \iff P(A, B \mid C) = P(A \mid C)P(B \mid C) A ⊥ B ∣ C ⟺ P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C )
条件独立不推出无条件独立,无条件独立也不保证条件独立。
17.3 贝叶斯网络
BN 是 DAG 加 CPT。
全局分解:P ( X 1 , … , X n ) = ∏ i P ( X i ∣ Parents ( X i ) ) P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i)) P ( X 1 , … , X n ) = ∏ i P ( X i ∣ Parents ( X i ) )
局部语义:X i ⊥ NonDescendants ( X i ) ∣ Parents ( X i ) X_i \perp \text{NonDescendants}(X_i) \mid \text{Parents}(X_i) X i ⊥ NonDescendants ( X i ) ∣ Parents ( X i )
参数量:2 n − 1 2^n - 1 2 n − 1 vs. O ( n ⋅ 2 k ) O(n \cdot 2^k) O ( n ⋅ 2 k )
17.4 三种路径结构
链:X → Y → Z , X ⊥ Z ∣ Y X \to Y \to Z,\; X \perp Z \mid Y X → Y → Z , X ⊥ Z ∣ Y
共同原因:X ← Y → Z , X ⊥ Z ∣ Y X \leftarrow Y \to Z,\; X \perp Z \mid Y X ← Y → Z , X ⊥ Z ∣ Y
共同结果:X → Y ← Z , X ⊥ Z X \to Y \leftarrow Z,\; X \perp Z X → Y ← Z , X ⊥ Z ,但 X ⊥̸ Z ∣ Y X \not\perp Z \mid Y X ⊥ Z ∣ Y
记忆:链和 fork 观测中间点会堵住;collider 默认堵住,观测后打开。
17.5 推理
枚举推理:P ( X ∣ e ) = α ∑ Y ∏ i P ( x i ∣ parents ( X i ) ) P(X \mid e) = \alpha \sum_Y \prod_i P(x_i \mid \text{parents}(X_i)) P ( X ∣ e ) = α ∑ Y ∏ i P ( x i ∣ parents ( X i ) )
变量消元:∑ z ∏ j f j ( z , U j ) \sum_z \prod_j f_j(z, U_j) ∑ z ∏ j f j ( z , U j ) ,即"包含 z z z 的因子相乘,再对 z z z 求和"。
复杂度:多树上变量消元可多项式;一般图精确推理 NP-hard,且与 #P 完全问题相关。
17.6 朴素贝叶斯
假设:X i ⊥ X j ∣ C X_i \perp X_j \mid C X i ⊥ X j ∣ C
分类:c ^ = arg max c P ( c ) ∏ i P ( x i ∣ c ) \hat{c} = \arg\max_c P(c) \prod_i P(x_i \mid c) c ^ = arg max c P ( c ) ∏ i P ( x i ∣ c )
对数形式:c ^ = arg max c ( log P ( c ) + ∑ i log P ( x i ∣ c ) ) \hat{c} = \arg\max_c \left(\log P(c) + \sum_i \log P(x_i \mid c)\right) c ^ = arg max c ( log P ( c ) + ∑ i log P ( x i ∣ c ) )
一定记住:朴素贝叶斯是假设"给定类别后特征条件独立",不是假设特征无条件独立。
18. 常见坑
把 P ( A ∣ B ) P(A \mid B) P ( A ∣ B ) 和 P ( B ∣ A ) P(B \mid A) P ( B ∣ A ) 混淆。
贝叶斯题忘记先验 P ( H ) P(H) P ( H ) ,只看似然 P ( e ∣ H ) P(e \mid H) P ( e ∣ H ) 。
分母没有用全概率展开。
把测试准确率当成阳性后患病概率。
把条件独立当成无条件独立。
BN 联合分布没有按父节点写,漏掉条件项。
CPT 中变量为假时忘记用 1 − p 1 - p 1 − p 。
d-separation 中忽略 collider,尤其忘记"观测 collider 会打开路径"。
后验算出未归一化值后忘记除以总和。
有隐藏变量时忘记求和。
变量消元时把所有因子一起乘,失去消元带来的好处。
以为 BN 箭头一定是因果;数学上它编码的是条件独立结构。
19. 最后一页压缩版
概率语言:P ( α ∣ e ) P(\alpha \mid e) P ( α ∣ e )
完整联合分布能回答所有问题:P ( φ ) = ∑ ω : ω ⊨ φ P ( ω ) P(\varphi) = \sum_{\omega:\, \omega \models \varphi} P(\omega) P ( φ ) = ∑ ω : ω ⊨ φ P ( ω ) ,但完整联合分布太大:2 n − 1 2^n - 1 2 n − 1
边缘化:P ( A ) = ∑ b P ( A , b ) P(A) = \sum_b P(A, b) P ( A ) = ∑ b P ( A , b )
条件概率:P ( A ∣ B ) = P ( A , B ) P ( B ) P(A \mid B) = \dfrac{P(A, B)}{P(B)} P ( A ∣ B ) = P ( B ) P ( A , B )
贝叶斯:P ( H ∣ e ) = α P ( e ∣ H ) P ( H ) P(H \mid e) = \alpha\, P(e \mid H)P(H) P ( H ∣ e ) = α P ( e ∣ H ) P ( H )
独立:P ( A , B ) = P ( A ) P ( B ) P(A, B) = P(A)P(B) P ( A , B ) = P ( A ) P ( B )
条件独立:P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C ) P(A, B \mid C) = P(A \mid C)P(B \mid C) P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C )
贝叶斯网络:P ( X 1 , … , X n ) = ∏ i P ( X i ∣ Parents ( X i ) ) P(X_1, \dots, X_n) = \prod_i P(X_i \mid \text{Parents}(X_i)) P ( X 1 , … , X n ) = ∏ i P ( X i ∣ Parents ( X i ) )
枚举推理:P ( X ∣ e ) = α ∑ Y ∏ i P ( x i ∣ parents ( X i ) ) P(X \mid e) = \alpha \sum_Y \prod_i P(x_i \mid \text{parents}(X_i)) P ( X ∣ e ) = α ∑ Y ∏ i P ( x i ∣ parents ( X i ) )
变量消元:收集含隐藏变量的因子 → 相乘 → 对隐藏变量求和 → 归一化
朴素贝叶斯:c ^ = arg max c P ( c ) ∏ i P ( x i ∣ c ) \hat{c} = \arg\max_c P(c) \prod_i P(x_i \mid c) c ^ = arg max c P ( c ) ∏ i P ( x i ∣ 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 / m 1/m 1 / m vs 1 / m 1/\sqrt{m} 1 / m
⭐⭐⭐
决策树 (ID3 / C4.5 / CART)
信息熵、信息增益 / 增益率 / 基尼指数、剪枝
⭐⭐⭐
KNN / 距离度量
欧氏 / Minkowski / Mahalanobis;惰性学习
⭐⭐
线性回归 / 最小二乘
正规方程闭式解 w ∗ = ( X ⊤ X ) − 1 X ⊤ y w^*=(X^\top X)^{-1}X^\top y w ∗ = ( X ⊤ X ) − 1 X ⊤ 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 机器学习定义与三种学习范式 ⭐
ML 是交叉学科 :研究具有学习、推理和行动能力的系统的数学基础与实际应用。
相关术语:模式识别、神经网络、数据挖掘、统计模型……
思想来源:统计学、计算机科学、工程学、应用数学、认知科学、心理学、计算神经学、经济学。
关键要素流程 ⭐
课件 p19-20:
Data (数据集 D = { x 1 , x 2 , . . . , x N } D=\{x_1,x_2,...,x_N\} D = { x 1 , x 2 , . . . , x N } )→ Predictions (基于 D D D 对新点 x N + 1 x_{N+1} x N + 1 进行预测)→ Model (需对数据分布做出假设,这些假设表达为带参数的模型)→ 从数据中学习模型参数 → 预测新数据点。
三种学习范式
智能体经历感知序列 x 1 , x 2 , … x_1,x_2,\dots x 1 , x 2 , … :
范式
英文
反馈
目标
监督学习
Supervised
给定期望输出 y 1 , y 2 , … y_1,y_2,\dots y 1 , y 2 , …
对新输入 x x x 给出正确 y y y
无监督学习
Unsupervised
不给 y y y
构建 x x x 的模型,用于推理/决策/预测/通信
强化学习
Reinforcement
产生动作影响世界,得奖惩 r 1 , r 2 , … r_1,r_2,\dots r 1 , r 2 , …
学习长期最大化累积奖励的策略
学习三要素 (Key Ingredients) ⭐
要素
英文
内容
表示
Representation
确定假设空间 H \mathcal{H} H (决策树、线性函数、神经网络……)
评价
Evaluation
选择损失函数 衡量优劣
优化
Optimization
在假设空间中搜索得分最高的函数
机器学习 ≈ 寻找一个函数 (Looking for a Function) f ∗ f^* f ∗ 。
1.3 PAC 学习:机器学习为什么可能 ⭐
PAC (Probably Approximately Correct) 由 Leslie Valiant 于 1984 年提出,开创了计算学习理论 子领域。
记号
记号
含义
X X X
输入空间 (input space)
Y Y Y
标签集合
c : X → Y c:X\to Y c : X → Y
概念 (concept);C \mathcal{C} C = 概念类
D \mathcal{D} D
固定但未知的分布
H \mathcal{H} H
假设集 (hypothesis set),与 C \mathcal{C} C 可不重合
i.i.d.
样本独立同分布采样自 D \mathcal{D} D
两种误差 ⭐
泛化误差 (generalization error) :R ( h ) = Pr x ∼ D [ h ( x ) ≠ c ( x ) ] R(h)=\Pr_{x\sim\mathcal{D}}[h(x)\neq c(x)] R ( h ) = Pr x ∼ D [ h ( x ) = c ( x ) ]
经验误差 (empirical error) :R ^ S ( h ) = 1 m ∑ i = 1 m 1 [ h ( x i ) ≠ c ( x i ) ] \widehat{R}_S(h)=\dfrac{1}{m}\sum_{i=1}^{m}\mathbf{1}[h(x_i)\neq c(x_i)] R S ( h ) = m 1 ∑ i = 1 m 1 [ h ( x i ) = c ( x i ) ]
关系:E S ∼ D m [ R ^ S ( h ) ] = R ( h ) \mathbb{E}_{S\sim\mathcal{D}^m}[\widehat{R}_S(h)]=R(h) E S ∼ D m [ R S ( h ) ] = R ( h ) (经验误差是泛化误差的无偏估计)。
三个感兴趣的假设 ⭐
课件 p35:
h S h_S h S (训练所得假设)— 算法在训练集 S S S 上选出的假设
h ∗ h^* h ∗ (H \mathcal{H} H 中最优假设)— 假设空间中泛化误差最小的假设
h Bayes h^{\text{Bayes}} h Bayes (贝叶斯最优假设)— 所有可能假设中泛化误差最小的(可能不在 H \mathcal{H} H 中)
三者关系:R ( h Bayes ) ≤ R ( h ∗ ) ≤ R ( h S ) R(h^{\text{Bayes}})\leq R(h^*)\leq R(h_S) R ( h Bayes ) ≤ R ( h ∗ ) ≤ R ( h S ) 。学习的目标是使 h S h_S h S 接近 h Bayes h^{\text{Bayes}} h Bayes 。
PAC 辨识两条件
近似正确 (Approximately Correct) :R ( h ) ≤ ϵ R(h)\le\epsilon R ( h ) ≤ ϵ
可能正确 (Probably Correct) :P ( R ( h ) ≤ ϵ ) ≥ 1 − δ P(R(h)\le\epsilon)\ge 1-\delta P ( R ( h ) ≤ ϵ ) ≥ 1 − δ
所需样本数是关于 1 / ϵ , 1 / δ , n , size ( c ) 1/\epsilon,1/\delta,n,\text{size}(c) 1 / ϵ , 1 / δ , n , size ( c ) 的多项式 。
PAC 可学习定义(课件 p37 原文) ⭐
概念类 C \mathcal{C} C 被称为 PAC 可学习 ,若存在算法 A A A 和多项式函数 poly ( ⋅ ) \text{poly}(\cdot) poly ( ⋅ ) ,使对任意 ϵ > 0 \epsilon>0 ϵ > 0 、δ > 0 \delta>0 δ > 0 、任意分布 D \mathcal{D} D 及任意目标概念 c ∈ C c\in\mathcal{C} c ∈ C ,只要
m ≥ poly ( 1 / ϵ , 1 / δ , n , size ( c ) ) m\ge\text{poly}(1/\epsilon,1/\delta,n,\text{size}(c))
m ≥ poly ( 1 / ϵ , 1 / δ , n , size ( c ) )
就有 P S ∼ D m [ R ( h S ) ≤ ϵ ] ≥ 1 − δ P_{S\sim\mathcal{D}^m}[R(h_S)\le\epsilon]\ge 1-\delta P S ∼ D m [ R ( h S ) ≤ ϵ ] ≥ 1 − δ 。
若 A A A 进一步在 poly ( 1 / ϵ , 1 / δ , n , size ( c ) ) \text{poly}(1/\epsilon,1/\delta,n,\text{size}(c)) poly ( 1 / ϵ , 1 / δ , n , size ( c ) ) 时间内运行,则称高效 PAC 可学 。
Hoeffding 不等式 ⭐
设 X 1 , … , X m X_1,\dots,X_m X 1 , … , X m i.i.d.,X i ∈ [ 0 , 1 ] X_i\in[0,1] X i ∈ [ 0 , 1 ] :
P ( 1 m ∑ X i − 1 m ∑ E [ X i ] ≥ ϵ ) ≤ 2 e − 2 m ϵ 2 P\!\left(\frac{1}{m}\sum X_i-\frac{1}{m}\sum\mathbb{E}[X_i]\ge\epsilon\right)\le 2e^{-2m\epsilon^2}
P ( m 1 ∑ X i − m 1 ∑ E [ X i ] ≥ ϵ ) ≤ 2 e − 2 m ϵ 2
应用于经验/泛化误差,令 δ = 2 e − 2 m ϵ 2 \delta=2e^{-2m\epsilon^2} δ = 2 e − 2 m ϵ 2 ,则对固定 h h h 以至少 1 − δ 1-\delta 1 − δ 概率:
R ( h ) ≤ R ^ S ( h ) + log ( 2 / δ ) 2 m \boxed{\;R(h)\le\widehat{R}_S(h)+\sqrt{\dfrac{\log(2/\delta)}{2m}}\;}
R ( h ) ≤ R S ( h ) + 2 m log ( 2 / δ )
有限假设集学习界
一致情形 (c ∈ H c\in\mathcal{H} c ∈ H ,R ^ S ( h S ) = 0 \widehat{R}_S(h_S)=0 R S ( h S ) = 0 ):
以至少 1 − δ 1-\delta 1 − δ 概率 R ( h S ) ≤ ϵ R(h_S)\le\epsilon R ( h S ) ≤ ϵ ,只要 m ≥ 1 ϵ ( log ∣ H ∣ + log 1 δ ) m\ge\dfrac{1}{\epsilon}\bigl(\log|\mathcal{H}|+\log\tfrac{1}{\delta}\bigr) m ≥ ϵ 1 ( log ∣ H ∣ + log δ 1 ) 。
→ 泛化误差界为 1 m ( log ∣ H ∣ + log 1 δ ) \dfrac{1}{m}\bigl(\log|\mathcal{H}|+\log\tfrac{1}{\delta}\bigr) m 1 ( log ∣ H ∣ + log δ 1 ) ,收敛速率 1 / m 1/m 1 / m 。
不一致情形 (c ∉ H c\notin\mathcal{H} c ∈ / H ,更常见)⭐:
以至少 1 − δ 1-\delta 1 − δ 概率对所有 h ∈ H h\in\mathcal{H} h ∈ H 同时:
R ( h ) ≤ R ^ S ( h ) + log ∣ H ∣ + log ( 2 / δ ) 2 m = O ( log ∣ H ∣ m ) R(h)\le\widehat{R}_S(h)+\sqrt{\dfrac{\log|\mathcal{H}|+\log(2/\delta)}{2m}}=O\!\left(\sqrt{\dfrac{\log|\mathcal{H}|}{m}}\right)
R ( h ) ≤ R S ( h ) + 2 m log ∣ H ∣ + log ( 2 / δ ) = O ( m log ∣ H ∣ )
→ 收敛速率 1 / m 1/\sqrt{m} 1 / m ,比一致情形的 1 / m 1/m 1 / m 慢;要达到相同保证需平方量级 更多样本。
奥卡姆剃刀 (Occam’s Razor) ⭐
如无必要,勿增实体——最简单的解释是最好的。
假设集 ∣ H ∣ |\mathcal{H}| ∣ H ∣ 越小(模型越简单),泛化误差界越紧,越倾向选简单模型。(对于无限假设集,需引入 VC 维 ,本课未展开。)
第二部分:监督学习 (lec12_2)
2.1 监督学习定义
输入空间 X X X 、输出/标签空间 Y Y Y 、未知真实函数 f : X → Y f:X\to Y f : X → Y 。
训练样本 { ( x i , y i ) } i = 1 N \{(x_i,y_i)\}_{i=1}^{N} { ( x i , y i ) } i = 1 N ,目标学 h ≈ f h\approx f h ≈ f 。
分类 (Classification) :Y Y Y 有限离散;回归 (Regression) :Y Y Y 连续。
ML 范式:选模型类 → 模型选择(交叉验证) → 训练 → 测试 (课件 p86)。
2.2 决策树 (Decision Trees) ⭐
课件以 “是否在餐厅等位” 为例:属性含 Alternate/Bar/FriSat/Hungry/Patrons/Price/Raining/Reservation/Type/WaitEstimate
表达能力与假设空间
决策树可表达输入属性的任意函数 (真值表每行 = 一条到叶路径)。
n n n 个布尔属性的不同布尔函数数 = 决策树数:trees = 2 2 n \text{trees}=2^{2^n} trees = 2 2 n 。例:6 个布尔属性 → 约 1.84 × 1 0 19 1.84\times10^{19} 1 . 8 4 × 1 0 1 9 棵树。
学习最小(最简单)决策树是 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 = 1 k P ( Y = y i ) log 2 P ( Y = y i ) H(Y)=-\sum_{i=1}^{k}P(Y=y_i)\log_2 P(Y=y_i)
H ( Y ) = − i = 1 ∑ k P ( Y = y i ) log 2 P ( Y = y i )
含 p p p 正例、n n n 负例的训练集:I ( p p + n , n p + n ) = − p p + n log 2 p p + n − n p + n log 2 n p + n I\!\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} I ( p + n p , p + n n ) = − p + n p log 2 p + n p − p + n n log 2 p + n n 。
条件熵 :
H ( Y ∣ X ) = − ∑ j P ( X = x j ) ∑ i P ( Y = y i ∣ X = x j ) log 2 P ( Y = y i ∣ X = x j ) 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 ∣ X ) = − j ∑ P ( X = x j ) i ∑ P ( Y = y i ∣ X = x j ) log 2 P ( Y = y i ∣ X = x j )
信息论解释:H ( Y ) H(Y) H ( Y ) 是编码随机值 Y Y Y 所需的期望比特数(最优编码下)。
I G ( A ) = H ( Y ) − H ( Y ∣ X ) = I ( p p + n , n p + n ) − ∑ i = 1 v p i + n i p + n I ( p i p i + n i , n i p i + n i ) ⏟ 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)}
I G ( A ) = H ( Y ) − H ( Y ∣ X ) = I ( p + n p , p + n n ) − remainder ( A ) i = 1 ∑ v p + n p i + n i I ( p i + n i p i , p i + n i n i )
选信息增益最大的属性:arg max i I G ( X i ) = arg max i [ H ( Y ) − H ( Y ∣ X i ) ] \arg\max_i IG(X_i)=\arg\max_i[H(Y)-H(Y\mid X_i)] arg max i I G ( X i ) = arg max i [ H ( Y ) − H ( Y ∣ X i ) ] 。
示例(等位数据集) :p = n = 6 p=n=6 p = n = 6 ,I ( 6 / 12 , 6 / 12 ) = 1 I(6/12,6/12)=1 I ( 6 / 1 2 , 6 / 1 2 ) = 1 。I G ( Patrons ) = 0.541 IG(\text{Patrons})=0.541 I G ( Patrons ) = 0 . 5 4 1 bits,I G ( Type ) = 0 IG(\text{Type})=0 I G ( Type ) = 0 bits → Patrons 为根节点。
ID3 vs C4.5 vs CART ⭐
算法
分裂准则
说明
ID3
信息增益 I G IG I G
偏向取值多的属性
C4.5
信息增益率 I G ratio = I G ( Y , X ) H X ( Y ) IG_{\text{ratio}}=\dfrac{IG(Y,X)}{H_X(Y)} I G ratio = H X ( Y ) I G ( Y , X )
深度优先,缓解偏向问题
CART
二叉树,回归用平方误差/分类用基尼指数 Gini = 1 − ∑ i p i 2 \text{Gini}=1-\sum_i p_i^2 Gini = 1 − ∑ i p i 2
二叉树结构
过拟合与剪枝
标准决策树无学习偏置 ,训练集误差恒 0、方差大 ⇒ 必须引入偏好更简单树的 bias。
避免过拟合策略:
固定深度、每叶最少样本数
获取更多训练数据
去除无关属性
分裂不再统计显著时停止
后剪枝 (post-prune)
Reduced-Error Pruning ⭐
将训练数据再分为训练集 + 验证集
训练集上长完满树
重复直到有害:
评估剪去每个节点(及子树)对验证集 准确率的影响
贪心剪掉使验证集准确率提升最多 的节点,用单叶替换整棵子树
剪枝用验证集准确率来评估叶子是否比原子树更好(课件 p27-28)。
决策树优缺点
优点
缺点
构建开销低、分类极快
容易过拟合
小树可解释性强
需要剪枝
简单数据集上准确率可比肩其他方法
决策边界轴对齐
2.3 K 近邻 (KNN)
向量空间表示(课件 p34-37)
以文本分类为例:每篇文档是高维向量,每个词是一个维度(可能 10,000+ 维)。文档在向量空间中的位置反映了其语义内容。
关键要素与算法
四要素 :距离度量、k k k 值、加权函数(可选)、如何利用局部点。
测试:计算 x x x 与所有训练样本相似度,归为 k k k 个最近样本中多数类。
非参数方法 / 惰性学习 (Instance-based / Lazy learning) :几乎不"学习",只存储训练样本。
KNN 回归 :取 k k k 近邻的均值(课件 p66)。
⭐ 距离度量
课件 p39-42 给出了方差、标准差、协方差、相关系数、协方差矩阵的完整定义,为马氏距离铺垫。
度量
公式
说明
欧氏 (Euclidean)
∑ i ( x i − x i ′ ) 2 \sqrt{\sum_i(x_i-x_i')^2} ∑ i ( x i − x i ′ ) 2
最常用
标准化欧氏
∑ i ( x i − x i ′ ) 2 σ i 2 \sqrt{\sum_i\tfrac{(x_i-x_i')^2}{\sigma_i^2}} ∑ i σ i 2 ( x i − x i ′ ) 2
消除量纲影响
Minkowski L p L_p L p
( ∑ i ∣ x i − x i ′ ∣ p ) 1 / p \left(\sum_i\lvert x_i-x_i'\rvert^p\right)^{1/p} ( ∑ i ∣ x i − x i ′ ∣ p ) 1 / p
L 1 L_1 L 1 曼哈顿、L 2 L_2 L 2 欧氏、L ∞ L_\infty L ∞ 切比雪夫
Hamming
不同属性数
布尔/离散数据
马氏 (Mahalanobis)
( x − x ′ ) ⊤ Σ − 1 ( x − x ′ ) \sqrt{(x-x')^\top\Sigma^{-1}(x-x')} ( x − x ′ ) ⊤ Σ − 1 ( x − x ′ )
Σ \Sigma Σ 为协方差矩阵;单位阵⇒欧氏,对角阵⇒标准化欧氏
统计学铺垫(课件 p41-42)
方差/标准差 :σ 2 = E [ ( X − μ ) 2 ] \sigma^2=\mathbb{E}[(X-\mu)^2] σ 2 = E [ ( X − μ ) 2 ] ,σ \sigma σ 为标准化欧氏的分母
协方差 :cov ( X , Y ) = E [ ( X − μ X ) ( Y − μ Y ) ] = E [ X ⋅ Y ] − μ X μ Y \text{cov}(X,Y)=\mathbb{E}[(X-\mu_X)(Y-\mu_Y)]=\mathbb{E}[X\cdot Y]-\mu_X\mu_Y cov ( X , Y ) = E [ ( X − μ X ) ( Y − μ Y ) ] = E [ X ⋅ Y ] − μ X μ Y
相关系数 :ρ = cov ( X , Y ) var ( X ) ⋅ var ( Y ) \rho=\dfrac{\text{cov}(X,Y)}{\sqrt{\text{var}(X)\cdot\text{var}(Y)}} ρ = var ( X ) ⋅ var ( Y ) cov ( X , Y ) ,值域 [ − 1 , 1 ] [-1,1] [ − 1 , 1 ]
协方差矩阵 :对 n n n 维向量 X X X ,Σ i , j = cov ( X i , X j ) \Sigma_{i,j}=\text{cov}(X_i,X_j) Σ i , j = cov ( X i , X j ) ,对称矩阵
KNN 优缺点
优点
缺点
简单强大、灵活、非参数
内存需求高
易于应用于各类问题
对尺度敏感
需要高效近邻搜索算法
2.4 线性回归 / 最小二乘
线性分类器与替代损失
y ^ = h ( x ) = sign ( w ⊤ x + b ) \hat y=h(x)=\text{sign}(w^\top x+b)
y ^ = h ( x ) = sign ( w ⊤ x + b )
0/1 损失 { 0 , h ( x ) = y 1 , h ( x ) ≠ y \begin{cases}0,&h(x)=y\\1,&h(x)\neq y\end{cases} { 0 , 1 , h ( x ) = y h ( x ) = y 非凸非连续 → 替换为:
替代损失
公式
L 2 L_2 L 2
( y − w ⊤ x − b ) 2 = ( 1 − y ( w ⊤ x + b ) ) 2 (y-w^\top x-b)^2 = (1-y(w^\top x+b))^2 ( y − w ⊤ x − b ) 2 = ( 1 − y ( w ⊤ x + b ) ) 2
L 1 L_1 L 1
∣ y − w ⊤ x − b ∣ = ∣ 1 − y ( w ⊤ x + b ) ∣ \lvert y-w^\top x-b\rvert = \lvert 1-y(w^\top x+b)\rvert ∣ y − w ⊤ x − b ∣ = ∣ 1 − y ( w ⊤ x + b ) ∣
Hinge
max ( 0 , 1 − y ( w ⊤ x + b ) ) \max(0,1-y(w^\top x+b)) max ( 0 , 1 − y ( w ⊤ x + b ) ) (SVM 用)
替代损失对比图见
⭐ 最小二乘 / 正规方程闭式解
矩阵形式 X ∈ R N × ( d + 1 ) X\in\mathbb{R}^{N\times(d+1)} X ∈ R N × ( d + 1 ) (首列补 1)、w = [ b , w 1 , … , w d ] ⊤ w=[b,w_1,\dots,w_d]^\top w = [ b , w 1 , … , w d ] ⊤ :
Loss = min w ( X w − y ) ⊤ ( X w − y ) \text{Loss}=\min_w (Xw-y)^\top(Xw-y)
Loss = w min ( X w − y ) ⊤ ( X w − y )
对 w w w 求导置零(矩阵求导公式 d d x ( A x + b ) ⊤ ( A x + b ) = 2 ( A x + b ) ⊤ A \frac{d}{dx}(Ax+b)^\top(Ax+b)=2(Ax+b)^\top A d x d ( A x + b ) ⊤ ( A x + b ) = 2 ( A x + b ) ⊤ A ):
w ∗ = ( X ⊤ X ) − 1 X ⊤ y ( X ⊤ X 满秩 ) \boxed{\;w^*=(X^\top X)^{-1}X^\top y\;}\qquad(X^\top X\text{ 满秩})
w ∗ = ( X ⊤ X ) − 1 X ⊤ y ( X ⊤ X 满秩 )
Moore-Penrose 伪逆 :X + = ( X ⊤ X ) − 1 X ⊤ X^+=(X^\top X)^{-1}X^\top X + = ( X ⊤ X ) − 1 X ⊤ 。
预测:y ^ = sign ( y ⊤ X ( X ⊤ X ) − 1 [ 1 , x 0 ⊤ ] ⊤ ) \hat y=\text{sign}\left(y^\top X(X^\top X)^{-1}[1,x_0^\top]^\top\right) y ^ = sign ( y ⊤ X ( X ⊤ X ) − 1 [ 1 , x 0 ⊤ ] ⊤ ) 。
一元回归闭式解
w = ∑ y i ( x i − x ˉ ) ∑ x i 2 − 1 m ( ∑ x i ) 2 , b = 1 m ∑ ( y i − w x i ) 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)
w = ∑ x i 2 − m 1 ( ∑ x i ) 2 ∑ y i ( x i − x ˉ ) , b = m 1 ∑ ( y i − w x i )
导出:先后对 w w w 、b b b 求偏导置零求解。
广义线性模型 ⭐
引入基函数 ϕ j ( x ) \phi_j(x) ϕ j ( x ) :f ( x , w ) = b + ∑ j w j ϕ j ( x ) f(x,w)=b+\sum_j w_j\phi_j(x) f ( x , w ) = b + ∑ j w j ϕ j ( x ) 。ϕ j \phi_j ϕ j 可为多项式、高斯基、sigmoid 等非线性函数。
2.5 Logistic 回归 (Logistic Regression) ⭐
名称误导:本质是分类技术,不是回归 。西瓜书称"对数几率回归"。
从概率到对数几率
z = ln p 1 − p (logit/log odds function) z=\ln\frac{p}{1-p}\quad\text{(logit/log odds function)}
z = ln 1 − p p (logit/log odds function)
反推:p = 1 1 + e − z = σ ( z ) p=\dfrac{1}{1+e^{-z}}=\sigma(z) p = 1 + e − z 1 = σ ( z ) 。
Standard Logistic Function(课件 p92)
f ( x ) = L 1 + e − k ( x − x 0 ) f(x)=\frac{L}{1+e^{-k(x-x_0)}}
f ( x ) = 1 + e − k ( x − x 0 ) L
x 0 x_0 x 0 :sigmoid 中点(水平平移)
L L L :曲线最大值(垂直缩放)
k k k :陡峭程度
标准形式(L = 1 , k = 1 , x 0 = 0 L=1,k=1,x_0=0 L = 1 , k = 1 , x 0 = 0 ):
σ ( x ) = 1 1 + e − x \boxed{\;\sigma(x)=\dfrac{1}{1+e^{-x}}\;}
σ ( x ) = 1 + e − x 1
模型
y = σ ( w ⊤ x + b ) ⟺ ln y 1 − y = w ⊤ x + b y=\sigma(w^\top x+b)\;\Longleftrightarrow\;\ln\dfrac{y}{1-y}=w^\top x+b
y = σ ( w ⊤ x + b ) ⟺ ln 1 − y y = w ⊤ x + b
⭐ Logistic 回归用线性模型预测结果逼近真实标记的对数几率。
对数几率 (log odds) 特别适合处理微小概率场景(如计算生物学中的多序列比对)。
⭐ 极大似然 → 交叉熵损失
视 y = P ( y = 1 ∣ x ) y=P(y=1\mid x) y = P ( y = 1 ∣ x ) :
P ( y = 1 ∣ x ) = e w ⊤ x + b 1 + e w ⊤ x + b , P ( y = 0 ∣ x ) = 1 1 + e w ⊤ x + b P(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}}
P ( y = 1 ∣ x ) = 1 + e w ⊤ x + b e w ⊤ x + b , P ( y = 0 ∣ x ) = 1 + e w ⊤ x + b 1
最大化对数似然 L ( w , b ) = ∑ i ln P ( y i ∣ x i ; w , b ) L(w,b)=\sum_i\ln P(y_i\mid x_i;w,b) L ( w , b ) = ∑ i ln P ( y i ∣ x i ; w , b ) ,等价于最小化:
E ( w , b ) = − ∑ i = 1 m [ y i ln σ ( w ⊤ x i + b ) + ( 1 − y i ) ln ( 1 − σ ( w ⊤ x i + 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]\;}
E ( w , b ) = − i = 1 ∑ m [ y i ln σ ( w ⊤ x i + b ) + ( 1 − y i ) ln ( 1 − σ ( w ⊤ x i + b ) ) ]
即二元交叉熵 (Binary Cross-Entropy) :
H ( p , q ) = − ∑ x ∈ X p ( x ) ln q ( x ) H(p,q)=-\sum_{x\in X}p(x)\ln q(x)
H ( p , q ) = − x ∈ X ∑ p ( x ) ln q ( x )
损失是凸的 (convex) 。
⭐ 梯度下降更新
由 σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z)=\sigma(z)(1-\sigma(z)) σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) :
推导:∂ ∂ z 1 1 + e − z = − 1 ( 1 + e − z ) 2 ⋅ ( − e − z ) = σ ( z ) 2 ⋅ 1 − σ ( z ) σ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \frac{\partial}{\partial z}\frac{1}{1+e^{-z}}=-\frac{1}{(1+e^{-z})^2}\cdot(-e^{-z})=\sigma(z)^2\cdot\frac{1-\sigma(z)}{\sigma(z)}=\sigma(z)(1-\sigma(z)) ∂ z ∂ 1 + e − z 1 = − ( 1 + e − z ) 2 1 ⋅ ( − e − z ) = σ ( z ) 2 ⋅ σ ( z ) 1 − σ ( z ) = σ ( z ) ( 1 − σ ( z ) )
∂ L C E ∂ w = ( σ ( w ⊤ x i + b ) − y i ) x i ⇒ w ← w − η ( σ ( w ⊤ x i + b ) − y i ) x i \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\;}
∂ w ∂ L C E = ( σ ( w ⊤ x i + b ) − y i ) x i ⇒ w ← w − η ( σ ( w ⊤ x i + b ) − y i ) x i
b b b 同理:b ← b − η ( σ ( w ⊤ x i + b ) − y i ) b\leftarrow b-\eta(\sigma(w^\top x_i+b)-y_i) b ← b − η ( σ ( w ⊤ x i + b ) − y i ) 。
SGD :每次用一个或小批量样本更新。
优缺点
优点
缺点
概率化输出、自然概率视角
线性决策边界
易扩多类 (multinomial regression)
抗过拟合、训练快、分类极快
系数可解释为特征重要性
2.6 过拟合 / 正则化 / 交叉验证 / 偏差-方差
模型复杂度与过拟合(课件 p71-76 曲线拟合示例)
从 1 阶到高次多项式逐步过拟合的演示:模型越复杂,训练误差越低但测试误差先降后升 → 需要奥卡姆剃刀,选择同时最大化一致性和简洁性的模型。
⭐ 正则化 (Regularization)
w ∗ = arg min w [ Loss + λ ⋅ penalty ( w ) ] w^*=\arg\min_w\bigl[\text{Loss}+\lambda\cdot\text{penalty}(w)\bigr]
w ∗ = arg w min [ Loss + λ ⋅ penalty ( w ) ]
正则化
形式
作用
L2 (Ridge)
Loss + λ ∥ w ∥ 2 2 \text{Loss}+\lambda\lVert w\rVert_2^2 Loss + λ ∥ w ∥ 2 2
均匀缩小权重、改善数值稳定性
L1 (Lasso)
$\text{Loss}+\lambda
w
两者都是凸正则化。
L2 正则化最小二乘闭式解 ⭐
min w ( X w − y ) 2 + λ ∥ w ∥ 2 ⇒ w ^ = ( X ⊤ X + λ I ) − 1 X ⊤ y \min_w (Xw-y)^2+\lambda\|w\|^2\quad\Rightarrow\quad\hat{w}=(X^\top X+\lambda I)^{-1}X^\top y
w min ( X w − y ) 2 + λ ∥ w ∥ 2 ⇒ w ^ = ( X ⊤ X + λ I ) − 1 X ⊤ y
课件 p77:L2 使所有权重趋近 0 但不为零;L1 产生稀疏解。
⭐ 交叉验证 (Cross-Validation)
直觉:过拟合的模型对数据扰动敏感——移除部分数据会显著改变拟合结果。因此可留出数据来检测过拟合。
方法
说明
留出法 (Hold-out)
划分训练/测试集
随机子抽样 (Random Subsampling)
多次随机划分取平均
k 折交叉验证
数据分 k k k 等份,每次用第 j j j 份测试其余训练,循环 k k k 次取平均
留一法 (LOO)
k = N k=N k = N 特例
⭐ 偏差-方差分解 (Bias-Variance Decomposition)
E [ ( y − f ^ ( x ) ) 2 ] = ( E [ f ^ ( x ) ] − y ) 2 ⏟ Bias 2 + 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{噪声}}
E [ ( y − f ^ ( x ) ) 2 ] = Bias 2 ( E [ f ^ ( x ) ] − y ) 2 + Variance E [ ( f ^ ( x ) − E [ f ^ ( x ) ] ) 2 ] + 噪声 σ 2
分量
含义
Bias²(偏差平方)
模型拟合能力,高偏差对应欠拟合
Variance(方差)
对数据扰动的敏感度,高方差对应过拟合
σ²(噪声)
不可约误差
总误差随复杂度呈 U 形,需权衡。图解见
集成学习(课件给出)
随机森林 (Random Forest) :Bagging (有放回采样 N N N 个样本集)→ 训练 N N N 棵决策树 → 投票 决定结果,降低方差、缓解过拟合。
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 ξ 、惩罚参数 C C C
⭐⭐⭐
核技巧与非线性 SVM
特征映射、RBF 核、Mercer 定理
⭐⭐⭐
SVM vs Logistic 回归
损失函数、概率输出、稀疏性对比
⭐⭐⭐
K-means 聚类
失真度量、交替最小化、收敛性证明
⭐⭐⭐
PCA 降维
协方差特征分解、最大方差=最小重构误差
⭐⭐⭐
维数灾难
超球/超立方体积比、样本需求指数增长
⭐⭐
GMM / EM 算法(补充)
隐变量、E 步/M 步、Q 函数
⭐⭐
第一部分:支持向量机 (SVM, lec12_3) ⭐
1.1 线性分类与间隔
问题:哪个线性分隔面最优?
判别函数 y ^ ( x ) = w ⊤ x + b \hat y(x)=w^\top x+b y ^ ( x ) = w ⊤ x + b ,决策 y ^ > 0 \hat y>0 y ^ > 0 → 正类、< 0 <0 < 0 → 负类。(课件 p7 图示:多条直线都能分隔,但间隔不同。)
范数定义(课件 p8)
范数
公式
L 1 L_1 L 1
$|\vec{x}|1 := \sum {i=1}^n
L 2 L_2 L 2
∣ x ⃗ ∣ 2 : = ∑ i = 1 n x i 2 |\vec{x}|_2 := \sqrt{\sum_{i=1}^n x_i^2} ∣ x ∣ 2 : = ∑ i = 1 n x i 2
L p L_p L p
$|\vec{x}|p := (\sum {i=1}^n
L ∞ L_\infty L ∞
$|\vec{x}|_\infty := \max_i
点到超平面的距离推导 ⭐
设超平面 S : w ⊤ x + b = 0 S: w^\top x+b=0 S : w ⊤ x + b = 0 ,点 x 0 x_0 x 0 。从 x 0 x_0 x 0 向 S S S 作垂线,垂足为 x 1 x_1 x 1 (w ⊤ x 1 + b = 0 w^\top x_1+b=0 w ⊤ x 1 + b = 0 )。
向量 x 0 x 1 → \overrightarrow{x_0x_1} x 0 x 1 与法向量 w w w 平行 ⇒ x 0 x 1 → \overrightarrow{x_0x_1} x 0 x 1 可分解为 w w w 方向的投影
点积:∣ w ⋅ x 0 x 1 → ∣ = ∥ w ∥ ∥ x 0 x 1 → ∥ = ∥ w ∥ ⋅ d |w\cdot\overrightarrow{x_0x_1}|=\|w\|\|\overrightarrow{x_0x_1}\|=\|w\|\cdot d ∣ w ⋅ x 0 x 1 ∣ = ∥ w ∥ ∥ x 0 x 1 ∥ = ∥ w ∥ ⋅ d
同时:w ⋅ x 0 x 1 → = w ⊤ x 0 − w ⊤ x 1 = w ⊤ x 0 − ( − b ) = w ⊤ x 0 + b w\cdot\overrightarrow{x_0x_1}=w^\top x_0-w^\top x_1=w^\top x_0-(-b)=w^\top x_0+b w ⋅ x 0 x 1 = w ⊤ x 0 − w ⊤ x 1 = w ⊤ x 0 − ( − b ) = w ⊤ x 0 + b
d = ∣ w ⊤ x 0 + b ∣ ∥ w ∥ d=\dfrac{|w^\top x_0+b|}{\|w\|}
d = ∥ w ∥ ∣ w ⊤ x 0 + b ∣
⭐ 缩放不变性
w → a w , b → a b w\to aw,\; b\to ab w → a w , b → a b 不改超平面 ⇒ 可规范化:对支持向量令 ∣ w ⊤ x s + b ∣ = 1 |w^\top x_s+b|=1 ∣ w ⊤ x s + b ∣ = 1 ,则间隔 m = 2 ∥ w ∥ m=\dfrac{2}{\|w\|} m = ∥ w ∥ 2 。
支持向量 (Support Vectors) :距超平面最近的训练样本。分类间隔 (Margin) :两侧支持向量到超平面距离之和 m = 2 ∥ w ∥ m=\dfrac{2}{\|w\|} m = ∥ w ∥ 2 。
1.2 硬间隔 SVM 原始问题 ⭐
由 m = 2 ∥ w ∥ m=\frac{2}{\|w\|} m = ∥ w ∥ 2 ,最大化间隔 ≡ 最小化 ∥ w ∥ \|w\| ∥ w ∥ :
min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w ⊤ x i + 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\;}
w , b min 2 1 ∥ w ∥ 2 s.t. y i ( w ⊤ x i + b ) ≥ 1 , ∀ i
(二次规划 QP,Q ⪰ 0 Q\succeq 0 Q ⪰ 0 凸 ⇒ 全局最优。课件 p15-16:可直接用商业 QP 求解器。)
1.3 拉格朗日对偶推导 ⭐
拉格朗日乘子法回顾(课件 p17-18)
等式约束 min f ( x ) \min f(x) min f ( x ) s.t. h ( x ) = 0 h(x)=0 h ( x ) = 0 → min f ( x ) + λ h ( x ) \min f(x)+\lambda h(x) min f ( x ) + λ h ( x )
不等式约束 min f ( x ) \min f(x) min f ( x ) s.t. g ( x ) ≤ 0 g(x)\le 0 g ( x ) ≤ 0 → min x max λ ≥ 0 f ( x ) + λ g ( x ) \min_x\max_{\lambda\ge 0} f(x)+\lambda g(x) min x max λ ≥ 0 f ( x ) + λ g ( x )
原始问题到对偶问题
拉格朗日函数:
L ( w , b , α ) = 1 2 w ⊤ w − ∑ i = 1 n α i [ y i ( w ⊤ x i + b ) − 1 ] , α i ≥ 0 L(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
L ( w , b , α ) = 2 1 w ⊤ w − i = 1 ∑ n α i [ y i ( w ⊤ x i + b ) − 1 ] , α i ≥ 0
原始问题:min w , b max α ≥ 0 L ( w , b , α ) \min_{w,b}\max_{\alpha\ge 0}L(w,b,\alpha) min w , b max α ≥ 0 L ( w , b , α ) 。
对偶问题 :max α ≥ 0 min w , b L ( w , b , α ) \max_{\alpha\ge 0}\min_{w,b}L(w,b,\alpha) max α ≥ 0 min w , b L ( w , b , α ) 。
课件 p19:由于 f ( x ) f(x) f ( x ) 凸 + 约束线性(满足 Slater 条件)⇒ 强对偶性 成立:对偶最优 = 原始最优。
对 w , b w,b w , b 求偏导置零
∂ L ∂ w = w − ∑ i α i y i x i = 0 ⇒ w = ∑ i = 1 n α i y i x i \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
∂ w ∂ L = w − i ∑ α i y i x i = 0 ⇒ w = i = 1 ∑ n α i y i x i
∂ L ∂ b = − ∑ i α i y i = 0 ⇒ ∑ i = 1 n α i y i = 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
∂ b ∂ L = − i ∑ α i y i = 0 ⇒ i = 1 ∑ n α i y i = 0
回代消去 w , b w,b w , b ,得对偶目标 :
max α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i ⊤ x j s.t. α i ≥ 0 , ∑ i α i y i = 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\;}
α max i = 1 ∑ n α i − 2 1 i , j = 1 ∑ n α i α j y i y j x i ⊤ x j s.t. α i ≥ 0 , i ∑ α i y i = 0
KKT 条件(课件 p18)⭐
条件
公式
原始可行性
g ( x ∗ ) ≤ 0 g(x^*)\le 0 g ( x ∗ ) ≤ 0
对偶可行性
λ ≥ 0 \lambda\ge 0 λ ≥ 0
互补松弛性
λ g ( x ∗ ) = 0 \lambda g(x^*)=0 λ g ( x ∗ ) = 0
平稳性
∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 \nabla f(x^*)+\lambda\nabla g(x^*)=0 ∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0
⚠️ 最优解必满足 KKT;若强对偶成立,KKT 也充分。
对偶推导的三大收益 ⭐
w = ∑ i α i y i x i w=\sum_i\alpha_i y_i x_i w = ∑ i α i y i x i :w w w 仅为训练样本的加权组合
b = y i − w ⊤ x i b=y_i-w^\top x_i b = y i − w ⊤ x i (任取 α i ≠ 0 \alpha_i\neq 0 α i = 0 );
数据只以内积 x i ⊤ x j x_i^\top x_j x i ⊤ x j 形式出现 ⇒ 引出核技巧
稀疏性
严格在间隔外正确分类的样本 ⇒ α i ∗ = 0 \alpha_i^*=0 α i ∗ = 0 (互补松弛:y i ( w ⊤ x i + b ) > 1 y_i(w^\top x_i+b)>1 y i ( w ⊤ x i + b ) > 1 ⇒ α i = 0 \alpha_i=0 α i = 0 )
只有少量 α i ≠ 0 \alpha_i\neq 0 α i = 0 → 支持向量
决策函数 :y ^ = sign ( ∑ i ∈ S V α i y i x i ⊤ x ′ + b ) \hat y=\text{sign}\!\left(\sum_{i\in SV}\alpha_i y_i\,x_i^\top x'+b\right) y ^ = sign ( ∑ i ∈ S V α i y i x i ⊤ x ′ + b ) 。
课件 p27-29:w w w 不必显式构造,仅由支持向量决定 → 稀疏表示 / 数据压缩 。
1.4 软间隔 SVM ⭐
引入松弛变量
若训练集不线性可分,引入 ξ i ≥ 0 \xi_i\ge 0 ξ i ≥ 0 允许误分类:
min w , b 1 2 w ⊤ w + C ∑ i ξ i s.t. y i ( w ⊤ x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 \min_{w,b}\ \frac{1}{2}w^\top w+C\sum_i\xi_i\quad\text{s.t.}\quad y_i(w^\top x_i+b)\ge 1-\xi_i,\ \xi_i\ge 0
w , b min 2 1 w ⊤ w + C i ∑ ξ i s.t. y i ( w ⊤ x i + b ) ≥ 1 − ξ i , ξ i ≥ 0
参数
作用
ξ i \xi_i ξ i
松弛变量:ξ i = 0 \xi_i=0 ξ i = 0 无误差;0 < ξ i ≤ 1 0<\xi_i\le1 0 < ξ i ≤ 1 在间隔内;ξ i > 1 \xi_i>1 ξ i > 1 误分类
C C C
惩罚参数,C C C 大 ⇒ 接近硬间隔;C C C 小 ⇒ 间隔更宽、容忍更多误分
对偶问题(唯一变化:α i ≤ C \alpha_i\le C α i ≤ C )
max α ∑ α i − 1 2 ∑ α i α j y i y j x i ⊤ x j s.t. 0 ≤ α i ≤ C , ∑ α i y i = 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
α max ∑ α i − 2 1 ∑ α i α j y i y j x i ⊤ x j s.t. 0 ≤ α i ≤ C , ∑ α i y i = 0
支持向量分类(课件 p32)
α i \alpha_i α i 范围
含义
α i = 0 \alpha_i=0 α i = 0
非支持向量,间隔外正确分类
0 < α i < C 0<\alpha_i<C 0 < α i < C
支持向量,恰在间隔边界 ,ξ i = 0 \xi_i=0 ξ i = 0
α i = C \alpha_i=C α i = C
支持向量,在间隔内或误分类,ξ i > 0 \xi_i>0 ξ i > 0
⭐ Hinge Loss(合页损失)
ξ i = max ( 0 , 1 − y i ( w ⊤ x i + b ) ) = [ 1 − y i ( w ⊤ x i + 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]_{+}
ξ i = max ( 0 , 1 − y i ( w ⊤ x i + b ) ) = [ 1 − y i ( w ⊤ x i + b ) ] +
课件 p34:软间隔 SVM 目标 = 1 2 w ⊤ w + C ∑ i hinge i =\frac{1}{2}w^\top w+C\sum_i\text{hinge}_i = 2 1 w ⊤ w + C ∑ i hinge i = 正则项 + hinge loss (等价于 min w , b 1 2 C w ⊤ w + ∑ i hinge i \min_{w,b}\frac{1}{2C}w^\top w+\sum_i\text{hinge}_i min w , b 2 C 1 w ⊤ w + ∑ i hinge i )。
替代损失函数对比图见
1.5 非线性 SVM 与核技巧 ⭐
特征映射
若数据在原始空间非线性可分 → 映射 ϕ ( ⋅ ) \phi(\cdot) ϕ ( ⋅ ) 到更高维空间使其线性可分。
⭐ 核技巧 (Kernel Trick)
由于数据只以内积出现(对偶目标中的 x i ⊤ x j x_i^\top x_j x i ⊤ x j 、决策函数中的 x i ⊤ x ′ x_i^\top x' x i ⊤ x ′ ),定义:
K ( x i , x j ) = ϕ ( x i ) ⊤ ϕ ( x j ) K(x_i,x_j)=\phi(x_i)^\top\phi(x_j)
K ( x i , x j ) = ϕ ( x i ) ⊤ ϕ ( x j )
无需显式计算 ϕ \phi ϕ ,只需计算核函数。
示例 (课件 p39):
ϕ ( [ x 1 , x 2 ] ) = [ 1 , 2 x 1 , 2 x 2 , x 1 2 , x 2 2 , 2 x 1 x 2 ] ⊤ \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
ϕ ( [ x 1 , x 2 ] ) = [ 1 , 2 x 1 , 2 x 2 , x 1 2 , x 2 2 , 2 x 1 x 2 ] ⊤
K ( x , x ′ ) = ( 1 + x ⊤ x ′ ) 2 K(x,x')=(1+x^\top x')^2
K ( x , x ′ ) = ( 1 + x ⊤ x ′ ) 2
常用核 ⭐
核
K ( x i , x j ) K(x_i,x_j) K ( x i , x j )
说明
线性
x i ⊤ x j x_i^\top x_j x i ⊤ x j
ϕ ( x ) = x \phi(x)=x ϕ ( x ) = x ,原始空间
多项式
( 1 + x i ⊤ x j ) p (1+x_i^\top x_j)^p ( 1 + x i ⊤ x j ) p
p p p 次多项式
高斯 RBF
exp ( − ∥ x i − x j ∥ 2 σ 2 ) \exp\!\left(-\dfrac{\lVert x_i-x_j\rVert^2}{\sigma^2}\right) exp ( − σ 2 ∥ x i − x j ∥ 2 )
对应无限维 映射(课件 p40)
核矩阵与 Mercer 定理
核矩阵 K i , j = K ( x i , x j ) K_{i,j}=K(x_i,x_j) K i , j = K ( x i , x j ) (n × n n\times n n × n 矩阵)。合法核必须满足:
对称性 :K = K ⊤ K=K^\top K = K ⊤
半正定性 :z ⊤ K z ≥ 0 , ∀ z ∈ R n z^\top K z\ge 0,\ \forall z\in\mathbb{R}^n z ⊤ K z ≥ 0 , ∀ z ∈ R n
作业证明:z ⊤ K z = ∑ i , j z i z j ϕ ( x i ) ⊤ ϕ ( x j ) = ∥ ∑ i z i ϕ ( x i ) ∥ 2 ≥ 0 z^\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 z ⊤ K z = ∑ i , j z i z j ϕ ( x i ) ⊤ ϕ ( x j ) = ∥ ∑ i z i ϕ ( x i ) ∥ 2 ≥ 0 。
对偶问题的矩阵形式(课件 p42)
max α e ⊤ α − 1 2 α ⊤ ( y y ⊤ ∘ K ) α s.t. 0 ≤ α i ≤ C , ∑ α i y i = 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
α max e ⊤ α − 2 1 α ⊤ ( y y ⊤ ∘ K ) α s.t. 0 ≤ α i ≤ C , ∑ α i y i = 0
1.6 SVM vs Logistic 回归 ⭐
维度
SVM (Hinge)
Logistic (CE)
损失
[ 1 − y ( w ⊤ x + b ) ] + [1-y(w^\top x+b)]_{+} [ 1 − y ( w ⊤ x + b ) ] +
− log σ ( y ( w ⊤ x + b ) ) -\log\sigma(y(w^\top x+b)) − log σ ( y ( w ⊤ x + b ) )
概率输出
不给
σ \sigma σ 给出类别概率
解稀疏性
稀疏 (仅支持向量)
一般不稀疏
易分样本
hinge loss = 0(“稳健”)
即使分对也有非零损失
SVM 总结(课件 p44-45)
情形
方法
线性可分
硬间隔 SVM → 原始/对偶 QP
非线性可分
软间隔 SVM → 加松弛 + 上限 C C C
非线性 + 不可分
核技巧 + 软间隔 → RBF/多项式核
训练流程 :构核矩阵 → 解对偶 QP 得 α \alpha α → 恢复 b b b → 测试 sign ( ∑ S V α i y i K ( x i , x ′ ) + b ) \text{sign}(\sum_{SV}\alpha_i y_i K(x_i,x')+b) sign ( ∑ S V α i y i K ( x i , x ′ ) + b ) 。
第二部分:无监督学习 (lec12_4) ⭐
2.1 概述与动机
监督成功但瓶颈明显:有标签数据稀缺昂贵 (语音、医疗、蛋白质等)。无监督:从廉价海量的无标签数据 学习。
任务
说明
聚类 (Clusters)
发现数据中的簇结构
密度估计 (Density Estimation)
估计数据分布
降维
PCA(线性)、流形学习(非线性)
维度
监督
无监督
数据
( x i , y i ) (x_i,y_i) ( x i , y i )
仅 x i x_i x i
目标
学 f : x → y f:x\to y f : x → y
发现数据结构
任务
分类、回归
聚类、密度估计、降维
2.2 维数灾难 (Curse of Dimensionality) ⭐
为什么需要降维
维数升高 → 数据变得极度稀疏 → 密度和距离概念失去意义
若 N = 100 N=100 N = 1 0 0 对 1 维已足够密集,则 d = 10 d=10 d = 1 0 维需要 N 10 = 10 0 10 N_{10}=100^{10} N 1 0 = 1 0 0 1 0 样本才能维持同等密度(课件 p33)
大多数高维 ML/DM 技术因维数灾难而不有效
本征维数 (intrinsic dimension) 可能很低(例如:致病基因数远小于全部基因数)
超球/超立方体积比 ⭐
设半径 r r r 的 d d d 维超球内接于边长 2 r 2r 2 r 的超立方:
d = 2 d=2 d = 2 :V ( S 2 ( r ) ) V ( H 2 ( 2 r ) ) ≈ π r 2 4 r 2 = 78.5 % \frac{V(S^2(r))}{V(H^2(2r))}\approx\frac{\pi r^2}{4r^2}=78.5\% V ( H 2 ( 2 r ) ) V ( S 2 ( r ) ) ≈ 4 r 2 π r 2 = 7 8 . 5 %
d = 3 d=3 d = 3 :V ( S 3 ( r ) ) V ( H 3 ( 2 r ) ) ≈ 4 3 π r 3 8 r 3 = 52.4 % \frac{V(S^3(r))}{V(H^3(2r))}\approx\frac{\frac{4}{3}\pi r^3}{8r^3}=52.4\% V ( H 3 ( 2 r ) ) V ( S 3 ( r ) ) ≈ 8 r 3 3 4 π r 3 = 5 2 . 4 %
d → ∞ d\to\infty d → ∞ :lim d → ∞ V ( S d ( r ) ) V ( H d ( 2 r ) ) → 0 \lim_{d\to\infty}\frac{V(S^d(r))}{V(H^d(2r))}\to 0 lim d → ∞ V ( H d ( 2 r ) ) V ( S d ( r ) ) → 0
高维空间中"几乎所有空间都在角落",中心附近几乎为空。
降维的应用(课件 p37)
人脸识别、手写数字识别、文本挖掘、图像检索、微阵列数据分析、蛋白质分类等。
2.3 聚类与 K-means ⭐
聚类定义
簇内高相似、簇间低相似。形式化:输入 D = { x 1 , … , x n } D=\{x_1,\dots,x_n\} D = { x 1 , … , x n } ,输出簇分配 C ( i ) ∈ { 1 , … , k } C^{(i)}\in\{1,\dots,k\} C ( i ) ∈ { 1 , … , k } 。
⭐ K-means 目标(失真度量 distortion)
J = ∑ j = 1 n ∥ μ C ( j ) − x j ∥ 2 \boxed{\;J=\sum_{j=1}^{n}\bigl\lVert\mu_{C^{(j)}}-x_j\bigr\rVert^2\;}
J = j = 1 ∑ n ∥ ∥ ∥ μ C ( j ) − x j ∥ ∥ ∥ 2
目标:min μ min C J \min_\mu\min_C J min μ min C J 。(非凸;全局最优 NP-hard。)
⭐ 交替最小化两步
步骤
名称
操作
Step 1
分配 (Assignment)
C ( j ) = arg min i ∥ μ i − x j ∥ 2 C^{(j)}=\arg\min_i\lVert\mu_i-x_j\rVert^2 C ( j ) = arg min i ∥ μ i − x j ∥ 2 (每点归最近中心)
Step 2
更新 (Re-center)
$\mu_i=\dfrac{1}{
每步都使 J J J 不增。
完整算法
选 k k k 个初始中心 μ 1 , … , μ k \mu_1,\dots,\mu_k μ 1 , … , μ k
重复直到分配不变:
每轮复杂度:O ( K N ) O(KN) O ( K N ) (分配)+ O ( N ) O(N) O ( N ) (更新均值)。
⭐ 收敛性证明 ⭐
定理 :K-means 有限步内收敛到局部最优。
证明四步:
分配步:固定 μ \mu μ 下为 J J J 选最优分配 ⇒ J J J 不增
更新步:固定 C C C 下簇均值是 J J J 的全局最小 ⇒ J J J 不增
J ≥ 0 J\ge 0 J ≥ 0 有下界,且单调不增
分配方案数有限 ⇒ J J J 只能在有限步后不再改变
⭐ 性质与局限性
性质
说明
有限步收敛
✅ 保证(到局部最优)
全局最优
❌ NP-hard
初始化敏感
不同初始化 → 不同结果;可能"卡住"(课件 p25)
对噪声/离群点
不鲁棒(平方损失放大效应)
非球形簇
可能无法正确聚类(课件 p26:改变距离函数可缓解)
实用技巧
K-means++ 初始化:选远离已有中心的点作新中心
多次随机初始化取最佳
选择合适 k k k (肘部法则)
2.4 主成分分析 (PCA) ⭐
什么是 PCA?
找一组新的变量(主成分),数量少于原变量,但保留样本大部分信息
“信息” = 样本中的变异/方差 (由原变量间相关性体现)
新变量互不相关 ,按保留信息量排序
PCA 目标
给定 d d d 维空间的 n n n 个点,找投影矩阵 P ∈ R d × m P\in\mathbb{R}^{d\times m} P ∈ R d × m (m ≪ d m\ll d m ≪ d ):
x ∈ R d → y = P ⊤ x ∈ R m x\in\mathbb{R}^d\to y=P^\top x\in\mathbb{R}^m
x ∈ R d → y = P ⊤ x ∈ R m
两种等价准则(中心化后)
最大化投影方差 → 使投影后点尽可能分散(课件 p42)
最小化重构误差 → 使投影再重构的损失最小(课件 p43)
毕达哥拉斯定理 ⇒ 两者等价:投影方差最大化 ≡ 重构误差最小化。
1D 推导
数据中心化 x ˉ = 1 n ∑ x i \bar x=\frac{1}{n}\sum x_i x ˉ = n 1 ∑ x i ,令 x i ′ = x i − x ˉ x_i'=x_i-\bar x x i ′ = x i − x ˉ (则 x ˉ ′ = 0 \bar x'=0 x ˉ ′ = 0 )。
协方差矩阵 S = 1 n ∑ ( x i − x ˉ ) ( x i − x ˉ ) ⊤ S=\frac{1}{n}\sum(x_i-\bar x)(x_i-\bar x)^\top S = n 1 ∑ ( x i − x ˉ ) ( x i − x ˉ ) ⊤ 。
投影后的方差:1 n ∑ ( u 1 ⊤ x i ′ − u 1 ⊤ x ˉ ′ ) 2 = u 1 ⊤ S u 1 \frac{1}{n}\sum(u_1^\top x_i'-u_1^\top\bar x')^2=u_1^\top S u_1 n 1 ∑ ( u 1 ⊤ x i ′ − u 1 ⊤ x ˉ ′ ) 2 = u 1 ⊤ S u 1 。
max u 1 u 1 ⊤ S u 1 s.t. u 1 ⊤ u 1 = 1 \max_{u_1}\ u_1^\top S u_1\quad\text{s.t.}\ u_1^\top u_1=1
u 1 max u 1 ⊤ S u 1 s.t. u 1 ⊤ u 1 = 1
拉格朗日法:L = u 1 ⊤ S u 1 + λ 1 ( 1 − u 1 ⊤ u 1 ) L=u_1^\top S u_1+\lambda_1(1-u_1^\top u_1) L = u 1 ⊤ S u 1 + λ 1 ( 1 − u 1 ⊤ u 1 ) → ∂ L ∂ u 1 = S u 1 − λ 1 u 1 = 0 \frac{\partial L}{\partial u_1}=S u_1-\lambda_1 u_1=0 ∂ u 1 ∂ L = S u 1 − λ 1 u 1 = 0 → S u 1 = λ 1 u 1 S u_1=\lambda_1 u_1 S u 1 = λ 1 u 1 。
⇒ u 1 u_1 u 1 为 S S S 的最大特征值 λ 1 \lambda_1 λ 1 对应的特征向量 ,且 u 1 ⊤ S u 1 = λ 1 u 1 ⊤ u 1 = λ 1 u_1^\top S u_1=\lambda_1 u_1^\top u_1=\lambda_1 u 1 ⊤ S u 1 = λ 1 u 1 ⊤ u 1 = λ 1 。
第 2 主成分及后续
u 2 = arg max u u ⊤ S u s.t. u ⊤ u = 1 , u ⊤ u 1 = 0 u_2=\arg\max_{u} u^\top S u\quad\text{s.t.}\ u^\top u=1,\ u^\top u_1=0
u 2 = arg u max u ⊤ S u s.t. u ⊤ u = 1 , u ⊤ u 1 = 0
即 u 2 u_2 u 2 为 S S S 第二大特征值对应特征向量。依此类推,各主成分相互正交。
⭐ PCA 算法步骤
数据中心化:x i ′ ← x i − x ˉ x_i'\leftarrow x_i-\bar x x i ′ ← x i − x ˉ
计算协方差矩阵 S = 1 n ∑ x i ′ x i ′ ⊤ S=\frac{1}{n}\sum x_i' x_i'^\top S = n 1 ∑ x i ′ x i ′ ⊤ (或矩阵形式 S = 1 n X X ⊤ S=\frac{1}{n}XX^\top S = n 1 X X ⊤ ,X = [ x 1 ′ , … , x n ′ ] X=[x_1',\dots,x_n'] X = [ x 1 ′ , … , x n ′ ] )
对 S S S 特征分解 S u i = λ i u i S u_i=\lambda_i u_i S u i = λ i u i ,取前 m m m 个最大特征值对应特征向量
构造投影矩阵 P = [ u 1 , … , u m ] ∈ R d × m P=[u_1,\dots,u_m]\in\mathbb{R}^{d\times m} P = [ u 1 , … , u m ] ∈ R d × m
投影:y = P ⊤ x y=P^\top x y = P ⊤ x ;重构:x ^ = P P ⊤ x \hat x=PP^\top x x ^ = P P ⊤ x
保留方差比例
∑ i = 1 m λ i ∑ i = 1 d λ i \frac{\sum_{i=1}^{m}\lambda_i}{\sum_{i=1}^{d}\lambda_i}
∑ i = 1 d λ i ∑ i = 1 m λ i
⭐ PCA 最优性定理(课件 p52-53)
PCA 在所有大小为 m m m 的线性投影中,使重构误差最小。
min P ∑ i = 1 n ∑ j = 1 d ( x i j − x ^ i j ) 2 ⟺ max P trace ( X ⊤ P P ⊤ X ) \min_P \sum_{i=1}^n\sum_{j=1}^d (x_{ij}-\hat x_{ij})^2\;\Longleftrightarrow\; \max_P \text{trace}(X^\top PP^\top X)
P min i = 1 ∑ n j = 1 ∑ d ( x i j − x ^ i j ) 2 ⟺ P max trace ( X ⊤ P P ⊤ X )
用 trace 性质可证,最优 P P P 由 S S S 前 m m m 个特征向量构成。
核 PCA / 非线性降维
关键发现(课件 p55-56):特征向量 u u u 满足 u = 1 n λ ∑ i ( x i ⊤ u ) x i u=\frac{1}{n\lambda}\sum_i(x_i^\top u)x_i u = n λ 1 ∑ i ( x i ⊤ u ) x i ,可知特征向量位于数据张成的空间内 。
⇒ 可用核函数 k ( x i , x j ) = ϕ ( x i ) ⊤ ϕ ( x j ) k(x_i,x_j)=\phi(x_i)^\top\phi(x_j) k ( x i , x j ) = ϕ ( x i ) ⊤ ϕ ( x j ) 替代内积,实现非线性 PCA,无需显式计算 ϕ \phi ϕ 。
Isomap、LLE、Laplacian eigenmap 等非线性降维方法可视为特殊核的核 PCA(课件 p58)。
2.5 混合高斯 GMM 与 EM(补充)⭐
GMM
p ( x ) = ∑ c = 1 K π c N ( x ∣ μ c , Σ c ) , ∑ c π c = 1 p(x)=\sum_{c=1}^{K}\pi_c\,\mathcal{N}(x\mid\mu_c,\Sigma_c),\quad\sum_c\pi_c=1
p ( x ) = c = 1 ∑ K π c N ( x ∣ μ c , Σ c ) , c ∑ π c = 1
引入隐变量 z ∈ { 1 , … , K } z\in\{1,\dots,K\} z ∈ { 1 , … , K } 表示 x x x 来自哪个成分。
⭐ EM 算法
E 步 (软分配):
γ ( z i c ) = p ( z i = c ∣ x i ) = π c N ( x i ∣ μ c , Σ c ) ∑ j π j N ( x i ∣ μ 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)}
γ ( z i c ) = p ( z i = c ∣ x i ) = ∑ j π j N ( x i ∣ μ j , Σ j ) π c N ( x i ∣ μ c , Σ c )
M 步 (最大化完整数据对数似然期望 Q Q Q ):
μ c = ∑ i γ i c x i ∑ i γ i c , Σ c = ∑ i γ i c ( x i − μ c ) ( x i − μ c ) ⊤ ∑ i γ i c , π c = 1 n ∑ i γ i c \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}
μ c = ∑ i γ i c ∑ i γ i c x i , Σ c = ∑ i γ i c ∑ i γ i c ( x i − μ c ) ( x i − μ c ) ⊤ , π c = n 1 i ∑ γ i c
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 = f L ( f L − 1 ( ⋯ f 1 ( x ) ⋯ ) ) y=f_L(f_{L-1}(\cdots f_1(x)\cdots))
y = f L ( f L − 1 ( ⋯ f 1 ( x ) ⋯ ) )
多层非线性逐层抽象,端到端学习。
⭐ 深度学习三步骤
步骤
名称
内容
①
定义函数集 / 网络结构
确定网络结构 + 参数化函数族 { f θ } \{f_\theta\} { f θ } (Neural Network)
②
评价函数优劣
定义损失 L ( θ ) L(\theta) L ( θ ) (Goodness of Function)
③
选出最优函数
梯度下降 θ ∗ = arg min θ L ( θ ) \theta^*=\arg\min_\theta L(\theta) θ ∗ = arg min θ L ( θ ) (Pick the Best Function)
为什么"深"
通用近似定理 (Universal Approximation) :足够宽的单隐层前馈网可任意逼近紧支集上的任意连续函数——但不保证可学习性 。
深度的好处:模块化 / 层次化 (Modularization) :同等表达力下深而窄比浅而宽参数更少、更高效(课件 p19 类比:电路设计中模块复用 vs 全展开)。
5.2 前馈神经网络与反向传播
神经元 / 感知机 (Perceptron)
z = w ⊤ x + b , a = f ( z ) z=w^\top x+b,\quad a=f(z)
z = w ⊤ x + b , a = f ( z )
感知机 y = sign ( w ⊤ x + b ) y=\text{sign}(w^\top x+b) y = sign ( w ⊤ x + b ) 是线性分类器,不能解 XOR 。
⭐ 激活函数 (Activation Functions)
激活函数曲线对比图见
导数对比图见
名称
公式
导数
优点
缺点
Sigmoid
σ ( x ) = 1 1 + e − x \sigma(x)=\dfrac{1}{1+e^{-x}} σ ( x ) = 1 + e − x 1
σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x)=\sigma(x)(1-\sigma(x)) σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) )
输出 ( 0 , 1 ) (0,1) ( 0 , 1 ) 可作概率
饱和区梯度趋 0(梯度消失) ;非零均值
Tanh
tanh ( x ) = e x − e − x e x + e − x \tanh(x)=\dfrac{e^x-e^{-x}}{e^x+e^{-x}} tanh ( x ) = e x + e − x e x − e − x
tanh ′ ( x ) = 1 − tanh 2 ( x ) \tanh'(x)=1-\tanh^2(x) tanh ′ ( x ) = 1 − tanh 2 ( x )
零均值
仍饱和,梯度消失
ReLU
max ( 0 , x ) \max(0,x) max ( 0 , x )
1 1 1 if x > 0 x>0 x > 0 else 0 0 0
缓解梯度消失 、计算快、稀疏激活
负区"死神经元"(Dead ReLU)
Leaky ReLU
max ( α x , x ) \max(\alpha x,x) max ( α x , x ) ,α ≪ 1 \alpha\ll1 α ≪ 1
1 1 1 if x > 0 x>0 x > 0 else α \alpha α
解决死神经元
需选 α \alpha α
PReLU
同上,α \alpha α 可学习
—
自适应
增加参数量
ELU
x x x if x > 0 x>0 x > 0 else α ( e x − 1 ) \alpha(e^x-1) α ( e x − 1 )
—
负区平滑、近零均值
含 exp 计算
Softmax (输出层)
e z i ∑ j e z j \dfrac{e^{z_i}}{\sum_j e^{z_j}} ∑ j e z j e z i
—
多分类概率化
—
饱和性定义(课件 p62)
类型
定义
示例
软饱和
lim x → ∞ f ′ ( x ) = 0 \lim_{x\to\infty}f'(x)=0 lim x → ∞ f ′ ( x ) = 0
Sigmoid, Tanh
硬饱和
f ′ ( x ) = 0 f'(x)=0 f ′ ( x ) = 0 当 $
x
饱和 → 导数趋 0 → 反向传播链式连乘 → 梯度消失 。
⭐ 激活函数导数推导
σ ′ ( x ) = d d x 1 1 + e − x = − 1 ( 1 + e − x ) 2 ⋅ ( − e − x ) = σ ( x ) 2 ⋅ 1 − σ ( x ) σ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x)=\frac{d}{dx}\frac{1}{1+e^{-x}}=-\frac{1}{(1+e^{-x})^2}\cdot(-e^{-x})=\sigma(x)^2\cdot\frac{1-\sigma(x)}{\sigma(x)}=\sigma(x)(1-\sigma(x))
σ ′ ( x ) = d x d 1 + e − x 1 = − ( 1 + e − x ) 2 1 ⋅ ( − e − x ) = σ ( x ) 2 ⋅ σ ( x ) 1 − σ ( x ) = σ ( x ) ( 1 − σ ( x ) )
tanh ′ ( x ) = d d x e x − e − x e x + e − x = 1 − tanh 2 ( x ) \tanh'(x)=\frac{d}{dx}\frac{e^x-e^{-x}}{e^x+e^{-x}}=1-\tanh^2(x)
tanh ′ ( x ) = d x d e x + e − x e x − e − x = 1 − tanh 2 ( x )
⭐ 前向传播 (Forward)
第 l l l 层:
z ( l ) = W ( l ) a ( l − 1 ) + b ( l ) , a ( l ) = f l ( z ( l ) ) z^{(l)}=W^{(l)}a^{(l-1)}+b^{(l)},\quad a^{(l)}=f_l(z^{(l)})
z ( l ) = W ( l ) a ( l − 1 ) + b ( l ) , a ( l ) = f l ( z ( l ) )
其中 a ( 0 ) = x a^{(0)}=x a ( 0 ) = x ,W ( l ) ∈ R m l × m l − 1 W^{(l)}\in\mathbb{R}^{m_l\times m_{l-1}} W ( l ) ∈ R m l × m l − 1 ,b ( l ) ∈ R m l b^{(l)}\in\mathbb{R}^{m_l} b ( l ) ∈ R m l 。最后一层 a ( L ) = y ^ a^{(L)}=\hat y a ( L ) = y ^ 为输出。
输出层设计(课件 p22)
任务
输出层激活
损失
二分类
Sigmoid (1 输出)
BCE
多分类
Softmax (K K K 输出)
Categorical CE
回归
线性 (无激活)
MSE
⭐ 损失与正则化
J ( W , b ; x , y ) = L ( y ^ , y ) + λ ∥ W ∥ F 2 J(W,b;x,y)=\mathcal{L}(\hat y,y)+\lambda\|W\|_F^2
J ( W , b ; x , y ) = L ( y ^ , y ) + λ ∥ W ∥ F 2
其中 Frobenius 范数 (课件 p41):
∥ W ∥ F 2 = ∑ l = 1 L ∑ i = 1 m l ∑ j = 1 m l − 1 ( W i j ( l ) ) 2 \|W\|_F^2=\sum_{l=1}^{L}\sum_{i=1}^{m_l}\sum_{j=1}^{m_{l-1}}(W^{(l)}_{ij})^2
∥ W ∥ F 2 = l = 1 ∑ L i = 1 ∑ m l j = 1 ∑ m l − 1 ( W i j ( l ) ) 2
常用损失:
损失
公式
使用场景
MSE
1 2 ∣ y ^ − y ∣ 2 \frac{1}{2}|\hat y-y|^2 2 1 ∣ y ^ − y ∣ 2
回归
Cross-Entropy
− ∑ k y k log y ^ k -\sum_k y_k\log\hat y_k − ∑ k y k log y ^ k
配 Softmax 多分类
BCE
− [ y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ] -[y\log\hat y+(1-y)\log(1-\hat y)] − [ y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ]
配 Sigmoid 二分类
⭐ 反向传播 (Backpropagation, BP)
核心:链式法则 + 自动微分 。现代框架 (TensorFlow 2.0, PyTorch, MindSpore) 自动完成,但须理解原理。
输出层误差项(课件 p46)
δ j L = ∂ J ∂ z j L = ∂ J ∂ a j L f L ′ ( z j L ) \delta_j^{L}=\frac{\partial J}{\partial z_j^{L}}=\frac{\partial J}{\partial a_j^{L}}\,f_L'(z_j^{L})
δ j L = ∂ z j L ∂ J = ∂ a j L ∂ J f L ′ ( z j L )
用对角矩阵 diag ( f L ′ ( z ( L ) ) ) \text{diag}(f_L'(z^{(L)})) diag ( f L ′ ( z ( L ) ) ) 批量表示:
δ ( L ) = ∇ a ( L ) J ⊙ f L ′ ( z ( L ) ) \boldsymbol{\delta}^{(L)}=\nabla_{a^{(L)}}J\odot f_L'(z^{(L)})
δ ( L ) = ∇ a ( L ) J ⊙ f L ′ ( z ( L ) )
⭐ 误差反向递推(BP 核心公式)
第 l l l 层误差由第 l + 1 l+1 l + 1 层算得:
δ ( l ) = ( ( W ( l + 1 ) ) ⊤ δ ( l + 1 ) ) ⊙ f l ′ ( z ( l ) ) \boxed{\;\boldsymbol{\delta}^{(l)}=\bigl((W^{(l+1)})^\top\boldsymbol{\delta}^{(l+1)}\bigr)\odot f_l'(z^{(l)})\;}
δ ( l ) = ( ( W ( l + 1 ) ) ⊤ δ ( l + 1 ) ) ⊙ f l ′ ( z ( l ) )
物理含义:第 l l l 层误差 = 所有相连的第 l + 1 l+1 l + 1 层误差项加权和 × 本层激活函数梯度(课件 p47-48)。
参数梯度
∂ J ∂ W ( l ) = δ ( l ) ( a ( l − 1 ) ) ⊤ , ∂ J ∂ b ( l ) = δ ( l ) \frac{\partial J}{\partial W^{(l)}}=\boldsymbol{\delta}^{(l)}(a^{(l-1)})^\top,\qquad\frac{\partial J}{\partial b^{(l)}}=\boldsymbol{\delta}^{(l)}
∂ W ( l ) ∂ J = δ ( l ) ( a ( l − 1 ) ) ⊤ , ∂ b ( l ) ∂ J = δ ( l )
训练三步走
前馈 :算各层 z ( l ) , a ( l ) z^{(l)},a^{(l)} z ( l ) , a ( l )
反向 :算各层 δ ( l ) \delta^{(l)} δ ( l ) (从 L L L 往 1 递推)
更新 :梯度 × 学习率修改 W , b W,b W , b
5.3 训练技巧 (Tips for Deep Learning)
过拟合对策
方法
说明
更多数据 / 数据增强
翻转、裁剪、缩放、加噪、MixUp
L2 正则化(权重衰减)
λ ∣ W ∣ F 2 \lambda|W|_F^2 λ ∣ 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 ) + x y=F(x)+x y = F ( x ) + x 提供梯度直通捷径
⑤ 梯度裁剪 (Gradient Clipping)
RNN 常用,限制梯度模长
权重初始化
方法
适用
公式
Xavier / Glorot
Sigmoid / Tanh
W ∼ U [ − 6 n i n + n o u t , 6 n i n + n o u t ] W\sim U\!\left[-\sqrt{\frac{6}{n_{in}+n_{out}}},\sqrt{\frac{6}{n_{in}+n_{out}}}\right] W ∼ U [ − n i n + n o u t 6 , n i n + n o u t 6 ] ,Var ( W ) = 2 n i n + n o u t \text{Var}(W)=\frac{2}{n_{in}+n_{out}} Var ( W ) = n i n + n o u t 2
He
ReLU
Var ( W ) = 2 n i n \text{Var}(W)=\frac{2}{n_{in}} Var ( W ) = n i n 2 ,补偿 ReLU 砍掉一半激活
核心目标:保持前向传播和反向传播的方差在各层一致(防止放大或缩小)。
⭐ Batch Normalization (BN)
对每个 mini-batch 的每特征归一化 + 可学习缩放平移:
z ^ = z − μ B σ B 2 + ϵ , z ~ = γ z ^ + β \hat z=\frac{z-\mu_B}{\sqrt{\sigma_B^2+\epsilon}},\qquad\tilde z=\gamma\hat z+\beta
z ^ = σ B 2 + ϵ z − μ B , z ~ = γ z ^ + β
阶段
统计量来源
训练
使用当前 batch 的 μ B , σ B 2 \mu_B,\sigma_B^2 μ B , σ B 2
推理
使用训练阶段累积的移动平均 μ , σ 2 \mu,\sigma^2 μ , σ 2
作用:缓解内部协变量偏移 (Internal Covariate Shift);允许更大学习率;降低初始化敏感性;轻微正则化效果。
⭐ Dropout
阶段
行为
训练
以概率 p p p 随机将神经元输出置 0(每次迭代不同 mask)
推理
全开,无 mask
Inverted Dropout :训练时对保留激活乘 1 1 − p \frac{1}{1-p} 1 − p 1 ,推理无需改动 → 保证训练和推理时激活的期望一致。
直觉:每个 mask 配置相当于一个子网络,Dropout 训练等价于集成指数级多的子网络;迫使神经元不依赖个别特征,提升鲁棒性。
Mini-batch SGD / 局部最优
Mini-batch 折中:比批量 GD 快、噪声助逃局部最优;比纯 SGD 稳、可 GPU 并行。
高维损失面中鞍点远多于真局部最小 (课件 p33-34);动量、自适应学习率、mini-batch 噪声有助于逃离鞍点。
5.4 卷积神经网络 (CNN) ⭐
全连接处理图像两大问题
参数过多 :100 × 100 × 3 = 30 , 000 100\times100\times3=30,000 1 0 0 × 1 0 0 × 3 = 3 0 , 0 0 0 输入,第一隐层每个神经元需 30,000 权重 → 易过拟合且计算量大(课件 p89)
局部不变性特征 (平移/缩放/旋转):全连接难以高效提取
⭐ CNN 三大核心思想
思想
说明
局部连接 (Local Connectivity)
每神经元只连上层一个局部区域(感受野)
权重共享 (Parameter Sharing)
同一卷积核整张图滑动复用 ⇒ 大幅减参 + 平移等变性
池化 (Pooling / Subsampling)
下采样降分辨率、扩大感受野、提升平移不变性
⭐ 卷积运算
Y i , j = ∑ u = 0 k − 1 ∑ v = 0 k − 1 X i + u , j + v W u , v + b Y_{i,j}=\sum_{u=0}^{k-1}\sum_{v=0}^{k-1}X_{i+u,j+v}\,W_{u,v}+b
Y i , j = u = 0 ∑ k − 1 v = 0 ∑ k − 1 X i + u , j + v W u , v + b
核心参数 :
参数
说明
卷积核大小 k k k
k h × k w k_h\times k_w k h × k w ,控制感受野
步长 stride s s s
滑动步长
填充 padding p p p
valid(缩小输出)/ same(保尺寸)
输出尺寸
O = ⌊ I − k + 2 p s ⌋ + 1 O=\left\lfloor\dfrac{I-k+2p}{s}\right\rfloor+1 O = ⌊ s I − k + 2 p ⌋ + 1
多通道 :卷积核深度 = 输入通道数;多个卷积核 ⇒ 多个特征图 (Feature Map)。
扩展卷积类型(课件 p100-111)
类型
说明
空洞卷积 (Dilated)
在卷积核元素间插入空洞,扩大感受野不增参
转置卷积 (Transposed)
上采样/解码器用
深度可分离卷积 (Depthwise Separable)
MobileNet 用,先逐通道再逐点
池化层(课件 p112-113)
类型
公式
最大池化
Y m , n d = max i ∈ R m , n d x i Y_{m,n}^d=\max_{i\in R_{m,n}^d} x_i Y m , n d = max i ∈ 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 × 3 3\times3 3 × 3 小卷积堆叠
Inception/GoogLeNet
2014
Inception 模块,多尺度并行卷积
ResNet (何恺明)
2015
残差连接 y = F ( x ) + x y=F(x)+x y = F ( x ) + x ,解决深网训练难题 → 152 层可训
ResNet 残差连接:将目标从"直接学 H ( x ) H(x) H ( x ) “变为"学残差 F ( x ) = H ( x ) − x F(x)=H(x)-x F ( x ) = H ( x ) − x ”,提供了梯度直通捷径,使超深网络可训练。
5.5 循环神经网络 (RNN) / LSTM / GRU ⭐
为什么需要 RNN
前馈网络输入输出定长 ,无法处理变长序列(文本、语音、时序)。
RNN 图灵完备 (Siegelmann & Sontag, 1995),可模拟任意程序。
通过隐藏状态 (hidden state) h t h_t h t 传递历史信息。
⭐ 按时间展开 + BPTT
h t = f ( W h h h t − 1 + W x h x t + b h ) , y t = g ( W h y h t + b y ) h_t=f(W_{hh}h_{t-1}+W_{xh}x_t+b_h),\qquad y_t=g(W_{hy}h_t+b_y)
h t = f ( W h h h t − 1 + W x h x t + b h ) , y t = g ( W h y h t + b y )
同一组参数在所有时间步共享 。
展开后视为沿时间轴的深层网络,用 BPTT (Backpropagation Through Time) 训练。
⭐ 梯度消失/爆炸(长期依赖问题)
BPTT 梯度沿时间连乘 ∏ t ∂ h t ∂ h t − 1 \prod_t\frac{\partial h_t}{\partial h_{t-1}} ∏ t ∂ h t − 1 ∂ h t :
若每个因子模 < 1 <1 < 1 → 指数衰减 → 梯度消失 → 无法学习长程依赖
若每个因子模 > 1 >1 > 1 → 指数增长 → 梯度爆炸
课件 p139:即使改成 h t = h t − 1 + g ( x t , h t − 1 ; θ ) h_t=h_{t-1}+g(x_t,h_{t-1};\theta) h t = h t − 1 + g ( x t , h t − 1 ; θ ) (线性通路+非线性增量),梯度可恒为 1,但容量有限易饱和,需要选择性遗忘/更新 → LSTM 。
⭐ LSTM(长短时记忆)
两点关键设计 :
内部状态 c t c_t c t (cell state) :线性循环通路,梯度可顺畅流动
门控机制 (gating) :三个门 ∈ ( 0 , 1 ) \in(0,1) ∈ ( 0 , 1 ) 控制信息比例
门
公式
作用
遗忘门 f t f_t f t
σ ( W f [ x t , h t − 1 ] + b f ) \sigma(W_f[x_t,h_{t-1}]+b_f) σ ( W f [ x t , h t − 1 ] + b f )
控制 c t − 1 c_{t-1} c t − 1 保留多少
输入门 i t i_t i t
σ ( W i [ x t , h t − 1 ] + b i ) \sigma(W_i[x_t,h_{t-1}]+b_i) σ ( W i [ x t , h t − 1 ] + b i )
控制候选状态写入多少
输出门 o t o_t o t
σ ( W o [ x t , h t − 1 ] + b o ) \sigma(W_o[x_t,h_{t-1}]+b_o) σ ( W o [ x t , h t − 1 ] + b o )
控制 c t c_t c t 输出给 h t h_t h t 多少
⭐ LSTM 核心公式 :
f t = σ ( W f [ x t , h t − 1 ] + b f ) (遗忘门) i t = σ ( W i [ x t , h t − 1 ] + b i ) (输入门) c ~ t = tanh ( W c [ x t , h t − 1 ] + b c ) (候选状态) c t = f t ⊙ c t − 1 + i t ⊙ c ~ t (细胞状态更新) o t = σ ( W o [ x t , h t − 1 ] + b o ) (输出门) h t = o t ⊙ tanh ( c t ) (外部隐藏状态) \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} f t i t c ~ t c t o t h t = σ ( W f [ x t , h t − 1 ] + b f ) = σ ( W i [ x t , h t − 1 ] + b i ) = tanh ( W c [ x t , h t − 1 ] + b c ) = f t ⊙ c t − 1 + i t ⊙ c ~ t = σ ( W o [ x t , h t − 1 ] + b o ) = o t ⊙ tanh ( c t ) ( 遗忘门 ) ( 输入门 ) ( 候选状态 ) ( 细胞状态更新 ) ( 输出门 ) ( 外部隐藏状态 )
记忆层次(课件 p143)
记忆类型
载体
特性
短期记忆
h t h_t h t (隐藏状态)
每次更新,变化快
长期记忆
网络参数 W , b W,b W , b
训练后固定
Long Short-Term
c t c_t c t (细胞状态)
线性通路跨时间流动,选择性遗忘/写入 → 介于短/长期之间
⭐ GRU(门控循环单元)
简化 LSTM:合并遗忘门+输入门为更新门 z t z_t z t ,合并 c c c 与 h h h ,加重置门 r t r_t r t :
z t = σ ( W z [ x t , h t − 1 ] ) , r t = σ ( W r [ x t , h t − 1 ] ) z_t=\sigma(W_z[x_t,h_{t-1}]),\quad r_t=\sigma(W_r[x_t,h_{t-1}])
z t = σ ( W z [ x t , h t − 1 ] ) , r t = σ ( W r [ x t , h t − 1 ] )
h ~ t = tanh ( W [ x t , r t ⊙ h t − 1 ] ) , h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t \tilde h_t=\tanh(W[x_t,r_t\odot h_{t-1}]),\quad h_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde h_t
h ~ t = tanh ( W [ x t , r t ⊙ h t − 1 ] ) , h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t
RNN 变体
变体
说明
堆叠 RNN (Multi-layer)
多层串联提升表达力
双向 RNN (BiRNN / BiLSTM)
同时正向反向,拼接两方向隐藏状态,利用上下文,NLP 常用
Transformer 是继 MLP、CNN、RNN 之后的第 4 大类模型 (Vaswani et al., “Attention is All You Need”, NeurIPS 2017)。
每层两个子层:
多头自注意力 (Multi-Head Self-Attention)
逐位前馈网络 (Position-wise FFN) :FFN ( x ) = max ( 0 , x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2 FFN ( x ) = max ( 0 , x W 1 + b 1 ) W 2 + b 2
每个子层都加 残差连接 + 层归一化 (Layer Normalization) :
output = LayerNorm ( x + Sublayer ( x ) ) \text{output}=\text{LayerNorm}(x+\text{Sublayer}(x))
output = LayerNorm ( x + Sublayer ( x ) )
输入输出维度相同(d m o d e l d_{model} d m o d e l ),便于堆叠多层。
⭐ Scaled Dot-Product Attention
Attention ( Q , K , V ) = softmax ( Q K ⊤ d k ) V \boxed{\;\text{Attention}(Q,K,V)=\text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\;}
Attention ( Q , K , V ) = softmax ( d k Q K ⊤ ) V
矩阵
维度
含义
Q Q Q (Query)
n × d k n\times d_k n × d k
查询,我要找什么
K K K (Key)
m × d k m\times d_k m × d k
键,我有什么标签
V V V (Value)
m × d v m\times d_v m × d v
值,实际内容
Q K ⊤ QK^\top Q K ⊤ 计算查询与所有键的相似度得分 (n × m n\times m n × m 矩阵)
d k \sqrt{d_k} d k 缩放 :防止 d k d_k d k 大时内积过大 → softmax 饱和 → 梯度变小
softmax 行归一化为注意力权重
权重 × V V V 得加权输出
⭐ Multi-Head Attention
head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i=\text{Attention}(QW_i^Q,KW_i^K,VW_i^V)
head i = Attention ( Q W i Q , K W i K , V W i V )
MultiHead = Concat ( head 1 , … , head h ) W O \text{MultiHead}=\text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O
MultiHead = Concat ( head 1 , … , head h ) W O
h h h 个注意力头各自学习不同的投影/相似度模式,可一次大矩阵乘法高效并行计算。
多头注意力三种用法(课件 p154)
用法
Q Q Q
K K K
V V V
说明
Encoder 自注意力
Encoder 输入
Encoder 输入
Encoder 输入
Q = K = V Q=K=V Q = K = V ,每位置关注所有位置
Decoder Masked 自注意力
Decoder 输入
Decoder 输入
Decoder 输入
对"未来"位置加 − ∞ -\infty − ∞ (softmax→0),因果掩码
Decoder Cross-Attention
Decoder 输出
Encoder 输出
Encoder 输出
Q Q Q 来自 Decoder,K , V K,V K , V 来自 Encoder
⭐ 位置编码 (Positional Encoding)
Attention 对输入置换不变 ⇒ 需显式注入位置信息:
P E ( p o s , 2 i ) = sin ( p o s 1000 0 2 i / d m o d e l ) , P E ( p o s , 2 i + 1 ) = cos ( p o s 1000 0 2 i / d m o d e l ) 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)
P E ( p o s , 2 i ) = sin ( 1 0 0 0 0 2 i / d m o d e l p o s ) , P E ( p o s , 2 i + 1 ) = cos ( 1 0 0 0 0 2 i / d m o d e l p o s )
输出范围 [ − 1 , 1 ] [-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 − η g t , g t = ∇ θ L ( θ t ) \theta_{t+1}=\theta_t-\eta\,g_t,\quad g_t=\nabla_\theta L(\theta_t)
θ t + 1 = θ t − η g t , g t = ∇ θ L ( θ t )
⭐ Momentum
历史梯度指数加权移动平均(“惯性”):
v t = β v t − 1 + η g t , θ t + 1 = θ t − v t ( β ≈ 0.9 ) v_t=\beta v_{t-1}+\eta\,g_t,\quad\theta_{t+1}=\theta_t-v_t\quad(\beta\approx 0.9)
v t = β v t − 1 + η g t , θ t + 1 = θ t − v t ( β ≈ 0 . 9 )
帮助穿过平坦区域和逃离局部最优/鞍点(课件 p79-82)。
Adagrad(课件 p71)
G t = G t − 1 + g t ⊙ g t , θ t + 1 = θ t − η G t + ϵ ⊙ g t G_t=G_{t-1}+g_t\odot g_t,\quad\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{G_t+\epsilon}}\odot g_t
G t = G t − 1 + g t ⊙ g t , θ t + 1 = θ t − G t + ϵ η ⊙ g t
稀疏特征获更大学习率
但 G t G_t G t 单调递增 ⇒ 学习率持续衰减 ,后期过早停止
RMSProp
E [ g 2 ] t = ρ E [ g 2 ] t − 1 + ( 1 − ρ ) g t 2 , θ t + 1 = θ t − η E [ g 2 ] t + ϵ ⊙ g t ( ρ ≈ 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)
E [ g 2 ] t = ρ E [ g 2 ] t − 1 + ( 1 − ρ ) g t 2 , θ t + 1 = θ t − E [ g 2 ] t + ϵ η ⊙ g t ( ρ ≈ 0 . 9 )
指数加权代替 Adagrad 的累积和
解决学习率单调下降问题
⭐ Adam(Adaptive Moment Estimation)
结合 Momentum(一阶矩)+ RMSProp(二阶矩)+ 偏差校正 :
m t = β 1 m t − 1 + ( 1 − β 1 ) g t , v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 m_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 = β 1 m t − 1 + ( 1 − β 1 ) g t , v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2
m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat m_t=\frac{m_t}{1-\beta_1^t},\quad\hat v_t=\frac{v_t}{1-\beta_2^t}
m ^ t = 1 − β 1 t m t , v ^ t = 1 − β 2 t v 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\;}
θ t + 1 = θ t − v ^ t + ϵ η ⊙ m ^ t
超参数
典型值
含义
β 1 \beta_1 β 1
0.9
一阶矩衰减率
β 2 \beta_2 β 2
0.999
二阶矩衰减率
ϵ \epsilon ϵ
1 0 − 8 10^{-8} 1 0 − 8
数值稳定
η \eta η
0.001
学习率
收敛快、对学习率不敏感,深度学习最常用优化器 。
偏差校正:由于 m 0 = v 0 = 0 m_0=v_0=0 m 0 = v 0 = 0 ,初期估计偏小,除以 1 − β t 1-\beta^t 1 − β t 修正。
5.8 损失函数与正则化方法汇总 ⭐
损失函数
任务
损失
公式
回归
MSE
1 N ∑ ∣ y ^ − y ∣ 2 \frac{1}{N}\sum|\hat y-y|^2 N 1 ∑ ∣ y ^ − y ∣ 2
二分类
BCE
− [ y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ] -[y\log\hat y+(1-y)\log(1-\hat y)] − [ y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ]
多分类
Categorical CE (配 Softmax)
− ∑ k y k log y ^ k -\sum_k y_k\log\hat y_k − ∑ k y k log y ^ k
正则化方法对比
方法
机制
训练/推理差异
L2 权重衰减
λ ∣ W ∣ F 2 \lambda|W|_F^2 λ ∣ W ∣ F 2 加在损失中
无差异
Dropout
随机失活 + inverted dropout
训练用 mask,推理全开
Batch Normalization
归一化每层输入
训练用 batch 统计,推理用移动平均
Layer Normalization
沿特征维归一化(不依赖 batch)
训练推理一致(Transformer/RNN 用)
数据增强
翻转/裁剪/颜色抖动
仅训练
早停
验证误差回升即停
—
6. 公式速查
名称
公式
Sigmoid
σ ( x ) = 1 / ( 1 + e − x ) \sigma(x)=1/(1+e^{-x}) σ ( x ) = 1 / ( 1 + e − x ) ,σ ′ = σ ( 1 − σ ) \sigma'=\sigma(1-\sigma) σ ′ = σ ( 1 − σ )
Tanh
tanh ( x ) \tanh(x) tanh ( x ) ,tanh ′ = 1 − tanh 2 \tanh'=1-\tanh^2 tanh ′ = 1 − tanh 2
ReLU
max ( 0 , x ) \max(0,x) max ( 0 , x ) ,导数 1 ( x > 0 ) 1(x>0) 1 ( x > 0 ) else 0 0 0
Softmax
e z i / ∑ j e z j e^{z_i}/\sum_j e^{z_j} e z i / ∑ j e z j
前馈
a ( l ) = f l ( W ( l ) a ( l − 1 ) + b ( l ) ) a^{(l)}=f_l(W^{(l)}a^{(l-1)}+b^{(l)}) a ( l ) = f l ( W ( l ) a ( l − 1 ) + b ( l ) )
BP 递推
δ ( l ) = ( ( W ( l + 1 ) ) ⊤ δ ( l + 1 ) ) ⊙ f l ′ ( z ( l ) ) \boldsymbol{\delta}^{(l)}=((W^{(l+1)})^\top\boldsymbol{\delta}^{(l+1)})\odot f_l'(z^{(l)}) δ ( l ) = ( ( W ( l + 1 ) ) ⊤ δ ( l + 1 ) ) ⊙ f l ′ ( z ( l ) )
参数梯度
∂ J / ∂ W ( l ) = δ ( l ) ( a ( l − 1 ) ) ⊤ \partial J/\partial W^{(l)}=\boldsymbol{\delta}^{(l)}(a^{(l-1)})^\top ∂ J / ∂ W ( l ) = δ ( l ) ( a ( l − 1 ) ) ⊤ ,∂ J / ∂ b ( l ) = δ ( l ) \partial J/\partial b^{(l)}=\boldsymbol{\delta}^{(l)} ∂ J / ∂ b ( l ) = δ ( l )
Frobenius 范数
∣ W ∣ F 2 = ∑ l ∑ i , j ( W i j ( l ) ) 2 |W|_F^2=\sum_l\sum_{i,j}(W^{(l)}_{ij})^2 ∣ W ∣ F 2 = ∑ l ∑ i , j ( W i j ( l ) ) 2
Xavier 初始化
Var ( W ) = 2 / ( n i n + n o u t ) \text{Var}(W)=2/(n_{in}+n_{out}) Var ( W ) = 2 / ( n i n + n o u t )
He 初始化
Var ( W ) = 2 / n i n \text{Var}(W)=2/n_{in} Var ( W ) = 2 / n i n
BN
z ~ = γ z − μ B σ B 2 + ϵ + β \tilde z=\gamma\frac{z-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta z ~ = γ σ B 2 + ϵ z − μ B + β
卷积输出尺寸
O = ⌊ ( I − k + 2 p ) / s ⌋ + 1 O=\lfloor(I-k+2p)/s\rfloor+1 O = ⌊ ( I − k + 2 p ) / s ⌋ + 1
LSTM
c t = f t ⊙ c t − 1 + i t ⊙ c ~ t c_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t c t = f t ⊙ c t − 1 + i t ⊙ c ~ t ,h t = o t ⊙ tanh ( c t ) h_t=o_t\odot\tanh(c_t) h t = o t ⊙ tanh ( c t )
GRU
h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t h_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde h_t h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t
Scaled Dot-Product
softmax ( Q K ⊤ / d k ) V \text{softmax}(QK^\top/\sqrt{d_k})V softmax ( Q K ⊤ / d k ) V
Multi-Head
Concat ( head 1 , … , head h ) W O \text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O Concat ( head 1 , … , head h ) W O
位置编码
P E p o s , 2 i = sin ( p o s / 1000 0 2 i / d ) PE_{pos,2i}=\sin(pos/10000^{2i/d}) P E p o s , 2 i = sin ( p o s / 1 0 0 0 0 2 i / d ) ,P E p o s , 2 i + 1 = cos ( p o s / 1000 0 2 i / d ) PE_{pos,2i+1}=\cos(pos/10000^{2i/d}) P E p o s , 2 i + 1 = cos ( p o s / 1 0 0 0 0 2 i / d )
Momentum
v t = β v t − 1 + η g t v_t=\beta v_{t-1}+\eta g_t v t = β v t − 1 + η g t
RMSProp
E [ g 2 ] t = ρ E [ g 2 ] t − 1 + ( 1 − ρ ) g t 2 E[g^2]_t=\rho E[g^2]_{t-1}+(1-\rho)g_t^2 E [ g 2 ] t = ρ E [ g 2 ] t − 1 + ( 1 − ρ ) 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 θ t + 1 = θ t − v ^ t + ϵ η ⊙ 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 , y X, y X , y
参数 w w w
X w Xw X w
最小平方误差
闭式解、加权/正则推导
逻辑回归
x , y ∈ { 0 , 1 } x, y \in \{0,1\} x , y ∈ { 0 , 1 }
概率
σ ( w T x + b ) \sigma(w^T x + b) σ ( w T x + b )
最大似然/交叉熵
sigmoid、log odds、梯度
SVM
x , y ∈ { − 1 , + 1 } x, y \in \{-1,+1\} x , y ∈ { − 1 , + 1 }
分类超平面
sign ( w T x + b ) \text{sign}(w^T x + b) 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}
Learning = Representation + Evaluation + Optimization
其中:
Representation :用什么函数表示规律,例如决策树、线性函数、SVM、神经网络。
Evaluation :用什么标准评价函数好坏,例如信息增益、平方误差、交叉熵、hinge loss。
Optimization :怎样找到最优函数,例如递归划分、闭式解、梯度下降、二次规划。
1. 任务总览:输入、输出和学习目标
1.1 机器学习定义:用经验改进任务表现
Tom Mitchell 定义:若一个程序在任务 T T T 上,随着经验 E E E 的积累,其性能度量 P P P 提高,则称该程序从经验 E E E 中学习。
搜索引擎例子:
T T T :对用户查询返回有序网页列表。
E E E :用户点击、停留、跳出等行为记录。
P P P :排序准确率、用户满意度或点击相关性。
1.2 样本和特征:机器能处理的是向量
一个对象或实例通常表示为特征向量:x = ( x 1 , x 2 , … , x d ) ∈ R d x = (x_1, x_2, \dots, x_d) \in \mathbb{R}^d x = ( x 1 , x 2 , … , x d ) ∈ R d 。每个维度称为一个 feature/attribute。特征可以是连续的,也可以是离散的。特征向量是对真实对象的抽象,只保留对任务有用的信息。
常见表示:
文本:词袋向量、词频、词嵌入。
图像:像素、颜色直方图、卷积特征。
用户/账户:年龄、余额、信用评分、交易次数。
1.3 监督学习
有标签地学输入到输出的映射。训练数据 D = { ( x i , y i ) } i = 1 n D = \{(x_i, y_i)\}_{i=1}^n D = { ( x i , y i ) } i = 1 n ,其中 x i x_i x i 是输入特征,y i y_i y i 是期望输出。目标是学习函数 f : X → Y f: \mathcal{X} \to \mathcal{Y} f : X → Y ,使得新样本 x new x_{\text{new}} x new 的预测 y ^ = f ( x new ) \hat{y} = f(x_{\text{new}}) y ^ = f ( x new ) 尽可能正确。
分类任务 :输入样本特征 x ∈ X x \in \mathcal{X} x ∈ X ;输出离散标签 y ∈ { 1 , … , K } y \in \{1, \dots, K\} y ∈ { 1 , … , K } 或 y ∈ { − 1 , + 1 } y \in \{-1, +1\} y ∈ { − 1 , + 1 } 。含义:判断样本属于哪个类别,例如 spam/not spam、良性/恶性肿瘤。
回归任务 :输入样本特征 x ∈ X x \in \mathcal{X} x ∈ X ;输出连续数值 y ∈ R y \in \mathbb{R} y ∈ R 。含义:预测一个数值,例如房价、温度、股票收益。
1.4 无监督学习
没有标签地发现结构。训练数据 D = { x i } i = 1 n D = \{x_i\}_{i=1}^n D = { x i } i = 1 n ,没有给定正确输出。目标不是拟合 x ↦ y x \mapsto y x ↦ y ,而是发现数据内部结构。典型任务:
聚类:输入样本集合,输出每个样本的簇编号。
降维:输入高维向量,输出低维表示。
密度估计:输入样本,输出数据分布模型。
1.5 半监督和自监督
半监督学习同时使用少量有标签数据和大量无标签数据。自监督学习从无标签数据中自动构造监督任务,例如遮住文本中的词再预测它。
1.6 学习智能体
学习智能体包含:
Performance element:直接执行任务的组件。
Learning element:根据经验改进 performance element。
Critic:根据反馈评价表现。
Problem generator:产生探索性行动,帮助智能体获得有价值经验。
设计 learning element 时要问:学习 performance element 的哪个部分?能获得什么反馈?用什么表示形式?
1.7 机器学习应用:概念题识别即可
课件列举的应用包括信息检索、机器翻译、计算机视觉、语音识别、金融预测、医学诊断、电影推荐等。这些例子共同说明:当规则难以手写、数据量很大、人工分析昂贵时,机器学习可以从经验中拟合模型或发现结构。
这些应用通常不考细节,但可能用来问 T , E , P T, E, P T , E , P 。答题时按 Mitchell 定义拆分:任务 T T T 是系统要完成的预测或决策,经验 E E E 是可获得的数据或反馈,性能 P P P 是正确率、误差、排序质量、用户满意度等指标。
1.8 朴素贝叶斯:监督分类器中的概率基线
AI18/SVM 课件的监督学习列表中会把 Naive Bayes 和决策树、kNN、最小二乘分类放在一起。朴素贝叶斯的详细概率推理放在"概率与贝叶斯网络大抄",这里记住它作为分类器的输入输出和核心假设。
输入:样本特征 x = ( x 1 , … , x d ) x = (x_1, \dots, x_d) x = ( x 1 , … , x d ) ;类别标签 y ∈ { 1 , … , K } y \in \{1, \dots, K\} y ∈ { 1 , … , K } 。
输出:y ^ = arg max y P ( y ∣ x ) \hat{y} = \arg\max_y P(y \mid x) y ^ = arg max y P ( y ∣ x ) 。用贝叶斯公式 P ( y ∣ x ) ∝ P ( y ) P ( x ∣ y ) P(y \mid x) \propto P(y)P(x \mid y) P ( y ∣ x ) ∝ P ( y ) P ( x ∣ y ) 。
朴素条件独立假设:P ( x ∣ y ) = ∏ j = 1 d P ( x j ∣ y ) P(x \mid y) = \prod_{j=1}^{d} P(x_j \mid y) P ( x ∣ y ) = ∏ j = 1 d P ( x j ∣ y )
所以分类规则:y ^ = arg max y P ( y ) ∏ j = 1 d P ( x j ∣ y ) \hat{y} = \arg\max_y P(y) \prod_{j=1}^{d} P(x_j \mid y) y ^ = arg max y P ( y ) ∏ j = 1 d P ( x j ∣ y )
2021 选择题常考 :Naive Bayes 假设是在给定类别标签后,各属性条件独立。
2. 泛化主线:模型不是越复杂越好
2.1 三种误差:训练、测试、泛化
训练误差是模型在训练集上的错误:
E train = 1 n ∑ i = 1 n ℓ ( f ( x i ) , y i ) E_{\text{train}} = \frac{1}{n} \sum_{i=1}^{n} \ell(f(x_i), y_i)
E train = n 1 i = 1 ∑ n ℓ ( f ( x i ) , y i )
测试误差是在独立测试集上的错误。泛化误差是模型在同分布新样本上的期望错误:
E gen = E ( x , y ) ∼ P [ ℓ ( f ( x ) , y ) ] E_{\text{gen}} = \mathbb{E}_{(x,y) \sim P}[\ell(f(x), y)]
E gen = E ( x , y ) ∼ P [ ℓ ( f ( x ) , y ) ]
考试中"泛化好"指新样本表现好,不是只在训练集上表现好。
2.2 欠拟合、过拟合和奥卡姆剃刀
模型复杂度从低到高时,常见现象:
太简单:欠拟合,训练误差和测试误差都高。
适中:能抓住主要规律,测试误差最低。
太复杂:过拟合,训练误差很低,测试误差升高。
奥卡姆剃刀原则:在解释数据能力相近时,优先选择更简单的假设。因为复杂模型更容易把噪声当规律。
2021 填空图常考 :模型复杂度从低到高依次对应欠拟合、理想复杂度、过拟合。
2.3 训练集、验证集、测试集的分工
训练集:用于学习参数。
验证集:用于选模型结构和超参数,例如 k k k 、树深度、正则化系数 λ \lambda λ 、SVM 的 C C C 。
测试集:最后一次评估泛化能力,不应参与调参。
2.4 交叉验证:用数据稳定地选模型
交叉验证的直觉:如果模型过拟合,它对训练数据的细微变化会很敏感;拿掉一部分数据后,拟合结果会明显变化。
K 折交叉验证步骤:
把数据分成 K 份。
每次拿 K − 1 份训练,剩下 1 份验证。
重复 K 次,取平均验证误差。
选择平均验证误差最小的模型或超参数。
3. 决策树
用信息增益递归地问最有用的问题
3.1 任务与输入输出
决策树主要用于分类,也可扩展到回归树。
输入:属性向量 x = ( x 1 , … , x d ) x = (x_1, \dots, x_d) x = ( x 1 , … , x d ) ,属性可以是布尔、离散或连续。
输出:类别标签 y y y 。
学到的东西:一棵树。内部节点测试属性,分支对应属性取值,叶子节点给出类别。
餐厅例子中,输入属性包括是否有替代餐厅、是否周五/周六、是否饥饿、顾客数量、价格、是否下雨、是否预约、餐厅类型、等待时间等;输出是是否等待。
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
核心问题是如何选择属性 A A A 。
3.4 熵:一个节点有多混乱
二分类中,若节点 S S S 中正例数为 p p p 、负例数为 n n n ,则熵为:
H ( S ) = − p p + n log 2 p p + n − n p + n log 2 n p + n H(S) = -\frac{p}{p+n} \log_2 \frac{p}{p+n} - \frac{n}{p+n} \log_2 \frac{n}{p+n}
H ( S ) = − p + n p log 2 p + n p − p + n n log 2 p + n n
约定 0 log 2 0 = 0 0 \log_2 0 = 0 0 log 2 0 = 0 。性质:
全正或全负:H ( S ) = 0 H(S) = 0 H ( S ) = 0 ,节点最纯。
正负各半:H ( S ) = 1 H(S) = 1 H ( S ) = 1 ,二分类中最混乱。
多分类中:
H ( S ) = − ∑ k = 1 K p k log 2 p k H(S) = -\sum_{k=1}^{K} p_k \log_2 p_k
H ( S ) = − k = 1 ∑ K p k log 2 p k
其中 p k p_k p k 是类别 k k k 的比例。
3.5 信息增益:按属性划分后熵下降多少
属性 A A A 把样本集 S S S 划分成若干子集 S v S_v S v 。划分后的剩余不确定性为:
Remainder ( A ) = ∑ v ∈ Values ( A ) ∣ S v ∣ ∣ S ∣ H ( S v ) \text{Remainder}(A) = \sum_{v \in \text{Values}(A)} \frac{|S_v|}{|S|} H(S_v)
Remainder ( A ) = v ∈ Values ( A ) ∑ ∣ S ∣ ∣ S v ∣ H ( S v )
信息增益为:
Gain ( S , A ) = H ( S ) − Remainder ( A ) \text{Gain}(S, A) = H(S) - \text{Remainder}(A)
Gain ( S , A ) = H ( S ) − Remainder ( A )
选择信息增益最大的属性,因为它让类别不确定性下降最多。
餐厅例子中,原始训练集有 6 个正例和 6 个负例:H ( S ) = 1 H(S) = 1 H ( 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
Gain ( S , Patrons ) ≈ 0 . 5 4 1 , Gain ( S , Type ) = 0
所以根节点选 Patrons 比 Type 更合理。
3.6 Gini 指数:另一种纯度度量
有些教材用 Gini:
Gini ( S ) = 1 − ∑ k = 1 K p k 2 \text{Gini}(S) = 1 - \sum_{k=1}^{K} p_k^2
Gini ( S ) = 1 − k = 1 ∑ K p k 2
Gini 越小,节点越纯。本课程重点是 entropy 和 information gain,Gini 只需知道含义。
3.7 无冲突训练集一定存在零训练误差决策树
题目:证明对于不含冲突数据的训练集,必存在与训练集一致的决策树。不含冲突数据指:x i = x j ⇒ y i = y j x_i = x_j \Rightarrow y_i = y_j x i = x j ⇒ y i = y j 。
证明思路是构造法:
如果当前节点中所有样本类别相同,直接建叶子节点。
如果当前节点中存在不同类别样本,因为数据无冲突,这些样本的特征向量不可能完全相同。
因而至少存在某个特征维度,使得不同类别样本在该维度取值不同。
对离散特征,可按该特征取值继续分支;对连续特征,可选阈值把不同取值分开。
不断划分,最极端时每个叶子只包含相同特征向量的样本。
由于无冲突,同一叶子中的样本标签唯一,给叶子标该类别即可。
因此这棵充分生长的树对训练集中每个样本都预测正确,训练误差为 0。
3.8 决策树过拟合和剪枝
决策树容易过拟合,因为深树能记住训练集。处理方法:
预剪枝:生长过程中提前停止,例如限制最大深度、最小叶子样本数、最小信息增益。
后剪枝:先长成较大树,再用验证集删除无益子树。
考试判断:根节点信息增益不一定大于子节点的信息增益。因为根节点和子节点的信息增益是在不同样本子集上算的,不能直接比较。
3.9 决策树边界识别
在二维图上,决策树边界常是轴对齐的分段矩形区域。看到"横平竖直、块状划分",优先想到 decision tree。
4. kNN
不显式训练,靠最近样本投票
4.1 任务与输入输出
kNN 可用于分类和回归。
输入:训练集 D = { ( x i , y i ) } i = 1 n D = \{(x_i, y_i)\}_{i=1}^n D = { ( x i , y i ) } i = 1 n ;新样本 x x x ;邻居数 k k k ;距离函数 d ( ⋅ , ⋅ ) d(\cdot, \cdot) d ( ⋅ , ⋅ ) 。
分类输出:y ^ = majority { y i : x i ∈ N k ( x ) } \hat{y} = \text{majority}\{y_i : x_i \in N_k(x)\} y ^ = majority { y i : x i ∈ N k ( x ) } ,其中 N k ( x ) N_k(x) N k ( x ) 是距离 x x x 最近的 k k k 个训练样本。
回归输出:y ^ = 1 k ∑ x i ∈ N k ( x ) y i \hat{y} = \frac{1}{k} \sum_{x_i \in N_k(x)} y_i y ^ = k 1 ∑ x i ∈ N k ( x ) y i 。
4.2 距离决定"相似"
常用距离:
d 2 ( x , z ) = ∑ j = 1 d ( x j − z j ) 2 d_2(x, z) = \sqrt{\sum_{j=1}^{d}(x_j - z_j)^2}
d 2 ( x , z ) = j = 1 ∑ d ( x j − z j ) 2
d 1 ( x , z ) = ∑ j = 1 d ∣ x j − z j ∣ d_1(x, z) = \sum_{j=1}^{d} |x_j - z_j|
d 1 ( x , z ) = j = 1 ∑ d ∣ x j − z j ∣
若特征尺度差异很大,应先标准化,否则大尺度特征会支配距离。
4.3 k 的影响:小 k 高方差,大 k 高偏差
k = 1 k = 1 k = 1 :边界复杂,训练误差通常最低,容易过拟合。
k k k 增大:边界更平滑,抗噪声更强。
k = n k = n k = n :所有样本共同投票,分类时总预测训练集多数类,通常欠拟合。
2021 判断题 :"k 从 1 增加到 n,训练集分类精度始终增加。"答案是错,通常 k = 1 k = 1 k = 1 训练精度最高,增大 k 可能降低训练精度。
4.4 kNN 边界识别
最近邻分类边界常是不规则、折线状、围绕训练点形成 Voronoi 风格区域。看到"破碎弯曲、贴着点"的边界,优先想到 nearest neighbor。
5. 线性预测和最小二乘
5.1 线性分类和线性回归的共同形式
线性模型打分:f ( x ) = w T x + b f(x) = w^T x + b f ( x ) = w T x + b
二分类预测:y ^ = sign ( w T x + b ) \hat{y} = \text{sign}(w^T x + b) y ^ = sign ( w T x + b )
回归预测:y ^ = w T x + b \hat{y} = w^T x + b y ^ = w T x + b
决策边界为:w T x + b = 0 w^T x + b = 0 w T x + b = 0 ,其中 w w w 是超平面的法向量,b b b 控制平移。
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 ( y ^ , y ) = 1 [ y ^ = y ] 。直接最小化 0/1 loss 通常很难,所以课件引入替代损失,例如平方损失、hinge loss、logistic loss。
5.3 最小二乘回归:闭式解必须会推
设 X ∈ R n × d X \in \mathbb{R}^{n \times d} X ∈ R n × d 的第 i i i 行是 x i T x_i^T x i T ,y ∈ R n y \in \mathbb{R}^n y ∈ R n 是标签列向量。忽略偏置或把偏置并入第一列全 1 特征,目标为:
J ( w ) = ∥ X w − y ∥ 2 2 J(w) = \|Xw - y\|_2^2
J ( w ) = ∥ X w − y ∥ 2 2
展开:J ( w ) = ( X w − y ) T ( X w − y ) J(w) = (Xw - y)^T(Xw - y) J ( w ) = ( X w − y ) T ( X w − y ) 。求梯度:∇ w J ( w ) = 2 X T ( X w − y ) \nabla_w J(w) = 2X^T(Xw - y) ∇ w J ( w ) = 2 X T ( X w − y ) 。令梯度为 0:2 X T ( X w − y ) = 0 2X^T(Xw - y) = 0 2 X T ( X w − y ) = 0 ,得到正规方程:
X T X w = X T y X^T X w = X^T y
X T X w = X T y
若 X T X X^T X X T X 可逆:w ∗ = ( X T X ) − 1 X T y w^* = (X^T X)^{-1} X^T y w ∗ = ( X T X ) − 1 X T y 。若不可逆,用 Moore-Penrose 伪逆:w ∗ = X + y w^* = X^+ y w ∗ = X + y 。
5.4 加权最小二乘:2020 大题模板
目标:
min w ∑ i = 1 n r i ( y i − w T x i ) 2 \min_w \sum_{i=1}^{n} r_i (y_i - w^T x_i)^2
w min i = 1 ∑ n r i ( y i − w T x i ) 2
令 R = diag ( r 1 , … , r n ) R = \text{diag}(r_1, \dots, r_n) R = diag ( r 1 , … , r n ) ,矩阵形式:J ( w ) = ( y − X w ) T R ( y − X w ) J(w) = (y - Xw)^T R (y - Xw) J ( w ) = ( y − X w ) T R ( y − X w ) 。因为 R R R 是对角权重矩阵,且通常 R = R T R = R^T R = R T ,求梯度:
∇ w J ( w ) = − 2 X T R ( y − X w ) = 2 X T R X w − 2 X T R y \nabla_w J(w) = -2X^T R (y - Xw) = 2X^T R X w - 2X^T R y
∇ w J ( w ) = − 2 X T R ( y − X w ) = 2 X T R X w − 2 X T R y
令梯度为 0:X T R X w = X T R y X^T R X w = X^T R y X T R X w = X T R y 。
若 X T R X X^T R X X T R X 可逆:w ∗ = ( X T R X ) − 1 X T R y w^* = (X^T R X)^{-1} X^T R y w ∗ = ( X T R X ) − 1 X T R y 。
若不可逆:w ∗ = ( X T R X ) + X T R y w^* = (X^T R X)^+ X^T R y w ∗ = ( X T R X ) + X T R y 。
解释:r i r_i r i 越大,第 i i i 个样本的误差越重要;r i = 0 r_i = 0 r i = 0 相当于忽略该样本。
5.5 带 L2 正则的最小二乘
普通 L2 正则:J ( w ) = ∥ X w − y ∥ 2 2 + λ ∥ w ∥ 2 2 J(w) = \|Xw - y\|_2^2 + \lambda \|w\|_2^2 J ( w ) = ∥ X w − y ∥ 2 2 + λ ∥ w ∥ 2 2 。梯度:∇ w J ( w ) = 2 X T ( X w − y ) + 2 λ w \nabla_w J(w) = 2X^T(Xw - y) + 2\lambda w ∇ w J ( w ) = 2 X T ( X w − y ) + 2 λ w 。令 0:( X T X + λ I ) w = X T y (X^T X + \lambda I)w = X^T y ( X T X + λ I ) w = X T y 。闭式解:
w ∗ = ( X T X + λ I ) − 1 X T y w^* = (X^T X + \lambda I)^{-1} X^T y
w ∗ = ( X T X + λ I ) − 1 X T y
带对角正则:J ( w ) = ∥ X w − y ∥ 2 2 + λ w T D w J(w) = \|Xw - y\|_2^2 + \lambda w^T D w J ( w ) = ∥ X w − y ∥ 2 2 + λ w T D w ,其中 D D D 为对角矩阵,则 w ∗ = ( X T X + λ D ) − 1 X T y w^* = (X^T X + \lambda D)^{-1} X^T y w ∗ = ( X T X + λ D ) − 1 X T y 。D j j D_{jj} D j j 越大,对第 j j j 个特征权重惩罚越强。
5.6 L1 和 L2 正则区别
L2 正则 :Ω 2 ( w ) = ∥ w ∥ 2 2 = ∑ j = 1 d w j 2 \Omega_2(w) = \|w\|_2^2 = \sum_{j=1}^{d} w_j^2 Ω 2 ( w ) = ∥ w ∥ 2 2 = ∑ j = 1 d w j 2 。优点是容易优化,常有闭式解或平滑梯度。作用是让权重变小,降低过拟合。
L1 正则 :Ω 1 ( w ) = ∥ w ∥ 1 = ∑ j = 1 d ∣ w j ∣ \Omega_1(w) = \|w\|_1 = \sum_{j=1}^{d} |w_j| Ω 1 ( w ) = ∥ w ∥ 1 = ∑ j = 1 d ∣ w j ∣ 。作用是产生稀疏解,使一部分权重精确为 0,相当于自动特征选择。
5.7 多分类最小二乘
若 Y ∈ R n × k Y \in \mathbb{R}^{n \times k} Y ∈ R n × k 是 one-hot 标签矩阵,W ∈ R d × k W \in \mathbb{R}^{d \times k} W ∈ R d × k ,目标为 min W ∥ X W − Y ∥ F 2 \min_W \|XW - Y\|_F^2 min W ∥ X W − Y ∥ F 2 。正规方程:X T X W = X T Y X^T X W = X^T Y X T X W = X T Y 。若 X T X X^T X X T X 可逆:W ∗ = ( X T X ) − 1 X T Y W^* = (X^T X)^{-1} X^T Y W ∗ = ( X T X ) − 1 X T Y 。预测时取最大分量:y ^ = arg max k ( W T x ) k \hat{y} = \arg\max_k (W^T x)_k y ^ = arg max k ( W T x ) k 。
5.8 多项式回归:线性是对参数线性,不一定对输入线性
引入基函数:ϕ ( x ) = ( 1 , x , x 2 , … , x m ) \phi(x) = (1, x, x^2, \dots, x^m) ϕ ( x ) = ( 1 , x , x 2 , … , x m ) ,模型 f ( x ) = w T ϕ ( x ) f(x) = w^T \phi(x) f ( x ) = w T ϕ ( x ) 。它对参数 w w w 仍是线性的,因此仍可用最小二乘;但对原始输入 x x x 是非线性的。多项式次数越高,越容易过拟合。
6. 逻辑回归
线性打分经过 sigmoid 变成概率
6.1 任务与输入输出
逻辑回归用于分类,名字里有 regression 但通常不是做连续值回归。
二分类输入:样本特征 x ∈ R d x \in \mathbb{R}^d x ∈ R d ;标签 y ∈ { 0 , 1 } y \in \{0, 1\} y ∈ { 0 , 1 } 。
输出:P ( y = 1 ∣ x ) P(y = 1 \mid x) P ( y = 1 ∣ x ) 。
含义:模型直接估计条件概率,属于 discriminative model。
6.2 Sigmoid 函数
逻辑函数:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}}
σ ( z ) = 1 + e − z 1
性质:0 < σ ( z ) < 1 0 < \sigma(z) < 1 0 < σ ( z ) < 1 ,σ ( 0 ) = 1 2 \sigma(0) = \frac{1}{2} σ ( 0 ) = 2 1 。导数:σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1 - \sigma(z)) σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) 。
6.3 Logistic 模型和决策边界
令 z = w T x + b z = w^T x + b z = w T x + b ,模型:
P ( y = 1 ∣ x ) = σ ( w T x + b ) , P ( y = 0 ∣ x ) = 1 − σ ( w T x + b ) P(y = 1 \mid x) = \sigma(w^T x + b), \quad P(y = 0 \mid x) = 1 - \sigma(w^T x + b)
P ( y = 1 ∣ x ) = σ ( w T x + b ) , P ( y = 0 ∣ x ) = 1 − σ ( w T x + b )
预测规则:
y ^ = { 1 , P ( y = 1 ∣ x ) ≥ 1 2 0 , P ( y = 1 ∣ x ) < 1 2 \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}
y ^ = { 1 , 0 , P ( y = 1 ∣ x ) ≥ 2 1 P ( y = 1 ∣ x ) < 2 1
由于 σ ( z ) ≥ 1 2 \sigma(z) \geq \frac{1}{2} σ ( z ) ≥ 2 1 等价于 z ≥ 0 z \geq 0 z ≥ 0 ,所以决策边界仍是 w T x + b = 0 w^T x + b = 0 w T x + b = 0 。
6.4 Log odds:逻辑回归假设对数几率线性
odds 是事件发生概率与不发生概率之比:odds = p 1 − p \text{odds} = \frac{p}{1-p} odds = 1 − p p 。log odds 为:
logit ( p ) = log p 1 − p \text{logit}(p) = \log \frac{p}{1-p}
logit ( p ) = log 1 − p p
对逻辑回归:
log P ( y = 1 ∣ x ) P ( y = 0 ∣ x ) = w T x + b \log \frac{P(y=1 \mid x)}{P(y=0 \mid x)} = w^T x + b
log P ( y = 0 ∣ x ) P ( y = 1 ∣ x ) = w T x + b
所以逻辑回归的核心假设是:类别的对数几率是输入特征的线性函数。
6.5 似然函数和交叉熵损失
对单个样本,令 p i = σ ( w T x i + b ) p_i = \sigma(w^T x_i + b) p i = σ ( w T x i + b ) 。由于 y i ∈ { 0 , 1 } y_i \in \{0,1\} y i ∈ { 0 , 1 } ,可以统一写:
P ( y i ∣ x i ; w , b ) = p i y i ( 1 − p i ) 1 − y i P(y_i \mid x_i; w, b) = p_i^{y_i}(1 - p_i)^{1-y_i}
P ( y i ∣ x i ; w , b ) = p i y i ( 1 − p i ) 1 − y i
数据集似然:L ( w , b ) = ∏ i = 1 n p i y i ( 1 − p i ) 1 − y i L(w, b) = \prod_{i=1}^{n} p_i^{y_i}(1-p_i)^{1-y_i} L ( w , b ) = ∏ i = 1 n p i y i ( 1 − p i ) 1 − y i 。
对数似然:ℓ ( w , b ) = ∑ i = 1 n [ y i log p i + ( 1 − y i ) log ( 1 − p i ) ] \ell(w, b) = \sum_{i=1}^{n} [y_i \log p_i + (1-y_i)\log(1-p_i)] ℓ ( w , b ) = ∑ 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) J ( w , b ) = − ℓ ( w , b ) 。单样本交叉熵:L i = − [ y i log p i + ( 1 − y i ) log ( 1 − p i ) ] L_i = -[y_i \log p_i + (1-y_i)\log(1-p_i)] L i = − [ y i log p i + ( 1 − y i ) log ( 1 − p i ) ] 。
6.6 交叉熵梯度:核心结果是 p − y
单样本设 z = w T x + b , p = σ ( z ) z = w^T x + b,\; p = \sigma(z) z = w T x + b , p = σ ( z ) ,损失 L = − [ y log p + ( 1 − y ) log ( 1 − p ) ] L = -[y \log p + (1-y)\log(1-p)] L = − [ y log p + ( 1 − y ) log ( 1 − p ) ] 。
先对 p p p 求导:
∂ L ∂ p = − y p + 1 − y 1 − p \frac{\partial L}{\partial p} = -\frac{y}{p} + \frac{1-y}{1-p}
∂ p ∂ L = − p y + 1 − p 1 − y
再用 sigmoid 导数 ∂ p ∂ z = p ( 1 − p ) \frac{\partial p}{\partial z} = p(1-p) ∂ z ∂ p = p ( 1 − p ) ,链式法则:
∂ L ∂ z = ( − y p + 1 − y 1 − p ) p ( 1 − p ) = − y ( 1 − p ) + ( 1 − y ) p = p − y \frac{\partial L}{\partial z} = \left(-\frac{y}{p} + \frac{1-y}{1-p}\right) p(1-p) = -y(1-p) + (1-y)p = p - y
∂ z ∂ L = ( − p y + 1 − p 1 − y ) p ( 1 − p ) = − y ( 1 − p ) + ( 1 − y ) p = p − y
因为 ∂ z ∂ w j = x j , ∂ z ∂ b = 1 \frac{\partial z}{\partial w_j} = x_j,\; \frac{\partial z}{\partial b} = 1 ∂ w j ∂ z = x j , ∂ b ∂ z = 1 ,所以:
∂ L ∂ w j = ( p − y ) x j , ∂ L ∂ b = p − y \frac{\partial L}{\partial w_j} = (p - y)x_j, \quad \frac{\partial L}{\partial b} = p - y
∂ w j ∂ L = ( p − y ) x j , ∂ b ∂ L = p − y
向量形式:∇ w L = ( p − y ) x \nabla_w L = (p - y)x ∇ w L = ( p − y ) x 。数据集梯度:∇ w J = ∑ i = 1 n ( p i − y i ) x i \nabla_w J = \sum_{i=1}^{n}(p_i - y_i)x_i ∇ w J = ∑ i = 1 n ( p i − y i ) x i ,∂ J ∂ b = ∑ i = 1 n ( p i − y i ) \frac{\partial J}{\partial b} = \sum_{i=1}^{n}(p_i - y_i) ∂ b ∂ J = ∑ i = 1 n ( p i − y i ) 。
6.7 梯度下降更新
单样本 SGD:w ← w − η ( p − y ) x w \leftarrow w - \eta(p - y)x w ← w − η ( p − y ) x ,b ← b − η ( p − y ) b \leftarrow b - \eta(p - y) b ← b − η ( p − y ) 。
批量梯度下降:w ← w − η ∑ i = 1 n ( p i − y i ) x i w \leftarrow w - \eta \sum_{i=1}^{n}(p_i - y_i)x_i w ← w − η ∑ i = 1 n ( p i − y i ) x i ,b ← b − η ∑ i = 1 n ( p i − y i ) b \leftarrow b - \eta \sum_{i=1}^{n}(p_i - y_i) b ← b − η ∑ i = 1 n ( p i − y i ) 。
带 L2 正则:J reg = J + λ ∥ w ∥ 2 2 J_{\text{reg}} = J + \lambda \|w\|_2^2 J reg = J + λ ∥ w ∥ 2 2 ,梯度增加 2 λ w 2\lambda w 2 λ w 。
6.8 Softmax 回归:多分类扩展
多分类中,每个类别 k k k 有参数 w k , b k w_k, b_k w k , b k :
P ( y = k ∣ x ) = exp ( w k T x + b k ) ∑ j = 1 K exp ( w j T x + b j ) P(y = k \mid x) = \frac{\exp(w_k^T x + b_k)}{\sum_{j=1}^{K} \exp(w_j^T x + b_j)}
P ( y = k ∣ x ) = ∑ j = 1 K exp ( w j T x + b j ) exp ( w k T x + b k )
若真实类别为 t t t ,交叉熵损失为 L = − log P ( y = t ∣ x ) L = -\log P(y = t \mid x) L = − log P ( y = t ∣ x ) 。
考试中低概率,记住 softmax 是把多个类别得分归一化成概率分布。
6.9 逻辑回归、线性回归、SVM 对比
线性回归输出任意实数,适合连续值预测;逻辑回归输出概率,适合分类;SVM 输出间隔符号,目标是最大化分类间隔。
关键区别:
Logistic regression:概率模型,损失是 cross-entropy/logistic loss,通常所有样本都有梯度贡献。
SVM:最大间隔模型,损失是 hinge loss,决策边界主要由支持向量决定。
7. SVM
用最大间隔选择最稳的分离超平面
7.1 任务与输入输出
SVM 主要用于分类。
输入:训练集 D = { ( x i , y i ) } i = 1 n D = \{(x_i, y_i)\}_{i=1}^n D = { ( x i , y i ) } i = 1 n ;特征 x i ∈ R d x_i \in \mathbb{R}^d x i ∈ R d ;标签 y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} y i ∈ { − 1 , + 1 } 。
输出:g ( x ) = sign ( w T x + b ) g(x) = \text{sign}(w^T x + b) g ( x ) = sign ( w T x + b ) 。
核心含义:在能正确分类训练集的超平面中,选择间隔最大的那个。间隔大通常意味着对小扰动更稳,泛化更好。
7.2 函数间隔和几何间隔
线性分类器 f ( x ) = w T x + b f(x) = w^T x + b f ( x ) = w T x + b ,正确分类条件 y i ( w T x i + b ) > 0 y_i(w^T x_i + b) > 0 y i ( w T x i + b ) > 0 。
函数间隔:γ ^ i = y i ( w T x i + b ) \hat{\gamma}_i = y_i(w^T x_i + b) γ ^ i = y i ( w T x i + b )
几何间隔(点到超平面的带符号距离):γ i = y i ( w T x i + b ) ∥ w ∥ \gamma_i = \dfrac{y_i(w^T x_i + b)}{\|w\|} γ i = ∥ w ∥ y i ( w T x i + b )
因为同时缩放 w , b w, b w , b 不改变决策边界,所以 SVM 规定最近点满足函数间隔 1:y i ( w T x i + b ) ≥ 1 y_i(w^T x_i + b) \geq 1 y i ( w T x i + b ) ≥ 1 。此时最近点的几何间隔为 γ = 1 ∥ w ∥ \gamma = \frac{1}{\|w\|} γ = ∥ w ∥ 1 。
两条间隔边界:w T x + b = 1 , w T x + b = − 1 w^T x + b = 1,\; w^T x + b = -1 w T x + b = 1 , w T x + b = − 1 ,二者之间宽度 2 ∥ w ∥ \frac{2}{\|w\|} ∥ w ∥ 2 。
7.3 Hard Margin SVM 原问题
线性可分时:
min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + 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
w , b min 2 1 ∥ w ∥ 2 s.t. y i ( w T x i + b ) ≥ 1 , i = 1 , … , n
最大化间隔 2 ∥ w ∥ \frac{2}{\|w\|} ∥ w ∥ 2 等价于最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 2 1 ∥ w ∥ 2 ,也就是使支持向量的函数间隔刚好为 1 或 -1。
7.4 支持向量:真正决定边界的点
支持向量(在 Hard Margin 下)满足 y i ( w T x i + b ) = 1 y_i(w^T x_i + b) = 1 y i ( w T x i + b ) = 1 ,它们落在间隔边界上。远离边界且分类正确的点满足严格不等式,通常不影响 hard margin SVM 解。
7.5 对偶问题:考试概念和证明都要会认
原问题:
min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + b ) − 1 ≥ 0 \min_{w,b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^T x_i + b) - 1 \geq 0
w , b min 2 1 ∥ w ∥ 2 s.t. y i ( w T x i + b ) − 1 ≥ 0
构造拉格朗日函数,α i ≥ 0 \alpha_i \geq 0 α i ≥ 0 :
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i [ y i ( w T x i + 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]
L ( w , b , α ) = 2 1 ∥ w ∥ 2 − i = 1 ∑ n α i [ y i ( w T x i + b ) − 1 ]
先对 w , b w, b w , b 最小化。对 w w w 求导:
∂ L ∂ w = w − ∑ i = 1 n α i y i x i \frac{\partial L}{\partial w} = w - \sum_{i=1}^{n} \alpha_i y_i x_i
∂ w ∂ L = w − i = 1 ∑ n α i y i x i
令其为 0:
w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^{n} \alpha_i y_i x_i
w = i = 1 ∑ n α i y i x i
对 b b b 求导:
∂ L ∂ b = − ∑ i = 1 n α i y i \frac{\partial L}{\partial b} = -\sum_{i=1}^{n} \alpha_i y_i
∂ b ∂ L = − i = 1 ∑ n α i y i
令其为 0:
∑ i = 1 n α i y i = 0 \sum_{i=1}^{n} \alpha_i y_i = 0
i = 1 ∑ n α i y i = 0
代回拉格朗日函数得到对偶问题:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j \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
α max i = 1 ∑ n α i − 2 1 i = 1 ∑ n j = 1 ∑ n α i α j y i y j x i T x j
约束:α i ≥ 0 , ∑ i = 1 n α i y i = 0 \alpha_i \geq 0,\; \sum_{i=1}^{n} \alpha_i y_i = 0 α i ≥ 0 , ∑ i = 1 n α i y i = 0 。
KKT 互补条件:α i [ y i ( w T x i + b ) − 1 ] = 0 \alpha_i [y_i(w^T x_i + b) - 1] = 0 α i [ y i ( w T x i + b ) − 1 ] = 0 。因此:
若 α i > 0 \alpha_i > 0 α i > 0 ,则 y i ( w T x i + b ) = 1 y_i(w^T x_i + b) = 1 y i ( w T x i + b ) = 1 ,该点是支持向量。
若 y i ( w T x i + b ) > 1 y_i(w^T x_i + b) > 1 y i ( w T x i + b ) > 1 ,则 α i = 0 \alpha_i = 0 α i = 0 ,该点不是支持向量。
如何求 α i \alpha_i α i :
利用 ∑ i = 1 n α i y i = 0 \sum_{i=1}^{n} \alpha_i y_i = 0 ∑ i = 1 n α i y i = 0 表示出 α i \alpha_i α i 之间的关系,代回 ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j \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 = 1 n α i − 2 1 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j 得到一个只包含 α i \alpha_i α i 的式子,我们的目标是使这个式子最大。
(结合支持向量约束求出具体 α i \alpha_i α i 与 w , b w, b w , b 。)
7.6 用对偶解做预测
由 w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^{n} \alpha_i y_i x_i w = ∑ i = 1 n α i y i x i ,新样本的打分:
f ( x ) = w T x + b = ∑ i = 1 n α i y i x i T x + b f(x) = w^T x + b = \sum_{i=1}^{n} \alpha_i y_i x_i^T x + b
f ( x ) = w T x + b = i = 1 ∑ n α i y i x i T x + b
由于非支持向量 α i = 0 \alpha_i = 0 α i = 0 ,实际只需要和支持向量做内积。
7.7 Soft Margin SVM:不可分或有噪声时允许违反间隔
引入松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξ i ≥ 0 :
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i \min_{w,b,\xi} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^{n} \xi_i
w , b , ξ min 2 1 ∥ w ∥ 2 + C i = 1 ∑ n ξ i
约束:y i ( w T x i + b ) ≥ 1 − ξ i y_i(w^T x_i + b) \geq 1 - \xi_i y i ( w T x i + b ) ≥ 1 − ξ i ,ξ i ≥ 0 \xi_i \geq 0 ξ i ≥ 0 。
含义:
ξ i = 0 \xi_i = 0 ξ i = 0 :样本在正确间隔外或间隔边界上。
0 < ξ i < 1 0 < \xi_i < 1 0 < ξ i < 1 :分类正确,但进入间隔内部。
ξ i ≥ 1 \xi_i \geq 1 ξ i ≥ 1 :样本可能被错分。
C C C 控制对违反间隔的惩罚:
C C C 大:更不愿犯错,更接近 hard margin,间隔可能更窄。
C C C 小:允许更多违反,间隔更宽,可能泛化更好。
Soft margin 的对偶和 hard margin 很像,只是多了上界:0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0 ≤ α i ≤ C 。
7.8 Hinge loss:SVM 的损失函数视角
单样本 hinge loss:ℓ hinge ( x i , y i ) = max ( 0 , 1 − y i ( w T x i + b ) ) \ell_{\text{hinge}}(x_i, y_i) = \max(0, 1 - y_i(w^T x_i + b)) ℓ hinge ( x i , y i ) = max ( 0 , 1 − y i ( w T x i + b ) ) 。
Soft margin SVM 可写成:
min w , b 1 2 ∥ w ∥ 2 + C ∑ i = 1 n max ( 0 , 1 − y i ( w T x i + b ) ) \min_{w,b} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^{n} \max(0, 1 - y_i(w^T x_i + b))
w , b min 2 1 ∥ w ∥ 2 + C i = 1 ∑ n max ( 0 , 1 − y i ( w T x i + b ) )
若 y i f ( x i ) ≥ 1 y_i f(x_i) \geq 1 y i f ( x i ) ≥ 1 ,损失为 0;若分类正确但间隔不足,损失为正;若错分,损失更大。
7.9 手算最大间隔超平面模板
适合二维小样本题。
画点或观察两类凸包。
找两类之间最近的点或线段,猜支持向量。
对正支持向量写:w T x i + b = 1 w^T x_i + b = 1 w T x i + b = 1 。
对负支持向量写:w T x i + b = − 1 w^T x_i + b = -1 w T x i + b = − 1 。
解线性方程得到 w , b w, b w , b 。
检查所有样本是否满足:y i ( w T x i + b ) ≥ 1 y_i(w^T x_i + b) \geq 1 y i ( w T x i + b ) ≥ 1 。
写分离超平面、间隔边界、分类函数和支持向量。
若只有一对最近点决定边界,最大间隔超平面是这两个点连线的垂直平分面。
7.10 HW10 手算样例
正例:x 1 = ( 1 , 2 ) T , x 2 = ( 2 , 3 ) T , x 3 = ( 3 , 3 ) T x_1 = (1, 2)^T,\; x_2 = (2, 3)^T,\; x_3 = (3, 3)^T x 1 = ( 1 , 2 ) T , x 2 = ( 2 , 3 ) T , x 3 = ( 3 , 3 ) T
负例:x 4 = ( 2 , 1 ) T , x 5 = ( 3 , 2 ) T x_4 = (2, 1)^T,\; x_5 = (3, 2)^T x 4 = ( 2 , 1 ) T , x 5 = ( 3 , 2 ) T
由几何位置猜支持向量为 x 1 , x 3 , x 5 x_1, x_3, x_5 x 1 , x 3 , x 5 。设 w = ( w 1 , w 2 ) T w = (w_1, w_2)^T w = ( w 1 , w 2 ) T ,列方程:
{ w 1 + 2 w 2 + b = 1 3 w 1 + 3 w 2 + b = 1 3 w 1 + 2 w 2 + b = − 1 \begin{cases} w_1 + 2w_2 + b = 1 \\ 3w_1 + 3w_2 + b = 1 \\ 3w_1 + 2w_2 + b = -1 \end{cases}
⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ w 1 + 2 w 2 + b = 1 3 w 1 + 3 w 2 + b = 1 3 w 1 + 2 w 2 + b = − 1
第二式减第三式:w 2 = 2 w_2 = 2 w 2 = 2 。第二式减第一式:2 w 1 + w 2 = 0 2w_1 + w_2 = 0 2 w 1 + w 2 = 0 ,所以 w 1 = − 1 , w 2 = 2 , b = − 2 w_1 = -1,\; w_2 = 2,\; b = -2 w 1 = − 1 , w 2 = 2 , b = − 2 。
最大间隔超平面:− z 1 + 2 z 2 − 2 = 0 -z_1 + 2z_2 - 2 = 0 − z 1 + 2 z 2 − 2 = 0
分类函数:g ( z ) = sign ( − z 1 + 2 z 2 − 2 ) g(z) = \text{sign}(-z_1 + 2z_2 - 2) g ( z ) = sign ( − z 1 + 2 z 2 − 2 )
支持向量:( 1 , 2 ) T , ( 3 , 3 ) T , ( 3 , 2 ) T (1, 2)^T,\; (3, 3)^T,\; (3, 2)^T ( 1 , 2 ) T , ( 3 , 3 ) T , ( 3 , 2 ) T
间隔宽度:2 ∥ w ∥ = 2 5 \dfrac{2}{\|w\|} = \dfrac{2}{\sqrt{5}} ∥ w ∥ 2 = 5 2
7.11 2021 SVM 手算样例
正例:x 1 = ( 2 , 3 ) T , x 2 = ( 3 , 3 ) T x_1 = (2, 3)^T,\; x_2 = (3, 3)^T x 1 = ( 2 , 3 ) T , x 2 = ( 3 , 3 ) T
负例:x 3 = ( 1 , 1 ) T x_3 = (1, 1)^T x 3 = ( 1 , 1 ) T
正类凸包是线段 y = 3 , x ∈ [ 2 , 3 ] y = 3,\; x \in [2, 3] y = 3 , x ∈ [ 2 , 3 ] ,离负点最近的正类点是 ( 2 , 3 ) T (2, 3)^T ( 2 , 3 ) T 。最大间隔边界由 ( 2 , 3 ) T (2, 3)^T ( 2 , 3 ) T 和 ( 1 , 1 ) T (1, 1)^T ( 1 , 1 ) T 决定。二者中点:
m = ( 3 2 , 2 ) T m = \left(\tfrac{3}{2}, 2\right)^T
m = ( 2 3 , 2 ) T
法向量可取:v = ( 2 , 3 ) T − ( 1 , 1 ) T = ( 1 , 2 ) T v = (2, 3)^T - (1, 1)^T = (1, 2)^T v = ( 2 , 3 ) T − ( 1 , 1 ) T = ( 1 , 2 ) T 。分离超平面是垂直平分线:v T ( z − m ) = 0 v^T(z - m) = 0 v T ( z − m ) = 0 ,即:
x + 2 y − 11 2 = 0 x + 2y - \tfrac{11}{2} = 0
x + 2 y − 2 1 1 = 0
规范化到支持向量函数间隔为 1。原打分 f ~ ( x , y ) = x + 2 y − 11 2 \tilde{f}(x, y) = x + 2y - \tfrac{11}{2} f ~ ( x , y ) = x + 2 y − 2 1 1 ,在 ( 2 , 3 ) (2, 3) ( 2 , 3 ) 上为 f ~ ( 2 , 3 ) = 5 2 \tilde{f}(2, 3) = \tfrac{5}{2} f ~ ( 2 , 3 ) = 2 5 ,在 ( 1 , 1 ) (1, 1) ( 1 , 1 ) 上为 f ~ ( 1 , 1 ) = − 5 2 \tilde{f}(1, 1) = -\tfrac{5}{2} f ~ ( 1 , 1 ) = − 2 5 。所以乘以 2 5 \tfrac{2}{5} 5 2 :
f ( x , y ) = 2 5 x + 4 5 y − 11 5 f(x, y) = \tfrac{2}{5} x + \tfrac{4}{5} y - \tfrac{11}{5}
f ( x , y ) = 5 2 x + 5 4 y − 5 1 1
即 w = ( 2 5 , 4 5 ) T , b = − 11 5 w = (\tfrac{2}{5}, \tfrac{4}{5})^T,\; b = -\tfrac{11}{5} w = ( 5 2 , 5 4 ) T , b = − 5 1 1 。
分类函数:g ( x , y ) = sign ( 2 5 x + 4 5 y − 11 5 ) g(x, y) = \text{sign}(\tfrac{2}{5} x + \tfrac{4}{5} y - \tfrac{11}{5}) g ( x , y ) = sign ( 5 2 x + 5 4 y − 5 1 1 )
等价地也可写:g ( x , y ) = sign ( x + 2 y − 11 2 ) g(x, y) = \text{sign}(x + 2y - \tfrac{11}{2}) g ( x , y ) = sign ( x + 2 y − 2 1 1 ) 。
7.12 新点是否影响 SVM 边界
若新点被当前 SVM 正确分类且远离边界,通常不影响 hard margin 边界。原因是它不是活跃约束,不是支持向量,对应 α = 0 \alpha = 0 α = 0 。
若新点被当前边界错分,改用 soft margin 后通常会影响优化目标。原因是它产生正的 hinge loss,可能成为支持向量,优化会重新权衡间隔和误差。严格说是否改变边界还取决于 C C C 和数据位置,但考试一般答"会影响,并说明 hinge loss/支持向量原因"。
8. 核方法
不显式升维,也能做非线性分类
8.1 从特征工程到非线性决策边界
线性模型的得分可写为 f ( x ) = w T ϕ ( x ) + b f(x) = w^T \phi(x) + b f ( x ) = w T ϕ ( x ) + b ,它对参数 w w w 和特征 ϕ ( x ) \phi(x) ϕ ( x ) 是线性的,但对原始输入 x x x 可以是非线性的。
例子:ϕ ( x ) = ( 1 , x , x 2 ) \phi(x) = (1, x, x^2) ϕ ( x ) = ( 1 , x , x 2 ) 可以表示非线性曲线。SVM 课件用体温、身高体重等例子说明:真实关系可能有非单调性、非线性和特征交互,需要构造高维特征。
8.2 Kernel trick
SVM 对偶中样本只以内积形式出现:x i T x j x_i^T x_j x i T x j 。如果先映射到高维空间 ϕ ( x ) \phi(x) ϕ ( x ) ,对偶中只需要 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T \phi(x_j) ϕ ( x i ) T ϕ ( x j ) 。定义核函数:
K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) K(x_i, x_j) = \phi(x_i)^T \phi(x_j)
K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j )
这样无需显式计算 ϕ ( x ) \phi(x) ϕ ( x ) ,只要能计算 K ( x i , x j ) K(x_i, x_j) K ( x i , x j ) 。
8.3 常见核函数
线性核:K ( x , z ) = x T z K(x, z) = x^T z K ( x , z ) = x T z
多项式核:K ( x , z ) = ( 1 + x T z ) p K(x, z) = (1 + x^T z)^p K ( x , z ) = ( 1 + x T z ) p
高斯 RBF 核:K ( x , z ) = exp ( − ∥ x − z ∥ 2 2 σ 2 ) K(x, z) = \exp\left(-\dfrac{\|x - z\|^2}{2\sigma^2}\right) K ( x , z ) = exp ( − 2 σ 2 ∥ x − z ∥ 2 )
RBF 核对应无限维特征映射,能形成非常灵活的非线性边界。
8.4 核矩阵必须对称半正定
给定样本 x 1 , … , x n x_1, \dots, x_n x 1 , … , x n ,核矩阵 K i j = K ( x i , x j ) K_{ij} = K(x_i, x_j) K i j = K ( x i , x j ) 。如果 K K K 来自某个特征映射内积,则 K i j = ϕ ( x i ) T ϕ ( x j ) K_{ij} = \phi(x_i)^T \phi(x_j) K i j = ϕ ( x i ) T ϕ ( x j ) 。
对称性:K i j = ϕ ( x i ) T ϕ ( x j ) = ϕ ( x j ) T ϕ ( x i ) = K j i K_{ij} = \phi(x_i)^T \phi(x_j) = \phi(x_j)^T \phi(x_i) = K_{ji} K i j = ϕ ( x i ) T ϕ ( x j ) = ϕ ( x j ) T ϕ ( x i ) = K j i
半正定性:对任意 a ∈ R n a \in \mathbb{R}^n a ∈ R n ,
a T K a = ∑ i = 1 n ∑ j = 1 n a i a j ϕ ( x i ) T ϕ ( x j ) = ∥ ∑ i = 1 n a i ϕ ( x i ) ∥ 2 ≥ 0 a^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
a T K a = i = 1 ∑ n j = 1 ∑ n a i a j ϕ ( x i ) T ϕ ( x j ) = ∥ ∥ ∥ ∥ ∥ ∥ i = 1 ∑ n a i ϕ ( x i ) ∥ ∥ ∥ ∥ ∥ ∥ 2 ≥ 0
所以有效核函数对应的核矩阵必须对称半正定。
8.5 核 SVM 的训练和预测
训练时把对偶中的内积替换为核函数:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) \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)
α max i = 1 ∑ n α i − 2 1 i = 1 ∑ n j = 1 ∑ n α i α j y i y j K ( x i , x j )
预测新样本:
f ( x ) = ∑ i = 1 n α i y i K ( x i , 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))
f ( x ) = i = 1 ∑ n α i y i K ( x i , x ) + b , g ( x ) = sign ( f ( x ) )
仍然只有支持向量对应的 α i \alpha_i α 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
( 1 , 1 ) ↦ + 1 , ( − 1 , − 1 ) ↦ + 1 , ( 1 , − 1 ) ↦ − 1 , ( − 1 , 1 ) ↦ − 1
原空间线性不可分,但二次特征中包含交互项 x 1 x 2 x_1 x_2 x 1 x 2 。因为:
x 1 x 2 > 0 ⇒ + 1 , x 1 x 2 < 0 ⇒ − 1 x_1 x_2 > 0 \Rightarrow +1, \quad x_1 x_2 < 0 \Rightarrow -1
x 1 x 2 > 0 ⇒ + 1 , x 1 x 2 < 0 ⇒ − 1
所以二次核 K ( x , z ) = ( 1 + x T z ) 2 K(x, z) = (1 + x^T z)^2 K ( x , z ) = ( 1 + x T z ) 2 可以把 XOR 分开。
9. K-Means
用交替最小化做聚类
9.1 任务与输入输出
K-Means 是无监督聚类方法。
输入:样本 D = { x i } i = 1 n D = \{x_i\}_{i=1}^n D = { x i } i = 1 n ;簇数 K K K 。
输出:每个样本的簇编号 c i ∈ { 1 , … , K } c_i \in \{1, \dots, K\} c i ∈ { 1 , … , K } ;每个簇的中心 μ 1 , … , μ K \mu_1, \dots, \mu_K μ 1 , … , μ K 。
目标:让同一簇内样本尽量接近自己的中心。
9.2 目标函数
K-Means 最小化类内平方和:
J = ∑ i = 1 n ∥ x i − μ c i ∥ 2 J = \sum_{i=1}^{n} \|x_i - \mu_{c_i}\|^2
J = i = 1 ∑ n ∥ x i − μ c i ∥ 2
其中 c i c_i c i 是样本 x i x_i x 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
分配步骤:c i = arg min k ∈ { 1 , … , K } ∥ x i − μ k ∥ 2 c_i = \arg\min_{k \in \{1,\dots,K\}} \|x_i - \mu_k\|^2 c i = arg min k ∈ { 1 , … , K } ∥ x i − μ k ∥ 2
更新步骤:μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \frac{1}{|C_k|} \sum_{x_i \in C_k} x_i μ k = ∣ C k ∣ 1 ∑ x i ∈ C k x i
9.4 为什么簇中心是均值
固定某个簇 C C C ,要求 min μ ∑ x i ∈ C ∥ x i − μ ∥ 2 \min_\mu \sum_{x_i \in C} \|x_i - \mu\|^2 min μ ∑ x i ∈ C ∥ x i − μ ∥ 2 。记 F ( μ ) = ∑ x i ∈ C ( x i − μ ) T ( x i − μ ) F(\mu) = \sum_{x_i \in C} (x_i - \mu)^T(x_i - \mu) F ( μ ) = ∑ x i ∈ C ( x i − μ ) T ( x i − μ ) 。
对 μ \mu μ 求梯度:∇ μ F ( μ ) = ∑ x i ∈ C 2 ( μ − x i ) \nabla_\mu F(\mu) = \sum_{x_i \in C} 2(\mu - x_i) ∇ μ F ( μ ) = ∑ x i ∈ C 2 ( μ − x i ) 。令梯度为 0:2 ∣ C ∣ μ − 2 ∑ x i ∈ C x i = 0 2|C|\mu - 2\sum_{x_i \in C} x_i = 0 2 ∣ C ∣ μ − 2 ∑ x i ∈ C x i = 0 ,所以:
μ = 1 ∣ C ∣ ∑ x i ∈ C x i \mu = \frac{1}{|C|} \sum_{x_i \in C} x_i
μ = ∣ C ∣ 1 x i ∈ C ∑ x i
这说明更新中心为均值是固定分配时的最优解。
9.5 K-Means 收敛证明
要证明 K-Means 收敛,围绕目标函数 J = ∑ i = 1 n ∥ x i − μ c i ∥ 2 J = \sum_{i=1}^{n}\|x_i - \mu_{c_i}\|^2 J = ∑ i = 1 n ∥ x i − μ c i ∥ 2 ,分两步说明。
第一步 ,固定中心 μ 1 , … , μ K \mu_1, \dots, \mu_K μ 1 , … , μ K ,重新分配每个样本到最近中心。对每个样本 x i x_i x i ,新中心距离不大于旧中心距离,因此每一项 ∥ x i − μ c i ∥ 2 \|x_i - \mu_{c_i}\|^2 ∥ x i − μ c i ∥ 2 不增加,整体 J J J 不增加。
第二步 ,固定簇分配 C 1 , … , C K C_1, \dots, C_K C 1 , … , C K ,把每个中心更新为簇内均值。上一节已证明均值最小化簇内平方误差,因此每个簇的误差不增加,整体 J J J 不增加。
所以每轮迭代后 J ( t + 1 ) ≤ J ( t ) J^{(t+1)} \leq J^{(t)} J ( t + 1 ) ≤ J ( t ) 。又因为 J ≥ 0 J \geq 0 J ≥ 0 ,目标函数单调不增且有下界。对有限数据,可能的簇分配数量有限;若某轮分配不变,中心也不变,算法终止。因此 K-Means 会收敛到一个局部最优或固定点。
注意:K-Means 不保证全局最优,结果受初始中心影响。
9.6 K-Means 手算题
若题目给出簇,求新中心,就直接取均值。例如 C 1 = { ( 0 , 6 ) , ( 6 , 0 ) } C_1 = \{(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)
μ 1 = 2 ( 0 , 6 ) + ( 6 , 0 ) = ( 3 , 3 )
若题目给候选初始中心,问能否产生某个分配,就对每个点计算到所有中心的距离,看最近中心是否与题目分配一致。
10. PCA
找最大方差方向做降维
10.1 任务与输入输出
PCA 是无监督降维方法。
输入:高维样本 x i ∈ R d x_i \in \mathbb{R}^d x i ∈ R d ;目标维数 k < d k < d k < d 。
输出:k k k 个主成分方向;每个样本的低维表示 z i ∈ R k z_i \in \mathbb{R}^k z i ∈ R k 。
含义:用低维线性子空间保留数据主要变化方向。
10.2 PCA 的两种等价目标
PCA 可以理解为:
最大化投影后的方差。
最小化投影再重构的平方误差。
保留大方差方向,丢弃小方差方向。若噪声主要分布在小方差方向,PCA 可起到去噪作用。2020 判断题 考过"PCA 可以去噪",通常答对。
10.3 PCA 步骤
数据中心化 :x ~ i = x i − x ˉ \tilde{x}_i = x_i - \bar{x} x ~ i = x i − x ˉ ,其中 x ˉ = 1 n ∑ i = 1 n x i \bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i x ˉ = n 1 ∑ i = 1 n x i 。
计算协方差矩阵 :S = 1 n ∑ i = 1 n x ~ i x ~ i T S = \frac{1}{n}\sum_{i=1}^{n} \tilde{x}_i \tilde{x}_i^T S = n 1 ∑ i = 1 n x ~ i x ~ i T
求特征值和特征向量 :S u j = λ j u j S u_j = \lambda_j u_j S u j = λ j u j
取最大 k k k 个特征值对应的特征向量组成矩阵 :U k = [ u 1 , … , u k ] U_k = [u_1, \dots, u_k] U k = [ u 1 , … , u k ]
投影 :z i = U k T ( x i − x ˉ ) z_i = U_k^T (x_i - \bar{x}) z i = U k T ( x i − x ˉ )
重构近似 :x ^ i = x ˉ + U k z i \hat{x}_i = \bar{x} + U_k z_i x ^ i = x ˉ + U k z i
10.4 PCA 和分类器边界
PCA 本身不是分类器,它没有标签输出。它通常作为预处理,用于降维、可视化、压缩、去噪,再把低维特征送入分类器。
10.5 PAC 学习
PAC 是 Probably Approximately Correct。目标:以至少 1 − δ 1 - \delta 1 − δ 的概率,学到真实误差不超过 ε \varepsilon ε 的假设。形式上,希望 P ( err ( h ) ≤ ε ) ≥ 1 − δ P(\text{err}(h) \leq \varepsilon) \geq 1 - \delta P ( err ( h ) ≤ ε ) ≥ 1 − δ 。
有限假设空间的一致学习常见样本复杂度:
m ≥ 1 ε ( ln ∣ H ∣ + ln 1 δ ) m \geq \frac{1}{\varepsilon}\left(\ln |H| + \ln \frac{1}{\delta}\right)
m ≥ ε 1 ( ln ∣ H ∣ + ln δ 1 )
含义:
ε \varepsilon ε 越小,要求越精确,需要更多样本。
δ \delta δ 越小,要求越高置信度,需要更多样本。
∣ H ∣ |H| ∣ H ∣ 越大,假设空间越复杂,需要更多样本。
SVM 课件提到最大间隔符合直觉和 PAC 理论:间隔越大,分类器越稳定,泛化倾向更好。
12. 神经网络
12.1 任务与输入输出
神经网络是一类函数近似器,可用于分类、回归、序列建模、图像识别等。
输入:原始特征、图像、文本向量或其他张量。
输出由任务决定:二分类(一个概率 P ( y = 1 ∣ x ) P(y=1 \mid x) P ( y = 1 ∣ x ) );多分类(类别概率分布 ( p 1 , … , p K ) (p_1, \dots, p_K) ( p 1 , … , p K ) );回归(连续值 y ^ \hat{y} y ^ )。
学到的东西是所有层的权重和偏置:θ = { W ( 1 ) , b ( 1 ) , … , W ( L ) , b ( L ) } \theta = \{W^{(1)}, b^{(1)}, \dots, W^{(L)}, b^{(L)}\} θ = { W ( 1 ) , b ( 1 ) , … , 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 = w T x + b , a = ϕ ( z ) z = w^T x + b,\; a = \phi(z) z = w T x + b , a = ϕ ( z ) ,其中 x x x 是输入,w w w 是权重,b b b 是偏置,ϕ \phi ϕ 是激活函数,a a a 是输出激活。
如果没有非线性激活,多层线性网络仍等价于单层线性模型。原因是线性函数复合仍是线性函数:
W 2 ( W 1 x + b 1 ) + b 2 = ( W 2 W 1 ) x + ( W 2 b 1 + b 2 ) W^2(W^1 x + b_1) + b_2 = (W^2 W^1) x + (W^2 b_1 + b_2)
W 2 ( W 1 x + b 1 ) + b 2 = ( W 2 W 1 ) x + ( W 2 b 1 + b 2 )
12.4 常见激活函数
阶跃函数 接近生物神经元"超过阈值才激活"的直觉,但不连续、不光滑,不适合梯度下降。
Sigmoid :σ ( z ) = 1 1 + e − z \sigma(z) = \dfrac{1}{1+e^{-z}} σ ( z ) = 1 + e − z 1 ,输出在 ( 0 , 1 ) (0,1) ( 0 , 1 ) ,但深层网络容易梯度消失。
Tanh :tanh ( z ) = e z − e − z e z + e − z \tanh(z) = \dfrac{e^z - e^{-z}}{e^z + e^{-z}} tanh ( z ) = e z + e − z e z − e − z ,输出在 ( − 1 , 1 ) (-1,1) ( − 1 , 1 ) ,零中心。
ReLU :ReLU ( z ) = max ( 0 , z ) \text{ReLU}(z) = \max(0, z) 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)})
a ( 0 ) = x , z ( ℓ ) = W ( ℓ ) a ( ℓ − 1 ) + b ( ℓ ) , a ( ℓ ) = ϕ ( ℓ ) ( z ( ℓ ) )
最后输出 y ^ = a ( L ) \hat{y} = a^{(L)} y ^ = a ( L ) 。多层前馈网络就是复合函数:
f ( x ) = ϕ ( L ) ( W ( L ) ϕ ( L − 1 ) ( ⋯ ϕ ( 1 ) ( W ( 1 ) x + b ( 1 ) ) ⋯ ) + b ( L ) ) f(x) = \phi^{(L)}(W^{(L)} \phi^{(L-1)}(\cdots \phi^{(1)}(W^{(1)} x + b^{(1)}) \cdots) + b^{(L)})
f ( x ) = ϕ ( L ) ( W ( L ) ϕ ( L − 1 ) ( ⋯ ϕ ( 1 ) ( W ( 1 ) x + b ( 1 ) ) ⋯ ) + b ( L ) )
输出层选择:二分类用 sigmoid;多分类用 softmax;回归用线性输出。
12.6 网络参数个数
若某层输入维度为 d ℓ − 1 d_{\ell-1} d ℓ − 1 ,输出神经元数为 d ℓ d_\ell d ℓ ,则:权重数 d ℓ d ℓ − 1 d_\ell d_{\ell-1} d ℓ d ℓ − 1 ;偏置数 d ℓ d_\ell d ℓ ;参数总数 d ℓ d ℓ − 1 + d ℓ d_\ell d_{\ell-1} + d_\ell d ℓ d ℓ − 1 + d ℓ 。
例如课件中的网络若有 [ 3 × 4 ] [3 \times 4] [ 3 × 4 ] 和 [ 4 × 2 ] [4 \times 2] [ 4 × 2 ] 两组权重,权重数为 3 ⋅ 4 + 4 ⋅ 2 = 20 3 \cdot 4 + 4 \cdot 2 = 20 3 ⋅ 4 + 4 ⋅ 2 = 2 0 ;若偏置数为 4 + 2 = 6 4 + 2 = 6 4 + 2 = 6 ,总可学习参数为 20 + 6 = 26 20 + 6 = 26 2 0 + 6 = 2 6 。
12.7 损失函数:分类用交叉熵,回归用平方误差
回归常用均方误差:L = ∥ y − y ^ ∥ 2 L = \|y - \hat{y}\|^2 L = ∥ y − y ^ ∥ 2 。
多分类常用交叉熵。若 y y y 是 one-hot 标签,y ^ \hat{y} y ^ 是 softmax 概率:L = − ∑ k = 1 K y k log y ^ k L = -\sum_{k=1}^{K} y_k \log \hat{y}_k L = − ∑ k = 1 K y k log y ^ k 。若真实类别为 t t t :L = − log y ^ t L = -\log \hat{y}_t L = − log y ^ t 。
总损失:C ( θ ) = ∑ i = 1 n L i ( θ ) C(\theta) = \sum_{i=1}^{n} L_i(\theta) C ( θ ) = ∑ i = 1 n L i ( θ ) 。训练目标:θ ∗ = arg min θ C ( θ ) \theta^* = \arg\min_\theta C(\theta) θ ∗ = arg min θ C ( θ ) 。
12.8 反向传播:链式法则的动态规划
反向传播用于高效计算每个参数的梯度。训练流程:
前向传播:从输入逐层计算输出和损失。
反向传播:从损失开始,逐层计算误差信号。
参数更新:沿负梯度方向下降。
对第 ℓ \ell ℓ 层定义误差信号 δ ( ℓ ) = ∂ L ∂ z ( ℓ ) \delta^{(\ell)} = \dfrac{\partial L}{\partial z^{(\ell)}} δ ( ℓ ) = ∂ z ( ℓ ) ∂ L 。
输出层误差根据损失函数决定。对于 softmax 加交叉熵,常见简化为 δ ( L ) = y ^ − y \delta^{(L)} = \hat{y} - y δ ( L ) = y ^ − y 。
隐藏层误差:δ ( ℓ ) = ( ( W ( ℓ + 1 ) ) T δ ( ℓ + 1 ) ) ⊙ ϕ ′ ( z ( ℓ ) ) \delta^{(\ell)} = ((W^{(\ell+1)})^T \delta^{(\ell+1)}) \odot \phi'(z^{(\ell)}) δ ( ℓ ) = ( ( W ( ℓ + 1 ) ) T δ ( ℓ + 1 ) ) ⊙ ϕ ′ ( z ( ℓ ) ) ,其中 ⊙ \odot ⊙ 是逐元素乘法。
参数梯度:∂ L ∂ W ( ℓ ) = δ ( ℓ ) ( a ( ℓ − 1 ) ) T \dfrac{\partial L}{\partial W^{(\ell)}} = \delta^{(\ell)} (a^{(\ell-1)})^T ∂ W ( ℓ ) ∂ L = δ ( ℓ ) ( a ( ℓ − 1 ) ) T ,∂ L ∂ b ( ℓ ) = δ ( ℓ ) \dfrac{\partial L}{\partial b^{(\ell)}} = \delta^{(\ell)} ∂ b ( ℓ ) ∂ L = δ ( ℓ ) 。
更新:W ( ℓ ) ← W ( ℓ ) − η ∂ L ∂ W ( ℓ ) W^{(\ell)} \leftarrow W^{(\ell)} - \eta \dfrac{\partial L}{\partial W^{(\ell)}} W ( ℓ ) ← W ( ℓ ) − η ∂ W ( ℓ ) ∂ L ,b ( ℓ ) ← b ( ℓ ) − η ∂ L ∂ b ( ℓ ) b^{(\ell)} \leftarrow b^{(\ell)} - \eta \dfrac{\partial L}{\partial b^{(\ell)}} b ( ℓ ) ← b ( ℓ ) − η ∂ b ( ℓ ) ∂ L 。
考试若不要求矩阵推导,至少要能说清:反向传播本质是链式法则,从输出层往输入层传误差,避免重复计算中间导数。
12.9 梯度下降、学习率和局部最优
参数更新总形式:θ ← θ − η ∇ θ C ( θ ) \theta \leftarrow \theta - \eta \nabla_\theta C(\theta) θ ← θ − η ∇ θ C ( θ ) 。
学习率太大可能震荡或发散;学习率太小收敛很慢。
深度网络损失通常非凸,梯度下降不保证全局最优,不同初始化可能到不同局部最小值或鞍点。
常见优化方式:
Batch Gradient Descent:每次用全训练集。
SGD:每次用一个样本,噪声大但便宜。
Mini-batch SGD:每次用一小批,实践最常用。
Momentum:累积历史方向,减少震荡。
Adam:自适应学习率,实践常用。
12.10 表示能力和过拟合
多层前馈网络表示能力很强。通用近似定理指出:一个包含足够多神经元的隐层,可以以任意精度逼近许多连续函数。但强表示能力也导致过拟合。表现为训练误差持续降低,验证或测试误差上升。
缓解方法:
Early stopping:训练误差下降但验证误差上升时停止。
L2 正则或 weight decay:惩罚过大权重。
Dropout:训练时随机丢弃部分神经元,减少共适应。
Data augmentation:用数据增强增加训练样本多样性。
Batch normalization:稳定中间层分布,常能加速训练。
13. CNN
用局部连接和权重共享处理图像
13.1 任务与输入输出
CNN 主要用于图像,也可用于其他网格结构数据。
输入:X ∈ R H × W × C in X \in \mathbb{R}^{H \times W \times C_{\text{in}}} X ∈ R H × W × C in ,其中 H H H 是高度,W W W 是宽度,C in C_{\text{in}} C in 是通道数。
卷积层输出:Y ∈ R H ′ × W ′ × C out Y \in \mathbb{R}^{H' \times W' \times C_{\text{out}}} Y ∈ R H ′ × W ′ × C out ,每个输出通道对应一个 filter,输出称为 feature map。
13.2 CNN 的三个核心思想
局部连接 :每个神经元只看局部感受野,不连接整张图像。
权重共享 :同一个卷积核在不同空间位置重复使用,显著减少参数。
层级特征 :低层提取边缘、角点等局部特征,高层组合成更全局的语义特征。
13.3 卷积运算
一个卷积核在输入上滑动,对局部窗口做加权求和。多通道卷积可写为:
Y i , j , c o = b c o + ∑ c i = 1 C in ∑ u = 1 F h ∑ v = 1 F w K u , v , c i , c o X i S + u , j S + v , c i Y_{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}
Y i , j , c o = b c o + c i = 1 ∑ C in u = 1 ∑ F h v = 1 ∑ F w K u , v , c i , c o X i S + u , j S + v , c i
其中 K K K 是卷积核,S S S 是 stride,c o c_o c o 是输出通道。若输入大小为 H × W H \times W H × W ,卷积核大小为 F × F F \times F F × F ,padding 为 P P P ,stride 为 S S S ,则输出空间大小:
H ′ = ⌊ H + 2 P − F S ⌋ + 1 , W ′ = ⌊ W + 2 P − F S ⌋ + 1 H' = \left\lfloor \frac{H + 2P - F}{S} \right\rfloor + 1, \quad W' = \left\lfloor \frac{W + 2P - F}{S} \right\rfloor + 1
H ′ = ⌊ S H + 2 P − F ⌋ + 1 , W ′ = ⌊ S W + 2 P − F ⌋ + 1
课件强调:卷积本质上仍是 weighted sum,所以 CNN 的 BP 和全连接网络类似。
13.4 多个 filter 和 channel
一层通常使用多个 filters,因为一个 filter 只能检测一种局部模式。多个 filters 输出多个 feature maps,形成多个通道。若一层有 C out C_{\text{out}} C out 个 filter,则输出通道数为 C out C_{\text{out}} C out 。高层特征是低层特征的组合。
13.5 Pooling:降采样和局部鲁棒
Max pooling 在窗口内取最大值:Y i , j , c = max ( u , v ) ∈ W i , j X u , v , c Y_{i,j,c} = \max_{(u,v) \in \mathcal{W}_{i,j}} X_{u,v,c} Y i , j , c = max ( u , v ) ∈ 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 相比全连接网络为什么参数少
全连接层若输入图像有 H W C HWC H W C 个像素,每个隐藏神经元都连接所有像素,参数很多。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 × 19 19 \times 19 1 9 × 1 9 矩阵,黑子、白子、空位分别编码。全连接前馈网络理论上也能用,但 CNN 更适合利用棋盘局部模式。课件特别提到 AlphaGo 的 policy network 不使用 max pooling,这属于低概率细节。
13.9 特征工程与特征学习:传统机器学习和深度学习的分界
传统机器学习常见流程:
原始输入 → 人工设计特征 → 简单分类器 \text{原始输入} \to \text{人工设计特征} \to \text{简单分类器}
原始输入 → 人工设计特征 → 简单分类器
例如 SVM 中手工构造多项式特征、交互特征,或手工选择 kernel。其效果很依赖领域知识和特征工程。
深度学习更强调端到端特征学习:
原始输入 → 网络自动学习表示 → 分类/回归输出 \text{原始输入} \to \text{网络自动学习表示} \to \text{分类/回归输出}
原始输入 → 网络自动学习表示 → 分类 / 回归输出
可以把深度网络理解为学习一个复杂的特征映射 ϕ θ ( x ) \phi_\theta(x) ϕ θ ( x ) ,然后在学到的表示上接一个相对简单的分类器。优势是表达能力强、能自动学习特征;代价是数据需求大、训练成本高、可解释性较差。
14. RNN 和 Attention
隔壁班补充,低概率
14.1 RNN:适合序列数据
输入:x 1 , x 2 , … , x T x_1, x_2, \dots, x_T x 1 , x 2 , … , x T 。隐藏状态递推:h t = ϕ ( W x x t + W h h t − 1 + b ) h_t = \phi(W_x x_t + W_h h_{t-1} + b) h t = ϕ ( W x x t + W h h t − 1 + b ) 。输出:y t = g ( W y h t ) y_t = g(W_y h_t) y t = g ( W y h t ) 。
含义:h t h_t h t 保存到当前时刻为止的历史信息。RNN 适合文本、语音、时间序列。问题:长序列训练中容易梯度消失或爆炸。改进结构包括 LSTM 和 GRU。
14.2 Attention:用 Query、Key、Value 动态加权信息
Scaled dot-product attention:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V
Attention ( Q , K , V ) = softmax ( d k Q K T ) V
含义:
Query:当前位置想查什么。
Key:每个位置提供的索引。
Value:每个位置携带的信息。
Self-attention 中 Q , K , V Q, K, V Q , K , V 都来自同一序列。Transformer 主要由 self-attention 和前馈层组成。
16. 常考证明和计算模板
16.1 信息增益计算模板
数出当前集合各类别数量。
算当前熵:H ( S ) = − ∑ k p k log 2 p k H(S) = -\sum_k p_k \log_2 p_k H ( S ) = − ∑ k p k log 2 p k ,其中 p k p_k p k 是类别 k k k 的比例。
对属性 A A A 的每个取值 v v v ,数出子集 S v S_v S v 的类别比例并算 H ( S v ) H(S_v) H ( S v ) 。
算加权平均:∑ v ∣ S v ∣ ∣ S ∣ H ( S v ) \sum_v \dfrac{|S_v|}{|S|} H(S_v) ∑ v ∣ S ∣ ∣ S v ∣ H ( S v ) 。
信息增益:Gain ( S , A ) = H ( S ) − ∑ v ∣ S v ∣ ∣ S ∣ H ( S v ) \text{Gain}(S, A) = H(S) - \sum_v \dfrac{|S_v|}{|S|} H(S_v) Gain ( S , A ) = H ( S ) − ∑ v ∣ S ∣ ∣ S v ∣ H ( S v ) 。
选增益最大的属性。
16.2 最小二乘推导模板
从目标 J ( w ) = ∥ X w − y ∥ 2 J(w) = \|Xw - y\|^2 J ( w ) = ∥ X w − y ∥ 2 ,写成 J ( w ) = ( X w − y ) T ( X w − y ) J(w) = (Xw - y)^T(Xw - y) J ( w ) = ( X w − y ) T ( X w − y ) 。
求梯度:∇ w J ( w ) = 2 X T ( X w − y ) \nabla_w J(w) = 2X^T(Xw - y) ∇ w J ( w ) = 2 X T ( X w − y ) 。令 0:X T X w = X T y X^T X w = X^T y X T X w = X T y 。
给答案:w ∗ = ( X T X ) − 1 X T y w^* = (X^T X)^{-1} X^T y w ∗ = ( X T X ) − 1 X T y 。
加权时把中间都加上 R R R :w ∗ = ( X T R X ) − 1 X T R y w^* = (X^T R X)^{-1} X^T R y w ∗ = ( X T R X ) − 1 X T R y 。
正则时把左边矩阵加 λ I \lambda I λ I 或 λ D \lambda D λ D 。
16.3 Logistic 梯度模板
记 p = σ ( w T x + b ) p = \sigma(w^T x + b) p = σ ( w T x + b ) ,损失 L = − [ y log p + ( 1 − y ) log ( 1 − p ) ] L = -[y \log p + (1-y)\log(1-p)] L = − [ y log p + ( 1 − y ) log ( 1 − p ) ] 。
先写核心:∂ L ∂ z = p − y \dfrac{\partial L}{\partial z} = p - y ∂ z ∂ L = p − y 。再写:
∂ L ∂ w j = ( p − y ) x j , ∂ L ∂ b = p − y \frac{\partial L}{\partial w_j} = (p - y)x_j, \quad \frac{\partial L}{\partial b} = p - y
∂ w j ∂ L = ( p − y ) x j , ∂ b ∂ L = p − y
16.4 SVM 手算模板
画图,找支持向量。
正支持向量列 w T x + b = 1 w^T x + b = 1 w T x + b = 1 。
负支持向量列 w T x + b = − 1 w^T x + b = -1 w T x + b = − 1 。
解 w , b w, b w , b 。
检查全部约束 y i ( w T x i + b ) ≥ 1 y_i(w^T x_i + b) \geq 1 y i ( w T x i + b ) ≥ 1 。
写:w T x + b = 0 w^T x + b = 0 w T x + b = 0 ,w T x + b = 1 w^T x + b = 1 w T x + b = 1 ,w T x + b = − 1 w^T x + b = -1 w T x + b = − 1 ,g ( x ) = sign ( w T x + b ) g(x) = \text{sign}(w^T x + b) g ( x ) = sign ( w T x + b ) 。
间隔宽度:2 ∥ w ∥ \dfrac{2}{\|w\|} ∥ w ∥ 2 。
16.6 核矩阵半正定证明模板
若 K i j = ϕ ( x i ) T ϕ ( x j ) K_{ij} = \phi(x_i)^T \phi(x_j) K i j = ϕ ( x i ) T ϕ ( x j ) ,则对任意 a a a :
a T K a = ∑ i ∑ j a i a j ϕ ( x i ) T ϕ ( x j ) = ∥ ∑ i a i ϕ ( x i ) ∥ 2 ≥ 0 a^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
a T K a = i ∑ j ∑ a i a j ϕ ( x i ) T ϕ ( x j ) = ∥ ∥ ∥ ∥ ∥ ∥ i ∑ a i ϕ ( x i ) ∥ ∥ ∥ ∥ ∥ ∥ 2 ≥ 0
所以核矩阵半正定。
17. 判断题速查
模型越复杂越好:错 ,可能过拟合。
决策树能表示任意离散函数:对 ,但可能很大且泛化差。
无冲突训练集存在零训练误差决策树:对 。
根节点信息增益一定大于子节点信息增益:错 ,数据子集不同。
k 越大,kNN 训练精度越高:错 。
线性分类器决策边界是超平面:对 。
最小二乘分类容易训练、有闭式解,但不是分类最优选择:对 。
逻辑回归输出概率:对 。
逻辑回归决策边界在原始特征空间是线性的:对 。
SVM 支持向量决定边界:对 。
hard margin 非支持向量通常不影响解:对 。
soft margin 允许违反间隔甚至错分:对 。
RBF 核只能线性分类:错 。
有效核矩阵应对称半正定:对 。
K-Means 会收敛到全局最优:错 。
K-Means 会终止或收敛到局部最优:对 。
PCA 可用于去噪:对 。
无激活的多层神经网络仍等价于线性模型:对 。
CNN 权重共享减少参数量:对 。
深度学习一定比传统机器学习好:错 。
18. 最后一页压缩版
决策树:Gain ( S , A ) = H ( S ) − ∑ v ∣ S v ∣ ∣ S ∣ H ( S v ) \text{Gain}(S, A) = H(S) - \sum_v \dfrac{|S_v|}{|S|} H(S_v) Gain ( S , A ) = H ( S ) − ∑ v ∣ S ∣ ∣ S v ∣ H ( S v )
kNN:y ^ = majority { y i : x i ∈ N k ( x ) } \hat{y} = \text{majority}\{y_i : x_i \in N_k(x)\} y ^ = majority { y i : x i ∈ N k ( x ) }
最小二乘:w ∗ = ( X T X ) − 1 X T y w^* = (X^T X)^{-1} X^T y w ∗ = ( X T X ) − 1 X T y
加权最小二乘:w ∗ = ( X T R X ) − 1 X T R y w^* = (X^T R X)^{-1} X^T R y w ∗ = ( X T R X ) − 1 X T R y
逻辑回归:p = σ ( w T x + b ) p = \sigma(w^T x + b) p = σ ( w T x + b ) ,L = − [ y log p + ( 1 − y ) log ( 1 − p ) ] L = -[y \log p + (1-y)\log(1-p)] L = − [ y log p + ( 1 − y ) log ( 1 − p ) ] ,∇ w L = ( p − y ) x \nabla_w L = (p - y)x ∇ w L = ( p − y ) x
SVM:min w , b 1 2 ∥ w ∥ 2 \min_{w,b} \tfrac{1}{2}\|w\|^2 min w , b 2 1 ∥ w ∥ 2 ,y i ( w T x i + b ) ≥ 1 y_i(w^T x_i + b) \geq 1 y i ( w T x i + b ) ≥ 1 ,margin width = 2 ∥ w ∥ = \tfrac{2}{\|w\|} = ∥ w ∥ 2 ,ℓ hinge = max ( 0 , 1 − y i f ( x i ) ) \ell_{\text{hinge}} = \max(0, 1 - y_i f(x_i)) ℓ 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 ( x , z ) = ϕ ( x ) T ϕ ( z )
K-Means:c i = arg min k ∥ x i − μ k ∥ 2 c_i = \arg\min_k \|x_i - \mu_k\|^2 c i = arg min k ∥ x i − μ k ∥ 2 ,μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu_k = \tfrac{1}{|C_k|} \sum_{x_i \in C_k} x_i μ k = ∣ C k ∣ 1 ∑ x i ∈ C k x i
PCA:S u j = λ j u j S u_j = \lambda_j u_j S u j = λ j u j ,z i = U k T ( x i − x ˉ ) z_i = U_k^T (x_i - \bar{x}) z i = U k T ( x i − x ˉ )
神经网络:a ( ℓ ) = ϕ ( W ( ℓ ) a ( ℓ − 1 ) + b ( ℓ ) ) a^{(\ell)} = \phi(W^{(\ell)} a^{(\ell-1)} + b^{(\ell)}) a ( ℓ ) = ϕ ( W ( ℓ ) a ( ℓ − 1 ) + b ( ℓ ) )
BP:δ ( ℓ ) = ( ( W ( ℓ + 1 ) ) T δ ( ℓ + 1 ) ) ⊙ ϕ ′ ( z ( ℓ ) ) \delta^{(\ell)} = ((W^{(\ell+1)})^T \delta^{(\ell+1)}) \odot \phi'(z^{(\ell)}) δ ( ℓ ) = ( ( W ( ℓ + 1 ) ) T δ ( ℓ + 1 ) ) ⊙ ϕ ′ ( z ( ℓ ) )
CNN:局部连接 + 权重共享 + 层级特征
线性代数速补
目录 :1. 标量/向量/矩阵 · 2. 转置 · 3. 内积 · 4. 范数和距离 · 5. 矩阵乘法 · 6. 单位矩阵/逆/伪逆 · 7. 对角矩阵和权重矩阵 · 8. 超平面和法向量 · 9. 投影 · 10. 二次型和半正定 · 11. 特征值和特征向量 · 12. 协方差矩阵 · 13. 矩阵求导 · 14. Hadamard 乘积 · 15. 机器学习中最常见的维度检查 · 16. 看到公式不会时的快速拆解法
1. 标量、向量、矩阵
标量是一个数,常记为 a , b , λ a, b, \lambda a , b , λ 。向量是一列数,常记为 x , w , y x, w, y x , w , y 。矩阵是二维表,常记为 X , W , A X, W, A X , W , A 。默认把向量看成列向量:
x = [ x 1 x 2 ⋮ x d ] ∈ R d x = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_d \end{bmatrix} \in \mathbb{R}^d
x = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ x 1 x 2 ⋮ x d ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ ∈ R d
若有 n n n 个样本、每个样本 d d d 个特征,机器学习里常把数据矩阵写成:
X = [ x 1 T x 2 T ⋮ x n T ] ∈ R n × d X = \begin{bmatrix} x_1^T \\ x_2^T \\ \vdots \\ x_n^T \end{bmatrix} \in \mathbb{R}^{n \times d}
X = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ x 1 T x 2 T ⋮ x n T ⎦ ⎥ ⎥ ⎥ ⎥ ⎤ ∈ R n × d
其中第 i i i 行 x i T x_i^T x i T 是第 i i i 个样本。
维度检查是防止公式写错的最快方法。若 X ∈ R n × d X \in \mathbb{R}^{n \times d} X ∈ R n × d ,则 w ∈ R d w \in \mathbb{R}^d w ∈ R d ,X w ∈ R n Xw \in \mathbb{R}^n X w ∈ R n ,它表示对 n n n 个样本分别做线性预测。
2. 转置
向量转置:x T = [ x 1 x 2 ⋯ x d ] x^T = [x_1 \; x_2 \; \cdots \; x_d] x T = [ x 1 x 2 ⋯ x d ]
矩阵转置:( A T ) i j = A j i (A^T)_{ij} = A_{ji} ( A T ) i j = A j i
常用规则:
( A + B ) T = A T + B T (A + B)^T = A^T + B^T
( A + B ) T = A T + B T
( A B ) T = B T A T (AB)^T = B^T A^T
( A B ) T = B T A T
( A T ) T = A (A^T)^T = A
( A T ) T = A
注意第二条会反序,这是很多推导里最容易错的地方。
3. 内积
两个同维向量的内积:
w T x = ∑ j = 1 d w j x j w^T x = \sum_{j=1}^{d} w_j x_j
w T x = j = 1 ∑ d w j x j
线性模型 f ( x ) = w T x + b f(x) = w^T x + b f ( x ) = w T x + b 可以理解为"每个特征 x j x_j x j 乘上重要性 w j w_j w j ,再求和"。若 w j > 0 w_j > 0 w j > 0 ,该特征越大,打分越大;若 w j < 0 w_j < 0 w j < 0 ,该特征越大,打分越小。
内积还可以衡量方向相似度:w T x = ∥ w ∥ ∥ x ∥ cos θ w^T x = \|w\| \|x\| \cos\theta w T x = ∥ w ∥ ∥ x ∥ cos θ ,其中 θ \theta θ 是两个向量夹角。若 w T x = 0 w^T x = 0 w T x = 0 ,则两个向量正交,也就是方向垂直。
4. 范数和距离
向量的 L2 范数:
∥ x ∥ 2 = x T x = ∑ j = 1 d x j 2 \|x\|_2 = \sqrt{x^T x} = \sqrt{\sum_{j=1}^{d} x_j^2}
∥ x ∥ 2 = x T x = j = 1 ∑ d x j 2
若上下文没有特别说明,∥ x ∥ \|x\| ∥ x ∥ 通常指 L2 范数。两个点的欧氏距离:
∥ x − z ∥ 2 = ∑ j = 1 d ( x j − z j ) 2 \|x - z\|_2 = \sqrt{\sum_{j=1}^{d} (x_j - z_j)^2}
∥ x − z ∥ 2 = j = 1 ∑ d ( x j − z j ) 2
kNN 和 K-Means 里经常用平方距离:∥ x − z ∥ 2 2 = ( x − z ) T ( x − z ) \|x - z\|_2^2 = (x - z)^T(x - z) ∥ x − z ∥ 2 2 = ( x − z ) T ( x − z ) 。平方距离省去了开方,最小化时和原距离等价,因为开方函数单调递增。
L1 范数:∥ x ∥ 1 = ∑ j = 1 d ∣ x j ∣ \|x\|_1 = \sum_{j=1}^{d} |x_j| ∥ x ∥ 1 = ∑ j = 1 d ∣ x j ∣ 。机器学习里 L1 正则常产生稀疏权重,L2 正则常让权重整体变小。
5. 矩阵乘法
若 A ∈ R m × n A \in \mathbb{R}^{m \times n} A ∈ R m × n ,B ∈ R n × p B \in \mathbb{R}^{n \times p} B ∈ R n × p ,则 A B ∈ R m × p AB \in \mathbb{R}^{m \times p} A B ∈ R m × p ,元素为:
( A B ) i j = ∑ k = 1 n A i k B k j (AB)_{ij} = \sum_{k=1}^{n} A_{ik} B_{kj}
( A B ) i j = k = 1 ∑ n A i k B k j
也就是说,A B AB A B 的第 i , j i, j i , j 个元素是 A A A 的第 i i i 行和 B B B 的第 j j j 列做内积。最小二乘中:
X w = [ x 1 T w x 2 T w ⋮ x n T w ] Xw = \begin{bmatrix} x_1^T w \\ x_2^T w \\ \vdots \\ x_n^T w \end{bmatrix}
X w = ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ x 1 T w x 2 T w ⋮ x n T w ⎦ ⎥ ⎥ ⎥ ⎥ ⎤
它一次性算出所有样本的预测值。
6. 单位矩阵、逆矩阵和伪逆
单位矩阵 I I I 满足 I x = x , A I = A , I A = A Ix = x,\; AI = A,\; IA = A I x = x , A I = A , I A = A 。
逆矩阵 A − 1 A^{-1} A − 1 满足 A − 1 A = A A − 1 = I A^{-1} A = A A^{-1} = I A − 1 A = A A − 1 = I 。不是所有矩阵都有逆。方阵 A A A 可逆通常要求列之间没有线性冗余,也就是满秩。
如果 X T X X^T X X T X 不可逆,最小二乘不能直接写 ( X T X ) − 1 X T y (X^T X)^{-1} X^T y ( X T X ) − 1 X T y ,这时可以用 Moore-Penrose 伪逆:w ∗ = X + y w^* = X^+ y w ∗ = X + y 。直观上,伪逆是在"没有普通逆矩阵"时给出最小二乘意义下的合理解。
7. 对角矩阵和权重矩阵
对角矩阵只有主对角线可能非零:R = diag ( r 1 , … , r n ) R = \text{diag}(r_1, \dots, r_n) R = diag ( r 1 , … , r n ) 。加权最小二乘中:
J ( w ) = ( y − X w ) T R ( y − X w ) J(w) = (y - Xw)^T R (y - Xw)
J ( w ) = ( y − X w ) T R ( y − X w )
若记误差向量 e = y − X w e = y - Xw e = y − X w ,则 e T R e = ∑ i = 1 n r i e i 2 e^T R e = \sum_{i=1}^{n} r_i e_i^2 e T R e = ∑ i = 1 n r i e i 2 。所以 R R R 的作用就是给不同样本误差加不同权重。
8. 超平面和法向量
线性分类边界 w T x + b = 0 w^T x + b = 0 w T x + b = 0 是一个超平面。二维时是直线,三维时是平面,高维时叫超平面。w w w 是法向量,表示垂直于边界的方向。若点 x x x 满足 w T x + b > 0 w^T x + b > 0 w T x + b > 0 ,它在边界的一侧;若 w T x + b < 0 w^T x + b < 0 w T x + b < 0 ,它在另一侧。
点 x x x 到超平面 w T x + b = 0 w^T x + b = 0 w T x + b = 0 的距离为 ∣ w T x + b ∣ ∥ w ∥ \dfrac{|w^T x + b|}{\|w\|} ∥ w ∥ ∣ w T x + b ∣ 。带标签 y ∈ { − 1 , + 1 } y \in \{-1, +1\} y ∈ { − 1 , + 1 } 时,SVM 的几何间隔为 y ( w T x + b ) ∥ w ∥ \dfrac{y(w^T x + b)}{\|w\|} ∥ w ∥ y ( w T x + b ) 。这就是 SVM 中间隔公式的来源。
9. 投影
若 u u u 是单位向量,即 ∥ u ∥ = 1 \|u\| = 1 ∥ u ∥ = 1 ,则 x x x 在方向 u u u 上的投影长度为 u T x u^T x u T x ,投影向量为 ( u T x ) u (u^T x) u ( u T x ) u 。若 U = [ u 1 , … , u k ] U = [u_1, \dots, u_k] U = [ u 1 , … , u k ] 的列向量两两正交且都是单位向量,则 U T U = I U^T U = I U T U = I 。x x x 投影到这些方向张成的子空间中,低维坐标为 z = U T x z = U^T x z = U T x ,重构为 x ^ = U z \hat{x} = Uz x ^ = U z 。
PCA 中 z i = U k T ( x i − x ˉ ) z_i = U_k^T (x_i - \bar{x}) z i = U k T ( x i − x ˉ ) ,就是把中心化后的样本投影到前 k k k 个主成分方向上。
10. 二次型和半正定
SVM 核矩阵会用到
形如下面的表达式叫二次型:x T A x x^T A x x T A x 。如果对任意 x x x 都有 x T A x ≥ 0 x^T A x \geq 0 x T A x ≥ 0 ,则称 A A A 是半正定矩阵,记为 A ⪰ 0 A \succeq 0 A ⪰ 0 。
最简单例子:x T I x = x T x = ∥ x ∥ 2 ≥ 0 x^T I x = x^T x = \|x\|^2 \geq 0 x T I x = x T x = ∥ x ∥ 2 ≥ 0 。核矩阵半正定的关键证明就是把二次型写成一个范数平方:
a T K a = ∥ ∑ i = 1 n a i ϕ ( x i ) ∥ 2 ≥ 0 a^T K a = \left\| \sum_{i=1}^{n} a_i \phi(x_i) \right\|^2 \geq 0
a T K a = ∥ ∥ ∥ ∥ ∥ ∥ i = 1 ∑ n a i ϕ ( x i ) ∥ ∥ ∥ ∥ ∥ ∥ 2 ≥ 0
所以只要 K i j = ϕ ( x i ) T ϕ ( x j ) K_{ij} = \phi(x_i)^T \phi(x_j) K i j = ϕ ( x i ) T ϕ ( x j ) ,核矩阵一定半正定。
11. 特征值和特征向量
PCA 的核心
若非零向量 u u u 满足 A u = λ u Au = \lambda u A u = λ u ,则 u u u 是矩阵 A A A 的特征向量,λ \lambda λ 是对应特征值。含义:矩阵 A A A 作用到方向 u u u 上时,不改变方向,只把长度缩放 λ \lambda λ 倍。
PCA 中协方差矩阵 S S S 的特征值和特征向量满足 S u j = λ j u j S u_j = \lambda_j u_j S u j = λ j u j ,其中:
u j u_j u j :第 j j j 个主成分方向。
λ j \lambda_j λ j :数据在该方向上的方差大小。
PCA 取最大 k k k 个特征值对应的特征向量,因为这些方向保留最多方差信息。
12. 协方差矩阵
数据中心化后 x ~ i = x i − x ˉ \tilde{x}_i = x_i - \bar{x} x ~ i = x i − x ˉ ,协方差矩阵:
S = 1 n ∑ i = 1 n x ~ i x ~ i T S = \frac{1}{n} \sum_{i=1}^{n} \tilde{x}_i \tilde{x}_i^T
S = n 1 i = 1 ∑ n x ~ i x ~ i T
若把中心化样本按行放入矩阵 X ~ \tilde{X} X ~ ,也可写成 S = 1 n X ~ T X ~ S = \frac{1}{n} \tilde{X}^T \tilde{X} S = n 1 X ~ T X ~ 。
S j j S_{jj} S j j 表示第 j j j 个特征自己的方差,S j k S_{jk} S j k 表示第 j j j 和第 k k k 个特征一起变化的程度。PCA 对 S S S 求特征向量,本质是在找数据变化最大的正交方向。
13. 矩阵求导
机器学习里常见目标函数是标量,但变量是向量。梯度 ∇ w J \nabla_w J ∇ w J 和 w w w 形状相同。常用结论:
∂ ∂ w ( a T w ) = a \frac{\partial}{\partial w}(a^T w) = a
∂ w ∂ ( a T w ) = a
∂ ∂ w ( w T a ) = a \frac{\partial}{\partial w}(w^T a) = a
∂ w ∂ ( w T a ) = a
∂ ∂ w ( w T w ) = 2 w \frac{\partial}{\partial w}(w^T w) = 2w
∂ w ∂ ( w T w ) = 2 w
若 A A A 是对称矩阵:
∂ ∂ w ( w T A w ) = 2 A w \frac{\partial}{\partial w}(w^T A w) = 2Aw
∂ w ∂ ( w T A w ) = 2 A w
最小二乘最常用公式:
∂ ∂ w ∥ X w − y ∥ 2 = 2 X T ( X w − y ) \frac{\partial}{\partial w} \|Xw - y\|^2 = 2X^T(Xw - y)
∂ w ∂ ∥ X w − y ∥ 2 = 2 X T ( X w − y )
加权最小二乘中,若 R = R T R = R^T R = R T :
∂ ∂ w ( y − X w ) T R ( y − X w ) = − 2 X T R ( y − X w ) \frac{\partial}{\partial w}(y - Xw)^T R (y - Xw) = -2X^T R (y - Xw)
∂ w ∂ ( y − X w ) T R ( y − X w ) = − 2 X T R ( y − X w )
逻辑回归中常用链式法则:
∂ L ∂ w j = ∂ L ∂ z ∂ z ∂ w j \frac{\partial L}{\partial w_j} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial w_j}
∂ w j ∂ L = ∂ z ∂ L ∂ w j ∂ z
因为 z = w T x + b z = w^T x + b z = w T x + b ,∂ z ∂ w j = x j \frac{\partial z}{\partial w_j} = x_j ∂ w j ∂ z = x j ,所以只要先求出 ∂ L ∂ z = p − y \frac{\partial L}{\partial z} = p - y ∂ z ∂ L = p − y ,就得到 ∂ L ∂ w j = ( p − y ) x j \frac{\partial L}{\partial w_j} = (p - y) x_j ∂ w j ∂ L = ( 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)})
δ ( ℓ ) = ( ( W ( ℓ + 1 ) ) T δ ( ℓ + 1 ) ) ⊙ ϕ ′ ( z ( ℓ ) )
这里的 ⊙ \odot ⊙ 不是矩阵乘法,而是逐元素乘法。若 a = [ a 1 a 2 ] , b = [ b 1 b 2 ] a = \begin{bmatrix} a_1 \\ a_2 \end{bmatrix},\; b = \begin{bmatrix} b_1 \\ b_2 \end{bmatrix} a = [ a 1 a 2 ] , b = [ b 1 b 2 ] ,则 a ⊙ b = [ a 1 b 1 a 2 b 2 ] a \odot b = \begin{bmatrix} a_1 b_1 \\ a_2 b_2 \end{bmatrix} a ⊙ b = [ a 1 b 1 a 2 b 2 ] 。它要求两个向量形状相同。
15. 机器学习中最常见的维度检查
线性回归:X ∈ R n × d X \in \mathbb{R}^{n \times d} X ∈ R n × d ,w ∈ R d w \in \mathbb{R}^d w ∈ R d ,y ∈ R n y \in \mathbb{R}^n y ∈ R n ,X w − y ∈ R n Xw - y \in \mathbb{R}^n X w − y ∈ R n ,X T ( X w − y ) ∈ R d X^T(Xw - y) \in \mathbb{R}^d X T ( X w − y ) ∈ R d ,所以梯度和 w w w 同维。
多分类线性模型:X ∈ R n × d X \in \mathbb{R}^{n \times d} X ∈ R n × d ,W ∈ R d × k W \in \mathbb{R}^{d \times k} W ∈ R d × k ,Y ∈ R n × k Y \in \mathbb{R}^{n \times k} Y ∈ R n × k ,X W ∈ R n × k XW \in \mathbb{R}^{n \times k} X W ∈ R n × k 。
神经网络单层:a ( ℓ − 1 ) ∈ R d ℓ − 1 a^{(\ell-1)} \in \mathbb{R}^{d_{\ell-1}} a ( ℓ − 1 ) ∈ R d ℓ − 1 ,W ( ℓ ) ∈ R d ℓ × d ℓ − 1 W^{(\ell)} \in \mathbb{R}^{d_\ell \times d_{\ell-1}} W ( ℓ ) ∈ R d ℓ × d ℓ − 1 ,b ( ℓ ) ∈ R d ℓ b^{(\ell)} \in \mathbb{R}^{d_\ell} b ( ℓ ) ∈ R d ℓ ,则 z ( ℓ ) = W ( ℓ ) a ( ℓ − 1 ) + b ( ℓ ) ∈ R d ℓ z^{(\ell)} = W^{(\ell)} a^{(\ell-1)} + b^{(\ell)} \in \mathbb{R}^{d_\ell} z ( ℓ ) = W ( ℓ ) a ( ℓ − 1 ) + b ( ℓ ) ∈ R d ℓ 。
16. 看到公式不会时的快速拆解法
第一步,看形状。 先给每个量标维度,确认乘法是否合法。
第二步,看含义。 比如 X w Xw X w 是所有样本预测,X w − y Xw - y X w − y 是所有误差,∥ X w − y ∥ 2 \|Xw - y\|^2 ∥ X w − y ∥ 2 是总平方误差。
第三步,看几何。 w T x + b = 0 w^T x + b = 0 w T x + b = 0 是边界,w w w 是法向量,∥ w ∥ \|w\| ∥ w ∥ 控制间隔尺度。
第四步,看优化。 若目标是平方误差,通常求导令 0;若目标有 sigmoid 或神经网络,通常用梯度下降;若是 SVM hard margin,通常是带约束的二次规划。
第五步,检查答案形状。 比如求 w w w ,答案必须是 d d d 维向量;求核矩阵,答案必须是 n × n n \times n n × n 矩阵;求 PCA 投影,低维结果必须是 k k k 维。
速查表合集(按章节汇总)
本附录汇集各章的速查表(公式 / 概念 / 算法),从正文统一移至此处,按章节标注。
【Ch1-2 绪论与智能体】
关键概念速查表
名称
类型
核心内容
考点
四种 AI 定义
框架
像人/理性 × 思考/行动;教材取"理性地行动"
⭐⭐⭐
图灵测试
概念
模仿游戏,1950;暗示知识/推理/语言/学习四要素
⭐⭐
理性智能体
核心
f : P ∗ → A f:P^{*}\to A f : P ∗ → A ;agent = architecture + program
⭐⭐⭐
PAC 学习
理论
近似正确(R ( h ) ≤ ϵ R(h)\le\epsilon R ( h ) ≤ ϵ ) + 可能正确(P ≥ 1 − δ P\ge 1-\delta P ≥ 1 − δ );样本量多项式
⭐⭐⭐
Hoeffding 不等式
定理
R ( h ) ≤ R ^ S ( h ) + log ( 2 / δ ) / 2 m R(h)\le\hat{R}_S(h)+\sqrt{\log(2/\delta)/2m} R ( h ) ≤ R ^ S ( h ) + log ( 2 / δ ) / 2 m
⭐⭐⭐
奥卡姆剃刀
原则
$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
✔(d d d 有限)
✔
O ( b d ) O(b^d) O ( b d )
O ( b d ) O(b^d) O ( b d )
UCS
优先队列(按 g g g )
✔(step ≥ ϵ \epsilon ϵ )
✔
O ( b 1 + ⌊ C ∗ / ϵ ⌋ ) O(b^{1+\lfloor C^*/\epsilon\rfloor}) O ( b 1 + ⌊ C ∗ / ϵ ⌋ )
同时间
DFS
LIFO
✗(避免重复则在有限空间 ✔)
✗
O ( b m ) O(b^m) O ( b m )
O ( b m ) O(bm) O ( b m )
DLS
LIFO(限深 l l l )
✗
✗
O ( b l ) O(b^l) O ( b l )
O ( b l ) O(bl) O ( b l )
IDS
反复 DLS
✔
✔
O ( b d ) O(b^d) O ( b d )
O ( b d ) O(bd) O ( b d )
双向
两端 BFS
✔
✔
O ( b d / 2 ) O(b^{d/2}) O ( b d / 2 )
O ( b d / 2 ) O(b^{d/2}) O ( b d / 2 )
b b b =分支因子,d d d =最优解深度,m m m =最大深度,C ∗ C^* C ∗ =最优解代价,ϵ \epsilon ϵ =单步代价下界。
算法 / 复杂度 / 公式 速查表
算法
f ( n ) f(n) f ( n )
完备
最优
时间
空间
BFS
—(FIFO)
✔
✔(cost=1)
O ( b d ) O(b^d) O ( b d )
O ( b d ) O(b^d) O ( b d )
UCS
g ( n ) g(n) g ( n )
✔
✔
O ( b 1 + ⌊ C ∗ / ϵ ⌋ ) O(b^{1+\lfloor C^*/\epsilon\rfloor}) O ( b 1 + ⌊ C ∗ / ϵ ⌋ )
同时间
DFS
—(LIFO)
✗
✗
O ( b m ) O(b^m) O ( b m )
O ( b m ) O(bm) O ( b m )
DLS
—(限深 l l l )
✗
✗
O ( b l ) O(b^l) O ( b l )
O ( b l ) O(bl) O ( b l )
IDS
—(反复 DLS)
✔
✔(cost=1)
O ( b d ) O(b^d) O ( b d )
O ( b d ) O(bd) O ( b d )
双向
—(两端 BFS)
✔
✔(cost=1)
O ( b d / 2 ) O(b^{d/2}) O ( b d / 2 )
O ( b d / 2 ) O(b^{d/2}) O ( b d / 2 )
Greedy
h ( n ) h(n) h ( n )
✗
✗
O ( b m ) O(b^m) O ( b m )
O ( b m ) O(b^m) O ( b m )
A*
g ( n ) + h ( n ) g(n)+h(n) g ( n ) + h ( n )
✔
✔
指数级(效率最优)
指数级
关键公式
评价函数:f ( 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 ) ≤ h ∗ ( n )
一致:h ( n ) ≤ c ( n , a , n ′ ) + h ( n ′ ) h(n)\le c(n,a,n')+h(n') h ( n ) ≤ c ( n , a , n ′ ) + h ( n ′ ) ;一致 ⇒ 可采纳
一致下 f f f 单调不减:f ( n ′ ) ≥ f ( n ) f(n')\ge f(n) f ( n ′ ) ≥ f ( n )
A* 扩展范围:{ n : f ( n ) < C ∗ } \{n:f(n)<C^*\} { n : f ( n ) < C ∗ } 必扩展,{ n : f ( n ) > C ∗ } \{n:f(n)>C^*\} { n : f ( n ) > C ∗ } 不扩展
组合启发式:h ( n ) = max i h i ( n ) h(n)=\max_i h_i(n) h ( n ) = max i h i ( n ) 仍可采纳且占优
IDS 时间:d b + ( d − 1 ) b 2 + ⋯ + b d = O ( b d ) db+(d-1)b^2+\cdots+b^d=O(b^d) d b + ( d − 1 ) b 2 + ⋯ + b d = O ( b d )
BFS 求和:1 + b + ⋯ + b d = O ( b d ) 1+b+\cdots+b^d=O(b^d) 1 + b + ⋯ + b d = O ( b d )
【Ch5 约束满足与 SAT】
关键概念速查表
名称
类型
核心内容
考点
CSP 三元组 ⟨X,D,C⟩
定义
变量/值域/约束;解 = 相容且完备赋值
⭐⭐⭐
约束种类
分类
一元/二元/高阶/软约束
⭐⭐
CSP 变量分类
分类
离散有限 (O ( d n ) O(d^n) O ( d n ) )/离散无限/连续;SAT 是布尔 CSP
⭐⭐
回溯搜索
算法
可交换性 → 单变量 DFS;n-queens≈25
⭐⭐⭐
MRV / 度启发式 / LCV
启发式
fail-fast / tie-breaker / 最少排除
⭐⭐⭐
前向检验
推理
跟踪剩余合法值,提前终止
⭐⭐
弧相容 / AC-3
推理
O ( n 2 d 3 ) O(n^2d^3) O ( n 2 d 3 ) ;检测全部不一致 NP-hard
⭐⭐⭐
k-相容 / 强 k-相容
推理
路径相容;Alldiff 全局约束
⭐⭐
树结构 CSP
结构
拓扑排序 + 反向弧相容 → O ( n d 2 ) O(nd^2) O ( n d 2 )
⭐⭐⭐
子问题分解
结构
连通分量;n c d c \frac{n}{c}d^c c n d c 线性于 n n n
⭐⭐⭐
树分解
结构
近树结构;连通子问题合并
⭐⭐
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;c 3 ≈ 4.28 c_3\approx 4.28 c 3 ≈ 4 . 2 8
⭐⭐⭐
单元传播 / 纯文字消去
推理
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 ∧ ⋀ τ ∧ ⋁ ¬ p I\wedge\bigwedge\tau\wedge\bigvee\neg p I ∧ ⋀ τ ∧ ⋁ ¬ 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) ( n , A , R ) ;策略=动作上概率分布
⭐⭐
Nash 均衡
概念
所有玩家都最优反应;至少存在一个
⭐⭐
双人零和博弈
定理
Minimax 定理;均衡唯一且可互换;线性规划求解
⭐⭐
Minimax 算法
算法
MAX 取 max、MIN 取 min;最优 vs 最优对手
⭐⭐⭐
Minimax 复杂度
性质
时间 O ( b m ) O(b^m) O ( b m ) ,空间 O ( b m ) O(bm) O ( b m ) ;DFS
⭐⭐⭐
α-β 剪枝
算法
α=MAX 下界,β=MIN 上界;β<α 剪枝
⭐⭐⭐
α-β 复杂度
性质
完美排序 O ( b m / 2 ) O(b^{m/2}) O ( b m / 2 ) ;深度翻倍;不影响结果
⭐⭐⭐
评估函数
启发式
Eval = ∑ w i f i \text{Eval}=\sum w_i f_i Eval = ∑ w i f i ;序数效用(确定性下值不重要)
⭐⭐⭐
迭代加深 IDS
技巧
递增深度限;时钟到点用最深完成结果
⭐⭐⭐
随机博弈
定义
( n , S , A , T , R ) (n,S,A,T,R) ( n , S , A , T , R ) ;MDP+多智能体
⭐⭐
Expectiminimax
算法
引入 CHANCE 节点取期望;随机下精确值重要
⭐⭐⭐
最大期望效用
原则
在知识下最大化期望效用;≈理性定义
⭐⭐⭐
不完全信息博弈
方法
对所有发牌求期望极小极大
⭐⭐
蒙特卡洛方法
方法
随机抽样近似期望/积分;求 π、定积分
⭐⭐
大数定律/中心极限
定理
保证收敛;误差 O ( 1 / n ) O(1/\sqrt{n}) O ( 1 / n )
⭐⭐
UCB1
策略
μ ^ a + c ln t / n a \hat{\mu}_a+c\sqrt{\ln t/n_a} μ ^ a + c ln t / n a ;Hoeffding 推导
⭐⭐⭐
探索-利用
权衡
ε-贪心/乐观初值/UCB
⭐⭐⭐
MCTS 四步
算法
Selection/Expansion/Simulation/Backprop
⭐⭐⭐
UCT 公式
公式
Q ( a ) + c ln N ( s ) / N ( a ) Q(a)+c\sqrt{\ln N(s)/N(a)} Q ( a ) + c ln N ( s ) / N ( a )
⭐⭐⭐
PUCT (AlphaGo)
算法
引入 P ( s , a ) P(s,a) P ( s , a ) 先验;策略网+价值网+MCTS
⭐⭐
MCTS 性质
性质
anytime;不需评估函数;以概率 1 收敛最优
⭐⭐⭐
【Ch7-8 逻辑推理】
速查表
【Ch10 不确定性与贝叶斯网络】
公式与算法速查表
名称
公式 / 要点
概率公理
0 ≤ P ( A ) ≤ 1 0\le P(A)\le1 0 ≤ P ( A ) ≤ 1 ;P ( true ) = 1 P(\text{true})=1 P ( true ) = 1 ;P ( A ∨ B ) = P ( A ) + P ( B ) − P ( A ∧ B ) P(A\vee B)=P(A)+P(B)-P(A\wedge B) P ( A ∨ B ) = P ( A ) + P ( B ) − P ( A ∧ B )
条件概率
P ( a ∣ b ) = P ( a ∧ b ) / P ( b ) P(a\mid b)=P(a\wedge b)/P(b) P ( a ∣ b ) = P ( a ∧ b ) / P ( b )
乘法规则
P ( a ∧ b ) = P ( a ∣ b ) P ( b ) = P ( b ∣ a ) P ( a ) P(a\wedge b)=P(a\mid b)P(b)=P(b\mid a)P(a) P ( a ∧ b ) = P ( a ∣ b ) P ( b ) = P ( b ∣ a ) P ( a )
链式法则
P ( X 1 , … , X n ) = ∏ i P ( X i ∣ X 1 , … , X i − 1 ) P(X_1,\dots,X_n)=\prod_i P(X_i\mid X_1,\dots,X_{i-1}) P ( X 1 , … , X n ) = ∏ i P ( X i ∣ X 1 , … , X i − 1 )
全概率公式
P ( a ) = ∑ b P ( a ∣ b ) P ( b ) P(a)=\sum_b P(a\mid b)P(b) P ( a ) = ∑ b P ( a ∣ b ) P ( b )
边缘独立
X ⊥ Y ⟺ P ( X , Y ) = P ( X ) P ( Y ) X\perp Y\iff P(X,Y)=P(X)P(Y) X ⊥ Y ⟺ P ( X , Y ) = P ( X ) P ( Y )
条件独立
X ⊥ Y ∣ Z ⟺ P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) X\perp Y\mid Z\iff P(X,Y\mid Z)=P(X\mid Z)P(Y\mid Z) X ⊥ Y ∣ Z ⟺ P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z )
贝叶斯规则
P ( Y ∣ X ) = α P ( X ∣ Y ) P ( Y ) P(Y\mid X)=\alpha\,P(X\mid Y)P(Y) P ( Y ∣ X ) = α P ( X ∣ Y ) P ( Y )
归一化查询
P ( Y ∣ E = e ) = α ∑ h P ( Y , E = e , H = h ) P(Y\mid E=e)=\alpha\sum_h P(Y,E=e,H=h) P ( Y ∣ E = e ) = α ∑ h P ( Y , E = e , H = h )
贝叶斯网全局语义
P ( x 1 , … , x n ) = ∏ i P ( x i ∣ parents ( X i ) ) P(x_1,\dots,x_n)=\prod_i P(x_i\mid\text{parents}(X_i)) P ( x 1 , … , x n ) = ∏ i P ( x i ∣ parents ( X i ) )
紧致性
O ( n ⋅ 2 k ) O(n\cdot 2^k) O ( n ⋅ 2 k ) vs O ( 2 n ) O(2^n) O ( 2 n )
局部语义
X i ⊥ 非后代 ∣ Parents ( X i ) X_i\perp\text{非后代}\mid\text{Parents}(X_i) X i ⊥ 非后代 ∣ Parents ( X i ) ; ⟺ \iff ⟺ 全局语义
d-分隔判据
通路被 Z Z Z 阻塞 ⟺ (顺连/分连节点 ∈ Z Z Z ) 或 (汇连节点及其后代 ∉ Z Z Z )
整体马尔可夫性
Z Z Z d-分隔 X , Y ⇒ X ⊥ Y ∣ Z X,Y\Rightarrow X\perp Y\mid Z X , Y ⇒ X ⊥ Y ∣ Z
马尔可夫边界
m b ( X ) = mb(X)= m b ( X ) = 父 + 子 + 子的配偶;给定 m b ( X ) mb(X) m b ( X ) 则 X ⊥ X\perp X ⊥ 其余
Enumeration-Ask
P ( B ∣ j , m ) = α P ( B ) ∑ e P ( e ) ∑ a P ( a ∣ B , e ) P ( j ∣ a ) P ( m ∣ a ) P(B\mid j,m)=\alpha P(B)\sum_e P(e)\sum_a P(a\mid B,e)P(j\mid a)P(m\mid a) P ( B ∣ j , m ) = α P ( B ) ∑ e P ( e ) ∑ a P ( a ∣ B , e ) P ( j ∣ a ) P ( m ∣ a )
变量消元
按消元顺序:收集含 X X X 的因子 → 相乘 → 对 X X X 求和 → 替换
似然加权权重
w = ∏ j P ( E j = e j ∣ Parents ( E j ) ) w=\prod_j P(E_j=e_j\mid\text{Parents}(E_j)) w = ∏ j P ( E j = e j ∣ Parents ( E j ) )
Gibbs 抽样分布
P ( X ∣ D i − 1 ∖ X ) = P ( X ∣ m b ( X ) D i − 1 ) P(X\mid D_{i-1}\setminus X)=P(X\mid mb(X)_{D_{i-1}}) P ( X ∣ D i − 1 ∖ X ) = P ( X ∣ m b ( X ) D i − 1 )
朴素贝叶斯
P ( C ∣ E 1 , … , E n ) = α P ( C ) ∏ i P ( E i ∣ C ) P(C\mid E_1,\dots,E_n)=\alpha P(C)\prod_i P(E_i\mid C) P ( C ∣ E 1 , … , E n ) = α P ( C ) ∏ i P ( E i ∣ C )
MAP
h ∗ = arg max h P ( H = h ∣ E = e ) h^*=\arg\max_h P(H=h\mid E=e) h ∗ = arg max h P ( H = h ∣ E = e )
MPE
arg max 所有非证据变量 P ( ⋅ ∣ E = e ) \arg\max_{\text{所有非证据变量}} P(\cdot\mid E=e) arg max 所有非证据变量 P ( ⋅ ∣ E = e )
复杂度
单联通 O ( d k n ) O(d^k n) 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 ( h ) = Pr [ h ( x ) = c ( x ) ] ,R ^ S ( h ) = 1 m ∑ 1 [ h ( x i ) ≠ c ( x i ) ] \widehat R_S(h)=\tfrac{1}{m}\sum\mathbf{1}[h(x_i)\neq c(x_i)] R S ( h ) = m 1 ∑ 1 [ h ( x i ) = c ( x i ) ]
Hoeffding 单假设界
R ( h ) ≤ R ^ S ( h ) + log ( 2 / δ ) 2 m R(h)\le\widehat R_S(h)+\sqrt{\tfrac{\log(2/\delta)}{2m}} R ( h ) ≤ R S ( h ) + 2 m l o g ( 2 / δ )
有限假设集不一致界
R ( h ) ≤ R ^ S ( h ) + log ∣ H ∣ + log ( 2 / δ ) 2 m R(h)\le\widehat R_S(h)+\sqrt{\tfrac{\log\lvert H\rvert+\log(2/\delta)}{2m}} R ( h ) ≤ R S ( h ) + 2 m l o g ∣ H ∣ + l o g ( 2 / δ )
信息熵 / 信息增益
H ( Y ) = − ∑ p log 2 p H(Y)=-\sum p\log_2 p H ( Y ) = − ∑ p log 2 p ;I G = H ( Y ) − H ( Y ∣ X ) IG=H(Y)-H(Y\mid X) I G = H ( Y ) − H ( Y ∣ X )
信息增益率 (C4.5)
I G ratio = I G / H X ( Y ) IG_{\text{ratio}}=IG/H_X(Y) I G ratio = I G / H X ( Y )
基尼指数 (CART)
Gini = 1 − ∑ p i 2 \text{Gini}=1-\sum p_i^2 Gini = 1 − ∑ p i 2
正规方程
w ∗ = ( X ⊤ X ) − 1 X ⊤ y w^*=(X^\top X)^{-1}X^\top y w ∗ = ( X ⊤ X ) − 1 X ⊤ y
Sigmoid
σ ( x ) = 1 / ( 1 + e − x ) \sigma(x)=1/(1+e^{-x}) σ ( x ) = 1 / ( 1 + e − x ) ,σ ′ = σ ( 1 − σ ) \sigma'=\sigma(1-\sigma) σ ′ = σ ( 1 − σ )
交叉熵损失
E = − ∑ [ y ln y ^ + ( 1 − y ) ln ( 1 − y ^ ) ] E=-\sum[y\ln\hat y+(1-y)\ln(1-\hat y)] E = − ∑ [ y ln y ^ + ( 1 − y ) ln ( 1 − y ^ ) ]
偏差-方差分解
Error = Bias 2 + Var + σ 2 \text{Error}=\text{Bias}^2+\text{Var}+\sigma^2 Error = Bias 2 + Var + σ 2
L2/L1 正则
λ ∥ w ∥ 2 2 \lambda\lVert w\rVert_2^2 λ ∥ w ∥ 2 2 / λ ∣ w ∣ 1 \lambda\lvert w\rvert_1 λ ∣ w ∣ 1
SVM 原始
min 1 2 ∥ w ∥ 2 \min\tfrac12\lVert w\rVert^2 min 2 1 ∥ w ∥ 2 s.t. y i ( w ⊤ x i + b ) ≥ 1 y_i(w^\top x_i+b)\ge1 y i ( w ⊤ x i + b ) ≥ 1
SVM 对偶
max ∑ α i − 1 2 ∑ α i α j y i y j K ( x i , x j ) \max\sum\alpha_i-\tfrac12\sum\alpha_i\alpha_j y_iy_jK(x_i,x_j) max ∑ α i − 2 1 ∑ α i α j y i y j K ( x i , x j )
Hinge loss
max ( 0 , 1 − y ( w ⊤ x + b ) ) \max(0,1-y(w^\top x+b)) max ( 0 , 1 − y ( w ⊤ x + b ) )
高斯核
exp ( − ∥ x i − x j ∥ 2 / σ 2 ) \exp(-\lVert x_i-x_j\rVert^2/\sigma^2) exp ( − ∥ x i − x j ∥ 2 / σ 2 )
K-means 目标
J = ∑ ∥ x j − μ C ( j ) ∥ 2 J=\sum\lVert x_j-\mu_{C^{(j)}}\rVert^2 J = ∑ ∥ x j − μ C ( j ) ∥ 2
PCA 投影
y = P ⊤ x y=P^\top x y = P ⊤ x ;重构 x ^ = P P ⊤ x \hat x=PP^\top x x ^ = P P ⊤ x
EM E 步
γ i c = π c N ( x i ∣ μ c , Σ c ) / ∑ j π j N ( x i ∣ μ 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) γ i c = π c N ( x i ∣ μ c , Σ c ) / ∑ j π j N ( x i ∣ μ j , Σ j )
反向传播 δ 递推
δ ( l ) = ( ( W ( l + 1 ) ) ⊤ δ ( l + 1 ) ) ⊙ f l ′ ( z ( l ) ) \delta^{(l)}=((W^{(l+1)})^\top\delta^{(l+1)})\odot f_l'(z^{(l)}) δ ( l ) = ( ( W ( l + 1 ) ) ⊤ δ ( l + 1 ) ) ⊙ 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 θ t + 1 = θ t − v ^ t + ϵ η ⊙ m ^ t
Scaled Dot-Product
softmax ( Q K ⊤ / d k ) V \text{softmax}(QK^\top/\sqrt{d_k})V softmax ( Q K ⊤ / d k ) V
LSTM
c t = f t ⊙ c t − 1 + i t ⊙ c ~ t c_t=f_t\odot c_{t-1}+i_t\odot\tilde c_t c t = f t ⊙ c t − 1 + i t ⊙ c ~ t ;h t = o t ⊙ tanh ( c t ) h_t=o_t\odot\tanh(c_t) h t = o t ⊙ tanh ( c t )
算法速查(步骤)
ID3 / GrowTree :纯则叶 → 否则选最大 IG 属性分裂 → 递归。
KNN :存训练样本 → 算距离 → k k k 最近多数投票。
最小二乘 :构造 X X X → 解正规方程 w ∗ = ( X ⊤ X ) − 1 X ⊤ y w^*=(X^\top X)^{-1}X^\top y w ∗ = ( X ⊤ X ) − 1 X ⊤ y 。
Logistic 回归 SGD :w ← w − η ( σ ( w ⊤ x + b ) − y ) x w\leftarrow w-\eta(\sigma(w^\top x+b)-y)x w ← w − η ( σ ( w ⊤ x + b ) − y ) x 。
K-means :初始化 k k k 中心 → {分配到最近中心 / 中心取簇均值} → 收敛。
PCA :中心化 → 协方差矩阵 S = 1 n X X ⊤ S=\tfrac1n XX^\top S = n 1 X X ⊤ → 特征分解取前 m m m 特征向量 → 投影 P ⊤ x P^\top x P ⊤ x 。
EM :{E 步算后验 γ \gamma γ / M 步更新 μ , Σ , π \mu,\Sigma,\pi μ , Σ , π } → 收敛。
SVM 训练 :构核矩阵 K K K → 解对偶 QP 求 α \alpha α → 恢复 w , b w,b w , b ;测试 sign ( ∑ S V α i y i K ( x i , x ′ ) + b ) \text{sign}(\sum_{SV}\alpha_i y_iK(x_i,x')+b) sign ( ∑ S V α i y i K ( x i , x ′ ) + b ) 。
反向传播 :前馈算 z , a z,a z , a → 反向算 δ \delta δ → 算 ∂ J / ∂ W , ∂ J / ∂ b \partial J/\partial W,\partial J/\partial b ∂ J / ∂ W , ∂ J / ∂ b 更新。