MLAPP-2-2-mindmap.png

《Probabilistic Machine Learning: Advanced Topics》第1章“Introduction”详细讲解

1. 引言:从“曲线拟合”到“世界理解”

本章作为全书的开篇,旨在说明传统机器学习(尤其是深度学习)的局限性,并勾勒出本书将要探讨的更广阔领域——如何从“模式识别”走向对世界更深刻的理解和建模。

1.1 传统机器学习的本质

  • 核心任务:学习一个从输入 $ \mathcal{X} $ 到输出 $ \mathcal{Y} $ 的映射函数 $ f $,即 $ f: \mathcal{X} \to \mathcal{Y} $。
  • 常见形式
    • 分类问题:$ \mathcal{Y} = \{1,\dots,C\} $(离散标签)
    • 回归问题:$ \mathcal{Y} = \mathbb{R} $(连续值)
  • 代表方法:深度神经网络(DNN)、支持向量机、逻辑回归等。
  • 经典评价:图灵奖得主 Judea Pearl 将这种范式称为 “glorified curve fitting”(华丽的曲线拟合)——即模型只学习输入输出之间的相关性,而不理解背后的因果关系和生成过程。

例子:一个深度卷积网络可以准确识别图片中的猫和狗,但它不知道“猫为什么长这样”,也不知道如果改变光照或背景,识别结果是否会变。

1.2 为什么需要超越曲线拟合?

书中列出几个关键理由:

  1. 科学发现:需要理解数据背后的因果机制,例如医疗中找出疾病的真正原因。
  2. 稳健性:当测试数据分布与训练数据分布不一致时(如不同医院、不同季节),模型不应崩溃。
  3. 数据效率:人类能通过少量样本快速学习,而传统监督学习需要海量标注数据。
  4. 生成与创造:能够生成全新的、合理的图像、文本、图结构等。
  5. 决策与行动:不仅要知道“是什么”,还要知道“如果这样做,会发生什么”——这需要因果推断和不确定性下的决策。

因此,本书从概率建模的角度,将机器学习扩展为对数据生成过程的建模(Model-based approach),并贯穿贝叶斯推断的思想。


2. 全书六大主题概览

本书分为六个部分,每个部分对应一类核心任务。下图清晰地展示了它们的层次关系:

graph TD A[Fundamentals 基础] --> B[Inference 推断] B --> C[Prediction 预测] B --> D[Generation 生成] B --> E[Discovery 发现] E --> F[Action 行动] C --> F D --> F style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bfb,stroke:#333 style D fill:#fbb,stroke:#333 style E fill:#ffd,stroke:#333 style F fill:#ccf,stroke:#333

2.1 基础(Fundamentals)

涵盖概率、统计、图模型、信息论、优化。这是所有后续内容的数学基石。

2.2 推断(Inference)

讨论如何从数据中计算后验分布,包括近似推断算法(变分推断、MCMC、序贯蒙特卡洛等)。推断是连接模型与数据的桥梁。

2.3 预测(Prediction)

关注条件分布 $ p(y|x) $,即给定输入预测输出。这是传统监督学习的核心,但本书会引入贝叶斯神经网络、高斯过程等更鲁棒的预测模型。

2.4 生成(Generation)

研究无条件和条件生成模型,如变分自编码器(VAE)、自回归模型、归一化流、扩散模型、生成对抗网络(GAN)。这些模型能够创造全新的数据(如图像、文本)。

2.5 发现(Discovery)

利用隐变量模型从数据中挖掘有意义的隐结构,例如因子分析、主题模型、状态空间模型、图学习等。目标是“理解”数据背后的潜在因素。

2.6 行动(Action)

将模型用于决策,包括贝叶斯决策理论、强化学习、因果推断。这是将预测和发现转化为实际动作的最终环节。


3. 重要概念详细解析

3.1 数据生成过程(DGP)

  • 定义:假设观测数据是由一个隐式的随机过程生成的,包含隐变量和确定性关系。概率模型就是对这个过程的近似。
  • 重要性:只有理解了DGP,才能回答反事实问题(“如果当时没吃药,会怎样?”),也才能在分布偏移下保持鲁棒。

3.2 贝叶斯推断

  • 核心公式: $$ p(\theta|\mathcal{D}) = \frac{p(\mathcal{D}|\theta)p(\theta)}{p(\mathcal{D})} $$
  • 含义:将参数 $\theta$ 视为随机变量,用先验 $p(\theta)$ 表达主观信念,用数据更新为后验。
  • 与优化对比:优化得到单一点估计,贝叶斯得到分布,从而量化不确定性。

3.3 分布偏移

  • 定义:训练分布 $p_{\text{train}}$ 与测试分布 $p_{\text{test}}$ 不同。例如:训练集是晴天照片,测试集是阴天照片。
  • 影响:传统模型性能急剧下降。解决方向包括域适应稳健优化因果模型

3.4 生成式AI

  • 目标:从分布 $p(x)$ 或 $p(x|c)$ 中采样新样本。$x$ 可以是高维空间(图像、文本)。
  • 例子:输入文本“一只长颈鹿穿着圣诞毛衣”,模型生成对应图像。

3.5 潜在变量模型

  • 形式:$p(z,x) = p(z)p(x|z)$,其中 $z$ 是隐变量(通常低维),$x$ 是观测(高维)。
  • 用途:通过推断 $p(z|x)$ 发现数据的隐藏结构(如主题、风格、因果因子)。

3.6 因果推断与决策

  • 核心问题:在不确定性下,采取什么行动能获得最大期望效用?
  • 工具:结构因果模型、干预(do-calculus)、反事实推理、强化学习。

4. 举例说明

4.1 传统拟合 vs 生成式AI

  • 传统拟合:输入一张猫图片,输出标签“猫”。
  • 生成式AI:输入提示“一只猫在沙发上打盹”,输出一张逼真的猫图像。这要求模型理解“猫”、“沙发”、“打盹”的视觉概念及其组合方式。

4.2 分布偏移示例

  • 训练:用晴朗天气下的街景训练自动驾驶模型。
  • 测试:模型在雨雪天气下运行,性能下降。若能利用因果模型,知道天气影响路面状况但不影响交通规则,则可设计更鲁棒的决策。

4.3 因果推断

  • 问题:教育对收入的影响。直接观测数据中,高学历者收入更高,但可能有混淆因素(如家庭背景)。
  • 因果方法:使用工具变量(如距离大学的远近)来推断教育对收入的真实因果效应。

5. 本章与前后章节的联系

  • 与前一本教材(Murphy 2022):前一本书主要覆盖预测任务(监督学习),是本书的基础。本书在此基础上深入更高级主题:生成、发现、行动。
  • 为后续章节铺路
    • 第二章(概率)和第三章(统计)提供贝叶斯推断的数学基础。
    • 第四章(图模型)定义变量间依赖关系,为因果模型打底。
    • 第六、七部分(推断与预测)将反复用到这些基础。
  • 贯穿全书的思想:用概率模型描述不确定性,通过推断来学习、预测、生成、发现、决策。

6. 核心要点总结

6.1 本章核心思想

  • 机器学习不应止步于函数拟合,而要追求对世界更深的理解和建模
  • 四个扩展方向:生成、发现、稳健性、因果决策
  • 全书以概率模型为统一语言,强调贝叶斯推断数据生成过程

6.2 常见难点与学习建议

  • 难点1:从点估计(MLE/MAP)到后验分布的思想转变。
    • 建议:从简单例子(如抛硬币的Beta-Binomial)入手,理解不确定性如何被表示和更新。
  • 难点2:生成模型与判别模型的区别。
    • 建议:对比 $p(y|x)$ 和 $p(x)$ 的目标,并用图像分类和图像生成任务加以体会。
  • 难点3:因果推断的直观与反事实。
    • 建议:先掌握基本概念(干预、图模型),再通过具体研究案例(如吸烟与肺癌)理解识别条件。

6.3 学习路线图

  1. 夯实基础(概率、统计、信息论、优化)。
  2. 掌握推断方法,这是处理任何复杂概率模型的关键。
  3. 依次深入预测、生成、发现、行动,每部分都以前面为基础。

通过本章,读者将建立起对现代机器学习前沿领域的整体认知,并为后续各章的深入学习做好思想准备。


《Probabilistic Machine Learning: Advanced Topics》第2章“Probability”详细讲解

1. 引言:为什么概率论是机器学习的基石

概率论是处理不确定性的数学语言。在机器学习中,我们面对的数据总是带有噪声,模型参数也往往未知,甚至我们对世界本身的认知也是不确定的。概率论为我们提供了建模这种不确定性的统一框架。从贝叶斯推断到生成模型,从高斯过程到变分推断,所有高级主题都建立在坚实的概率基础之上。第2章正是为了铺垫这些内容,系统地回顾并扩展了概率论的核心概念。

本章从概率的公理出发,逐步引入随机变量、常见分布、多元高斯、指数族、马尔可夫链、随机变量变换以及分布间的散度。这些概念不仅构成后续章节的数学基础,也帮助读者建立一种“概率思维”的方式。

本章内容结构可以用下图概括:

graph LR A[概率空间] --> B[随机变量] B --> C[离散与连续] C --> D[常见分布] D --> E[多元高斯与线性系统] D --> F[指数族] B --> G[马尔可夫链] B --> H[随机变量变换] B --> I[分布间散度] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bfb,stroke:#333 style D fill:#fbb,stroke:#333 style E fill:#ffd,stroke:#333 style F fill:#ccf,stroke:#333 style G fill:#c9f,stroke:#333 style H fill:#fc9,stroke:#333 style I fill:#9cf,stroke:#333

接下来,我们将逐一深入每个模块。


2. 概率基础

2.1 概率空间

概率论用三个元素定义:样本空间 $\Omega$、事件空间 $\mathcal{F}$、概率测度 $\mathbb{P}$。

  • 样本空间 $\Omega$:所有可能结果的集合。例如抛一枚硬币,$\Omega=\{H,T\}$。
  • 事件空间 $\mathcal{F}$:$\Omega$ 的一些子集构成的 $\sigma$-代数。它包含空集、全集,并对补集和可列并封闭。
  • 概率测度 $\mathbb{P}$:从 $\mathcal{F}$ 到 $[0,1]$ 的函数,满足三条公理(非负、归一化、可列可加)。

例子:掷一个六面骰子,$\Omega=\{1,2,3,4,5,6\}$,事件“点数为偶数”对应集合 $\{2,4,6\}$,其概率为 $1/2$。

2.2 随机变量

随机变量 $X:\Omega \to \mathbb{R}$ 是将每个结果映射到一个实数的函数。它可以是离散的(取值可数)或连续的(取值不可数)。

  • 离散随机变量:概率质量函数 $p_X(x) = \mathbb{P}(X=x)$。
  • 连续随机变量:概率密度函数 $p_X(x)$,满足 $\mathbb{P}(a \le X \le b) = \int_a^b p_X(x) dx$。

例子:掷骰子的点数 $X$ 是离散随机变量。人的身高 $Y$(连续值)可视为连续随机变量。

2.3 概率公理与基本规则

  • 公理:$\mathbb{P}(E) \ge 0$,$\mathbb{P}(\Omega)=1$,互斥事件可加。
  • 补充规则:$\mathbb{P}(E^c) = 1 - \mathbb{P}(E)$。
  • 加法规则:$\mathbb{P}(E_1 \cup E_2) = \mathbb{P}(E_1) + \mathbb{P}(E_2) - \mathbb{P}(E_1 \cap E_2)$。

2.4 条件概率与贝叶斯规则

条件概率定义为

$$ \mathbb{P}(E_1|E_2) = \frac{\mathbb{P}(E_1 \cap E_2)}{\mathbb{P}(E_2)},\quad \mathbb{P}(E_2)>0. $$

乘法规则:$\mathbb{P}(E_1 \cap E_2) = \mathbb{P}(E_1|E_2)\mathbb{P}(E_2) = \mathbb{P}(E_2|E_1)\mathbb{P}(E_1)$。

贝叶斯规则

$$ \mathbb{P}(H|D) = \frac{\mathbb{P}(D|H)\mathbb{P}(H)}{\mathbb{P}(D)}, $$

其中 $H$ 是假设,$D$ 是数据。这是贝叶斯推断的核心公式。

例子:设疾病患病率 $P(H)=0.01$,检测敏感度 $P(D|H)=0.95$,误报率 $P(D|H^c)=0.05$。则检测阳性时真正患病的后验概率为

$$ P(H|D) = \frac{0.95\times 0.01}{0.95\times 0.01 + 0.05\times 0.99} \approx 0.161. $$

3. 常见概率分布

本章详细列举了机器学习中常用的分布。我们将它们分为离散和连续两类,并简要说明每种的适用场景。

3.1 离散分布

  • 伯努利分布 $\mathrm{Ber}(x|\mu)$:$x\in\{0,1\}$,参数 $\mu = p(x=1)$。
  • 二项分布 $\mathrm{Bin}(x|N,\mu)$:$N$ 次伯努利试验中成功次数。
  • 类别分布 $\mathrm{Cat}(x|\boldsymbol{\theta})$:$x\in\{1,\dots,K\}$,参数向量 $\theta_k = p(x=k)$。
  • 多项分布 $\mathcal{M}(\boldsymbol{x}|N,\boldsymbol{\theta})$:$N$ 次独立类别试验中各类别出现的次数向量。
  • 泊松分布 $\mathrm{Poi}(x|\lambda)$:计数数据,均值 = 方差 = $\lambda$。
  • 负二项分布 $\mathrm{NegBinom}(x|r,p)$:在成功 $r$ 次之前失败的次数,可处理过离散(方差 > 均值)。

例子:网页点击次数常用泊松或负二项建模;文本的词频用多项分布。

3.2 连续分布(单变量)

  • 高斯(正态)分布 $\mathcal{N}(x|\mu,\sigma^2)$:最常用的连续分布。
  • 学生 t 分布 $\mathcal{T}_\nu(x|\mu,\sigma^2)$:比高斯更重尾,对异常值更鲁棒。
  • 拉普拉斯分布 $\mathrm{Laplace}(x|\mu,b)$:尖峰、双指数,常用于稀疏正则化(L1)。
  • 伽马分布 $\mathrm{Ga}(x|a,b)$:支持正实数,是多种分布的基础(如指数、卡方)。
  • 指数分布 $\mathrm{Expon}(x|\lambda)$:无记忆性,描述等待时间。
  • 贝塔分布 $\mathrm{Beta}(x|a,b)$:支持 $[0,1]$,常用于概率参数的先验。
  • 帕累托分布 $\mathrm{Pareto}(x|m,\kappa)$:幂律分布,用于描述长尾现象(如财富、词频)。

例子:高斯误差假设在回归中常见;t 分布可用于稳健回归;贝塔分布是伯努利参数的共轭先验。

3.3 多元连续分布

  • 多元高斯(MVN) $\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu},\boldsymbol{\Sigma})$:全书最重要的多元分布。
  • 多元学生 t $\mathcal{T}_\nu(\boldsymbol{x}|\boldsymbol{\mu},\boldsymbol{\Sigma})$:更重尾的多元版本。
  • 冯·米塞斯-费舍尔分布 $\mathrm{vMF}(\boldsymbol{x}|\boldsymbol{\mu},\kappa)$:球面数据($\|\boldsymbol{x}\|=1$)的分布。
  • 矩阵正态分布 $\mathcal{MN}(\mathbf{X}|\mathbf{M},\mathbf{U},\mathbf{V})$:矩阵值随机变量,行和列均有协方差。
  • 威沙特分布 $\mathrm{Wi}(\boldsymbol{\Sigma}|\mathbf{S},\nu)$:高斯协方差矩阵的共轭先验。
  • 逆威沙特分布 $\mathrm{IW}(\boldsymbol{\Sigma}|\mathbf{S},\nu)$:威沙特的逆,常用于协方差的先验。
  • 狄利克雷分布 $\mathrm{Dir}(\boldsymbol{x}|\boldsymbol{\alpha})$:多项分布参数的共轭先验,支持概率单纯形。

例子:在贝叶斯线性回归中,用 NIW(正态逆威沙特)作为 $(\boldsymbol{\mu},\boldsymbol{\Sigma})$ 的联合先验。


4. 高斯联合分布

多元高斯因其丰富的数学性质而成为全书重点。2.3节详细讨论了它的性质。

4.1 定义与记号

$$ \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu},\boldsymbol{\Sigma}) = \frac{1}{(2\pi)^{D/2}|\boldsymbol{\Sigma}|^{1/2}} \exp\left[-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^\mathsf{T}\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\right] $$

其中 $\boldsymbol{\mu}$ 是均值向量,$\boldsymbol{\Sigma}$ 是协方差矩阵。马氏距离的平方为 $d^2 = (\boldsymbol{x}-\boldsymbol{\mu})^\mathsf{T}\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})$。

4.2 边缘与条件

将 $\boldsymbol{x}$ 分为两部分 $\boldsymbol{x}_1,\boldsymbol{x}_2$,对应地分割 $\boldsymbol{\mu},\boldsymbol{\Sigma}$。则:

  • 边缘分布:$p(\boldsymbol{x}_1) = \mathcal{N}(\boldsymbol{x}_1|\boldsymbol{\mu}_1,\boldsymbol{\Sigma}_{11})$。
  • 条件分布:$p(\boldsymbol{x}_1|\boldsymbol{x}_2) = \mathcal{N}(\boldsymbol{x}_1|\boldsymbol{\mu}_{1|2},\boldsymbol{\Sigma}_{1|2})$,其中 $$ \boldsymbol{\mu}_{1|2} = \boldsymbol{\mu}_1 + \boldsymbol{\Sigma}_{12}\boldsymbol{\Sigma}_{22}^{-1}(\boldsymbol{x}_2-\boldsymbol{\mu}_2),\quad \boldsymbol{\Sigma}_{1|2} = \boldsymbol{\Sigma}_{11} - \boldsymbol{\Sigma}_{12}\boldsymbol{\Sigma}_{22}^{-1}\boldsymbol{\Sigma}_{21}. $$

例子:给定一个人的身高 $\boldsymbol{x}_2$,我们可推断其体重的条件分布。

4.3 信息形式(自然参数)

定义精度矩阵 $\boldsymbol{\Lambda} = \boldsymbol{\Sigma}^{-1}$ 和 $\boldsymbol{\eta} = \boldsymbol{\Lambda}\boldsymbol{\mu}$。则高斯可写作

$$ \mathcal{N}_c(\boldsymbol{x}|\boldsymbol{\eta},\boldsymbol{\Lambda}) \propto \exp\left(\boldsymbol{x}^\mathsf{T}\boldsymbol{\eta} - \frac{1}{2}\boldsymbol{x}^\mathsf{T}\boldsymbol{\Lambda}\boldsymbol{x}\right). $$

这种形式在贝叶斯更新和消息传递算法中非常方便。

4.4 线性高斯系统

考虑模型

$$ p(\boldsymbol{z}) = \mathcal{N}(\boldsymbol{z}|\tilde{\boldsymbol{\mu}},\tilde{\boldsymbol{\Sigma}}),\quad p(\boldsymbol{y}|\boldsymbol{z}) = \mathcal{N}(\boldsymbol{y}|\mathbf{W}\boldsymbol{z}+\boldsymbol{b},\boldsymbol{\Omega}). $$

联合分布 $p(\boldsymbol{z},\boldsymbol{y})$ 仍是高斯,后验 $p(\boldsymbol{z}|\boldsymbol{y})$ 可由贝叶斯公式导出,这正是卡尔曼滤波的单步更新公式。

例子:传感器融合:$\boldsymbol{z}$ 是真实位置,两个传感器给出 $\boldsymbol{y}_1,\boldsymbol{y}_2$,通过联合高斯可得到融合后更精确的估计。

4.5 高斯的乘积

两个高斯密度(非归一化)相乘仍为高斯:

$$ \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_1,\boldsymbol{\Sigma}_1) \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_2,\boldsymbol{\Sigma}_2) \propto \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_3,\boldsymbol{\Sigma}_3), $$

其中 $\boldsymbol{\Sigma}_3 = (\boldsymbol{\Sigma}_1^{-1}+\boldsymbol{\Sigma}_2^{-1})^{-1}$,$\boldsymbol{\mu}_3 = \boldsymbol{\Sigma}_3(\boldsymbol{\Sigma}_1^{-1}\boldsymbol{\mu}_1+\boldsymbol{\Sigma}_2^{-1}\boldsymbol{\mu}_2)$。

这一性质在贝叶斯更新和消息传递中频繁出现。


5. 指数族分布

指数族是许多常见分布的统一定义形式,具有优美的数学性质,是广义线性模型(GLM)和变分推断的基础。

5.1 定义

$$ p(\boldsymbol{x}|\boldsymbol{\eta}) = h(\boldsymbol{x}) \exp\left[\boldsymbol{\eta}^\mathsf{T} \mathcal{T}(\boldsymbol{x}) - A(\boldsymbol{\eta})\right], $$

其中 $\boldsymbol{\eta}$ 是自然参数,$\mathcal{T}(\boldsymbol{x})$ 是充分统计量,$A(\boldsymbol{\eta})$ 是对数配分函数,$h(\boldsymbol{x})$ 是基础测度。

5.2 例子

  • 伯努利:$\eta = \log\frac{\mu}{1-\mu}$,$\mathcal{T}(x)=x$,$A(\eta)=\log(1+e^\eta)$。
  • 高斯(已知方差):$\eta = \mu$,$\mathcal{T}(x)=x$,$A(\mu)=\mu^2/2$。
  • 多元高斯:$\boldsymbol{\eta} = [\boldsymbol{\Lambda}\boldsymbol{\mu};\; -\frac{1}{2}\mathrm{vec}(\boldsymbol{\Lambda})]$,$\mathcal{T}(\boldsymbol{x}) = [\boldsymbol{x};\mathrm{vec}(\boldsymbol{x}\boldsymbol{x}^\mathsf{T})]$。

5.3 对数配分函数的导数

$$ \nabla_\boldsymbol{\eta} A(\boldsymbol{\eta}) = \mathbb{E}[\mathcal{T}(\boldsymbol{x})],\quad \nabla^2_\boldsymbol{\eta} A(\boldsymbol{\eta}) = \mathrm{Cov}[\mathcal{T}(\boldsymbol{x})]. $$

这意味着 $A$ 的梯度给出期望充分统计量,二阶导给出协方差(同时也是Fisher信息矩阵)。

5.4 自然参数与矩参数

  • 自然参数 $\boldsymbol{\eta}$ 是正则参数。
  • 矩参数 $\boldsymbol{m} = \mathbb{E}[\mathcal{T}(\boldsymbol{x})]$。 二者通过 $A$ 的梯度相互转换,形成对偶关系。

5.5 最大似然估计

对于 i.i.d. 样本 $\mathcal{D}$,对数似然为

$$ \log p(\mathcal{D}|\boldsymbol{\eta}) = \boldsymbol{\eta}^\mathsf{T}\sum_n \mathcal{T}(\boldsymbol{x}_n) - N A(\boldsymbol{\eta}) + \text{const}. $$

梯度为零给出矩匹配条件:

$$ \mathbb{E}[\mathcal{T}(\boldsymbol{x})] = \frac{1}{N}\sum_n \mathcal{T}(\boldsymbol{x}_n). $$

即模型的期望充分统计量等于经验平均。

5.6 最大熵推导

给定特征函数 $f_k(\boldsymbol{x})$ 的期望值约束,最大熵分布必然属于指数族。这揭示了指数族是信息论意义下最“中性”的分布。


6. 随机变量的变换

6.1 可逆变换(双射)

若 $\boldsymbol{y}=f(\boldsymbol{x})$ 是双射,且可微,则

$$ p_Y(\boldsymbol{y}) = p_X(f^{-1}(\boldsymbol{y})) \left|\det \mathbf{J}_{f^{-1}}(\boldsymbol{y})\right|. $$

其中 $\mathbf{J}$ 是雅可比矩阵。

例子:$\boldsymbol{x}\sim\mathcal{N}(\boldsymbol{\mu},\boldsymbol{\Sigma})$,$\boldsymbol{y}=\mathbf{A}\boldsymbol{x}+\boldsymbol{b}$,则 $\boldsymbol{y}\sim\mathcal{N}(\mathbf{A}\boldsymbol{\mu}+\boldsymbol{b},\mathbf{A}\boldsymbol{\Sigma}\mathbf{A}^\mathsf{T})$。

6.2 蒙特卡洛近似

当变换复杂时,可通过抽样近似:

$$ p_Y(\boldsymbol{y}) \approx \frac{1}{S}\sum_{s=1}^S \delta(\boldsymbol{y} - f(\boldsymbol{x}_s)),\quad \boldsymbol{x}_s\sim p_X. $$

6.3 概率积分变换

若 $X\sim F_X$,则 $Y = F_X(X)$ 服从均匀分布 $U(0,1)$。逆变换用于从均匀分布生成任意分布的样本。


7. 马尔可夫链

7.1 定义

一个随机过程 $\{X_t\}_{t\ge 1}$ 称为一阶马尔可夫链,如果

$$ p(X_{t+1}=x_{t+1} | X_{1:t}=x_{1:t}) = p(X_{t+1}=x_{t+1} | X_t=x_t). $$

7.2 参数化

  • 转移核 $p(x_t|x_{t-1})$,若与时间无关,则称为齐次链。
  • 转移矩阵(离散状态)$\mathbf{A}$,其中 $A_{ij} = p(X_t=j|X_{t-1}=i)$,每行和为1。

7.3 高阶马尔可夫

可通过状态扩维转化为一阶链。例如二阶链可将状态定义为 $(X_{t-1},X_t)$。

7.4 应用:语言建模

n-gram 模型是离散状态马尔可夫链,用于预测下一个词。

7.5 参数估计

  • MLE:$\hat{A}_{jk} = N_{jk}/N_j$,其中 $N_{jk}$ 是从状态 $j$ 到 $k$ 的转移计数。
  • 稀疏数据问题:许多转移从未出现,导致估计为0。用MAP加先验(如Dirichlet)平滑,即 $\hat{A}_{jk} = (N_{jk}+\alpha)/(N_j+K\alpha)$(加一平滑)。

7.6 平稳分布

  • 分布 $\boldsymbol{\pi}$ 满足 $\boldsymbol{\pi} = \boldsymbol{\pi}\mathbf{A}$ 称为平稳分布。
  • 存在唯一平稳分布当且仅当链是不可约且非周期的。
  • 细致平衡条件 $\pi_i A_{ij} = \pi_j A_{ji}$ 是时间可逆的充分条件,常用于设计MCMC。

8. 概率分布之间的散度

散度是度量两个分布差异的工具,在生成模型、变分推断、模型选择中至关重要。

8.1 $f$-散度

$$ D_f(p\|q) = \int q(x) f\left(\frac{p(x)}{q(x)}\right) dx, $$

其中 $f$ 是凸函数且 $f(1)=0$。重要特例:

  • KL散度 $f(r)=r\log r$:$D_{\mathrm{KL}}(p\|q) = \int p(x)\log\frac{p(x)}{q(x)}dx$。
  • α-散度:$f(r) = \frac{4}{1-\alpha^2}(1-r^{(1+\alpha)/2})$,连接 KL ($\alpha\to 1$ 和 $\alpha\to -1$) 和 Hellinger ($\alpha=0.5$)。
  • Hellinger距离 $f(r)=(\sqrt{r}-1)^2$。
  • χ²散度 $f(r)=(r-1)^2$。

8.2 积分概率度量(IPM)

$$ D_{\mathcal{F}}(P,Q) = \sup_{f\in\mathcal{F}} \left|\mathbb{E}_P[f] - \mathbb{E}_Q[f]\right|. $$
  • Wasserstein-1距离:$\mathcal{F}$ 取 Lipschitz 常数 ≤ 1 的函数。
  • MMD(最大均值差异):$\mathcal{F}$ 取 RKHS 中的单位球函数,可化为核函数计算。

8.3 最大均值差异(MMD)

$$ \mathrm{MMD}^2(P,Q) = \|\mathbb{E}_P[\phi(X)] - \mathbb{E}_Q[\phi(Y)]\|_{\mathcal{H}}^2 = \mathbb{E}[k(X,X')] + \mathbb{E}[k(Y,Y')] - 2\mathbb{E}[k(X,Y)]. $$

通过核技巧可方便地估计。

8.4 总变差距离

$$ D_{\mathrm{TV}}(P,Q) = \frac{1}{2}\int |p(x)-q(x)|dx. $$

它是唯一既是 $f$-散度又是 IPM 的散度。

8.5 密度比估计与二分类

训练一个分类器区分来自 $P$(标签1)和 $Q$(标签0)的样本,则其输出可估计密度比:

$$ \frac{p(x)}{q(x)} = \frac{p(y=1|x)}{p(y=0|x)} \times \frac{1-\pi}{\pi}. $$

此技巧在 GAN、重要性采样等领域广泛应用。


9. 本章总结与重点

9.1 核心要点

  1. 概率公理与贝叶斯规则是所有推断的基础。
  2. 常见分布是构建概率模型的砖块,需熟悉其形式、参数、支持集。
  3. 多元高斯及其条件公式是线性高斯模型和卡尔曼滤波的数学核心。
  4. 指数族提供统一视角,其性质(矩匹配、充分统计量)贯穿全书。
  5. 马尔可夫链是时序建模的基础,平稳分布与细致平衡对MCMC至关重要。
  6. 散度是评估模型、比较分布的核心工具,尤其是 KL、MMD。

9.2 常见难点

  • 边缘与条件公式的推导:需要熟练掌握分块矩阵求逆和舒尔补。
  • 指数族的自然参数与矩参数转换:理解 $A(\boldsymbol{\eta})$ 的凸性及其导数意义。
  • 平稳分布的存在性与细致平衡:不可约、非周期、正返等概念。
  • f-散度与 IPM 的区别:一个是基于密度比,一个是基于函数类。

9.3 学习建议

  • 多动手推导高斯条件公式,并用小例子验证。
  • 用代码实现简单分布的采样和矩估计,加深对指数族的理解。
  • 模拟一个两状态马尔可夫链,计算其平稳分布并验证细致平衡。
  • 对比 KL 和 MMD 在区分两个简单分布时的表现,体会它们的不同性质。

10. 与前后章节的联系

  • 前一章(第1章) 提供了全书概览,本章则夯实基础。
  • 后续章节
    • 第3章“统计”直接利用本章的分布进行贝叶斯推断。
    • 第4章“图模型”用条件独立性简化联合分布,需熟知边缘与条件。
    • 第5章“信息论”深入探讨 KL 散度、互信息,建立在散度概念之上。
    • 第6章“优化”中的自然梯度与 Fisher 信息矩阵源于指数族。
    • 第8章“卡尔曼滤波”完全建立在线性高斯系统之上。

本章是理解全书所有算法的必要前提,读者应扎实掌握。


《Probabilistic Machine Learning: Advanced Topics》第3章“Statistics”详细讲解

1. 引言

统计学是机器学习的支柱,它提供了从数据中学习和推断未知参数的方法。第2章建立了概率论的数学基础,而本章则进入统计推断的领域,探讨两种主要的范式:贝叶斯统计频率统计。我们将深入理解它们如何从数据中提炼信息、表达不确定性,并应用于模型选择、假设检验和缺失数据处理等实际问题。

本章的知识结构可以用下图表示:

graph TD A[统计推断] --> B[贝叶斯统计] A --> C[频率统计] B --> D[先验、似然、后验] B --> E[共轭先验] B --> F[无信息先验] B --> G[层次先验] B --> H[经验贝叶斯] B --> I[模型选择与检查] C --> J[抽样分布与MLE] C --> K[置信区间与p值] C --> L[假设检验] I --> M[贝叶斯因子] I --> N[信息准则] L --> O[贝叶斯假设检验] L --> P[频率假设检验] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bfb,stroke:#333 style E fill:#bfb,stroke:#333 style F fill:#bfb,stroke:#333 style G fill:#bfb,stroke:#333 style H fill:#bfb,stroke:#333 style I fill:#bfb,stroke:#333 style J fill:#fbb,stroke:#333 style K fill:#fbb,stroke:#333 style L fill:#fbb,stroke:#333

本章旨在回答:给定观测数据 $\mathcal{D}$,我们如何推断未知参数 $\theta$?两种主要学派给出了不同的答案:

  • 贝叶斯统计:将 $\theta$ 视为随机变量,利用先验信息,通过贝叶斯规则更新为后验分布。
  • 频率统计:将 $\theta$ 视为未知固定常数,通过分析估计量在重复抽样下的性质进行推断。

本章将详细阐述这两种范式,并探讨它们在实践中的各种延伸。


2. 贝叶斯统计

2.1 核心思想

贝叶斯统计将未知参数 $\theta$ 视为随机变量,用概率分布表达对其的不确定性。给定数据 $\mathcal{D}$,我们通过贝叶斯规则计算后验分布:

$$ p(\theta|\mathcal{D}) = \frac{p(\mathcal{D}|\theta)p(\theta)}{p(\mathcal{D})} = \frac{p(\mathcal{D}|\theta)p(\theta)}{\int p(\mathcal{D}|\theta')p(\theta')d\theta'}. $$
  • 先验 $p(\theta)$:在观测数据之前对 $\theta$ 的信念。
  • 似然 $p(\mathcal{D}|\theta)$:给定 $\theta$ 下数据出现的概率。
  • 后验 $p(\theta|\mathcal{D})$:观测数据后对 $\theta$ 的更新信念。
  • 证据(边际似然) $p(\mathcal{D})$:归一化常数,也是模型选择的关键量。

2.2 例子:抛硬币(Beta-Binomial 模型)

  • 模型:$y_i \sim \mathrm{Ber}(\theta)$,观测 $N_1$ 次正面,$N_0$ 次反面。
  • 先验:$\theta \sim \mathrm{Beta}(\tilde{\alpha},\tilde{\beta})$。
  • 后验:$\theta|\mathcal{D} \sim \mathrm{Beta}(\tilde{\alpha}+N_1,\tilde{\beta}+N_0)$。
  • 后验均值:$\mathbb{E}[\theta|\mathcal{D}] = \frac{\tilde{\alpha}+N_1}{\tilde{\alpha}+\tilde{\beta}+N}$,是先验均值与MLE的凸组合。
  • 后验众数(MAP):$\hat{\theta}_{\mathrm{map}} = \frac{\tilde{\alpha}+N_1-1}{\tilde{\alpha}+\tilde{\beta}+N-2}$。
  • 后验预测:下一次出现正面的概率 $p(y=1|\mathcal{D}) = \mathbb{E}[\theta|\mathcal{D}]$。
  • 边际似然:$p(\mathcal{D}) = \frac{B(\tilde{\alpha}+N_1,\tilde{\beta}+N_0)}{B(\tilde{\alpha},\tilde{\beta})}$,其中 $B$ 是贝塔函数。

这个例子展示了贝叶斯推断的完整流程:先验 → 似然 → 后验 → 预测。

2.3 其他重要概念

  • 可信区间:后验分布中概率质量 $1-\alpha$ 的区域,例如中心区间取 $\alpha/2$ 和 $1-\alpha/2$ 分位数。
  • 最高后验密度(HPD)区间:后验密度高于某阈值的区域,通常比中心区间更窄。
  • 后验预测分布:$p(\tilde{y}|\mathcal{D}) = \int p(\tilde{y}|\theta) p(\theta|\mathcal{D}) d\theta$,用于预测新观测。
  • 交换性与德·菲内蒂定理:可交换序列等价于存在参数 $\theta$ 使观测条件独立同分布,从而为贝叶斯方法提供哲学基础。

3. 频率统计

3.1 核心思想

频率统计将参数 $\theta$ 视为固定未知常数,不确定性来自数据的随机性。一个估计量 $\hat{\theta}(\mathcal{D})$ 的抽样分布描述了它在重复抽样下的变化。

3.2 抽样分布与 Bootstrap

  • 抽样分布:$\hat{\theta}$ 作为随机变量 $\mathcal{D}$ 的函数的分布。
  • Bootstrap:用重采样近似抽样分布。参数化Bootstrap从估计的模型 $p(x|\hat{\theta})$ 中生成样本;非参数Bootstrap从原始数据中重采样。

3.3 MLE 的渐近正态性

  • 在大样本下,$\sqrt{N}(\hat{\theta}_{\mathrm{MLE}} - \theta^*) \xrightarrow{d} \mathcal{N}(0, \mathbf{F}(\theta^*)^{-1})$,其中 $\mathbf{F}$ 是 Fisher 信息矩阵。
  • Fisher 信息矩阵定义为 $$ \mathbf{F}(\theta)_{ij} = \mathbb{E}_{p(x|\theta)}\left[\frac{\partial}{\partial\theta_i}\log p(x|\theta)\frac{\partial}{\partial\theta_j}\log p(x|\theta)\right] = -\mathbb{E}_{p(x|\theta)}\left[\frac{\partial^2}{\partial\theta_i\partial\theta_j}\log p(x|\theta)\right]. $$ 它衡量了似然函数的曲率,即参数的信息含量。

3.4 频率统计的反直觉性

  • 置信区间:$95\%$ CI 的定义是,在重复抽样中,大约 $95\%$ 的区间覆盖真实参数。但它不能解释为“参数在此区间内的概率为 0.95”——后者是贝叶斯可信区间的解释。
  • p 值:在零假设下,观测到至少当前极端的统计量的概率。p 值 ≠ $P(H_0|\mathcal{D})$,常被误解。
  • 例:美国国会例子说明 p 值不能代替后验概率。

3.5 为什么不是所有人都用贝叶斯?

  • 历史上计算困难,但现在算法(MCMC、变分推断)已大大缓解。
  • 频率方法在某些情况下更简单、客观,且对模型错误不敏感。
  • 但贝叶斯方法提供一致的概率框架,更适合条件化于数据。

4. 共轭先验

4.1 定义

如果先验和后验属于同一分布族,则称该先验是共轭的。共轭性简化了计算,后验参数可由先验参数加数据的充分统计量得到。

4.2 例子

  • Beta-Binomial:见2.2。
  • Dirichlet-Categorical
    • 似然:$p(\mathcal{D}|\boldsymbol{\theta}) = \prod_k \theta_k^{N_k}$。
    • 先验:$\boldsymbol{\theta} \sim \mathrm{Dir}(\tilde{\boldsymbol{\alpha}})$。
    • 后验:$\mathrm{Dir}(\tilde{\boldsymbol{\alpha}}+\mathbf{N})$。
    • 后验均值:$\mathbb{E}[\theta_k|\mathcal{D}] = (\tilde{\alpha}_k+N_k)/(\tilde{\alpha}_0+N)$。
  • 正态-正态(已知方差)
    • 似然:$p(\mathcal{D}|\mu) \propto \prod_n \mathcal{N}(y_n|\mu,\sigma^2)$。
    • 先验:$\mu \sim \mathcal{N}(\tilde{m},\tilde{\tau}^2)$。
    • 后验:$\mu|\mathcal{D} \sim \mathcal{N}(\tilde{m},\tilde{\tau}^2)$,其中 $$ \tilde{\tau}^{-2} = \tilde{\tau}^{-2} + N\sigma^{-2},\quad \tilde{m} = \tilde{\tau}^2(\tilde{m}\tilde{\tau}^{-2} + \bar{y}N\sigma^{-2}). $$
  • 逆伽马-正态(已知均值):用于估计方差。
  • 正态-逆伽马(NIG):联合推断均值与方差。

4.3 一般指数族

对于指数族似然 $p(\mathcal{D}|\boldsymbol{\eta}) \propto \exp(\boldsymbol{\eta}^\mathsf{T}\mathbf{s}(\mathcal{D}) - N A(\boldsymbol{\eta}))$,共轭先验为

$$ p(\boldsymbol{\eta}|\tilde{\boldsymbol{\tau}},\tilde{\nu}) \propto \exp(\tilde{\boldsymbol{\tau}}^\mathsf{T}\boldsymbol{\eta} - \tilde{\nu} A(\boldsymbol{\eta})). $$

后验更新只需 $\tilde{\boldsymbol{\tau}} \leftarrow \tilde{\boldsymbol{\tau}} + \mathbf{s}(\mathcal{D})$,$\tilde{\nu} \leftarrow \tilde{\nu} + N$。

4.4 非共轭先验

  • 混合共轭先验:先验是共轭分布的混合,后验仍是混合。
  • 稳健先验:如 Cauchy、t 分布,对异常值鲁棒。
  • 方差参数的先验:对于标量方差,常用半柯西、半正态等弱信息先验,避免逆伽马在层次模型中导致的病态。
  • 协方差矩阵的先验:常用 LKJ 先验用于相关矩阵,结合尺度参数的先验。

5. 无信息先验

当领域知识很少时,我们希望先验“让数据自己说话”。无信息先验旨在减少先验的影响。

5.1 最大熵先验

给定期望约束,使熵最大的分布是指数族。例如,给定均值约束,最大熵分布是高斯。

5.2 杰弗里斯先验

  • 定义:$p(\theta) \propto \sqrt{\det \mathbf{F}(\theta)}$,其中 $\mathbf{F}$ 是 Fisher 信息矩阵。
  • 性质:对参数变换不变(若 $\phi = f(\theta)$,则 $p_\phi(\phi) \propto \sqrt{F(\phi)}$)。
  • 例子
    • 二项分布:$p(\theta) \propto \theta^{-1/2}(1-\theta)^{-1/2} = \mathrm{Beta}(1/2,1/2)$。
    • 多元正态:均值与方差独立时,$p(\mu,\sigma^2) \propto \sigma^{-2}$。

5.3 不变先验

  • 平移不变:$p(\mu) \propto 1$(位置参数)。
  • 尺度不变:$p(\sigma) \propto 1/\sigma$(尺度参数)。

5.4 参考先验

通过最大化后验与先验的期望 KL 散度得到,在多维情况下可能比杰弗里斯更优。


6. 层次先验

当数据来自多个相关组时,层次模型允许各组共享统计强度。

  • 模型: $$ p(\boldsymbol{\xi}, \{\theta_j\}, \mathcal{D}) = p(\boldsymbol{\xi}) \prod_{j=1}^J p(\theta_j|\boldsymbol{\xi}) \prod_{i=1}^{N_j} p(y_{ji}|\theta_j). $$
  • 例子:大鼠肿瘤数据——不同组的肿瘤发生率 $\theta_j$ 来自共同的 Beta 分布 $\mathrm{Beta}(a,b)$,超参数 $a,b$ 有先验。
  • 收缩效应:后验均值向整体均值收缩,数据少的组受益更多。
  • 非中心参数化:将 $\theta_j = \mu + \tau \eta_j$ 分解,有助于改善采样。

7. 经验贝叶斯

经验贝叶斯用数据估计先验的超参数,然后基于此进行贝叶斯推断。它是贝叶斯和频率的折中。

  • 方法:最大化边际似然 $p(\mathcal{D}|\boldsymbol{\xi}) = \int p(\mathcal{D}|\theta) p(\theta|\boldsymbol{\xi}) d\theta$ 得到 $\hat{\boldsymbol{\xi}}$,然后用 $p(\theta|\hat{\boldsymbol{\xi}},\mathcal{D})$ 做推断。
  • 例子
    • Beta-Binomial:通过优化 $a,b$ 得到 $\hat{a},\hat{b}$。
    • 高斯层次模型:用矩估计得到 $\hat{\mu},\hat{\tau}^2$。
    • n-gram 平滑:用 Dirichlet 先验的 EB 估计,得到比加一平滑更合理的概率。

8. 模型选择

模型选择是在不同复杂度的模型中挑选最合适的。

8.1 贝叶斯模型选择

  • 后验模型概率 $p(m|\mathcal{D}) \propto p(\mathcal{D}|m) p(m)$。
  • 贝叶斯因子 $B_{10} = p(\mathcal{D}|M_1)/p(\mathcal{D}|M_0)$,比较两个模型。
  • 边际似然 自然包含奥卡姆剃刀:复杂模型需要将概率质量分散到更多参数空间,对任何特定数据集只能分配较低概率。

8.2 贝叶斯模型平均(BMA)

  • 预测时对所有模型加权平均:$p(y|\mathcal{D}) = \sum_m p(y|m) p(m|\mathcal{D})$。

8.3 边际似然估计

  • 对共轭模型可解析计算。
  • 调和均值估计(不稳定,不推荐)。
  • 退火重要性采样(AIS)、序贯蒙特卡洛(SMC)、嵌套采样更可靠。
  • 变分下界(ELBO)可近似。

8.4 交叉验证与边际似然的关系

  • LOO-CV 近似于逐次预测似然的乘积,与边际似然(序贯预测)相似。
  • 条件边际似然(CLML):只用后一部分数据计算边际似然,能更好预测泛化性能。

8.5 信息准则

  • AIC:$-2\log\hat{L} + 2p$(渐近等价于 LOOCV 在某些条件下)。
  • BIC:$-2\log\hat{L} + p\log N$(拉普拉斯近似边际似然)。
  • WAIC:用后验样本的方差作为复杂度惩罚,适用于奇异模型。

9. 模型检查

模型检查评估模型是否与数据一致,不涉及替代模型。

  • 后验预测检查(PPC):从后验预测分布生成模拟数据集 $\tilde{\mathcal{D}}$,计算检验统计量 $T(\tilde{\mathcal{D}})$,与观测 $T(\mathcal{D})$ 比较。若观测值在模拟分布的极端,模型可能有问题。
  • 贝叶斯 p 值:$\Pr(T(\tilde{\mathcal{D}}) > T(\mathcal{D}) | \mathcal{D})$。极端值(接近 0 或 1)表明模型拟合不佳。

10. 假设检验

10.1 频率方法

  • NHST:定义零假设 $H_0$,选择检验统计量 $T(\mathcal{D})$,计算 p 值。若 p < α,拒绝 $H_0$。
  • 问题:p 值不能解释为 $P(H_0|\mathcal{D})$,常被误解。

10.2 贝叶斯方法

  • 贝叶斯因子:模型比较视角,$B_{10}$。
  • 参数估计视角:计算后验中参数落在 ROPE(实际等价区间)内的概率。
  • 例子
    • 单样本比例检验(二项):后验 Beta,计算 $P(\theta>0.5|\mathcal{D})$。
    • 两样本比例检验:后验差。
    • t 检验:用 t 分布似然,弱信息先验。
    • 相关检验:用正态-逆Wishart 模型。

10.3 常见统计检验与线性模型

许多经典检验(t 检验、ANOVA、卡方检验)可表示为 GLM 的特例,或通过秩变换转化为线性模型。这统一了理解并便于扩展。


11. 缺失数据

  • 缺失机制:MCAR(完全随机缺失)、MAR(随机缺失,依赖于观测)、MNAR(非随机缺失)。
  • 处理方法
    • MCAR/MAR 时,可忽略缺失机制,直接用观测数据进行似然或贝叶斯推断。
    • MNAR 需建模缺失机制。
    • 生成模型可用 EM 或贝叶斯方法插补缺失值。

12. 总结与重点

12.1 核心要点

  • 贝叶斯与频率是两种不同的推断范式,各有优劣。贝叶斯提供条件于数据的概率陈述,频率强调长期表现。
  • 共轭先验简化计算,是理解指数族和贝叶斯更新的关键。
  • 无信息先验试图最小化主观影响,但需谨慎使用(尤其模型选择时)。
  • 层次模型是处理分组数据、实现收缩的强大工具。
  • 模型选择需权衡拟合度与复杂度,边际似然和交叉验证是重要工具。
  • 模型检查帮助诊断模型缺陷。
  • 假设检验在贝叶斯框架下更直观,避免 p 值的误读。

12.2 常见难点

  • 先验选择:信息性 vs 无信息,共轭 vs 非共轭。
  • 边际似然的计算:易混淆,且对先验敏感。
  • 贝叶斯因子的解释:Jeffreys 尺度。
  • p 值与后验概率的区别:需通过具体例子反复强调。

12.3 学习建议

  • 用抛硬币、正态均值的例子手动推导后验,体会共轭和更新过程。
  • 用简单数据集(如 rats、schools)练习层次模型和收缩。
  • 用贝叶斯软件(如 PyMC、Stan)实现模型选择(WAIC、LOO)。
  • 批判性地比较频率和贝叶斯方法对同一问题的结果。

13. 与前后章节的联系

  • 第2章(概率) 提供了本章的数学语言,如分布、贝叶斯规则。
  • 第4章(图模型) 将层次模型用图表示,并扩展到更复杂的依赖结构。
  • 第7章(推断算法) 讨论 MCMC、变分推断,是实现本章贝叶斯模型的关键工具。
  • 第14章(预测模型) 涉及模型评估、校准,与本章模型检查相关。
  • 第34章(决策理论) 将统计推断与决策结合,以损失函数和风险为纽带。

本章为全书后续所有概率建模章节打下坚实的统计基础,读者应充分理解贝叶斯思想及其与频率方法的区别。


《Probabilistic Machine Learning: Advanced Topics》第4章“Graphical Models”详细讲解

1. 引言:为什么需要图模型?

现实世界中的问题通常涉及大量相互依赖的随机变量。如果我们用一个联合分布 $p(x_1,x_2,\dots,x_D)$ 来描述它们,参数数量将随 $D$ 呈指数增长(对于离散变量,需要 $K^D$ 个参数)。概率图模型(PGM)提供了一种简洁的方式,利用变量之间的条件独立性,将联合分布分解为多个局部函数的乘积,从而大大减少参数数量,并使推理和学习变得更加高效。

正如 Michael Jordan 所说,概率论通过分解平均两种机制处理复杂系统。图模型正是这两种机制的形式化体现:分解通过图结构将联合分布拆分为局部条件概率分布(CPD)或势函数;平均则通过贝叶斯推断对不确定性进行积分。

本章将系统介绍两类主要的图模型:有向图模型(贝叶斯网)和无向图模型(马尔可夫随机场),以及它们的扩展和应用。

本章的知识体系可以用下图概括:

graph TD A[概率图模型 PGM] --> B[有向图模型 DPGM
贝叶斯网] A --> C[无向图模型 UPGM
马尔可夫随机场] A --> D[条件随机场 CRF] A --> E[扩展模型] A --> F[结构因果模型 SCM] B --> B1[表示:联合分布分解为
CPD的乘积] B --> B2[条件独立性:d-分离] B --> B3[马尔可夫毯] B --> B4[生成:祖先采样] B --> B5[推断:变量消除、消息传递] B --> B6["学习:完全/不完全数据"] C --> C1[表示:吉布斯分布
势函数乘积] C --> C2[Hammersley-Clifford定理] C --> C3[条件独立性:图分离] C --> C4[例子:Ising, Potts, RBM] C --> C5[推断:难,需近似] C --> C6[学习:MLE需计算配分函数] D --> D1["定义:条件模型 p(y|x)"] D --> D2[链式CRF] D --> D3[网格CRF] D --> D4[参数估计] E --> E1[因子图] E --> E2[概率电路] E --> E3[关系模型] E --> E4[开放宇宙模型] E --> E5[程序作为概率模型] F --> F1[SCM定义] F --> F2[do算子与干预] F --> F3[反事实与潜在结果] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bbf,stroke:#333 style E fill:#bfb,stroke:#333 style F fill:#fbb,stroke:#333

接下来,我们将沿着这个结构逐一展开。


2. 有向图模型(贝叶斯网络)

2.1 定义与表示

有向图模型(DPGM)用有向无环图(DAG)表示变量间的因果关系或依赖方向。图中每个节点对应一个随机变量,每条有向边表示父节点对子节点的直接影响。

给定一个拓扑序(父节点排在子节点之前),联合分布可分解为:

$$ p(\boldsymbol{x}_{1:N_G}) = \prod_{i=1}^{N_G} p(x_i \mid \boldsymbol{x}_{\mathrm{pa}(i)}), $$

其中 $\boldsymbol{x}_{\mathrm{pa}(i)}$ 是节点 $i$ 的父节点集合。这称为有序马尔可夫性质

2.2 例子:学生网络

图4.2展示了一个包含5个变量的学生网络:课程难度 $D$、学生智力 $I$、成绩 $G$、SAT分数 $S$、推荐信 $L$。联合分布为:

$$ p(D,I,G,S,L) = p(D)p(I)p(G|D,I)p(S|I)p(L|G). $$

每个节点的CPD可以是表格(CPT),例如 $p(G|D,I)$ 是一个 $2\times 2\times 3$ 的表格(每种父状态组合对应一个三级分布)。

2.3 条件独立性:d-分离

有向图的条件独立性通过d-分离(有向分离)判定。简单规则(贝叶斯球算法):

  • 链结构 $X \to Y \to Z$:$X \perp Z \mid Y$(观测中间节点阻断)。
  • 叉结构 $X \leftarrow Y \to Z$:$X \perp Z \mid Y$(观测共同父节点阻断)。
  • 对撞结构 $X \to Y \leftarrow Z$:$X \perp Z$(无条件独立),但给定 $Y$ 后它们变得相关(解释效应)。

例子:在学生网络中,$I$ 和 $D$ 在给定 $G$ 时相关,因为 $G$ 是对撞点。若已知一个学生成绩高,高智力和高难度都可能解释它,因此两者负相关。

2.4 马尔可夫毯

节点 $i$ 的马尔可夫毯是使 $i$ 与图中其他节点条件独立的最小节点集,包括:它的父节点、子节点以及子节点的其他父节点(共同父节点)。这在Gibbs采样和变分推断中很有用。

2.5 生成:祖先采样

按拓扑序采样:先采样根节点,然后逐层采样子节点。这生成联合分布的独立样本。

2.6 推断:计算后验

给定观测证据 $V$,需要计算查询节点 $Q$ 的后验 $p(Q|V)$。这通常涉及对隐变量 $R$ 的求和/积分:

$$ p(Q|V) = \frac{\sum_R p(Q,V,R)}{p(V)}. $$

推断的复杂度取决于图结构。树形结构可用信念传播(BP)精确计算;一般图可能难解(NP难),需近似方法。

2.7 学习

  • 完全数据:当所有变量都被观测时,似然分解为每个CPD的乘积,可独立估计各CPD的参数(MLE或MAP)。
  • 不完全数据(有隐变量):似然不再分解,需用EM算法或SGD。EM在E步用当前参数计算隐变量的期望充分统计量,M步最大化期望对数似然。

例子:离散贝叶斯网中,MLE就是计数归一化。用Dirichlet先验时,后验均值 = (计数+伪计数)/总计数。


3. 无向图模型(马尔可夫随机场)

3.1 定义与表示

无向图模型(UPGM)用无向图表示变量间的相互作用,每条边表示两个变量直接相关。联合分布表示为吉布斯分布

$$ p(\boldsymbol{x}|\theta) = \frac{1}{Z(\theta)} \prod_{c\in\mathcal{C}} \psi_c(\boldsymbol{x}_c;\theta_c), $$

其中 $\mathcal{C}$ 是最大团的集合,$\psi_c \ge 0$ 是团势函数,$Z(\theta)$ 是配分函数(归一化常数)。

3.2 Hammersley-Clifford定理

该定理保证了如果分布 $p$ 关于图 $G$ 满足某种马尔可夫性质(例如全局、局部、成对),那么它可以写成上述团势函数乘积的形式(对于正分布)。这建立了图结构与分布分解的联系。

3.3 吉布斯分布与能量函数

$$ p(\boldsymbol{x}) = \frac{1}{Z} \exp(-E(\boldsymbol{x})), $$

其中 $E(\boldsymbol{x}) = \sum_c E_c(\boldsymbol{x}_c)$ 是能量,低能量对应高概率。

3.4 例子

  • Ising模型:二元变量 $x_i\in\{+1,-1\}$,边势 $\psi_{ij}(x_i,x_j)=\exp(J_{ij}x_ix_j)$。可表示铁磁($J>0$ 鼓励相同)或反铁磁($J<0$ 鼓励相反)。
  • Potts模型:多元离散变量,边势鼓励相邻节点取相同值(若 $J>0$)。用于图像分割、蛋白质结构预测。
  • Hopfield网络:全连接Ising模型,用作联想记忆。能量 $E(\boldsymbol{x}) = -\frac{1}{2}\boldsymbol{x}^\mathsf{T}\mathbf{W}\boldsymbol{x}$。
  • 玻尔兹曼机:含隐变量的Ising模型。受限玻尔兹曼机(RBM)是二分图(可见层和隐层,层内无连接),便于Gibbs采样和对比散度训练。

3.5 条件独立性

无向图中,条件独立性由图分离决定:给定集合 $C$,若 $C$ 分离 $A$ 与 $B$,则 $X_A \perp X_B \mid X_C$。节点的马尔可夫毯是其直接邻居。

3.6 生成(采样)

从无向图采样通常困难,因为无法像有向图那样按拓扑序采样。常用MCMC方法(Gibbs采样)从联合分布中采样。

3.7 推断

推断任务与有向图类似,但无向图的计算往往更复杂,因为配分函数的存在使得条件概率也需归一化。常用的近似方法包括变分推断(如平均场)、置信传播(BP)、吉布斯采样等。

3.8 学习

  • 完全数据:MLE需要最大化对数似然 $\ell(\theta) = \sum_n \log p(\boldsymbol{x}_n)$。梯度为 $$ \nabla_\theta \ell = \mathbb{E}_{p_{\text{data}}}[\phi(\boldsymbol{x})] - \mathbb{E}_{p_{\text{model}}}[\phi(\boldsymbol{x})], $$ 其中 $\phi$ 是势函数的特征向量。第一项容易计算(数据期望),第二项需从模型采样估计,计算量大。常用对比散度(CD)近似,用一步Gibbs采样代替模型期望。
  • 不完全数据(含隐变量):梯度仍为数据期望减模型期望,但数据期望需在隐变量上取条件期望,模型期望需从联合分布采样。可用SGD结合CD。

4. 条件随机场(CRF)

4.1 定义

CRF是给定输入 $\boldsymbol{x}$ 的条件下,对输出 $\boldsymbol{y}$ 建模的无向图模型:

$$ p(\boldsymbol{y}|\boldsymbol{x},\theta) = \frac{1}{Z(\boldsymbol{x},\theta)} \prod_c \psi_c(\boldsymbol{y}_c;\boldsymbol{x},\theta). $$

这是一种判别模型,直接建模条件分布,避免了对输入 $\boldsymbol{x}$ 的建模。

4.2 1d CRF(链式CRF)

常用于序列标注任务(如词性标注、命名实体识别)。图结构为链,势函数通常包括节点势 $\psi_t(y_t,\boldsymbol{x})$ 和边势 $\psi_{t-1,t}(y_{t-1},y_t,\boldsymbol{x})$。训练时用最大似然,需计算配分函数(可用前向-后向算法)。

4.3 2d CRF(网格CRF)

用于图像分割等空间任务。图结构为网格,势函数通常鼓励相邻像素标签一致。由于精确推断难,常用近似方法(如平均场)。

4.4 参数估计

对于线性链CRF,对数似然是凸函数,可用梯度法优化,梯度为特征期望的差:$\nabla_\theta \ell = \mathbb{E}_{p_{\text{data}}}[\phi(\boldsymbol{x},\boldsymbol{y})] - \mathbb{E}_{p_{\text{model}}}[\phi(\boldsymbol{x},\boldsymbol{y})]$。第二项可通过前向-后向算法高效计算。


5. 有向图与无向图比较

5.1 表达能力

  • 有向图能表达某些非单调的依赖关系(如解释效应),但无法表达某些循环依赖(如无向环)。
  • 无向图能表达对称关系,但无法直接表达解释效应(需借助道德化)。
  • 有些分布两者皆可表示,对应弦图(decomposable)。

5.2 相互转换

  • 有向 → 无向:需要道德化——将未结婚的父母相连,然后去掉箭头。这会丢失一些独立性信息。
  • 无向 → 有向:可添加辅助节点将势函数转化为CPD,但可能引入循环,需小心。

5.3 条件模型中的标签偏置问题

链式有向图(如MEMM)存在标签偏置问题:局部归一化导致过去的信息不能影响未来。CRF通过全局归一化克服了这一问题。

5.4 高斯图模型比较

  • 有向高斯图(高斯贝叶斯网)对应稀疏回归系数矩阵 $\mathbf{W}$。
  • 无向高斯图(高斯MRF)对应稀疏精度矩阵 $\boldsymbol{\Lambda} = \boldsymbol{\Sigma}^{-1}$。

6. PGM扩展

6.1 因子图

因子图是二部图,包含变量节点和因子节点,明确表示分解结构。常用于消息传递算法(如置信传播、和积算法)。Forney因子图(FFG)将变量放在边上,更适合表示层级结构。

6.2 概率电路

包括和积网络(SPN)等,树状结构支持高效的精确推断。SPN的叶节点是单变量分布,内部节点是和(混合)或积(分解)。

6.3 关系模型

将图模型扩展到多个对象和关系。例如,用模板定义变量间依赖,然后实例化到具体对象集。马尔可夫逻辑网络(MLN)是关系化的MRF,用一阶逻辑子句加权定义势函数。

6.4 开放宇宙模型

当对象数量未知时,需要开放宇宙概率模型(OUPM)。例如,多目标跟踪中目标数随时间变化。用概率编程语言(如BLOG、Pyro)可灵活定义这类模型。

6.5 程序作为概率模型

概率编程语言(PPL)允许用户将生成过程写成程序,内置随机采样和观测条件语句。推断引擎(如SMC、MCMC)自动处理后验计算。


7. 结构因果模型(SCM)

7.1 定义

SCM将因果关系形式化为:

$$ V_i = f_i(\boldsymbol{V}_{\mathrm{pa}(i)}, U_i),\quad U_i \sim p(U_i), $$

其中 $U_i$ 是外生噪声,$\boldsymbol{V}_{\mathrm{pa}(i)}$ 是内生父节点。图结构是有向无环图(DAG),称为因果图。

7.2 干预与 do 算子

干预 $do(A=a)$ 意味着强制 $A$ 取 $a$,切断所有指向 $A$ 的边。这对应图手术。干预下的分布记作 $p(Y|do(A=a))$。

7.3 反事实

反事实问题涉及“如果当时做了不同选择会怎样?”这需要知道个体的噪声项 $U$。通过推论(从观测推断 $U$)、干预(修改模型)、预测三步实现。孪生网络将两个世界(事实与反事实)的变量并列,共享噪声,便于推理。

7.4 潜在结果框架

Rubin因果模型用潜在结果 $Y(a)$ 表示个体在干预 $a$ 下的结果。SCM与潜在结果等价,但图形语言更直观。


8. 总结与重点

8.1 核心要点

  • 图模型通过条件独立性分解联合分布,是概率建模的核心工具。
  • 有向图(贝叶斯网)适合因果或生成过程,无条件采样容易,但需注意d-分离规则。
  • 无向图(MRF)适合对称相互作用,但需处理配分函数。
  • CRF是判别式无向模型,适合结构化预测。
  • 扩展模型(因子图、关系模型、概率程序)将图模型思想推广到更复杂场景。
  • 结构因果模型为因果推断提供数学基础。

8.2 常见难点

  • d-分离与图分离的区别与联系。
  • 道德化过程及其对独立性的影响。
  • 配分函数的计算与近似。
  • 对比散度(CD)的原理与局限性。
  • 因果推断与统计推断的根本区别。

8.3 学习建议

  • 手推一个简单贝叶斯网的d-分离和概率计算。
  • 用代码实现链式CRF的训练与解码。
  • 用Pyro或Stan构建一个简单的因果模型,并尝试干预。
  • 阅读经典应用论文(如SLAM、蛋白质结构预测)体会图模型的力量。

9. 与前后章节的联系

  • 第2章(概率) 提供了图模型中分布的基本数学。
  • 第3章(统计) 中的贝叶斯推断是学习图模型参数的基础。
  • 第8章(高斯滤波)第9章(消息传递) 分别对应连续和离散图模型中的精确推断算法。
  • 第10章(变分推断)第12章(MCMC) 是处理复杂图模型的近似推断工具。
  • 第28章(因子模型)第29章(状态空间模型) 是图模型在特定领域的应用。
  • 第36章(因果) 直接基于SCM展开。

图模型是全书的骨架,理解本章是掌握后续所有高级主题的前提。


《Probabilistic Machine Learning: Advanced Topics》第5章“Information Theory”详细讲解

1. 引言:信息论与机器学习的共生关系

信息论由 Claude Shannon 在 20 世纪中叶创立,最初用于研究通信系统中的数据压缩和可靠传输。然而,其核心概念——如熵、互信息、KL 散度——已成为现代机器学习的基石。信息论不仅为我们提供了量化不确定性、信息量和模型差异的工具,还深刻影响着学习算法设计、模型评估、表示学习乃至对智能本质的理解。

本章将从 KL 散度这一核心量出发,建立它与熵、互信息的联系,然后探讨信息论在数据压缩(源编码)、信道编码(纠错码)、表示学习(信息瓶颈)以及算法信息论(Kolmogorov复杂度、Solomonoff归纳)中的应用。下图概括了本章的知识结构:

graph TD A[KL散度] --> B[熵] A --> C[互信息] B --> D[交叉熵] B --> E[典型集] C --> F[数据压缩
(率失真理论)] C --> G[信息瓶颈] C --> H[相关性网络] A --> I[与指数族的关系] I --> J[Bregman散度] F --> K[bits back编码] G --> L[变分信息瓶颈
VIB] G --> M[条件熵瓶颈
CEB] D --> N[困惑度] E --> O[渐近均分性] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style F fill:#bfb,stroke:#333 style G fill:#bfb,stroke:#333 style H fill:#bfb,stroke:#333 style I fill:#bfb,stroke:#333 style K fill:#fbb,stroke:#333 style L fill:#fbb,stroke:#333 style M fill:#fbb,stroke:#333 style N fill:#fbb,stroke:#333 style O fill:#fbb,stroke:#333

接下来,我们将沿着这个结构逐一展开。


2. KL 散度:信息增益的度量

2.1 直观动机

当我们从先验分布 $q(x)$ 更新到后验分布 $p(x)$ 时,我们想知道这次更新的“信息量”有多大。一个好的度量应满足:

  • 连续性
  • 非负性
  • 置换不变性
  • 对均匀分布单调性
  • 链式法则

2.2 定义

KL 散度(Kullback-Leibler divergence)定义为

$$ D_{\mathrm{KL}}(p \| q) = \int p(x) \log \frac{p(x)}{q(x)} dx, $$

对于离散情况,将积分换为求和。

2.3 性质

  • 非负性:由 Jensen 不等式,$D_{\mathrm{KL}}(p\|q) \ge 0$,等号当且仅当 $p = q$ a.e.
  • 链式法则: $$ D_{\mathrm{KL}}(p(x,y)\|q(x,y)) = D_{\mathrm{KL}}(p(x)\|q(x)) + \mathbb{E}_{p(x)}[D_{\mathrm{KL}}(p(y|x)\|q(y|x))]. $$
  • 不对称性:KL 散度不是对称的,因此不是距离。直观上,“从 $q$ 更新到 $p$” 和 “从 $p$ 更新到 $q$” 所需信息量不同。
  • 参数化不变性:对可逆变换 $y=f(x)$,$D_{\mathrm{KL}}(p_X\|q_X) = D_{\mathrm{KL}}(p_Y\|q_Y)$。

2.4 两种最小化行为

  • 前向 KL $D_{\mathrm{KL}}(p\|q)$:要求 $q$ 在 $p$ 有质量的区域也有质量,导致零避免(mode-covering)行为。
  • 反向 KL $D_{\mathrm{KL}}(q\|p)$:要求 $q$ 只在 $p$ 有质量的区域有质量,导致零强迫(mode-seeking)行为。

例子:用单高斯 $q$ 拟合双峰 $p$,前向 KL 会得到覆盖两个峰的宽高斯,反向 KL 会得到一个峰值(可能只覆盖一个峰)。

2.5 与 MLE 的关系

最小化 $D_{\mathrm{KL}}(p_{\text{data}}\|q_\theta)$ 等价于最大化数据对数似然,因为

$$ D_{\mathrm{KL}}(p_{\text{data}}\|q_\theta) = -\mathbb{E}_{p_{\text{data}}}[\log q_\theta] + \text{const}. $$

因此,最大似然估计可视为最小化经验分布与模型之间的 KL 散度。

2.6 与贝叶斯推断的关系

贝叶斯更新可以看作在约束“数据被观测”下,寻找与先验最接近(KL最小)的分布,这直接导出后验。

2.7 与指数族的关系

对于指数族分布,KL 散度可表为自然参数差的函数:

$$ D_{\mathrm{KL}}(p_{\eta_1}\|p_{\eta_2}) = A(\eta_2) - A(\eta_1) - (\eta_2 - \eta_1)^\mathsf{T}\nabla A(\eta_1), $$

这实际上是 Bregman 散度的一种形式。

2.8 费希尔信息矩阵与局部 KL

当 $\eta_2 = \eta_1 + \delta$ 很小时,

$$ D_{\mathrm{KL}}(p_{\eta_1}\|p_{\eta_2}) \approx \frac{1}{2} \delta^\mathsf{T} \mathbf{F}(\eta_1) \delta, $$

其中 $\mathbf{F}$ 是费希尔信息矩阵。这为自然梯度下降提供了理论基础。

2.9 压缩引理与 Donsker-Varadhan 表示

一个重要的不等式:

$$ \mathbb{E}_p[\phi] \le \log \mathbb{E}_q[e^\phi] + D_{\mathrm{KL}}(p\|q). $$

由此可得 KL 的变分表示:

$$ D_{\mathrm{KL}}(p\|q) = \sup_{\phi} \left( \mathbb{E}_p[\phi] - \log \mathbb{E}_q[e^\phi] \right). $$

这一表示在 PAC-Bayes 理论和变分推断中非常有用。


3. 熵:不确定性的度量

3.1 离散熵

对于离散随机变量 $X$,其

$$ H(X) = -\sum_x p(x) \log p(x) = \mathbb{E}[-\log p(X)]. $$
  • 解释:编码来自分布 $p$ 的符号所需的最小平均比特数。
  • 与均匀分布的关系:$H(X) = \log K - D_{\mathrm{KL}}(p\|u)$,其中 $u$ 是均匀分布。因此,熵最大($\log K$)当且仅当 $p$ 均匀。
  • 二值熵函数:$H(\theta) = -\theta\log\theta - (1-\theta)\log(1-\theta)$,最大值 1 比特在 $\theta=0.5$。

3.2 连续熵(微分熵)

对于连续随机变量,

$$ h(X) = -\int p(x) \log p(x) dx. $$
  • 注意:微分熵可以是负的(例如均匀分布在很小区间)。
  • 高斯分布的微分熵:$h(\mathcal{N}(\mu,\sigma^2)) = \frac{1}{2}\log(2\pi e \sigma^2)$。
  • 微分熵对变量变换敏感:若 $Y = f(X)$,则 $h(Y) = h(X) + \mathbb{E}[\log |f'(X)|]$(一维)。

3.3 典型集

对 i.i.d. 序列,当 $n$ 很大时,几乎所有的概率质量集中在那些概率约为 $2^{-nH(X)}$ 的序列上,这些序列构成典型集。这是渐近均分性(AEP)的核心内容,也是数据压缩的理论基础。

3.4 交叉熵与困惑度

  • 交叉熵 $H(p,q) = -\int p(x)\log q(x) dx$。
  • 在语言模型中,困惑度 = $2^{H(p,q)}$,可以解释为模型平均的“分支因子”,即平均每次预测时模型认为可能的下一个词数量。

4. 互信息:依赖性的度量

4.1 定义

互信息衡量两个随机变量之间的依赖性:

$$ I(X;Y) = D_{\mathrm{KL}}(p(x,y) \| p(x)p(y)) = \iint p(x,y) \log \frac{p(x,y)}{p(x)p(y)} dx dy. $$

4.2 性质

  • 非负性:$I(X;Y) \ge 0$,等号当且仅当 $X$ 与 $Y$ 独立。
  • 与熵的关系: $$ I(X;Y) = H(X) - H(X|Y) = H(Y) - H(Y|X) = H(X) + H(Y) - H(X,Y). $$
  • 对称性:$I(X;Y) = I(Y;X)$。
  • 数据处理不等式:若 $X \to Y \to Z$ 形成马尔可夫链,则 $I(X;Z) \le I(X;Y)$。

4.3 充分统计量

若 $S(X)$ 是 $X$ 的一个统计量,且 $I(\theta;S(X)) = I(\theta;X)$,则 $S$ 是 $\theta$ 的充分统计量最小充分统计量是能在保持信息的同时最大程度压缩数据的统计量。

4.4 多变量互信息

  • 总相关(total correlation): $$ \mathrm{TC}(\{X_1,\dots,X_D\}) = \sum_i H(X_i) - H(X_1,\dots,X_D) = D_{\mathrm{KL}}(p(\boldsymbol{x}) \| \prod_i p(x_i)). $$
  • 交互信息(co-information): $$ I(X_1;\cdots;X_D) = I(X_1;\cdots;X_{D-1}) - I(X_1;\cdots;X_{D-1}|X_D), $$ 对三维可正可负,分别对应冗余(positive)和协同(negative)信息。

4.5 变分界

  • 上界:$I(X;Y) \le \mathbb{E}_{p(x)}[D_{\mathrm{KL}}(p(y|x)\|q(y))]$,其中 $q(y)$ 是任意分布。
  • 下界:$I(X;Y) \ge \mathbb{E}_{p(x,y)}[\log q(y|x)] + h(Y)$(BA 下界),或使用 Donsker-Varadhan 表示得到其他下界(如 NWJ、InfoNCE)。

4.6 相关性网络

通过计算两两互信息并设定阈值,可以构建相关性网络,可视化变量间的依赖关系。但这类网络通常稠密,无法区分直接依赖与间接依赖,因此更宜使用图模型。


5. 数据压缩(源编码)

5.1 无损压缩

Shannon 源编码定理:对来自分布 $p$ 的符号,存在一种编码使得平均码长任意接近 $H(p)$,且不能低于 $H(p)$。若使用模型 $q$ 编码,多余的平均码长正好是 $D_{\mathrm{KL}}(p\|q)$。

实际算法:霍夫曼编码、算术编码、非对称数字系统(ANS)。

5.2 有损压缩与率失真理论

对于连续信号,必须量化。率失真函数 $R(D)$ 表示在给定平均失真 $D$ 下所需的最小码率。变分信息瓶颈(见后)与率失真理论有深刻联系。

5.3 Bits back 编码

当使用潜变量模型进行压缩时,可以通过“退还”用于采样潜变量的随机比特,使总码率降低到率失真理论的下界附近。这是近年来无损压缩领域的重要进展。


6. 信道编码(纠错码)

6.1 问题描述

将消息 $x$ 通过有噪信道传输,接收端得到 $y$,希望恢复 $x$。通过添加冗余(如奇偶校验位),使接收端能检测并纠正错误。

6.2 图模型视角

将信道编码视为图模型推理问题:给定接收信号 $y$,求最大后验 $x^* = \arg\max_x p(x|y)$。用因子图表示,通过置信传播(BP)求解,可达到接近信道容量的性能。

  • LDPC码(低密度奇偶校验码):因子图具有稀疏结构,BP 高效且性能优异。
  • Turbo码:也是 BP 的一种形式。

7. 信息瓶颈

7.1 动机

在表示学习中,我们希望找到一个关于输入 $X$ 的表示 $Z$,它尽可能多地保留与输出 $Y$ 相关的信息,同时尽可能压缩与 $Y$ 无关的信息。这正是一种“最小充分统计量”的权衡。

7.2 信息瓶颈目标

$$ \min_{p(z|x)} \beta I(X;Z) - I(Y;Z). $$

当 $\beta = 1$,这等价于最小化 $I(X;Z|Y)$,即表示中只保留与 $Y$ 相关的信息。

7.3 变分信息瓶颈(VIB)

由于 $I(X;Z)$ 和 $I(Y;Z)$ 难以计算,VIB 引入变分近似:

$$ I(X;Z) \le \mathbb{E}_{p(x)}[D_{\mathrm{KL}}(p(z|x)\|m(z))],\quad I(Y;Z) \ge \mathbb{E}_{p(y|z)}[\log d(y|z)], $$

从而得到一个可优化的目标:

$$ \mathcal{L}_{\text{VIB}} = \mathbb{E}_{p(x)p(z|x)}[-\log d(y|z)] + \beta \mathbb{E}_{p(x)}[D_{\mathrm{KL}}(p(z|x)\|m(z))]. $$

这相当于在自编码器中加入 KL 正则项,但与 β-VAE 不同,这里的 KL 项作用于聚合后验与边际先验。

7.4 条件熵瓶颈(CEB)

CEB 最小化 $I(X;Z|Y)$,比 VIB 更易优化,因为条件互信息可以写成两个熵的差,且每个熵都有可处理的变分界。


8. 算法信息论

8.1 Kolmogorov 复杂度

一个字符串 $x$ 的 Kolmogorov 复杂度 $K(x)$ 定义为能生成 $x$ 的最短程序的长度(在某种通用图灵机上)。它衡量了字符串的“内在信息量”。

  • 与熵的关系:若 $x$ 来自分布 $p$,则 $\mathbb{E}[K(x)] \approx H(p)$,但 $K(x)$ 是确定性的。
  • 不可计算性:$K(x)$ 不可计算,但可上界估计(如用压缩器)。

8.2 归一化压缩距离(NCD)

利用压缩器(如 gzip)近似 $K(x)$,定义距离

$$ d(x,y) = \frac{\max(K(x|y),K(y|x))}{\max(K(x),K(y))} \approx \frac{Z(xy) - \min(Z(x),Z(y))}{\max(Z(x),Z(y))}, $$

其中 $Z(\cdot)$ 是压缩后长度。这一距离可用于无参数聚类和分类。

8.3 Solomonoff 归纳

将贝叶斯模型平均推广到所有可计算模型,先验为 $2^{-K(\text{模型})}$,得到通用先验。预测时对所有模型加权平均,可在理论上达到最优预测误差界。这是通用人工智能(AIXI)的理论基础。


9. 总结与重点

9.1 核心要点

  • KL 散度 是信息论的核心,连接了熵、互信息、MLE、贝叶斯推断和指数族。
  • 度量不确定性,互信息 度量相关性,两者都是 KL 散度的特例。
  • 数据压缩信道编码 是信息论的两大经典应用,与概率图模型和 BP 算法紧密相关。
  • 信息瓶颈 为表示学习提供了原则性框架,VIB 是其变分实现。
  • 算法信息论 从确定性角度定义信息,为无参数学习和通用人工智能提供基础。

9.2 常见难点

  • KL 散度的不对称性及其两种最小化行为的理解。
  • 互信息的变分界推导及其在表示学习中的应用。
  • 信息瓶颈与 β-VAE 的联系与区别(VIB 中 KL 是 $D_{\mathrm{KL}}(p(z|x)\|m(z))$,而 β-VAE 中是 $D_{\mathrm{KL}}(p(z|x)\|p(z))$)。
  • Kolmogorov 复杂度的不可计算性及其实用近似。

9.3 学习建议

  • 用两个简单的一维分布手算 KL 散度、熵、互信息,并观察其性质。
  • 实现一个简单的 VIB 模型(用 MLP 作为编码器和分类器),观察不同 β 对表示的影响。
  • 尝试用压缩器(如 zlib)计算文本之间的 NCD,并用 kNN 分类,体会无参数学习的威力。
  • 阅读信息瓶颈的经典论文和 VIB 的原始论文,理解其在深度学习中的应用。

10. 与前后章节的联系

  • 第2章(概率) 提供了分布和期望的数学基础。
  • 第3章(统计) 中的最大似然与 KL 散度的关系。
  • 第6章(优化) 中的自然梯度与费希尔信息矩阵的联系。
  • 第10章(变分推断) 中的 ELBO 正是用 KL 散度定义的。
  • 第14章(预测模型) 中的交叉熵损失直接对应 KL 散度。
  • 第21章(VAE) 中的 β-VAE 可视为信息瓶颈的一种特例(无监督版本)。
  • 第24章(EBM)第25章(扩散模型) 中的对比散度、去噪分数匹配与 KL 散度的关系。

信息论是贯穿全书的一条暗线,深刻理解本章将为后续内容打下坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第6章“Optimization”详细讲解

1. 引言:优化在机器学习中的核心地位

机器学习本质上是一个优化问题:我们通常需要最小化(或最大化)某个目标函数 $ \mathcal{L}(\theta) $,以找到最佳的模型参数 $\theta$。从最简单的线性回归的最小二乘法,到深度神经网络的随机梯度下降,再到贝叶斯推断中的变分优化,优化算法无处不在。

本章涵盖了机器学习中广泛使用的优化技术,从经典的一阶方法(如 SGD)到高级的二阶方法(如自然梯度),从确定性的边界优化(MM算法)到概率性的贝叶斯优化,从连续空间的梯度方法到离散空间的组合优化(如子模优化)。理解这些优化方法对于设计和实现高效的机器学习算法至关重要。

下图概括了本章的知识结构:

graph TD A["优化问题
min L(θ)"] --> B[基于梯度的方法] A --> C[无导数方法] A --> D[贝叶斯优化] A --> E[最优传输] A --> F[子模优化] B --> B1[自动微分 AD] B --> B2[随机优化 SGD] B --> B3[自然梯度下降 NGD] B --> B4["边界优化 MM/EM"] B2 --> B2a[重参数化技巧] B2 --> B2b[得分函数估计器] B2 --> B2c[Gumbel-Softmax] B3 --> B3a[与Fisher信息的关系] B3 --> B3b[KFAC近似] B4 --> B4a[EM算法] B4 --> B4b[变分EM] C --> C1[局部搜索] C --> C2[进化算法] C --> C3["EDA / CEM"] C --> C4[进化策略 CMA-ES] D --> D1[高斯过程代理] D --> D2[采集函数 EI, UCB, TS] E --> E1[Kantorovich 问题] E --> E2[Wasserstein 距离] E --> E3[熵正则化 Sinkhorn] F --> F1[次模函数定义] F --> F2[贪心算法] F --> F3[应用:数据子集选择] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bbf,stroke:#333 style E fill:#bbf,stroke:#333 style F fill:#bbf,stroke:#333

2. 自动微分(Automatic Differentiation)

自动微分是深度学习的基石,它让我们能够高效、精确地计算复杂函数的梯度。

2.1 基本思想

给定一个函数 $f: \mathbb{R}^n \to \mathbb{R}^m$ 及其计算图,自动微分通过应用链式法则,计算 $f$ 在某个点 $x$ 的雅可比矩阵 $J_f(x)$。有两种主要模式:

  • 前向模式:计算雅可比-向量积(JVP),适合 $n$ 小 $m$ 大的情况。
  • 反向模式:计算向量-雅可比积(VJP),也就是反向传播,适合 $m$ 小 $n$ 大的情况(如损失函数是标量)。

2.2 函数形式的微分

为了精确处理导数,本章引入了函数式记法:

  • 导数算子 $\partial f$ 是一个函数,它将点 $x$ 映射到该点的雅可比矩阵。
  • JVP:$(x,v) \mapsto \partial f(x)[v]$。
  • VJP:$(x,u) \mapsto \partial f(x)^\mathsf{T}[u]$。

这种记法允许我们递归地处理高阶导数,并且自然地推广到多输入函数。

2.3 链式法则与计算图

对于复合函数 $f = g \circ h$,有 $\partial f(x) = \partial g(h(x)) \circ \partial h(x)$。在计算图中,节点代表基本操作,边代表数据流。自动微分通过遍历计算图来累积梯度。

  • 前向模式:从输入开始,沿着计算图向前传播导数。
  • 反向模式:从输出开始,向后传播梯度(即反向传播)。

2.4 从链到电路再到程序

  • :一系列函数复合,是前馈神经网络的抽象。
  • 电路:有向无环图,允许多输入和多输出,处理扇出(一个值被多个后续操作使用)需要特殊处理:反向传播时,梯度要累加。
  • 程序:包含控制流(循环、条件)的语言。现代AD系统(如 JAX)通过函数式编程和源代码变换处理这些结构。

例子:在 JAX 中,jax.grad 可以对任何可微的 Python 函数求导,即使它包含循环和分支。


3. 随机优化

随机优化处理目标函数具有随机性的情况,例如期望风险最小化。

3.1 随机梯度下降(SGD)

目标:$\mathcal{L}(\theta) = \mathbb{E}_{z \sim q}[\tilde{\mathcal{L}}(\theta,z)]$。如果我们能获得无偏梯度估计 $g_t$,则更新:

$$ \theta_{t+1} = \theta_t - \eta_t g_t. $$
  • 学习率调度:为保证收敛,需满足 Robbins-Monro 条件 $\sum \eta_t = \infty, \sum \eta_t^2 < \infty$。常用调度:分段常数、指数衰减、多项式衰减(如 $1/\sqrt{t}$)。
  • 有限和目标:经验风险最小化 $\mathcal{L}(\theta) = \frac{1}{N}\sum_{n=1}^N \ell(y_n, f(x_n;\theta))$。SGD 用随机小批量估计梯度。

3.2 优化分布参数

当随机性依赖于参数时,如 $z \sim q_\theta(z)$,梯度不能直接交换顺序。有两种主要方法:

3.2.1 得分函数估计器(REINFORCE)

利用对数导数技巧 $\nabla_\theta q_\theta(z) = q_\theta(z) \nabla_\theta \log q_\theta(z)$,得到:

$$ \nabla_\theta \mathbb{E}_{q_\theta}[\tilde{\mathcal{L}}(\theta,z)] = \mathbb{E}_{q_\theta}[ \tilde{\mathcal{L}}(\theta,z) \nabla_\theta \log q_\theta(z) ]. $$

可用蒙特卡洛采样近似。方差大,可用控制变量法(减去基线)降低方差。

3.2.2 重参数化技巧

若 $z = g(\theta,\epsilon)$ 且 $\epsilon \sim q_0$ 与 $\theta$ 无关,则:

$$ \nabla_\theta \mathbb{E}_{q_\theta}[\tilde{\mathcal{L}}(\theta,z)] = \mathbb{E}_{q_0}[ \nabla_\theta \tilde{\mathcal{L}}(\theta,g(\theta,\epsilon)) ]. $$

这允许我们使用自动微分,且方差通常更低。这是变分自编码器(VAE)训练的关键。

例子:$z \sim \mathcal{N}(\mu,\sigma^2)$ 可重写为 $z = \mu + \sigma \epsilon, \epsilon \sim \mathcal{N}(0,1)$。

3.2.3 Gumbel-Softmax 技巧

对于离散变量,可用 Gumbel-Max 技巧采样,但 argmax 不可导。Gumbel-Softmax 用 softmax 近似,得到可导的连续松弛:

$$ x_k = \frac{\exp((\log \alpha_k + \epsilon_k)/\tau)}{\sum_j \exp((\log \alpha_j + \epsilon_j)/\tau)},\quad \epsilon_k \sim \text{Gumbel}(0,1). $$

当温度 $\tau \to 0$,趋近于 one-hot 分布。

3.3 随机计算图

将确定性和随机节点结合成计算图,可以自动应用得分函数和重参数化混合求导。

3.4 直通估计器(Straight-Through)

对于不可导的操作(如量化、阈值),可以在前向传播时使用离散操作,反向传播时“绕过”它,用一个可导的替代函数(如恒等映射或 hard tanh)的梯度。

应用:VQ-VAE 中的离散化。


4. 自然梯度下降

4.1 动机

在参数空间中,欧氏距离并不能反映分布的变化程度。自然梯度用 KL 散度作为距离度量,在由 Fisher 信息矩阵定义的黎曼流形上优化。

4.2 定义

自然梯度为:

$$ \tilde{\nabla} \mathcal{L}(\theta) = \mathbf{F}(\theta)^{-1} \nabla \mathcal{L}(\theta), $$

其中 $\mathbf{F}(\theta)$ 是 Fisher 信息矩阵:

$$ \mathbf{F}(\theta) = \mathbb{E}_{p(x|\theta)}[ \nabla \log p(x|\theta) \nabla \log p(x|\theta)^\mathsf{T} ] = -\mathbb{E}_{p(x|\theta)}[ \nabla^2 \log p(x|\theta) ]. $$

4.3 解释

  • 信任区域:自然梯度等价于在信任区域约束 $\delta^\mathsf{T}\mathbf{F}\delta \le \eta$ 下最小化一阶近似。
  • Gauss-Newton 方法:对于指数族,自然梯度与广义 Gauss-Newton 等价。
  • 不变性:自然梯度对参数重参数化不变。

4.4 优势

  • 更快的收敛,尤其在高曲率区域。
  • 可避免陡峭方向的振荡。
  • 对参数化不敏感。

4.5 近似

直接计算 $\mathbf{F}^{-1}$ 太昂贵。常用方法:

  • 对角近似:忽略非对角项。
  • KFAC(Kronecker 因子近似曲率):将 Fisher 矩阵近似为多个 Kronecker 积的块对角矩阵,适用于神经网络。
  • 经验 Fisher:用梯度的外积近似,但可能在最优解处奇异。

4.6 指数族的自然梯度

对于指数族 $p(x|\eta)$,自然梯度 $\tilde{\nabla}_\eta \mathcal{L} = \nabla_\mu \mathcal{L}$,其中 $\mu = \mathbb{E}[\mathcal{T}(x)]$ 是矩参数。这使得优化更加简单。

例子:高斯分布,梯度 wrt 矩参数可通过 Bonnet 和 Price 定理用期望的梯度和 Hessian 表示。


5. 边界优化(MM 算法)

5.1 一般框架

MM 算法(Majorize-Minimize 或 Minorize-Maximize)通过迭代地构造原目标函数的简单下界(或上界)来优化。

  • 最大化:构造下界 $Q(\theta,\theta_t)$ 满足 $Q(\theta,\theta_t) \le \mathcal{L}(\theta)$ 且 $Q(\theta_t,\theta_t) = \mathcal{L}(\theta_t)$。更新 $\theta_{t+1} = \arg\max_\theta Q(\theta,\theta_t)$。
  • 这保证单调递增:$\mathcal{L}(\theta_{t+1}) \ge \mathcal{L}(\theta_t)$。

5.2 例子:逻辑回归

用二次下界替代原目标,可导出类似牛顿法的更新,但 Hessian 用常数矩阵替换,计算更快。

5.3 EM 算法

EM 是处理隐变量模型的经典 MM 算法。

  • E 步:计算 $Q(\theta,\theta_t) = \mathbb{E}_{p(z|x,\theta_t)}[\log p(x,z|\theta)]$。
  • M 步:最大化 $Q$ 得到 $\theta_{t+1}$。
  • EM 也单调递增观测数据的对数似然。

例子:缺失数据的多元高斯。E 步计算缺失部分的期望和二阶矩,M 步用这些期望更新均值和协方差。

例子:稳健线性回归(Student t 似然)。引入隐变量尺度因子,E 步计算每个点的权重,M 步解加权最小二乘。

5.4 EM 扩展

  • 变分 EM:E 步用近似后验(如平均场)代替精确后验。
  • 硬 EM:用点估计(MAP)代替后验。
  • 蒙特卡洛 EM:用采样近似期望。
  • 广义 EM(GEM):M 步只增加 $Q$ 而非最大化。
  • 在线 EM:处理流数据。

6. 贝叶斯优化

6.1 问题

优化一个黑盒函数 $f: \mathcal{X} \to \mathbb{R}$,每次评估代价昂贵(如超参数调优、材料设计)。目标是找到全局最优,同时最小化评估次数。

6.2 序贯模型优化(SMBO)

  1. 用已有数据 $D_n = \{(x_i,y_i)\}$ 拟合一个概率代理模型 $p(f|D_n)$(通常用高斯过程)。
  2. 用采集函数 $\alpha(x; D_n)$ 选择下一个评估点 $x_{n+1}$。
  3. 评估 $y_{n+1} = f(x_{n+1}) + \epsilon$,更新模型,重复。

6.3 代理模型

  • 高斯过程:提供后验均值和方差,是贝叶斯优化的默认选择。
  • 贝叶斯神经网络:可用变分推断或 MCMC 近似后验。
  • 随机森林:在条件参数空间中表现良好。

6.4 采集函数

  • 概率改进(PI):$\alpha_{\text{PI}}(x) = \Phi(\frac{\mu(x) - f(x^+)}{\sigma(x)})$。
  • 期望改进(EI):$\alpha_{\text{EI}}(x) = \mathbb{E}[\max(0, f(x) - f(x^+))]$,有闭式解。
  • 上置信界(UCB):$\alpha_{\text{UCB}}(x) = \mu(x) + \beta \sigma(x)$。
  • 汤普森采样:从后验采样一个函数,然后选择其最大值点。
  • 熵搜索:直接最小化最优位置的不确定性。

6.5 其他问题

  • 批量贝叶斯优化:同时选择多个点。
  • 条件参数空间:部分参数仅在特定条件下有效。
  • 多保真度优化:利用廉价但精度低的近似。
  • 带约束优化:需估计可行域。

7. 无导数优化

当函数不可导或导数无法获得时,使用无导数方法。

7.1 局部搜索

  • 爬山法:在当前点的邻域内搜索更好的点。
  • 随机重启爬山法:多次随机起点,增加找到全局最优的概率。
  • 禁忌搜索:维护一个禁忌表,避免最近访问过的点,帮助跳出局部最优。

7.2 模拟退火

受物理退火启发,以概率接受较差解,初始温度高,逐渐降低。可视为一种随机局部搜索。

7.3 进化算法

维护一个种群,通过选择、交叉、变异产生新个体。

  • 遗传算法:用二进制编码,交叉交换片段。
  • 遗传编程:个体是树形程序。
  • CMA-ES(协方差矩阵自适应进化策略):用多元正态分布生成后代,自适应更新均值和协方差。

7.4 分布估计算法(EDA)

用概率模型描述优秀解分布,然后采样新解。UMDA 用独立伯努利模型,EMNA 用多元高斯。BOA(贝叶斯优化算法)用贝叶斯网。

7.5 交叉熵方法(CEM)

EDA 的特例,用多元高斯拟合精英样本。常用于 MPC(模型预测控制)。

7.6 进化策略(ES)

直接用梯度上升优化分布的期望适应度。自然进化策略(NES)用自然梯度更新分布参数。

7.7 大语言模型(LLM)用于 DFO

用 LLM 作为变异算子,或在上下文中生成候选解,实现函数优化。


8. 最优传输

8.1 基本问题

给定两组点 $\{x_i\},\{y_j\}$ 和成本矩阵 $C_{ij}$,找到最优匹配(置换),使总成本最小。这是匹配问题(匈牙利算法)。

8.2 Kantorovich 公式

允许质量分割,得到线性规划问题:

$$ \min_{P \ge 0, P\mathbf{1}=a, P^\mathsf{T}\mathbf{1}=b} \langle P, C \rangle. $$

这里 $a,b$ 是权重向量,$P$ 是传输计划。

8.3 Monge 公式

寻找一个映射 $T$ 将分布 $\mu$ 推到 $\nu$,最小化 $\int c(x,T(x)) d\mu(x)$。当存在时,$T$ 是最优传输映射。

8.4 Wasserstein 距离

当成本是距离 $d(x,y)^p$ 时,最优传输值开 $p$ 次方得到 Wasserstein 距离 $W_p(\mu,\nu)$。

8.5 求解

  • 对偶形式:引入 Kantorovich 势函数。
  • Wasserstein-1 与 1-Lipschitz:对偶形式涉及 1-Lipschitz 函数。
  • Brenier 定理:对于平方欧氏距离,最优映射是凸函数的梯度。
  • 高斯分布的闭式解:Wasserstein-2 有解析形式(Bures 度量)。
  • 熵正则化与 Sinkhorn 算法:加入熵正则项,得到平滑问题,可用 Sinkhorn 迭代高效求解。

9. 子模优化

9.1 定义

集合函数 $f: 2^V \to \mathbb{R}$ 称为子模函数,如果它满足边际收益递减性质:

$$ f(A \cup \{v\}) - f(A) \ge f(B \cup \{v\}) - f(B),\quad \forall A \subseteq B, v \notin B. $$

等价地,$f(A) + f(B) \ge f(A \cup B) + f(A \cap B)$。

9.2 性质

  • 子模函数类似离散的凸函数,但可同时具有凸和凹的性质。
  • 非负线性组合保持子模性。
  • 常见例子:集合覆盖函数、图割函数、设施选址、熵、行列式(如 DPP)。

9.3 优化

  • 最大化:带基数约束的子模最大化是 NP-hard,但贪心算法可达到 $(1-1/e)$ 的近似比。
  • 最小化:无约束子模最小化可在多项式时间内完成(如通过椭球算法、Fujishige-Wolfe 算法)。

9.4 在机器学习中的应用

  • 数据子集选择:用设施选址函数选择代表性样本。
  • 特征选择:用信息函数选择重要特征。
  • 主动学习:结合不确定性采样和多样性。
  • 概率建模:DPP 是 log-子模分布。
  • 结构化稀疏:用子模正则化诱导组稀疏性。

10. 总结与重点

10.1 核心要点

  • 自动微分是现代深度学习的引擎,理解其原理有助于高效编程。
  • 随机优化处理期望目标,重参数化技巧是连接概率模型和优化的桥梁。
  • 自然梯度提供了考虑参数不确定性的二阶方法,在变分推断和强化学习中至关重要。
  • **边界优化(MM/EM)**提供了一种构造单调上升算法的通用框架。
  • 贝叶斯优化是黑盒昂贵函数优化的首选。
  • 无导数优化在导数不可得时仍能有效工作。
  • 最优传输为分布比较和生成模型提供了几何工具。
  • 子模优化为组合选择问题提供了理论保证。

10.2 常见难点

  • 自动微分的前向/反向模式选择。
  • 得分函数估计器与重参数化技巧的适用场景及方差差异。
  • 自然梯度的 Fisher 信息矩阵计算与近似。
  • EM 算法的收敛性证明(MM 视角)。
  • 贝叶斯优化中采集函数的权衡(探索与利用)。
  • 子模函数与凸/凹函数的类比与区别。

10.3 学习建议

  • 用 JAX 实现简单的自动微分和 SGD,理解计算图。
  • 在简单模型(如线性回归)上实现 EM 和自然梯度,观察收敛速度。
  • 用 GPyTorch 或 BoTorch 实现贝叶斯优化,调节不同采集函数。
  • 用 networkx 实现子模贪心算法,测试集合覆盖问题。
  • 阅读最优传输的综述,理解 Sinkhorn 算法的推导。

11. 与前后章节的联系

  • 第2章(概率) 中的分布和期望是随机优化的基础。
  • 第3章(统计) 中的 Fisher 信息直接用于自然梯度。
  • 第5章(信息论) 中的 KL 散度与自然梯度紧密相关。
  • 第10章(变分推断) 大量使用重参数化技巧和 ELBO 优化。
  • 第18章(高斯过程) 是贝叶斯优化的核心代理模型。
  • 第21章(VAE) 的训练依赖重参数化技巧。
  • 第24章(EBM)第25章(扩散模型) 中的训练涉及对比散度和得分匹配,与优化方法交织。

优化是机器学习的引擎,本章的内容将在后续各章中反复出现,成为解决具体问题的关键工具。


《Probabilistic Machine Learning: Advanced Topics》第7章“Inference algorithms: an overview”详细讲解

1. 引言:从概率建模到推断

在贝叶斯视角下,所有未知量——无论是未来的预测、系统的隐藏状态,还是模型的参数——都被视为随机变量,并赋予概率分布。推断(inference)的任务就是根据观测数据计算这些未知量的后验分布:

$$ p(\theta \mid \mathcal{D}) = \frac{p(\mathcal{D} \mid \theta) p(\theta)}{p(\mathcal{D})}. $$

这里,$\theta$ 表示所有未知变量,$\mathcal{D}$ 表示已知数据。分母 $p(\mathcal{D}) = \int p(\mathcal{D} \mid \theta) p(\theta) d\theta$ 是边际似然(证据),通常是一个高维积分,正是推断的主要计算瓶颈。

一旦得到后验,我们可以计算各种感兴趣的期望,例如预测新数据、参数均值、可信区间等。因此,推断是贝叶斯学习的核心环节。本章作为推断部分的概述,将介绍不同场景下的推断模式,并对比各类近似推断算法的基本思想、优缺点和适用场景。

下图概括了本章的知识结构:

graph TD A["贝叶斯推断问题
p(θ|D) = p(D|θ)p(θ)/p(D)"] --> B[常见推断模式] B --> B1[全局隐变量] B --> B2[局部隐变量] B --> B3["全局+局部隐变量"] A --> C[精确推断] C --> C1[共轭先验] C --> C2[图模型中的DP] A --> D[近似推断] D --> D1[MAP估计] D --> D2[网格近似] D --> D3[拉普拉斯近似] D --> D4[变分推断 VI] D --> D5[马尔可夫链蒙特卡洛 MCMC] D --> D6[序贯蒙特卡洛 SMC] D1 --> D1a[缺点:无不确定性、非典型点、非不变] D4 --> D4a[ELBO优化] D5 --> D5a[Metropolis-Hastings, Gibbs, HMC] D6 --> D6a[粒子滤波] D --> E[挑战性后验与评估] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bfb,stroke:#333 style D fill:#fbb,stroke:#333

接下来,我们将沿着这个结构逐一展开。


2. 贝叶斯推断回顾

在进入算法之前,先明确基本符号和目标:

  • $\theta$:未知变量(可以是参数、隐状态等)
  • $\mathcal{D}$:观测数据
  • 先验 $p(\theta)$:对未知量的初始信念
  • 似然 $p(\mathcal{D} \mid \theta)$:数据生成模型
  • 后验 $p(\theta \mid \mathcal{D}) \propto p(\mathcal{D} \mid \theta) p(\theta)$
  • 归一化常数 $p(\mathcal{D}) = \int p(\mathcal{D} \mid \theta) p(\theta) d\theta$ 通常无法解析计算

后验可用于计算各种期望 $\mathbb{E}_{p(\theta \mid \mathcal{D})}[g(\theta)]$,如:

  • 均值 $g(\theta)=\theta$
  • 协方差 $g(\theta)=(\theta-\mathbb{E}[\theta])(\theta-\mathbb{E}[\theta])^\mathsf{T}$
  • 边际概率 $g(\theta)=p(\theta_1 \mid \theta_{-1},\mathcal{D})$
  • 预测 $g(\theta)=p(y_{\text{new}} \mid \theta)$
  • 后验期望损失 $g(\theta)=\ell(\theta,a)$

因此,推断的核心就是计算这些积分。


3. 常见的推断模式

根据模型中隐变量的类型,推断问题可分为三类。

3.1 全局隐变量

模型包含全局参数 $\theta$,所有数据共享。例如,监督学习中的权重:

$$ p(\theta, \{y_n\}_{n=1}^N \mid \{x_n\}) = p(\theta) \prod_{n=1}^N p(y_n \mid x_n, \theta). $$

推断目标是后验 $p(\theta \mid \mathcal{D})$。这是贝叶斯监督学习的典型形式。

3.2 局部隐变量

每个数据点有自己的隐变量 $z_n$,而模型参数 $\theta$ 已知(或视为固定)。例如,因子分析、混合模型:

$$ p(\{x_n\},\{z_n\} \mid \theta) = \prod_{n=1}^N p(x_n \mid z_n,\theta) p(z_n \mid \theta). $$

推断目标是每个 $z_n$ 的后验 $p(z_n \mid x_n,\theta)$。这通常可以在各数据点间并行计算。

3.3 全局+局部隐变量

既有全局参数,又有局部隐变量。例如,贝叶斯版本的混合模型:

$$ p(\theta,\{z_n\},\{x_n\}) = p(\theta) \prod_{n=1}^N p(z_n \mid \theta) p(x_n \mid z_n,\theta). $$

推断目标是联合后验 $p(\theta,\{z_n\} \mid \{x_n\})$。由于参数和隐变量相互依赖,问题更复杂,通常需要迭代算法(如 Gibbs 采样、变分贝叶斯 EM)。


4. 精确推断算法

4.1 共轭先验

当先验与似然共轭时,后验具有闭式形式。例如:

  • Beta-Binomial
  • Dirichlet-Categorical
  • 正态-正态(已知方差)
  • 正态-逆伽马(NIG)

此时积分 $p(\mathcal{D})$ 也可解析计算,用于模型选择。

4.2 图模型中的精确推断

若模型具有树状结构,可以用动态规划精确计算后验边际,如:

  • 链式图:前向-后向算法(HMM)
  • 树:信念传播(BP)
  • 一般图:变量消除(VE)、联结树算法(JTA)

但精确推断的复杂度取决于图的树宽,若树宽大则指数级困难。实际上,对于任意图,精确推断是 #P 难的。


5. 近似推断算法

当精确推断不可行时,必须使用近似方法。它们大致可分为两类:确定性近似(如拉普拉斯、变分)和随机近似(如 MCMC、SMC)。

5.1 MAP 估计及其问题

MAP 估计用后验众数代替整个后验:

$$ \hat{\theta}_{\text{MAP}} = \arg\max_\theta p(\theta \mid \mathcal{D}) = \arg\max_\theta [\log p(\mathcal{D} \mid \theta) + \log p(\theta)]. $$

这等价于正则化的最大似然。但 MAP 存在严重缺陷:

  • 无不确定性度量:只能得到点估计,无法表达可信度。
  • 非典型点:众数往往偏离分布的典型区域(如偏态分布、多峰分布)。例如图7.2中的伽马分布,众数在0,而均值非零。
  • 参数化不不变性:对变量作非线性变换后,众数不保持对应关系。例如高斯 $x \sim \mathcal{N}(6,1)$ 经 sigmoid 变换后,新分布众数 ≠ 变换原众数。

因此,MAP 只能作为粗糙的起点,而非完整推断。

5.2 网格近似

将参数空间离散化为网格点 $\{\theta_k\}$,计算未归一化后验 $\tilde{p}_k = p(\mathcal{D} \mid \theta_k) p(\theta_k)$,然后归一化得到近似后验 $q_k = \tilde{p}_k / \sum_j \tilde{p}_j$。这相当于用 Riemann 和近似积分 $p(\mathcal{D}) \approx \sum_k \Delta \tilde{p}_k$。

  • 优点:实现简单,适用于低维问题(≤2维)。
  • 缺点:维度诅咒,网格点数随维数指数增长。

例子:图7.3a 用20个网格点近似 Beta-Binomial 后验,效果尚可。

5.3 拉普拉斯近似(二次近似)

将后验对数在众数 $\hat{\theta}$ 处展开至二阶:

$$ \log p(\theta \mid \mathcal{D}) \approx \log p(\hat{\theta} \mid \mathcal{D}) - \frac{1}{2}(\theta - \hat{\theta})^\mathsf{T} \mathbf{H} (\theta - \hat{\theta}), $$

其中 $\mathbf{H} = -\nabla^2 \log p(\hat{\theta} \mid \mathcal{D})$ 是 Hessian 矩阵(正定)。于是得到高斯近似:

$$ p(\theta \mid \mathcal{D}) \approx \mathcal{N}(\theta \mid \hat{\theta}, \mathbf{H}^{-1}). $$
  • 优点:只需优化找到 MAP,然后计算 Hessian(可用自动微分)。对高维问题可用对角近似。
  • 缺点:对非高斯、偏态分布效果差;对参数有界时需变换。

例子:图7.3b 用拉普拉斯近似 Beta-Binomial 后验,由于后验偏态,近似不佳。

5.4 变分推断(VI)

变分推断通过优化将后验近似为某个简单分布族 $q(\theta;\psi)$ 中的成员,最小化 KL 散度 $D_{\text{KL}}(q \| p)$。这等价于最大化证据下界(ELBO)

$$ \mathcal{L}(\psi) = \mathbb{E}_{q}[\log p(\mathcal{D},\theta) - \log q(\theta)] \le \log p(\mathcal{D}). $$
  • 优点:转化为优化问题,通常可扩展到大模型(如 VI for BNN)。
  • 缺点:近似族选择有限,可能低估不确定性(零强迫效应)。

例子:图7.4 用自动微分变分推断(ADVI)近似 Beta-Binomial 后验,结果合理。

5.5 马尔可夫链蒙特卡洛(MCMC)

MCMC 通过构造马尔可夫链,使其平稳分布为目标后验 $p(\theta \mid \mathcal{D})$,然后收集样本作为后验近似:

$$ p(\theta \mid \mathcal{D}) \approx \frac{1}{S} \sum_{s=1}^S \delta(\theta - \theta^{(s)}). $$
  • Metropolis-Hastings:用提议分布生成候选,按接受概率决定是否接受。只需未归一化后验。

  • Gibbs 采样:依次从每个变量的满条件分布采样,是 MH 的特例,接受率 100%。

  • 哈密顿蒙特卡洛(HMC):利用梯度信息,提出更高效的提议,适合连续参数空间。

  • 优点:渐近精确,可处理复杂高维分布。

  • 缺点:收敛诊断困难,样本相关,对大规模数据计算成本高。

例子:图7.5 用 HMC 采样 Beta-Binomial 后验,样本直方图与真实后验吻合。

5.6 序贯蒙特卡洛(SMC)

SMC 通过一系列中间分布(如从先验逐步过渡到后验)进行重要性采样和重采样。常用于在线推断(如粒子滤波),也可用于静态参数推断。

  • 粒子滤波:对状态空间模型进行在线推断,用重要性采样更新粒子,并重采样以避免退化。

  • SMC 采样器:用于静态参数,通过退火或数据同化构造分布序列。

  • 优点:可处理动态系统和序列数据,能自适应调整。

  • 缺点:粒子数需求随维度增长,需精心设计提议分布。


6. 挑战性后验与评估

6.1 挑战性后验

真实后验可能具有多峰、重尾、强相关性、奇异性等特征。图7.6 展示了二维双峰分布的不同近似:

  • (a) MAP 估计:只找到一个峰,丢失不确定性。
  • (b) 高斯近似(如拉普拉斯、VI):只能覆盖一个峰,过度自信。
  • (c) MCMC 样本:若链混合差,可能只探索局部。
  • (d) 理想独立样本:覆盖全局。

6.2 评估近似推断算法

常用评估方式:

  • 与真实后验的 KL 散度(若真实后验可计算)。
  • 预测性能:用后验预测在测试集上的对数似然或风险。
  • 下游任务性能:如用于主动学习、强化学习中的表现。

7. 与前后的联系

  • 第2、3章 提供了概率和统计基础,是推断的前提。
  • 第4章(图模型)定义了结构化模型,为精确和近似推断提供框架。
  • 第8-9章(高斯滤波、消息传递)深入讲解特定图模型中的精确推断。
  • 第10-13章(VI、MCMC、SMC)详细展开本章概述的近似方法。
  • 第14章以后(预测、生成、发现)将推断结果用于具体任务。

本章是整个“推断”部分的入口,为后续章节的算法学习提供了分类和比较的视角。


8. 总结与重点

8.1 核心要点

  • 贝叶斯推断的核心是计算后验分布,主要困难在于归一化常数。
  • 根据隐变量类型,推断模式可分为全局、局部、全局+局部。
  • 精确推断只在共轭或低树宽图模型中可行。
  • 近似推断包括 MAP、网格、拉普拉斯、变分、MCMC、SMC 等。
    • MAP 最简单但问题最多。
    • 网格只适用于低维。
    • 拉普拉斯给出高斯近似,但对偏态分布差。
    • 变分将推断转化为优化,可扩展,但近似族有限。
    • MCMC 渐近精确,但计算成本高、收敛难诊断。
    • SMC 适合序列数据和动态系统。
  • 评估推断质量需结合任务和不确定性度量。

8.2 常见难点

  • 理解 MAP 的不变性问题:需通过蒙特卡洛或变分来体现。
  • 区分零避免(mode-covering)和零强迫(mode-seeking)行为。
  • 掌握 ELBO 的推导及其与 KL 的关系。
  • 理解 MCMC 的收敛诊断(如 $\hat{R}$、ESS)。

8.3 学习建议

  • 用小例子(如 Beta-Binomial)对比 MAP、拉普拉斯、VI、MCMC 的结果。
  • 用 PyMC 或 Stan 实现简单的贝叶斯模型,观察 MCMC 样本和收敛诊断。
  • 用 Pyro 或 TensorFlow Probability 实现变分推断,对比 ELBO 变化。
  • 阅读经典综述,了解不同推断算法的适用场景。

通过本章,读者应对推断问题的全貌有了清晰认识,为后续深入研读具体算法做好了准备。


《Probabilistic Machine Learning: Advanced Topics》第8章“Gaussian filtering and smoothing”详细讲解

1. 引言:状态空间模型与推断任务

状态空间模型(State-Space Model, SSM)是描述动态系统的一种通用框架,广泛应用于目标跟踪、导航、信号处理、时间序列预测等领域。SSM 假设系统存在一个隐藏状态序列 $z_t$,该序列通过马尔可夫过程演化,每个时刻生成一个观测 $y_t$。图8.1展示了其图模型结构。

模型定义(离散时间,有输入 $u_t$):

$$ \begin{aligned} z_t &\sim p(z_t \mid z_{t-1}, u_t) \quad &\text{(转移模型)}\\ y_t &\sim p(y_t \mid z_t, u_t) \quad &\text{(观测模型)} \end{aligned} $$

联合分布为:

$$ p(y_{1:T}, z_{1:T} \mid u_{1:T}) = p(z_1 \mid u_1) \prod_{t=2}^T p(z_t \mid z_{t-1}, u_t) \prod_{t=1}^T p(y_t \mid z_t, u_t). $$

主要推断任务

  • 滤波(Filtering):在线估计当前状态,即计算 $p(z_t \mid y_{1:t})$。
  • 平滑(Smoothing):离线估计过去状态,即计算 $p(z_t \mid y_{1:T})$($t \le T$)。
  • 预测(Prediction):预测未来状态或观测,即 $p(z_{t+h} \mid y_{1:t})$ 或 $p(y_{t+h} \mid y_{1:t})$。

本章重点讨论高斯假设下的滤波和平滑,即所有分布均为高斯,模型具有以下形式(可能非线性):

$$ \begin{aligned} z_t &= f(z_{t-1}, u_t) + q_t, \quad q_t \sim \mathcal{N}(0, Q_t)\\ y_t &= h(z_t, u_t) + r_t, \quad r_t \sim \mathcal{N}(0, R_t) \end{aligned} $$

若 $f$ 和 $h$ 为线性,则得到线性高斯状态空间模型(LG-SSM),也称为线性动态系统(LDS)。

下图总结了本章的知识结构:

graph TD A[高斯滤波与平滑] --> B["贝叶斯滤波/平滑方程"] B --> C[线性高斯 LG-SSM] B --> D[非线性高斯] C --> C1[卡尔曼滤波 KF] C --> C2[卡尔曼平滑 RTS] C --> C3["信息形式滤波/平滑"] D --> D1[局部线性化 EKF] D --> D2[无迹变换 UKF] D --> D3[一般高斯滤波 GGF] D --> D4[条件矩滤波 CMGF] D --> D5["迭代滤波/平滑 IPLF,IPLS"] D1 --> D1a[扩展卡尔曼滤波 EKF] D1 --> D1b[扩展卡尔曼平滑 EKS] D2 --> D2a[无迹卡尔曼滤波 UKF] D2 --> D2b[无迹卡尔曼平滑 UKS] D3 --> D3a[统计线性回归 SLR] D3 --> D3b[数值积分方法(CKF,GHKF)] D --> D6[其他变体:EnKF,鲁棒KF,双KF] A --> E[假设密度滤波 ADF] E --> E1[ADF for SLDS] E --> E2[ADF for online LR] E --> E3[ADF for online DNNs] A --> F[与其他方法的关系] F --> F1[EP] F --> F2[VI] F --> F3[MCMC] F --> F4[粒子滤波]

2. 贝叶斯滤波和平滑方程

2.1 贝叶斯滤波

滤波递归地更新信念状态,分为预测更新两步。

  • 预测(一步前向):利用转移模型计算预测分布

    $$ p(z_t \mid y_{1:t-1}) = \int p(z_t \mid z_{t-1}) p(z_{t-1} \mid y_{1:t-1}) \, dz_{t-1}. $$

    这是 Chapman-Kolmogorov 方程。

  • 更新:结合新观测 $y_t$,用贝叶斯公式

    $$ p(z_t \mid y_{1:t}) = \frac{p(y_t \mid z_t) p(z_t \mid y_{1:t-1})}{p(y_t \mid y_{1:t-1})}, $$

    其中归一化常数 $p(y_t \mid y_{1:t-1}) = \int p(y_t \mid z_t) p(z_t \mid y_{1:t-1}) dz_t$ 也是单步预测似然。

2.2 贝叶斯平滑

平滑利用未来信息改进过去状态的估计,通常采用前向滤波-后向平滑(Forward Filtering Backward Smoothing, FFBS)方法。

设我们已经计算出滤波分布 $p(z_t \mid y_{1:t})$ 和预测分布 $p(z_{t+1} \mid y_{1:t})$。平滑的向后递归公式为:

$$ p(z_t \mid y_{1:T}) = p(z_t \mid y_{1:t}) \int \frac{p(z_{t+1} \mid z_t) p(z_{t+1} \mid y_{1:T})}{p(z_{t+1} \mid y_{1:t})} dz_{t+1}. $$

直观上,我们用未来的平滑信息修正当前估计。


3. 线性高斯系统的精确推断:卡尔曼滤波和平滑

当转移和观测均为线性,且噪声为高斯时,所有分布保持高斯,可解析计算。

模型(无输入,简化):

$$ \begin{aligned} z_t &= F_t z_{t-1} + q_t, \quad q_t \sim \mathcal{N}(0, Q_t)\\ y_t &= H_t z_t + r_t, \quad r_t \sim \mathcal{N}(0, R_t) \end{aligned} $$

3.1 卡尔曼滤波

令滤波分布为 $p(z_t \mid y_{1:t}) = \mathcal{N}(z_t \mid \mu_{t|t}, \Sigma_{t|t})$。

  • 预测步

    $$ \mu_{t|t-1} = F_t \mu_{t-1|t-1}, \quad \Sigma_{t|t-1} = F_t \Sigma_{t-1|t-1} F_t^\mathsf{T} + Q_t. $$
  • 更新步

    $$ \begin{aligned} \tilde{y}_t &= y_t - H_t \mu_{t|t-1} \quad &\text{(创新)}\\ S_t &= H_t \Sigma_{t|t-1} H_t^\mathsf{T} + R_t \quad &\text{(创新协方差)}\\ K_t &= \Sigma_{t|t-1} H_t^\mathsf{T} S_t^{-1} \quad &\text{(卡尔曼增益)}\\ \mu_{t|t} &= \mu_{t|t-1} + K_t \tilde{y}_t\\ \Sigma_{t|t} &= (I - K_t H_t) \Sigma_{t|t-1} \end{aligned} $$

卡尔曼增益 $K_t$ 衡量了预测与观测的相对置信度。

例子:目标跟踪(图8.2)。状态包含位置和速度,观测为含噪位置。KF 给出平滑轨迹。

3.2 卡尔曼平滑(RTS)

Rauch-Tung-Striebel 平滑器从后向前递推。

已知滤波结果 $\mu_{t|t}, \Sigma_{t|t}$,预测 $\mu_{t+1|t}, \Sigma_{t+1|t}$。向后增益:

$$ J_t = \Sigma_{t|t} F_{t+1}^\mathsf{T} \Sigma_{t+1|t}^{-1}. $$

平滑均值和协方差:

$$ \begin{aligned} \mu_{t|T} &= \mu_{t|t} + J_t (\mu_{t+1|T} - \mu_{t+1|t})\\ \Sigma_{t|T} &= \Sigma_{t|t} + J_t (\Sigma_{t+1|T} - \Sigma_{t+1|t}) J_t^\mathsf{T}. \end{aligned} $$

例子:图8.2(c)显示平滑轨迹更光滑,不确定性更小。

3.3 信息形式滤波和平滑

在信息形式中,分布用精度矩阵 $\Lambda = \Sigma^{-1}$ 和精度加权均值 $\eta = \Lambda \mu$ 表示。更新更简单,预测更复杂。

  • 更新:$\Lambda_{t|t} = \Lambda_{t|t-1} + H_t^\mathsf{T} R_t^{-1} H_t$,$\eta_{t|t} = \eta_{t|t-1} + H_t^\mathsf{T} R_t^{-1} y_t$。
  • 预测:需用矩阵求逆引理计算。

信息形式在处理无先验信息($\Lambda=0$)和多传感器融合时更方便。


4. 非线性高斯系统的近似推断

当 $f$ 或 $h$ 非线性时,精确推断不再可能,需采用近似。

4.1 扩展卡尔曼滤波(EKF)

EKF 将非线性函数在当前估计点一阶泰勒展开,然后应用标准卡尔曼滤波。

  • 预测: $$ \mu_{t|t-1} = f(\mu_{t-1|t-1}), \quad \Sigma_{t|t-1} = F_t \Sigma_{t-1|t-1} F_t^\mathsf{T} + Q_t, $$ 其中 $F_t = \frac{\partial f}{\partial z}\big|_{\mu_{t-1|t-1}}$。
  • 更新: $$ \tilde{y}_t = y_t - h(\mu_{t|t-1}), \quad S_t = H_t \Sigma_{t|t-1} H_t^\mathsf{T} + R_t, $$ 其中 $H_t = \frac{\partial h}{\partial z}\big|_{\mu_{t|t-1}}$,其余与KF相同。

问题:线性化误差大时,EKF 可能发散。可迭代进行多次线性化,称为迭代EKF(IEKF)。

4.2 无迹卡尔曼滤波(UKF)

UKF 使用无迹变换(Unscented Transform)传播高斯分布通过非线性函数,无需计算雅可比。

无迹变换:选取一组确定性西格玛点 $\mathcal{X}_i$ 及权重 $w_i$,使其加权均值和协方差匹配原分布。将这些点通过非线性函数,计算变换后点的加权均值和协方差。

  • 预测:将西格玛点通过 $f$,得到预测点的加权统计。
  • 更新:将预测点通过 $h$,得到观测的预测均值和协方差,以及与状态的互协方差,然后应用标准卡尔曼更新。

UKF 通常比 EKF 更精确,且无需导数,但计算量稍大。

例子:图8.4中,UKF 在非线性螺旋运动跟踪中比 EKF 更准确。

4.3 一般高斯滤波(GGF)

GGF 框架将滤波问题视为矩匹配:用高斯分布近似联合分布 $p(z_t, y_t \mid y_{1:t-1})$,然后条件得到后验。只需计算期望和协方差:

$$ \hat{y}_t = \mathbb{E}[h(z_t)],\quad S_t = \mathrm{Cov}[h(z_t)],\quad C_t = \mathrm{Cov}[z_t, h(z_t)]. $$

这些矩可用各种方法近似:

  • 线性化(EKF)
  • 无迹变换(UKF)
  • 数值积分(如 Gauss-Hermite 积分 → Gauss-Hermite Kalman filter, GHKF;球面-径向积分 → Cubature Kalman filter, CKF)
  • 蒙特卡洛(如 Ensemble Kalman filter)

GGF 的统一观点有助于理解不同滤波的关系。

4.4 条件矩滤波(CMGF)

若观测模型为非高斯(如泊松),但仍能计算条件矩 $\mathbb{E}[y \mid z]$ 和 $\mathrm{Cov}[y \mid z]$,则可将其线性化进行滤波。这适用于指数族观测模型,如用于神经网络分类器的在线推断。

4.5 迭代滤波与平滑

迭代后验线性化滤波(IPLF)和迭代后验线性化平滑(IPLS)在每次测量更新后重新线性化,以提高精度,类似于 IEKF 和 IEKS。


5. 其他卡尔曼滤波变体

5.1 集成卡尔曼滤波(EnKF)

EnKF 用一组样本(“粒子”)表示分布,通过蒙特卡洛近似预测和更新,无需高斯假设。但更新步骤采用与卡尔曼增益类似的线性修正,而非重要性采样,因此更高效。

  • 预测:每个样本通过动态模型加噪声得到。
  • 更新:用样本计算的协方差构造卡尔曼增益,然后对每个样本做线性更新。

EnKF 广泛应用于地球物理数据同化,但对样本数敏感,可能过度自信。

5.2 鲁棒卡尔曼滤波

当噪声非高斯(如含有离群值)时,可用重尾分布(如 Student t)建模噪声,并通过变分贝叶斯或期望传播近似。这类方法能有效抑制异常值影响。

5.3 双卡尔曼滤波

同时估计状态和参数,将参数视为缓慢变化的额外状态,用两个交互的 EKF 分别更新状态和参数。

5.4 归一化流卡尔曼滤波

将观测模型扩展为可逆流(如非线性变换加高斯噪声),通过变换后的量进行精确卡尔曼滤波。这结合了深度生成模型与线性高斯推断。


6. 假设密度滤波(ADF)

ADF 是一种在线贝叶斯更新框架,它维护一个参数化近似分布 $q(z_t) \in \mathcal{Q}$,在每个时刻:

  1. 用动力学预测得到 $p(z_t \mid y_{1:t-1})$(可能不在 $\mathcal{Q}$ 中)。
  2. 用观测更新得到非近似后验 $p(z_t \mid y_{1:t})$(通常不在 $\mathcal{Q}$ 中)。
  3. 将后验投影回 $\mathcal{Q}$,即最小化 $D_{\text{KL}}(p \| q)$,得到新的 $q(z_t)$。

投影通常通过矩匹配实现(因为最小化前向 KL 等价于匹配矩)。

ADF 与高斯滤波的关系:高斯滤波是近似联合分布再条件,ADF 是直接近似后验。

6.1 ADF for SLDS(高斯和滤波)

对于切换线性动态系统(SLDS),后验是混合高斯。ADF 用混合高斯近似,并通过矩匹配将混合缩减为单高斯(或保持混合但合并),得到高斯和滤波(GPB2、IMM)。

6.2 ADF for 在线逻辑回归

将逻辑回归视为观测模型,权重为状态。ADF 用高斯近似后验,更新时需计算一维积分(用数值积分),然后通过矩匹配更新权重均值和方差。算法复杂度 $O(D)$,与 SGD 相当,但自带步长。

6.3 ADF for 在线深度神经网络

将 ADF 应用于 DNN 权重,类似于概率反向传播(PBP)。通过假设各层激活的分布,用矩匹配逐层传播,得到高斯后验。


7. 与其他推断方法的联系

  • 期望传播(EP):可视为迭代的 ADF,每个因子依次更新,并保证局部 KL 最小。
  • 变分推断(VI):全局最小化 $D_{\text{KL}}(q \| p)$,得到高斯近似后验,但通常低估不确定性。
  • MCMC:可用于离线平滑,如 Gibbs 采样结合 FFBS。
  • 粒子滤波:用非参数样本表示后验,适合强非线性非高斯。

8. 总结与重点

8.1 核心要点

  • 滤波和平滑是动态系统推断的基本任务。
  • 线性高斯模型有解析解:卡尔曼滤波和 RTS 平滑。
  • 非线性模型需近似:
    • EKF:一阶线性化,简单但可能发散。
    • UKF:无迹变换,精度较高,无需导数。
    • 一般高斯滤波:通过矩匹配统一各类方法。
    • 条件矩滤波:处理非高斯观测。
  • 其他变体应对不同挑战:EnKF 适用于大规模,鲁棒KF 处理异常值,双KF 联合估计状态与参数。
  • ADF 是一种在线贝叶斯更新框架,投影到易处理族,可应用于各种模型。

8.2 常见难点

  • 理解 EKF 与 UKF 的本质区别:局部线性化 vs 全局采样近似。
  • 掌握无迹变换中西格玛点的选择和权重计算。
  • 区分 ADF 与 EP、VI 的投影方向(前向 KL vs 反向 KL)。
  • 理解信息形式滤波的优势及其与矩形式的对偶性。

8.3 学习建议

  • 在简单的一维非线性模型上实现 EKF、UKF 和 PF,比较性能。
  • 用 Python 实现卡尔曼滤波跟踪一个二维运动目标。
  • 阅读 UKF 原始论文,理解其理论保证。
  • 尝试用 ADF 在线更新逻辑回归,观察与 SGD 的区别。
  • 阅读集成卡尔曼滤波在地球物理中的应用案例。

9. 与前后章节的联系

  • 第4章(图模型):SSM 是动态图模型的实例。
  • 第5章(信息论):信息形式滤波与 KL 散度相关。
  • 第9章(消息传递):BP 在链图上的特例即卡尔曼平滑。
  • 第10章(变分推断):ADF 与 VI 的关系。
  • 第13章(序贯蒙特卡洛):粒子滤波是 SMC 在 SSM 中的应用。
  • 第29章(状态空间模型):本章是该章的算法篇。

本章为动态系统的高斯推断提供了全面的工具集,后续将扩展到非高斯(第13章)和深度模型(第29章)。


《Probabilistic Machine Learning: Advanced Topics》第9章“Message Passing Algorithms”详细讲解

1. 引言:推断与消息传递

概率图模型(PGM)通过图结构表达了随机变量之间的条件独立性,从而将复杂的联合分布分解为局部因子的乘积。推断任务——计算后验边际或最大后验(MAP)配置——可以利用图结构高效实现。消息传递算法(Message Passing Algorithms)正是利用图的结构化特性,通过局部计算和邻居间交换“消息”来达成全局一致。

本章将从最简单的链式结构开始,逐步推广到树、有环图,最后将推断问题统一为优化问题。通过理解这些算法,读者将掌握精确和近似推断的核心思想。

下图概括了本章的知识体系:

graph TD A[消息传递算法] --> B[链上的BP] A --> C[树上的BP] A --> D[环上的BP(Loopy BP)] A --> E[变量消除 VE] A --> F[联结树算法 JTA] A --> G[推断作为优化] B --> B1[前向-后向算法] B --> B2[维特比算法] B --> B3[前向滤波后向采样] C --> C1[和积算法] C --> C2[最大积算法] D --> D1[Loopy BP for MRF] D --> D2[因子图上的LBP] D --> D3[高斯BP] D --> D4[收敛与精度] D --> D5[应用:纠错码、亲和传播] D --> D6[与图神经网络的关系] E --> E1[变量消除原理] E --> E2[复杂度与树宽] E --> E3[消元顺序] F --> F1[联结树构建] F --> F2[消息传递] G --> G1[推断即反向传播] G --> G2[扰动MAP] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bbf,stroke:#333 style E fill:#bbf,stroke:#333 style F fill:#bbf,stroke:#333 style G fill:#bbf,stroke:#333

接下来,我们将沿着这个结构逐一展开。


2. 链上的信念传播(BP)

链式图是最简单的图结构,也是理解消息传递的起点。典型的例子是隐马尔可夫模型(HMM)。

2.1 隐马尔可夫模型回顾

HMM 的联合分布:

$$ p(z_{1:T}, y_{1:T}) = p(z_1) \prod_{t=2}^T p(z_t \mid z_{t-1}) \prod_{t=1}^T p(y_t \mid z_t). $$

所有变量离散,状态空间大小 $K$。图9.1展示了其结构。

例子:赌场HMM(9.2.1.1节)。观测是骰子点数,隐藏状态是公平或作弊骰子。目标:推断每个时刻的状态。

2.2 前向算法(滤波)

前向算法递推计算滤波分布 $\alpha_t(j) = p(z_t = j \mid y_{1:t})$。

  • 预测:$\alpha_{t|t-1}(j) = \sum_i \alpha_{t-1}(i) A_{i,j}$。
  • 更新:$\alpha_t(j) \propto \lambda_t(j) \alpha_{t|t-1}(j)$,其中 $\lambda_t(j) = p(y_t \mid z_t=j)$,归一化因子 $Z_t = \sum_j \alpha_t(j)$。

算法复杂度 $O(TK^2)$。

2.3 前向-后向算法(平滑)

为了计算平滑分布 $\gamma_t(j) = p(z_t = j \mid y_{1:T})$,需要同时利用过去和未来信息。

  • 后向消息 $\beta_t(j) = p(y_{t+1:T} \mid z_t = j)$ 从后向前递推: $$ \beta_t(j) = \sum_k A_{j,k} \lambda_{t+1}(k) \beta_{t+1}(k). $$
  • 平滑边际:$\gamma_t(j) \propto \alpha_t(j) \beta_t(j)$。
  • 两片平滑边际:$\xi_{t-1,t}(i,j) \propto \alpha_{t-1}(i) A_{i,j} \lambda_t(j) \beta_t(j)$。

数值稳定性:使用归一化的 $\alpha$ 和 $\beta$(而非联合概率)以避免下溢。

例子:图9.3a,b 展示了赌场HMM的滤波和平滑结果,平滑曲线更准确。

2.4 维特比算法(MAP)

维特比算法寻找最可能的状态序列:

$$ \delta_t(j) = \lambda_t(j) \max_i [\delta_{t-1}(i) A_{i,j}], \quad \psi_t(j) = \arg\max_i [\delta_{t-1}(i) A_{i,j}]. $$

最后回溯得到最优路径。复杂度 $O(TK^2)$。

例子:图9.3c 显示维特比路径,与真实状态基本吻合。图9.6 给出了语音识别中的详细例子。

2.5 前向滤波后向采样

要生成后验样本,可从后向前采样:先采样 $z_T \sim \gamma_T$,然后递推 $z_t \sim p(z_t \mid z_{t+1}, y_{1:T})$。这在贝叶斯HMM和粒子滤波中很有用。


3. 树上的信念传播

对于树形图,BP 可精确计算所有边际。

3.1 有向树与无向树

树形图既可以用有向表示,也可以用无向表示,两者等价。无向树上的联合分布可写为:

$$ p(\boldsymbol{z}) \propto \prod_{s\in V} \psi_s(z_s) \prod_{(s,t)\in E} \psi_{s,t}(z_s, z_t). $$

3.2 和积算法

选定一个根节点,分两阶段进行:

  • 收集阶段:从叶子向根传递消息。节点 $s$ 的消息给父节点 $t$: $$ m_{s\to t}(z_t) = \sum_{z_s} \psi_{s,t}(z_s, z_t) \psi_s(z_s) \prod_{u\in \text{ch}(s)\setminus t} m_{u\to s}(z_s). $$
  • 分发阶段:从根向叶子传递消息。节点 $s$ 给子节点 $t$ 的消息: $$ m_{s\to t}(z_t) = \sum_{z_s} \psi_{s,t}(z_s, z_t) \psi_s(z_s) \prod_{u\in \text{nbr}(s)\setminus t} m_{u\to s}(z_s). $$ 其中 $\text{nbr}(s)$ 是邻居。

最终节点信念:

$$ \text{bel}_s(z_s) \propto \psi_s(z_s) \prod_{t\in \text{nbr}(s)} m_{t\to s}(z_s). $$

和积算法正确计算边际,因为树上无环,消息只被计算一次。

3.3 最大积算法

将求和替换为求最大值,得到最大积算法。它用于寻找联合最大后验配置(MPE)。在树形图中,最大积算法与动态规划等价,且能正确给出全局最优。

  • 与MPM的区别:最大后验边际(MPM)是各节点独立的最大边际,可能违反全局一致性;而MPE是全局最优,需考虑全局约束。

例子:纠错码例子(9.3.3.2)说明MPM可能产生无效码字,而MPE保持约束。


4. 环上的信念传播(Loopy BP)

当图存在环时,BP 不再是精确的,但可以作为一种近似推断方法,迭代进行直到收敛。这就是环信念传播(Loopy Belief Propagation, LBP)。

4.1 算法

对于无向图,LBP 以同步或异步方式更新所有消息,重复直到收敛。消息公式与树上相同,但环的存在使信息循环,因此消息可能永远不收敛。

  • 同步更新:所有消息同时更新。
  • 异步更新:一次只更新一条消息,通常收敛更快。

4.2 因子图上的LBP

因子图(Factor Graph)是二部图,包含变量节点和因子节点。消息传递规则更统一:

  • 变量到因子:$m_{x\to f}(x) = \prod_{g\in \text{nbr}(x)\setminus f} m_{g\to x}(x)$。
  • 因子到变量:$m_{f\to x}(x) = \sum_{\boldsymbol{x}_{\setminus x}} f(\boldsymbol{x}) \prod_{y\in \text{nbr}(f)\setminus x} m_{y\to f}(y)$。

4.3 高斯BP

对于线性高斯模型,LBP 可解析计算。此时消息是高斯分布的规范形式(信息形式)。高斯BP 收敛时,均值等于精确后验均值,但方差可能不准确(过于自信)。它等价于求解线性系统 $A\boldsymbol{x} = \boldsymbol{b}$。

例子:图9.11 展示高斯BP用于一维插值,结果合理。

4.4 收敛性与精度

LBP 的收敛依赖于图的计算树(computation tree):K 次迭代等价于在深度为K的树上进行精确BP。如果图是局部树状的,LBP 可能给出好近似。

  • 收敛条件:当图的边权重满足某些条件(如凸性)时,LBP 保证收敛。但一般图可能振荡。
  • 提高收敛的方法
    • 阻尼:新消息与旧消息加权平均。
    • 异步更新:使用新消息立即参与后续计算。
    • 自适应调度:按残差优先级更新(Residual BP)。
  • 精度:在单环图中,最大积LBP 可找到正确MAP。高斯BP 的均值精确。

4.5 应用

  • 纠错码:LDPC 码和 Turbo 码的译码就是 LBP 的应用(图9.15)。
  • 亲和传播(Affinity Propagation):用于聚类的 LBP 算法,消息简化为标量(责任和可用性),寻找范例点(图9.16、9.17)。

4.6 与图神经网络的关系

图神经网络(GNN)中的消息传递类似 BP,但消息函数可学习,用于特定任务。可将BP展开为可微网络,实现端到端学习(深度展开)。


5. 变量消除算法

变量消除(Variable Elimination, VE)是另一种精确推断算法,通过依次求和(积分)掉变量来逐步计算边际。

5.1 算法

以学生网络为例,计算 $p(J)$ 的表达式(表9.1)。步骤:

  1. 将联合分布分解为因子的乘积。
  2. 选择一个消元顺序,依次对变量求和。
  3. 每步将涉及该变量的因子相乘,再求和掉该变量,产生新因子(消息)。

5.2 复杂度

VE 的复杂度由最大团大小(即消元过程中产生的最大因子的大小)决定,这个大小减1称为诱导宽度(induced width)。图的最小可能诱导宽度称为树宽(treewidth)。VE 的时间复杂度 $O(N K^{w+1})$。

5.3 消元顺序

消元顺序对复杂度至关重要。最优顺序是NP难问题,但可用启发式如最小缺失边(min-fill)、最小权重(min-weight)来选择。

5.4 精确推断的复杂性

对于一般图,精确推断是#P难的,因为需要计数满足约束的配置数(如SAT问题的变体)。

5.5 VE 的缺点

VE 一次只能计算一个边际,重复计算不同边际会浪费工作。消息传递通过缓存中间结果避免了重复计算。


6. 联结树算法

联结树算法(Junction Tree Algorithm, JTA)将一般图转化为树,然后在树上进行消息传递,从而高效计算所有边际。

6.1 联结树构建步骤

  1. 道德化:将有向图转为无向图,连接未结婚的父母。
  2. 三角化:添加边使图成为弦图(chordal graph)。
  3. 识别团:找出所有最大团。
  4. 构建联结树:团为节点,团之间的分隔集(separator)为边,要求满足联结树性质(交集性质)。

6.2 消息传递

在联结树上运行类似BP的消息传递(团到团)。通过收集分发阶段,使所有团达到一致。最后从团边际中提取变量边际。

JTA 的时间复杂度与树宽成指数关系。


7. 推断作为优化

7.1 推断即反向传播

对于离散指数族模型,对数配分函数 $\log Z(\eta)$ 的梯度即为边际。因此,可用自动微分计算梯度来获得边际。这需要能计算 $\log Z$,但可借助 einsum 实现张量缩并。

例子:三个变量的链,用 einsum 计算 $Z$,然后自动微分得到边际。

7.2 扰动MAP

扰动MAP(Perturb-and-MAP)是一种近似采样方法:

  • 在参数上添加随机噪声(如高斯或Gumbel)。

  • 计算扰动后模型的MAP解。

  • 重复多次,样本分布逼近真实后验。

  • 高斯情形:在 GMRF 的线性项加噪声,MAP解正好是从后验采样的样本。

  • 离散情形:加 Gumbel 噪声到势函数,然后取 argmax,样本分布逼近 Gibbs 分布。

扰动MAP 可结合快速MAP求解器(如图割、整数规划)进行高效采样。


8. 总结与重点

8.1 核心要点

  • 消息传递算法利用图结构实现高效推断。
  • 链上的BP(前向-后向、维特比)是 HMM 推断的基础。
  • 树上的BP(和积、最大积)精确计算边际和MAP。
  • 环上的BP(LBP)是近似算法,通过迭代消息更新,收敛性依赖于图的性质。
  • 变量消除是精确推断的基本方法,复杂度由树宽决定。
  • 联结树算法将一般图转化为树,可精确计算所有边际。
  • 推断即优化的观点将推断问题与自动微分、扰动采样联系起来,为深度学习和采样方法提供新视角。

8.2 常见难点

  • 理解消息的含义:消息是局部证据的“信念”。
  • 区分和积与最大积的目标:边际 vs MAP。
  • 掌握LBP收敛的条件和改进方法。
  • 理解树宽与计算复杂度的关系。
  • 掌握联结树构建的步骤(道德化、三角化)。

8.3 学习建议

  • 实现 HMM 的前向-后向和维特比算法,并用赌场例子验证。
  • 对一个小树形MRF,手工推导BP消息,并验证结果。
  • 用网络X构建一个环图,运行LBP,观察收敛性。
  • 用 Python 实现变量消除,体验消元顺序的影响。
  • 阅读 LDPC 码译码的相关资料,理解LBP的工业应用。

9. 与前后章节的联系

  • 第4章(图模型) 提供了图结构的定义,是本章的基础。
  • 第8章(高斯滤波) 可视为链上BP的高斯特例。
  • 第10章(变分推断) 将推断转化为优化,与本章的“推断即优化”呼应。
  • 第24章(能量模型) 中的对比散度与 LBP 相关。
  • 第32章(表示学习) 中的 GNN 借鉴了消息传递思想。

本章为后续所有高级推断算法提供了统一视角:消息传递是实现结构化推断的核心引擎。


《Probabilistic Machine Learning: Advanced Topics》第10章“Variational Inference”详细讲解

1. 引言:从精确后验到近似推断

在第7章中,我们了解到贝叶斯推断的核心是计算后验分布 $p(\theta \mid \mathcal{D}) \propto p(\mathcal{D} \mid \theta)p(\theta)$。然而,对于大多数现实模型,这个后验无法解析计算,归一化常数 $p(\mathcal{D}) = \int p(\mathcal{D} \mid \theta)p(\theta)d\theta$ 是一个高维积分,难以处理。因此,我们需要近似推断方法。

变分推断(Variational Inference, VI)是一种将推断转化为优化问题的确定性近似方法。其核心思想是:选择一个易于处理的分布族 $\mathcal{Q}$,寻找其中与真实后验最接近的成员 $q^*(\theta)$,从而用 $q^*$ 近似后验进行后续推断。

本章将系统介绍变分推断的基本原理、各种变体、优化技巧及其在复杂模型中的应用。下图概括了本章的知识体系:

graph TD A[变分推断 VI] --> B[ELBO 与 KL 散度] A --> C[优化方法] A --> D[变分后验族选择] A --> E[与EM的关系] A --> F[改进与扩展] C --> C1[坐标上升 CAVI] C --> C2[梯度下降法] C2 --> C2a[重参数化技巧] C2 --> C2b[得分函数估计器] C2 --> C2c["自动微分VI (ADVI)"] D --> D1[平均场] D --> D2[结构化平均场] D --> D3["高斯族(全/对角/低秩)"] D --> D4[归一化流] D --> D5[隐式后验] F --> F1[更紧的界 IWAE] F --> F2[更紧的界 TVO] F --> F3[唤醒-睡眠算法] F --> F4[与MCMC结合] A --> G[与其他方法的联系] G --> G1[期望传播 EP] G --> G2[变分EM] G --> G3[摊销VI] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bbf,stroke:#333 style E fill:#bbf,stroke:#333 style F fill:#bbf,stroke:#333

接下来,我们将沿着这个结构逐一展开。


2. 变分推断基础:ELBO 与 KL 散度

2.1 问题设定

假设模型包含观测变量 $x$ 和隐变量 $z$(或参数 $\theta$)。后验 $p(z \mid x)$ 难以处理。我们引入一个参数化的变分分布 $q(z \mid \psi)$,希望 $q$ 尽可能接近真实后验。

2.2 KL 散度与证据下界

我们选择 KL 散度 $D_{\text{KL}}(q(z) \| p(z \mid x))$ 作为接近程度的度量。将其展开:

$$ \begin{aligned} D_{\text{KL}}(q \| p) &= \mathbb{E}_q[\log q(z)] - \mathbb{E}_q[\log p(z \mid x)] \\ &= \mathbb{E}_q[\log q(z)] - \mathbb{E}_q[\log p(z,x)] + \log p(x). \end{aligned} $$

移项得:

$$ \log p(x) = \underbrace{\mathbb{E}_q[\log p(z,x)] - \mathbb{E}_q[\log q(z)]}_{=: \mathcal{L}(q)} + D_{\text{KL}}(q \| p). $$

由于 KL ≥ 0,我们有 $\mathcal{L}(q) \le \log p(x)$。因此 $\mathcal{L}(q)$ 是证据 $\log p(x)$ 的下界,称为证据下界(Evidence Lower BOund, ELBO)。

最大化 ELBO 等价于最小化 KL 散度,因为 $\log p(x)$ 是常数(关于 $q$)。

2.3 ELBO 的两种解释

  • 变分自由能:$\mathcal{L}(q) = \mathbb{E}_q[-\log p(z,x)] - H(q)$,即期望能量减去熵。
  • 重构损失与KL正则:$\mathcal{L}(q) = \mathbb{E}_q[\log p(x \mid z)] - D_{\text{KL}}(q(z) \| p(z))$。第一项鼓励 $z$ 能解释数据,第二项惩罚后验偏离先验。

例子:高斯均值推断(图10.2)。真实后验为高斯,用不同族的高斯近似,对比全协方差、对角、低秩的差异。

2.4 优化框架

变分推断的目标是最大化 ELBO 关于变分参数 $\psi$。根据变分族 $\mathcal{Q}$ 的选择和优化方法,派生出不同算法。


3. 坐标上升变分推断(CAVI)

3.1 平均场假设

平均场(mean field)假设变分分布完全分解:

$$ q(z) = \prod_{j=1}^J q_j(z_j). $$

在此假设下,ELBO 可写为各项的加和,便于坐标上升。

3.2 CAVI 更新公式

固定其他因子,优化 $q_j(z_j)$ 的泛函形式,得到最优解:

$$ q_j^*(z_j) \propto \exp\left( \mathbb{E}_{q_{-j}}[\log \tilde{p}(z_j, z_{-j})] \right), $$

其中 $\tilde{p}(z) = p(z,x)$ 是未归一化联合。这相当于将 $q_j$ 设置为条件分布的几何平均。

推导:将 ELBO 写为与 $q_j$ 有关的项加上常数,利用 KL 非负性得最优形式。

3.3 例子:Ising 模型的平均场

对于 Ising 模型,平均场更新给出自洽方程:

$$ \mu_i = \tanh\left( \sum_{j \in \text{nbr}(i)} W_{ij} \mu_j + \text{local evidence} \right). $$

这是固定点迭代,可加阻尼保证收敛。图10.9 展示了图像去噪结果。

3.4 变分贝叶斯(VB)

当隐变量包含模型参数时,CAVI 成为变分贝叶斯(VB)。例如,一元高斯参数的 VB(10.3.4):

  • 假设 $q(\mu, \lambda) = q(\mu)q(\lambda)$。
  • 更新 $q(\mu)$ 为高斯,更新 $q(\lambda)$ 为伽马。
  • 交替迭代,最终得到近似后验。

图10.10 比较了 VB 与真实后验,VB 更紧凑(低估不确定性)。

3.5 变分贝叶斯 EM(VBEM)

当模型既有局部隐变量 $z_n$ 又有全局参数 $\theta$ 时,VBEM 交替更新:

  • 变分 E 步:对每个 $n$,用当前 $\theta$ 的后验更新 $q(z_n)$。
  • 变分 M 步:用更新的 $q(z_n)$ 更新 $q(\theta)$。

例子:高斯混合模型的 VBEM(10.3.6)。更新公式与 EM 类似,但使用期望而非点估计,且自动产生稀疏效应(图10.12、10.13)。

3.6 变分消息传递(VMP)

对于有向图模型,若每个节点的完全条件分布属于指数族,则 CAVI 更新可自动推导:节点 $j$ 的自然参数等于其马尔可夫毯中其他节点的期望充分统计量的和。这称为变分消息传递(Variational Message Passing)。


4. 基于梯度的变分推断

当变分族不能分解或更新无闭式解时,可用梯度下降优化 ELBO。

4.1 重参数化技巧

若 $z \sim q_\psi(z)$ 可表示为 $z = g(\psi, \epsilon)$,$\epsilon \sim q_0(\epsilon)$ 与 $\psi$ 无关,则

$$ \nabla_\psi \mathcal{L}(\psi) = \mathbb{E}_{q_0}[\nabla_\psi \log p(x, g(\psi,\epsilon)) - \nabla_\psi \log q_\psi(g(\psi,\epsilon))]. $$

此即重参数化梯度,方差低,可使用自动微分。

例子:高斯后验 $q(z) = \mathcal{N}(\mu, \sigma^2)$ 可写为 $z = \mu + \sigma \epsilon$,$\epsilon \sim \mathcal{N}(0,1)$。

4.2 自动微分变分推断(ADVI)

ADVI 自动将模型参数变换到实空间,并假设高斯变分后验。通过重参数化技巧,ELBO 成为可导的蒙特卡洛目标,可用 SGD 优化。图7.4 展示了 ADVI 应用于 Beta-Binomial 的例子。

4.3 得分函数估计器(REINFORCE)

若不能重参数化(如离散 $z$),可使用得分函数估计器:

$$ \nabla_\psi \mathcal{L}(\psi) = \mathbb{E}_{q_\psi}[ \tilde{\mathcal{L}}(z) \nabla_\psi \log q_\psi(z) ], $$

其中 $\tilde{\mathcal{L}}(z) = \log p(x,z) - \log q_\psi(z)$。此估计方差大,需用控制变量法降低方差。

4.4 黑箱变分推断(BBVI)

BBVI 将模型视为黑箱,只要求能计算 $\log p(x,z)$ 和 $\log q_\psi(z)$ 及其梯度。用 REINFORCE 估计梯度,配合控制变量,实现通用 VI。

4.5 摊销变分推断(Amortized VI)

摊销 VI 训练一个推理网络 $q_\phi(z \mid x)$,将每个数据点映射到其变分参数。这避免了每点单独优化,使推断可扩展。VAE 正是摊销 VI 的典范。

算法 10.1 展示了摊销随机变分 EM 的步骤。


5. 更精确的变分后验

5.1 结构化平均场

保留部分依赖关系,如时间序列中的马尔可夫结构:$q(z_{1:T}) = \prod_t q(z_t \mid z_{t-1})$,可用 FFBS 更新。

5.2 层次后验(辅助变量)

引入辅助变量 $a$,使条件后验 $q(z \mid a)$ 更简单,边际 $q(z) = \int q(z \mid a)q(a)da$ 更灵活。这称为层次变分模型(HVM)。

5.3 归一化流

归一化流(Normalizing Flow)通过一系列可逆变换将简单分布映射为复杂分布。用流参数化 $q(z)$,可直接用重参数化梯度优化 ELBO。例如,逆自回归流(IAF)用于 VAE 的后验。

5.4 隐式后验

隐式模型(如 GAN)只提供采样过程,无法计算密度。此时可用对抗训练学习后验,即训练一个判别器区分真实样本与后验样本,从而逼近后验。

5.5 VI 与 MCMC 结合

  • 哈密顿变分推断:用 HMC 生成高质量样本,训练一个逆网络将样本映射回后验参数。
  • Hoffman 方法:用 HMC 样本估计 ELBO 的梯度,避免后验坍塌。

6. 更紧的界

标准 ELBO 可能松散,尤其当后验复杂时。提高下界紧度可改善近似质量。

6.1 多样本 ELBO(IWAE)

重要性加权自编码器(IWAE)使用多个样本:

$$ \mathcal{L}_K = \mathbb{E}_{z_1,\dots,z_K \sim q(z \mid x)} \left[ \log \frac{1}{K} \sum_{k=1}^K \frac{p(x,z_k)}{q(z_k \mid x)} \right]. $$
  • 当 $K=1$,退化为 ELBO。
  • $K$ 增大时,界变紧,且鼓励 $q$ 探索多峰后验。

缺点:梯度信号可能变弱,导致学习缓慢。可用双重重参数化梯度缓解。

6.2 热力学变分目标(TVO)

TVO 利用路径采样(path sampling)构造更紧的界,尤其适用于离散潜变量。

6.3 最小化证据上界(EUBO)

EUBO 定义为 $\log p(x) + D_{\text{KL}}(p \| q)$,是 $\log p(x)$ 的上界。最小化 EUBO 可得到另一种近似后验,与唤醒-睡眠算法相关。


7. 唤醒-睡眠算法

唤醒-睡眠算法(Wake-Sleep)是一种无需 ELBO 的联合训练生成和推理网络的方法。

  • 唤醒阶段:固定推理网络,优化生成网络以最大化数据似然(用重要性采样近似)。
  • 睡眠阶段:从生成网络采样幻想数据,训练推理网络以最大化条件似然。
  • 白日梦阶段:用真实数据,通过重要性加权更新推理网络(重加权唤醒-睡眠)。

唤醒-睡眠算法能处理离散隐变量,且可提供上下界夹逼。


8. 期望传播(EP)

期望传播(Expectation Propagation, EP)是另一种将推断转化为优化的方法,它最小化 $D_{\text{KL}}(p \| q)$,即反向 KL,这导致零避免(mode-covering)行为,与 VI 的零强迫相反。

8.1 算法框架

EP 将后验写为因子乘积:$p(\theta \mid \mathcal{D}) \propto p_0(\theta) \prod_i f_i(\theta)$。用近似分布 $q(\theta) \propto p_0(\theta) \prod_i \tilde{f}_i(\theta)$ 替换。

迭代优化每个 $\tilde{f}_i$:

  1. 删除 $\tilde{f}_i$ 得到腔分布 $q_{\setminus i}(\theta) \propto q(\theta) / \tilde{f}_i(\theta)$。
  2. 结合精确因子得到倾斜分布 $t_i(\theta) \propto f_i(\theta) q_{\setminus i}(\theta)$。
  3. 将 $t_i$ 投影到指数族,得到新的 $\tilde{f}_i^{\text{new}}(\theta) \propto \frac{\text{proj}(t_i)}{q_{\setminus i}(\theta)}$。

投影通常通过矩匹配完成(如高斯)。

8.2 性质

  • EP 可视为迭代的 ADF,克服了顺序依赖。
  • 对 log-凹似然,EP 通常稳定且精确。
  • 可用阻尼改善稳定性。
  • Power EP 推广到 α-散度,平衡零避免与零强迫。

8.3 随机 EP

在大数据下,存储每个因子的近似不可行。随机 EP 用一个共享的“平均似然”因子代替所有数据点,降低内存需求。


9. 与前后的联系

  • 第2章(概率):KL 散度、指数族是 VI 的基础。
  • 第3章(统计):共轭先验为 VB 提供解析更新。
  • 第5章(信息论):ELBO 与 KL 的关系,IWAE 与重要性采样。
  • 第6章(优化):SGD、重参数化、自然梯度在 VI 中的应用。
  • 第7章(推断概述):VI 是近似推断家族的重要成员。
  • 第8、9章:VI 可与消息传递结合(如 VMP)。
  • 第21章(VAE):VAE 正是摊销 VI 的典型例子。
  • 第24章(能量模型):EP 可用于 EBM 的近似推断。

10. 总结与重点

10.1 核心要点

  • 变分推断通过最大化 ELBO 来逼近后验。
  • 平均场假设使坐标上升成为可能,但低估不确定性。
  • 梯度下降 VI(重参数化、ADVI)可处理任意可导模型。
  • 摊销 VI(VAE)将推断网络化,实现大规模学习。
  • 更精确的后验(flows、implicit)可提升近似质量。
  • 更紧的界(IWAE、TVO)使优化更接近真实边际似然。
  • 唤醒-睡眠期望传播是 ELBO 之外的替代框架。

10.2 常见难点

  • 区分前向 KL ($D_{\text{KL}}(q\|p)$) 和反向 KL ($D_{\text{KL}}(p\|q)$) 的行为差异。
  • 理解重参数化技巧与得分函数估计器的适用条件和方差特性。
  • 掌握 CAVI 更新公式的推导。
  • 理解 VAE 中的“后验坍塌”及其缓解方法。
  • 区分 EP 与 VI 的投影方向及其影响。

10.3 学习建议

  • 在简单模型(如一元高斯)上手动推导并实现 CAVI,观察更新过程。
  • 用 Pyro 或 TensorFlow Probability 实现 ADVI 于简单贝叶斯模型。
  • 实现 VAE 于 MNIST,观察 ELBO 和生成样本。
  • 对比 IWAE 与 VAE 的性能差异。
  • 阅读原始论文了解 EP 和 Power EP 的实现细节。

变分推断是现代概率机器学习的重要支柱,它为深度生成模型、贝叶斯神经网络、大规模贝叶斯推断提供了可扩展的解决方案。掌握本章内容,将为后续学习复杂模型打下坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第11章“Monte Carlo Methods”详细讲解

1. 引言:为什么需要蒙特卡洛方法?

在贝叶斯推断中,我们常常需要计算高维积分,例如后验期望:

$$ \mathbb{E}_{p(\theta|\mathcal{D})}[f(\theta)] = \int f(\theta) p(\theta|\mathcal{D}) d\theta. $$

当后验分布复杂、非标准时,解析积分不可行。数值积分(如网格法)在高维面临维数灾难。蒙特卡洛方法提供了一种基于随机抽样的解决方案:通过从目标分布中抽取样本,用样本均值近似期望。

本章将系统介绍蒙特卡洛方法的基础,包括如何生成随机样本、如何利用重要性采样处理无法直接采样的分布,以及如何通过方差减少技术提高估计效率。

下图概括了本章的知识体系:

graph TD A[蒙特卡洛方法] --> B[蒙特卡洛积分] A --> C[随机样本生成] A --> D[拒绝采样] A --> E[重要性采样] A --> F[方差减少技术] B --> B1[基本思想] B --> B2[误差分析] B --> B3[例:估计π] C --> C1[逆变换采样] C --> C2[Box-Muller] D --> D1[基本思想] D --> D2[自适应拒绝采样] D --> D3[高维问题] E --> E1[直接重要性采样] E --> E2[自标准化重要性采样] E --> E3[提议分布选择] E --> E4[退火重要性采样 AIS] F --> F1[公共随机数] F --> F2[Rao-Blackwellization] F --> F3[控制变量] F --> F4[对偶采样] F --> F5[准蒙特卡洛 QMC] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bbf,stroke:#333 style E fill:#bbf,stroke:#333 style F fill:#bbf,stroke:#333

2. 蒙特卡洛积分

2.1 基本思想

蒙特卡洛积分将期望表示为积分,并用样本均值近似:

$$ \mu = \mathbb{E}_{p(x)}[f(X)] = \int f(x) p(x) dx \approx \frac{1}{N} \sum_{n=1}^N f(x_n), \quad x_n \stackrel{\text{i.i.d.}}{\sim} p(x). $$

这一估计是无偏的,其方差为 $\sigma^2/N$,其中 $\sigma^2 = \mathbb{V}[f(X)]$。

例子:估计圆周率 $\pi$。取 $x, y \sim \text{Unif}(-1,1)$,计算落入单位圆内的比例。图11.1展示了5000个样本的模拟。

2.2 误差分析

由中心极限定理,当 $N$ 大时,

$$ \sqrt{N}(\hat{\mu} - \mu) \xrightarrow{d} \mathcal{N}(0, \sigma^2). $$

因此,估计的标准误为 $\hat{\sigma}/\sqrt{N}$,其中 $\hat{\sigma}^2$ 是样本方差。误差以 $1/\sqrt{N}$ 速率下降,与维度无关。这体现了蒙特卡洛方法的强大之处。


3. 生成随机样本

要实现蒙特卡洛积分,首先需要能从目标分布 $p(x)$ 中生成样本。本节介绍针对简单分布的采样方法。

3.1 逆变换采样

若累积分布函数 $F(x)$ 及其逆 $F^{-1}$ 可计算,则可通过均匀分布生成样本:

$$ U \sim \text{Unif}(0,1), \quad X = F^{-1}(U) \sim p. $$

例子:指数分布 $p(x) = \lambda e^{-\lambda x}$,其 CDF 为 $F(x) = 1 - e^{-\lambda x}$,逆变换为 $X = -\frac{\ln(1-U)}{\lambda}$。

3.2 Box-Muller 方法

生成标准正态样本的经典方法:

  1. 生成 $U_1, U_2 \sim \text{Unif}(0,1)$。
  2. 计算 $Z_1 = \sqrt{-2\ln U_1} \cos(2\pi U_2)$,$Z_2 = \sqrt{-2\ln U_1} \sin(2\pi U_2)$。 则 $Z_1, Z_2$ 独立同分布于 $\mathcal{N}(0,1)$。

要生成多元正态 $\mathcal{N}(\mu, \Sigma)$,先计算 Cholesky 分解 $\Sigma = LL^\top$,然后 $X = \mu + L Z$。


4. 拒绝采样

当目标分布 $p(x) = \tilde{p}(x)/Z_p$ 不易直接采样时,拒绝采样借助一个易于采样的提议分布 $q(x)$,要求存在常数 $M$ 使得 $M q(x) \ge \tilde{p}(x)$ 对所有 $x$ 成立。

4.1 算法

  1. 从 $q(x)$ 中采样 $x_0$。
  2. 从 $\text{Unif}(0, M q(x_0))$ 中采样 $u$。
  3. 若 $u \le \tilde{p}(x_0)$,则接受 $x_0$;否则拒绝。

证明:接受的样本服从 $p(x)$,接受概率为 $1/M$(当 $p$ 归一化时)。

4.2 例子:伽马分布

目标 $p(x) = \text{Ga}(x|\alpha,\lambda)$,提议用 $\text{Ga}(x|k,\lambda-1)$($k=\lfloor\alpha\rfloor$)。比例函数的最大值处确定 $M$,见图11.4。

4.3 自适应拒绝采样

当 $p$ 是对数凹时,可用分段线性上界构造 $q$,并根据被拒绝的样本不断细化上界,提高接受率。图11.5展示了自适应过程。

4.4 高维问题

在高维空间中,要使 $M q(x) \ge \tilde{p}(x)$,$M$ 通常随维度指数增长,导致接受率极低。这是拒绝采样的主要限制。


5. 重要性采样

重要性采样通过加权平均来估计期望,无需直接采样 $p$。

5.1 直接重要性采样

选取提议分布 $q(x)$,满足 $q(x) > 0$ 当 $p(x) > 0$。则

$$ \mathbb{E}_{p}[f(X)] = \int f(x) \frac{p(x)}{q(x)} q(x) dx = \mathbb{E}_{q}[f(X) w(X)], \quad w(x) = \frac{p(x)}{q(x)}. $$

蒙特卡洛估计:$\hat{\mu} = \frac{1}{N} \sum_{n=1}^N w(x_n) f(x_n)$,$x_n \sim q$。该估计无偏。

5.2 自标准化重要性采样

若只能计算未归一化的 $\tilde{p}(x)$,则需估计归一化常数 $Z = \int \tilde{p}(x) dx$:

$$ \mathbb{E}_{p}[f(X)] \approx \frac{\sum_{n=1}^N \tilde{w}_n f(x_n)}{\sum_{n=1}^N \tilde{w}_n}, \quad \tilde{w}_n = \frac{\tilde{p}(x_n)}{q(x_n)}. $$

归一化权重 $W_n = \tilde{w}_n / \sum \tilde{w}_n$。此估计有偏,但随 $N$ 增大渐近无偏。

例子:用重要性采样估计后验期望,提议分布取先验或变分后验。

5.3 提议分布的选择

理想提议应接近 $p$,且与 $|f|$ 的乘积相匹配(图11.6)。常用方法:学习一个变分后验作为提议,如 IWAE 中的推理网络。

5.4 退火重要性采样(AIS)

AIS 通过一系列中间分布从易采样分布逐步过渡到目标分布,用于估计难以归一化的 $Z$ 或生成近似样本。

构建温度链 $p_j(x) \propto p_0(x)^{1-\beta_j} p_1(x)^{\beta_j}$,$0=\beta_0<\beta_1<\dots<\beta_T=1$。从 $p_0$ 开始,依次经过马尔可夫核转移,最后得到样本 $x_T$,权重为:

$$ w = \frac{p_1(x_{T-1})}{p_0(x_{T-1})} \frac{p_2(x_{T-2})}{p_1(x_{T-2})} \cdots \frac{p_T(x_0)}{p_{T-1}(x_0)}. $$

AIS 可用来估计归一化常数 $Z_1/Z_0$。


6. 控制蒙特卡洛方差

估计的方差直接影响所需样本量。本节介绍几种降低方差的技术。

6.1 公共随机数

当比较不同参数下期望时,使用相同的随机种子,使差异仅来自参数,而非随机波动。这常用于随机优化(如 SGD 的确定性版本)。

6.2 Rao-Blackwellization

若能在给定某些变量的条件下解析计算条件期望,则条件期望估计量的方差小于原始蒙特卡洛估计量。即

$$ \mathbb{V}[\mathbb{E}[f(X,Y) \mid X]] \le \mathbb{V}[f(X,Y)]. $$

例子:在隐变量模型中,若可解析计算 $p(z|x)$,则用 $\mathbb{E}_{p(z|x)}[f(x,z)]$ 代替采样,可降方差。

6.3 控制变量

若已知某函数 $b(x)$ 的期望 $\mathbb{E}[b(X)]$,则可构造新估计量:

$$ f^*(X) = f(X) + c(b(X) - \mathbb{E}[b(X)]). $$

选择 $c$ 使方差最小,得 $c^* = -\frac{\mathrm{Cov}[f,b]}{\mathbb{V}[b]}$,方差降为 $(1-\rho^2)\mathbb{V}[f]$。

例子:估计 $\int_0^1 \frac{1}{1+x} dx$,取 $b(x)=1+x$,其期望为 $1.5$,计算得方差大幅降低。

6.4 对偶采样

通过引入负相关样本降低方差。例如,若 $U \sim \text{Unif}(0,1)$,则 $1-U$ 与 $U$ 负相关,用 $(f(U)+f(1-U))/2$ 估计期望,方差降低。

例子:同上例,对偶采样使方差降至约 $0.0007$(原为 $0.0037$)。

6.5 准蒙特卡洛(QMC)

用确定性的低差异序列(如 Sobol 序列)代替随机样本,可使误差降至 $O((\log N)^D / N)$,优于 $O(1/\sqrt{N})$。缺点是无法直接得到误差估计。随机化 QMC(RQMC)通过加随机扰动,可同时获得低误差和误差估计。图11.7对比了 MC、QMC、RQMC 在单位正方形上的点分布。


7. 与前后的联系

  • 第2章(概率) 提供了分布和期望的数学基础。
  • 第3章(统计) 中的后验分布正是蒙特卡洛方法的目标。
  • 第5章(信息论) 中的 KL 散度与重要性采样相关。
  • 第6章(优化) 中的随机梯度可与蒙特卡洛结合(如 SGLD)。
  • 第10章(变分推断) 中的 IWAE 利用重要性采样改进 ELBO。
  • 第12章(MCMC) 是蒙特卡洛的进阶,处理更复杂的分布。
  • 第13章(序贯蒙特卡洛) 将重要性采样扩展到动态系统。

8. 总结与重点

8.1 核心要点

  • 蒙特卡洛积分用样本均值近似期望,误差 $O(1/\sqrt{N})$。
  • 逆变换采样是生成任意一元分布的基础。
  • 拒绝采样可处理任意复杂分布,但高维效率低。
  • 重要性采样通过加权处理无法直接采样的分布,自标准化版本可处理未归一化目标。
  • AIS 通过温度链处理多峰分布,并估计归一化常数。
  • 方差减少技术(Rao-Blackwellization、控制变量、对偶采样、QMC)可大幅提高估计效率。

8.2 常见难点

  • 理解重要性采样中权重的归一化及其有偏性。
  • 区分直接重要性采样与自标准化版本的差异。
  • 掌握 AIS 的权重推导及其与路径采样的关系。
  • 理解 Rao-Blackwellization 为何能降方差。
  • 了解 QMC 与 RQMC 的区别及适用场景。

8.3 学习建议

  • 实现逆变换采样生成指数分布,并与 NumPy 结果对比。
  • 用拒绝采样生成伽马分布,观察接受率随参数的变化。
  • 实现重要性采样估计高斯混合的期望,并试验不同提议的影响。
  • 在简单问题上实现控制变量和对偶采样,验证方差降低。
  • 阅读 AIS 原始论文,理解其在深度生成模型中的应用(如评估 VAE 的边际似然)。

本章奠定了蒙特卡洛方法的基础,为后续 MCMC 和 SMC 的学习铺平了道路。熟练掌握这些技术,将能应对各种复杂的贝叶斯推断问题。


《Probabilistic Machine Learning: Advanced Topics》第12章“Markov Chain Monte Carlo”详细讲解

1. 引言:从静态蒙特卡洛到动态蒙特卡洛

第11章介绍的蒙特卡洛方法(如重要性采样、拒绝采样)通过独立样本估计期望,但在高维空间中,这些方法的效率急剧下降,因为很难找到一个与目标分布足够接近的提议分布。马尔可夫链蒙特卡洛(Markov Chain Monte Carlo, MCMC)通过构造一个马尔可夫链,使其平稳分布为目标分布,从而生成相关但渐近精确的样本。MCMC是贝叶斯推断中处理复杂后验分布的最重要工具之一。

本章将系统介绍MCMC的核心算法,包括Metropolis-Hastings、Gibbs采样、哈密顿蒙特卡洛(HMC),并讨论收敛性诊断、随机梯度变体以及高级主题如可逆跳转MCMC和退火方法。下图概括了本章的知识体系:

graph TD A[MCMC] --> B[Metropolis-Hastings] A --> C[Gibbs采样] A --> D[辅助变量MCMC] A --> E[哈密顿蒙特卡洛 HMC] A --> F[收敛性分析] A --> G[随机梯度MCMC] A --> H[可逆跳转MCMC] A --> I[退火方法] B --> B1[基本思想] B --> B2[提议分布] B --> B3[接受概率] B --> B4[随机游走Metropolis] C --> C1[条件分布采样] C --> C2[块状Gibbs] C --> C3[坍缩Gibbs] D --> D1[切片采样] D --> D2[Swendsen-Wang] E --> E1[哈密顿力学] E --> E2[蛙跳积分] E --> E3[NUTS] E --> E4[Langevin Monte Carlo] F --> F1[收敛诊断] F --> F2[有效样本量] F --> F3[非中心参数化] G --> G1[SGLD] G --> G2[SG-HMC] G --> G3[方差减少] H --> H1[可逆跳转] H --> H2[示例] I --> I1[模拟退火] I --> I2[并行回火]

2. Metropolis-Hastings 算法

2.1 基本思想

Metropolis-Hastings(MH)是最通用的MCMC算法。它从一个提议分布 $q(x' \mid x)$ 中生成候选状态 $x'$,然后以一定概率接受该候选,否则保持当前状态。接受概率为:

$$ A(x' \mid x) = \min\left(1, \frac{p(x') q(x \mid x')}{p(x) q(x' \mid x)}\right), $$

其中 $p(x)$ 是目标分布(可能只知其未归一化形式)。当提议对称($q(x' \mid x) = q(x \mid x')$)时,接受概率简化为 $\min(1, p(x')/p(x))$。

2.2 为什么MH有效?

MH算法构造的马尔可夫链满足细致平衡(detailed balance):

$$ p(x) q(x' \mid x) A(x' \mid x) = p(x') q(x \mid x') A(x \mid x'), $$

这保证了 $p(x)$ 是链的平稳分布。若链还是不可约且非周期的,则样本分布收敛到 $p$。

2.3 提议分布的选择

  • 随机游走Metropolis(RWM):$q(x' \mid x) = \mathcal{N}(x' \mid x, \tau^2 I)$。步长 $\tau$ 需精心调节:太小则探索慢,太大则拒绝率高。理论最优接受率约为0.234(高维高斯目标)。
  • 独立采样器:$q(x' \mid x) = q(x')$,与当前状态无关,类似重要性采样。
  • 自适应MCMC:根据历史调整提议参数,需保证渐近正确性。

例子:图12.1展示了用RWM采样混合高斯分布,不同步长的影响:太小只探索一个峰,太大则“粘滞”,适中则混合良好。

2.4 初始化与预热

MCMC需要一段“预热”(burn-in)时间以接近平稳分布。通常丢弃前 $B$ 个样本,并用多个链从不同起点开始以诊断收敛。


3. Gibbs 采样

3.1 基本思想

Gibbs采样是MH的一种特例,它依次从每个变量的满条件分布(full conditional)中采样,其他变量保持不变。对于联合分布 $p(x_1,\dots,x_D)$,一次迭代为:

$$ x_1^{(t+1)} \sim p(x_1 \mid x_2^{(t)},\dots,x_D^{(t)}), \quad x_2^{(t+1)} \sim p(x_2 \mid x_1^{(t+1)},x_3^{(t)},\dots,x_D^{(t)}), \dots $$

接受概率恒为1,因此简单高效。

3.2 马尔可夫毯

在图形模型中,$p(x_i \mid x_{-i})$ 只依赖于其马尔可夫毯(父节点、子节点、子节点的其他父节点)。这使Gibbs采样在PGM中特别方便。

3.3 例子:Ising模型

对于Ising模型,条件分布为:

$$ p(x_i = +1 \mid x_{-i}) = \sigma\left(2J \sum_{j\in \text{nbr}(i)} x_j + \text{local evidence}\right), $$

其中 $\sigma$ 是sigmoid函数。图12.3展示了Gibbs采样用于图像去噪。

3.4 块状Gibbs

当变量强相关时,单变量更新混合慢。块状Gibbs将相关变量分为一组,联合采样。例如,在HMM中,可联合采样整个状态序列 $z_{1:T}$ 用前向-后向算法,再采样参数。

3.5 坍缩Gibbs

若能解析积分掉部分变量,则可在更小的空间采样,降低方差。例如,高斯混合模型中积分掉参数 $\mu,\Sigma,\pi$,只采样隐变量 $z$,这提高了效率。


4. 辅助变量MCMC

辅助变量法通过引入额外变量简化采样过程。

4.1 切片采样

对于一元分布 $p(x) \propto f(x)$,引入辅助变量 $u \sim \text{Unif}(0, f(x))$,则联合分布均匀。切片采样迭代:

  1. 给定 $x$,采样 $u \sim \text{Unif}(0, f(x))$。
  2. 在水平切片 $\{x: f(x) \ge u\}$ 上均匀采样新 $x$。 切片采样可自适应调整步长,适用于任意一元分布。图12.7展示了切片采样过程。

4.2 Swendsen-Wang

用于Ising/Potts模型的辅助变量法。引入边上的“键”变量 $v_{ij}$,当两端节点状态相同时以概率 $1-e^{-2J}$ 激活。给定键,每个连通分量随机翻转。这大大加速了临界温度附近的混合。图12.9展示了Swendsen-Wang的迭代过程。


5. 哈密顿蒙特卡洛(HMC)

5.1 动机

传统MCMC(如RWM)随机游走探索,效率低。HMC利用梯度信息引导采样,在高维空间效果显著。

5.2 哈密顿力学

引入辅助动量变量 $v$,定义哈密顿函数:

$$ H(\theta, v) = -\log p(\theta) + \frac{1}{2} v^\mathsf{T} M^{-1} v, $$

其中第一项是势能,第二项是动能($M$ 是质量矩阵,通常取单位阵)。系统演化遵循哈密顿方程:

$$ \frac{d\theta}{dt} = \frac{\partial H}{\partial v} = M^{-1}v, \quad \frac{dv}{dt} = -\frac{\partial H}{\partial \theta} = \nabla_\theta \log p(\theta). $$

5.3 蛙跳积分

用离散时间近似,常用蛙跳(leapfrog)方法:

$$ v_{t+1/2} = v_t - \frac{\epsilon}{2} \nabla_\theta \log p(\theta_t), \quad \theta_{t+1} = \theta_t + \epsilon M^{-1} v_{t+1/2}, \quad v_{t+1} = v_{t+1/2} - \frac{\epsilon}{2} \nabla_\theta \log p(\theta_{t+1}). $$

重复 $L$ 步后,接受概率为 $\min(1, \exp(-H(\theta',v') + H(\theta,v)))$。

5.4 参数调节

  • 步长 $\epsilon$步数 $L$ 需调。$\epsilon$ 过大导致高拒绝率,过小浪费计算。$L$ 需足够长以远离起点,但又不能折回。
  • 无回转采样(NUTS)自动选择 $L$ 避免来回振荡。
  • 质量矩阵 $M$ 可选为后验协方差的近似(如单位阵、对角、KFAC)。

5.5 Langevin Monte Carlo(MALA)

当 $L=1$ 时,HMC退化为Langevin Monte Carlo(MALA),其更新为:

$$ \theta_{t+1} = \theta_t - \frac{\epsilon^2}{2} \nabla_\theta \log p(\theta_t) + \epsilon \mathcal{N}(0, I). $$

这相当于梯度下降加噪声,可看作随机梯度Langevin动力学的起源。

5.6 与SGD的联系

SGD加适当噪声可近似Langevin采样,这解释了为什么SGD能找到宽谷(泛化好的)解。


6. MCMC收敛性

6.1 混合时间与遍历性

  • 混合时间:链达到平稳所需步数,取决于状态空间几何和提议质量。
  • 不可约性:从任何状态可到达任何其他状态。
  • 非周期性:避免循环振荡。
  • 遍历性:时间平均等于空间平均。

6.2 收敛诊断

  • 迹图:多链的样本值随时间变化图,若链混合好,迹图应重叠(图12.13、12.14)。
  • $\hat{R}$ 统计量(Gelman-Rubin):比较链内方差与链间方差,$\hat{R} \approx 1$ 表示收敛。通常要求 $\hat{R} < 1.01$。
  • 有效样本量(ESS):考虑自相关后的等效独立样本数。ESS低说明链粘滞。
  • 自相关函数:衰减越快越好(图12.17)。

6.3 非中心参数化

层次模型中,参数高度相关导致采样困难。非中心参数化将 $\theta_j = \mu + \tau \eta_j$ 分离,减少相关性。图12.18展示了Neal漏斗的示例。


7. 随机梯度MCMC

7.1 动机

传统MCMC需每次迭代计算整个数据集的似然,大数据下不可行。随机梯度MCMC用随机小批量近似梯度,从而可扩展。

7.2 随机梯度Langevin动力学(SGLD)

将Langevin更新中的梯度替换为小批量梯度:

$$ \theta_{t+1} = \theta_t - \frac{\epsilon_t}{2} \hat{g}(\theta_t) + \sqrt{\epsilon_t} \mathcal{N}(0, I), $$

其中 $\hat{g}$ 是无偏梯度估计。SGLD的样本渐近逼近后验,但需减小步长满足收敛条件。

7.3 方差减少

小批量梯度方差大,可用控制变量(SGLD-CV)或方差缩减技术(SVRG-LD、SAGA-LD)降低方差。

7.4 随机梯度HMC(SG-HMC)

在HMC中引入随机梯度,需小心处理动量项。SG-HMC在适当的噪声校正下可保持正确稳态。

7.5 欠阻尼Langevin动力学(ULD)

引入摩擦项,使采样更高效,离散化误差小。


8. 可逆跳转MCMC

当模型维度可变(如选择不同数量的混合成分)时,需在维数不同的空间之间跳转。可逆跳转MCMC(RJMCMC)通过在低维空间引入辅助变量,使维数匹配,并用MH接受概率保证细致平衡。

8.1 基本思想

从模型 $m$ 的参数 $\theta_m$ 跳转到模型 $n$ 的参数 $\theta_n$,需生成辅助变量 $u$ 并定义确定性可逆映射 $(\theta_n, u') = f_{m\to n}(\theta_m, u)$。接受概率需包括雅可比行列式。

8.2 例子:RBF网络

图12.20展示了RJMCMC用于选择RBF网络隐藏单元数的示例,后验支持正确数量的基函数。


9. 退火方法

9.1 模拟退火

用于优化而非采样。通过温度参数逐渐冷却,使链最终停留在全局最优附近。温度 $T$ 下目标分布为 $p_T(x) \propto \exp(-E(x)/T)$。降温过快会陷入局部最优。

9.2 并行回火

同时运行多条不同温度的链,并允许交换状态,使高温链探索新区域,低温链聚焦精细结构,从而提高混合。


10. 与前后的联系

  • 第2章(概率):马尔可夫链基本理论。
  • 第3章(统计):后验分布是MCMC的目标。
  • 第6章(优化):SGD与SGLD的联系。
  • 第7章(推断概述):MCMC是近似推断的一种。
  • 第8章(高斯滤波):卡尔曼平滑可用于Gibbs采样中的块采样。
  • 第10章(变分推断):VI与MCMC可结合(如变分HMC)。
  • 第11章(蒙特卡洛):MCMC是蒙特卡洛方法的延伸。
  • 第13章(序贯蒙特卡洛):SMC与MCMC可互补(如粒子MCMC)。

11. 总结与重点

11.1 核心要点

  • MCMC通过构造以目标分布为平稳分布的马尔可夫链来采样。
  • Metropolis-Hastings 是通用框架,接受概率确保细致平衡。
  • Gibbs采样 利用条件分布简化采样,尤其适合图模型。
  • HMC 利用梯度信息,适合高维连续空间。
  • 收敛诊断(迹图、$\hat{R}$、ESS)至关重要,需多链并检查。
  • 随机梯度MCMC 使MCMC可扩展至大数据。
  • RJMCMC 处理可变维度模型。
  • 退火方法 用于优化和多峰分布采样。

11.2 常见难点

  • 理解细致平衡与平稳分布的关系。
  • 掌握HMC的蛙跳积分和能量守恒。
  • 区分不同收敛诊断指标的意义。
  • 理解非中心参数化如何改善采样。
  • 掌握SGLD中步长衰减与方差控制的平衡。

11.3 学习建议

  • 实现RWM采样一元高斯,调节步长观察接受率和自相关。
  • 用PyMC或Stan实现一个简单的贝叶斯线性回归,观察HMC轨迹和$\hat{R}$。
  • 在2D双峰分布上比较Gibbs和HMC的混合速度。
  • 阅读HMC原始论文,理解其与物理的类比。
  • 尝试用SGLD训练一个简单神经网络,观察后验不确定性。

本章奠定了现代贝叶斯计算的核心方法。熟练掌握MCMC,将能处理各种复杂的概率模型。后续第13章SMC将提供另一种序贯采样视角,与MCMC互补。


《Probabilistic Machine Learning: Advanced Topics》第13章“Sequential Monte Carlo”详细讲解

1. 引言:从静态到序列的蒙特卡洛

第11章介绍了静态蒙特卡洛方法(如重要性采样),第12章介绍了马尔可夫链蒙特卡洛(MCMC)。然而,许多实际问题涉及序列数据——例如动态系统、流数据、随时间演化的分布。在这些场景中,我们不仅希望得到最终的后验,还需要在观测到达时在线更新信念。序贯蒙特卡洛(Sequential Monte Carlo, SMC)提供了一套处理此类问题的框架。SMC通过一组加权粒子(样本)递推地近似目标分布序列,既能用于动态系统的滤波和平滑,也能用于静态参数的推断(通过构造分布序列)。

本章将从粒子滤波开始,逐步深入到SMC采样器、高级提议设计、Rao-Blackwellization以及与变分推断的结合。

下图概括了本章的知识体系:

graph TD A[序贯蒙特卡洛 SMC] --> B[粒子滤波 PF] A --> C[SMC采样器] B --> B1[序贯重要性采样 SIS] B --> B2[带重采样的SISR] B --> B3[重采样方法] B --> B4[提议分布设计] B --> B5[Rao-Blackwellized PF] C --> C1[退火SMC] C --> C2[数据同化SMC] C --> C3[SMC²] C --> C4[变分SMC] B4 --> B4a[最优提议] B4 --> B4b["EKF/UKF提议"] B4 --> B4c[拉普拉斯提议] B4 --> B4d[嵌套SMC] B5 --> B5a[混合Kalman滤波器] B5 --> B5b[FastSLAM]

2. 问题定义:序列分布与滤波

SMC的核心是处理一系列目标分布 $\pi_t(z_{1:t})$,其中 $t=1,\dots,T$ 是时间索引。这些分布通常是未归一化的,记作 $\tilde{\gamma}_t(z_{1:t})$,归一化常数为 $Z_t = \int \tilde{\gamma}_t(z_{1:t}) dz_{1:t}$。SMC的目标是从每个 $\pi_t$ 中(近似)采样,并估计 $Z_t$。

2.1 两类典型应用

  1. 状态空间模型滤波:$\tilde{\gamma}_t(z_{1:t}) = p(z_{1:t}, y_{1:t})$,其中 $y_t$ 是观测。目标是从滤波分布 $p(z_t \mid y_{1:t})$ 采样。
  2. 静态参数推断:通过构造温度链或数据子序列,将静态后验转化为序列分布,例如:
    • 数据同化:$\tilde{\gamma}_t(\theta) = p(\theta) p(y_{1:t} \mid \theta)$。
    • 退火:$\tilde{\gamma}_t(\theta) = p(\theta) p(\mathcal{D} \mid \theta)^{\beta_t}$,其中 $\beta_t$ 从 0 递增到 1。

3. 粒子滤波:序贯重要性采样(SIS)

粒子滤波的基本思想是:用一组加权粒子 $\{(w_t^{(i)}, z_t^{(i)})\}_{i=1}^N$ 近似滤波分布 $p(z_t \mid y_{1:t})$。

3.1 序贯重要性采样(SIS)

假设已知上一时刻的粒子集 $\{(w_{t-1}^{(i)}, z_{t-1}^{(i)}\}$,要得到当前时刻的粒子。选择提议分布 $q_t(z_t \mid z_{1:t-1}, y_{1:t})$,采样新粒子 $z_t^{(i)} \sim q_t(\cdot \mid z_{1:t-1}^{(i)}, y_{1:t})$,并更新权重:

$$ w_t^{(i)} \propto w_{t-1}^{(i)} \frac{p(y_t \mid z_t^{(i)}) p(z_t^{(i)} \mid z_{t-1}^{(i)})}{q_t(z_t^{(i)} \mid z_{1:t-1}^{(i)}, y_{1:t})}. $$

权重归一化后,$\hat{\pi}_t(z_{1:t}) = \sum_i w_t^{(i)} \delta_{z_{1:t}^{(i)}}(z_{1:t})$ 近似目标。

3.2 退化问题

随着时间推移,大部分粒子的权重会变得极小,导致有效样本量下降。这是SIS的主要问题。图13.2a展示了退化现象:只有少数粒子具有显著权重。


4. 带重采样的序贯重要性采样(SISR)

为了缓解退化,引入重采样步骤:根据权重分布重新抽取粒子,丢弃低权重粒子,复制高权重粒子,并将所有新粒子权重设为 $1/N$。

4.1 SISR算法(算法13.2)

在每个时刻 $t$:

  1. 计算上一时刻粒子的权重,若有效样本量(ESS)低于阈值,则进行重采样。
  2. 对每个粒子,从提议分布中采样 $z_t^{(i)}$。
  3. 计算未归一化权重 $\tilde{w}_t^{(i)} = \alpha_t^{(i)}$,其中 $\alpha_t^{(i)} = \frac{\tilde{\gamma}_t(z_{1:t}^{(i)})}{\tilde{\gamma}_{t-1}(z_{1:t-1}^{(i)}) q_t(z_t^{(i)} \mid z_{1:t-1}^{(i)})}$。
  4. 归一化权重,得到新的粒子集。

4.2 重采样方法

  • 多项式重采样:从累积分布函数采样,方差大。
  • 分层重采样:将 [0,1] 分成 $N$ 层,每层内均匀采样。
  • 系统重采样:固定一个随机起点,均匀选取 $N$ 个点。方差最小,最常用。
  • 自适应重采样:只在ESS低于阈值时触发,避免不必要的多样性损失。

4.3 有效样本量(ESS)

衡量粒子退化程度的指标:

$$ \text{ESS} = \frac{1}{\sum_i (w_t^{(i)})^2} \in [1, N]. $$

当所有权重相等时,ESS = N;当一个粒子权重为1时,ESS = 1。通常设定阈值如 $N/2$,低于阈值则重采样。

4.4 路径退化问题

重采样虽解决了权重退化,但会引入路径退化:粒子多样性丧失,所有粒子最终可能共享少数祖先路径,导致对过去状态的估计不准确(图13.3b)。这是粒子平滑需要解决的问题。


5. 标准粒子滤波:Bootstrap滤波器

最简单的粒子滤波选择提议分布为动态先验:

$$ q_t(z_t \mid z_{1:t-1}, y_{1:t}) = p(z_t \mid z_{t-1}). $$

此时权重更新简化为 $w_t^{(i)} \propto w_{t-1}^{(i)} p(y_t \mid z_t^{(i)})$。这称为Bootstrap滤波器(算法13.2特例)。

例子:图13.1展示了用bootstrap滤波器跟踪2D非线性螺旋运动,2000个粒子效果良好。


6. 提议分布的设计

Bootstrap滤波器简单,但未利用当前观测,效率低。更好的提议应近似最优提议 $p(z_t \mid z_{t-1}, y_t)$。

6.1 局部最优提议

在条件线性高斯模型中,最优提议有闭式解。一般情况可用:

  • 扩展卡尔曼滤波(EKF)提议:对动态和观测线性化,计算近似后验高斯作为提议。
  • 无迹卡尔曼滤波(UKF)提议:用无迹变换传播,更精确。
  • 拉普拉斯提议:对观测模型做拉普拉斯近似,尤其适用于广义线性模型。

例子:神经解码问题(13.3.3.1),用拉普拉斯近似构造提议,ESS远高于bootstrap(图13.5)。

6.2 嵌套SMC

用另一个SMC算法近似最优提议,尽管计算量大,但可并行化。


7. Rao-Blackwellized粒子滤波(RBPF)

当模型部分变量可解析积分时,可将它们从采样中移除,只对剩余变量采样,从而降低维度、减小方差。这称为Rao-Blackwellization。

7.1 切换线性动态系统(SLDS)

SLDS同时包含离散状态 $m_t$ 和连续状态 $z_t$。若采样离散轨迹,连续部分可用卡尔曼滤波精确推断。RBPF算法(算法13.4):

  • 对每个粒子,根据提议采样 $m_t$。
  • 用卡尔曼滤波更新连续状态的均值和协方差,并计算观测似然作为权重更新的一部分。

例子:机动目标跟踪(13.4.2),RBPF优于普通粒子滤波(图13.6、13.7)。

7.2 FastSLAM

SLAM(同时定位与地图构建)问题中,机器人路径 $r_{1:t}$ 与地图地标 $l_k$ 联合估计。若采样路径,各地标条件独立,可用卡尔曼滤波分别更新。RBPF将计算量从 $O(K^3)$ 降至 $O(K)$,实现实时运行(图13.8、13.9)。


8. SMC采样器

SMC采样器将SMC推广到静态参数推断,通过构造一个分布序列逐渐逼近目标。

8.1 分布序列构造

  • 退火(几何路径):$\tilde{\gamma}_t(\theta) = p_0(\theta)^{1-\lambda_t} p(\mathcal{D} \mid \theta)^{\lambda_t}$,$\lambda_t$ 从0到1递增。
  • 数据同化:$\tilde{\gamma}_t(\theta) = p(\theta) p(y_{1:t} \mid \theta)$。

8.2 马尔可夫核与权重更新

在SMC采样器中,需要设计马尔可夫核 $M_t(\theta' \mid \theta)$ 保持 $\pi_t$ 不变,以及向后核 $L_{t-1}$。增量权重为:

$$ \alpha_t(\theta_{t-1}, \theta_t) = \frac{\tilde{\gamma}_t(\theta_{t-1})}{\tilde{\gamma}_{t-1}(\theta_{t-1})}. $$

这避免了显式构造向后核。

8.3 自适应退火

可自动调整 $\lambda_t$ 使ESS保持在阈值以上(算法13.5)。

例子:采样双峰分布(13.6.2),HMC难以跨越两峰,而SMC通过退火成功覆盖(图13.11)。

8.4 数据同化SMC(IBIS)

每加入一个数据点,更新权重为 $p(y_t \mid y_{1:t-1},\theta)$,必要时重采样并执行MCMC移动。

例子:高斯数据参数估计(图13.12),ESS下降时触发重采样。

8.5 稀有事件采样

通过设定阈值 $\lambda_t$,逐步筛选高分样本,用于估计罕见事件概率。

8.6 SMC-ABC

用于似然不可计算的模型(仿真模型)。通过比较仿真数据与真实数据的距离,逐渐收紧阈值。

8.7 SMC²

当似然本身需用SMC估计时(如隐变量模型),可在外层SMC中使用内层SMC估计似然比,实现双重SMC。


9. 变分SMC

将SMC与变分推断结合,学习提议分布和模型参数。通过最大化ELBO(以SMC估计的对数边际似然为下界)进行优化。由于重采样不可导,需用得分函数估计器或忽略梯度。

  • FIVO:滤波变分目标,用SMC估计滤波似然下界。
  • SIXO:平滑推断变分目标,用扭曲粒子滤波引入未来信息,使下界更紧,且可在 $N=1$ 时达到最优。

10. 与前后的联系

  • 第2章(概率):重要性采样、马尔可夫链基础。
  • 第3章(统计):后验分布、贝叶斯更新。
  • 第6章(优化):CEM与SMC中自适应温度有关。
  • 第8章(卡尔曼滤波):RBPF中用作条件高斯推断。
  • 第9章(消息传递):粒子滤波可用于一般图模型(非参数BP)。
  • 第11章(蒙特卡洛):SIS是重要性采样的扩展。
  • 第12章(MCMC):SMC可与MCMC结合(如粒子MCMC)。
  • 第21章(VAE):变分SMC用于改进VAE的下界。
  • 第29章(状态空间模型):粒子滤波是SSM在线推断的核心。

11. 总结与重点

11.1 核心要点

  • SMC 通过加权粒子递推近似分布序列,适用于滤波和平滑,也适用于静态推断。
  • 退化问题通过重采样缓解,但引入路径退化。
  • 提议分布的设计至关重要,好的提议应结合当前观测(如EKF/UKF提议)。
  • Rao-Blackwellization 可降维并减小方差,特别适合混合模型(SLDS、SLAM)。
  • SMC采样器 将SMC推广到静态参数,通过退火或数据同化构造序列。
  • 变分SMC 将SMC与深度学习结合,实现可微推断。

11.2 常见难点

  • 理解退化与路径退化的区别及应对策略。
  • 掌握ESS的计算及其作为重采样触发条件的意义。
  • 区分滤波SMC与SMC采样器的目标(动态 vs 静态)。
  • 理解RBPF中卡尔曼滤波与粒子采样的交互。
  • 掌握SMC采样器中马尔可夫核与权重更新的关系。

11.3 学习建议

  • 实现bootstrap滤波器跟踪一维非线性系统,观察粒子数和ESS的影响。
  • 用不同提议分布(EKF、UKF)对比滤波精度和ESS。
  • 在简单状态空间模型上实现RBPF,体会方差减少。
  • 用Pyro或TensorFlow Probability实现SMC采样器,估计高斯混合模型的边际似然。
  • 阅读FIVO和SIXO论文,理解变分SMC的原理。

SMC是一套强大的序贯推断工具,在动态系统、贝叶斯计算、机器人、计量经济学等领域有广泛应用。掌握SMC将极大提升处理复杂序列模型的能力。


《Probabilistic Machine Learning: Advanced Topics》第14章“Predictive Models: An Overview”详细讲解

1. 引言:预测模型的核心地位

预测模型是机器学习的核心任务之一,它学习从输入 $x$ 到输出 $y$ 的映射,通常以条件概率 $p(y \mid x)$ 的形式表示。这类模型广泛应用于分类、回归、结构化预测等领域。本章作为第三部分“预测”的开篇,概述了预测模型的基本概念、类型、拟合方法以及评估策略,为后续各章(线性模型、神经网络、高斯过程等)奠定基础。

本章的知识结构如下图所示:

graph TD A[预测模型] --> B[模型类型] A --> C[模型拟合] A --> D[模型评估] A --> E[共形预测] B --> B1[参数模型] B --> B2[非参数模型] B1 --> B1a[GLM] B1 --> B1b[神经网络] B2 --> B2a[高斯过程] B2 --> B2b[KNN] C --> C1["ERM/MLE"] C --> C2[MAP] C --> C3[贝叶斯方法] C --> C4[广义贝叶斯] C3 --> C3a[变分推断] C3 --> C3b[MCMC] D --> D1[适当评分规则] D --> D2[校准] D --> D3[联合预测评估] D1 --> D1a[对数损失] D1 --> D1b[Brier分数] D2 --> D2a[可靠性图] D2 --> D2b[ECE] D2 --> D2c[温度缩放] E --> E1[共形分数] E --> E2[预测集] E --> E3[覆盖率保证]

2. 预测模型的基本概念

预测模型的目标是学习一个条件概率分布 $p(y \mid x)$,其中 $x \in \mathcal{X}$ 是输入特征空间,$y \in \mathcal{Y}$ 是输出空间。根据输出类型,可分为:

  • 分类:$\mathcal{Y} = \{1,\dots,C\}$(离散标签)
  • 回归:$\mathcal{Y} = \mathbb{R}$(连续值)
  • 结构化预测:$\mathcal{Y}$ 是结构化对象(如序列、树、图)

在机器学习中,通常我们有一个训练集 $\mathcal{D} = \{(x_n, y_n)\}_{n=1}^N$,目标是学习一个模型 $f(x)$ 或分布 $p(y \mid x)$,使其在未知测试数据上表现良好。


3. 模型类型

3.1 参数模型

参数模型假设函数形式固定,由有限维参数 $\theta$ 控制。例如:

  • 广义线性模型(GLM):$p(y \mid x, \theta) = \text{ExpFamily}(y \mid \eta = \theta^\mathsf{T} \phi(x))$,包括线性回归、逻辑回归、泊松回归等(第15章)。
  • 神经网络:$p(y \mid x, \theta) = \text{ExpFamily}(y \mid f(x; \theta))$,其中 $f$ 是多层非线性函数(第16章)。

参数模型的优点是预测速度快(只需计算函数值),但容量固定,可能欠拟合或过拟合。

3.2 非参数模型

非参数模型的复杂度随数据量增长,通常基于相似性度量。例如:

  • 高斯过程(GP):定义在函数上的先验,后验给出预测分布(第18章)。
  • K近邻(KNN):预测基于训练集中最相似的样本的标签。

非参数模型更灵活,但预测时需存储所有训练数据,计算量随数据规模增大。


4. 模型拟合方法

4.1 经验风险最小化(ERM)与最大似然估计(MLE)

ERM 最小化训练集上的平均损失:

$$ \hat{\theta} = \arg\min_\theta \frac{1}{N} \sum_{n=1}^N \ell(y_n, f(x_n; \theta)). $$

当损失函数为负对数似然时,ERM 等价于 MLE:

$$ \hat{\theta}_{\text{MLE}} = \arg\max_\theta \sum_{n=1}^N \log p(y_n \mid x_n, \theta). $$

MLE 是频率学派的标准方法,但易过拟合,尤其当模型复杂时。

4.2 最大后验估计(MAP)

MAP 引入先验 $p(\theta)$,最大化对数后验:

$$ \hat{\theta}_{\text{MAP}} = \arg\max_\theta \left[ \log p(\mathcal{D} \mid \theta) + \log p(\theta) \right]. $$

这等价于正则化的 MLE(例如,高斯先验对应 L2 正则,拉普拉斯先验对应 L1 正则)。MAP 仍为点估计,不提供不确定性。

4.3 贝叶斯方法

贝叶斯方法计算参数的后验分布 $p(\theta \mid \mathcal{D})$,然后通过积分进行预测:

$$ p(y \mid x, \mathcal{D}) = \int p(y \mid x, \theta) p(\theta \mid \mathcal{D}) d\theta. $$

这自然表达了模型不确定性。但由于积分难解,常用近似方法:

  • 变分推断(VI):将后验近似为简单分布,最大化 ELBO(第10章)。
  • MCMC:从后验采样,用样本平均近似积分(第12章)。

4.4 广义贝叶斯

广义贝叶斯将贝叶斯更新推广到更一般的损失函数和散度:

$$ \hat{q} = \arg\min_{q \in \mathcal{Q}} \mathbb{E}_{q(\theta)}[r(\theta)] + \lambda D(q \| \pi_0), $$

其中 $r(\theta)$ 是经验风险,$D$ 是某种散度。当 $D$ 为 KL 散度且 $r$ 为负对数似然时,恢复标准贝叶斯后验。这为鲁棒推断和模型 misspecification 提供了框架。


5. 预测模型的评估

评估预测模型的质量需要合适的度量,不仅要看点预测的准确性,还要考虑不确定性表达。

5.1 适当评分规则

适当评分规则(proper scoring rule)鼓励模型输出真实概率。常见的有:

  • 对数损失(负对数似然):$S(p, (x,y)) = -\log p(y \mid x)$。它是严格适当的。
  • Brier分数:$S(p, (x,y)) = \sum_{c=1}^C (p_c - \mathbb{I}(y=c))^2$,也是适当的,且对罕见类更鲁棒。

适当评分规则保证:若模型 $p$ 等于真实条件分布 $p^*$,则期望得分最小。因此最小化这些损失可得到校准的预测。

5.2 校准

校准衡量预测概率与真实频率的一致性。例如,若模型预测某事件概率为 0.8,则该事件应在约 80% 的此类样本中发生。

  • 可靠性图:将预测概率分箱,绘制每个箱内平均预测概率 vs 实际频率。理想情况为对角线。
  • 期望校准误差(ECE):加权平均的预测概率与实际频率之差的绝对值: $$ \text{ECE} = \sum_{b=1}^B \frac{|B_b|}{N} |\text{acc}(B_b) - \text{conf}(B_b)|. $$
  • 多类校准:可扩展为边际校准误差(MCE),考虑所有类别。

校准方法

  • 普拉特缩放(Platt scaling):对逻辑回归的 logits 做线性变换 $q = \sigma(a z + b)$,用验证集估计 $a,b$。
  • 温度缩放:普拉特缩放的特例,$q = \text{softmax}(z/T)$,$T$ 是温度参数。图14.3显示温度对 softmax 分布的影响。
  • 直方图分箱:将概率分箱,用箱内经验频率替代。
  • 保序回归:拟合单调非递减函数校准概率。
  • 标签平滑:训练时将 one-hot 标签替换为平滑分布,提高校准。

5.3 超越边际概率的评估

仅评估单点预测可能不足以区分不同模型,尤其在在线学习或序贯决策中,我们需要评估联合预测分布 $p(y_{1:\tau} \mid x_{1:\tau}, \mathcal{D})$。通过比较模型预测与真实环境下的联合分布,可用 KL 散度或交叉熵度量。实验表明,好的联合预测能力与下游任务(如多臂老虎机)性能正相关。


6. 共形预测

共形预测是一种分布自由的不确定性量化方法,它构造预测集(或区间),保证在有限样本下的边际覆盖率。

6.1 基本思想

给定一个训练好的模型(如分类器),定义非一致性分数 $s(x,y)$,衡量样本 $(x,y)$ 与训练集的符合程度(分数越小越一致)。在验证集上计算所有分数,得到阈值 $\hat{q}$ 为分数的 $(1-\alpha)$ 分位数。对新测试点 $x_{\text{test}}$,预测集为所有使 $s(x_{\text{test}}, y) \le \hat{q}$ 的 $y$。

定理:若验证集与测试集样本可交换,则预测集覆盖真实标签的概率至少为 $1-\alpha$。

6.2 分类中的共形预测

  • 简单方法:取分数 $s(x,y) = 1 - f(x)_y$,即模型对标签 $y$ 的置信度的补。预测集为所有置信度 $\ge 1-\hat{q}$ 的标签。
  • 自适应预测集(APS):对 softmax 输出排序,累积概率超过阈值时停止。这得到大小自适应的集合,如图14.4所示。

6.3 回归中的共形预测

  • 共形分位数回归(CQR):先训练分位数回归模型得到上下界 $\hat{t}_{\alpha/2}(x), \hat{t}_{1-\alpha/2}(x)$,然后计算分数 $s(x,y) = \max(\hat{t}_{\alpha/2}(x)-y, y-\hat{t}_{1-\alpha/2}(x))$。最终区间为 $[\hat{t}_{\alpha/2}(x)-\hat{q}, \hat{t}_{1-\alpha/2}(x)+\hat{q}]$。
  • 基于方差的方法:若模型预测均值 $\hat{\mu}(x)$ 和标准差 $\hat{\sigma}(x)$,取分数 $s(x,y) = |y-\hat{\mu}(x)| / \hat{\sigma}(x)$,得到区间 $\hat{\mu}(x) \pm \hat{q} \hat{\sigma}(x)$。

6.4 贝叶斯共形预测

若模型输出后验预测分布 $p(y \mid x, \mathcal{D})$,可定义分数 $s(x,y) = -p(y \mid x, \mathcal{D})$,预测集为所有概率大于阈值 $- \hat{q}$ 的标签。这得到的集合平均大小最小,是最优的共形预测器。

6.5 无验证集怎么办?

若数据有限,可用全共形预测(leave-one-out 方式),但需重新训练 $N$ 次,计算量大。也可用折刀+(jackknife+)或贝叶斯加一(Bayesian add-one-in)等近似方法。


7. 与前后的联系

  • 第3章(统计):贝叶斯推断、模型选择、交叉验证。
  • 第5章(信息论):KL 散度、交叉熵、互信息在评估中的应用。
  • 第10章(变分推断):贝叶斯预测中的后验积分近似。
  • 第15章(GLM):线性预测模型的实例。
  • 第16章(神经网络):深度预测模型。
  • 第17章(贝叶斯神经网络):贝叶斯方法在深度模型中的应用。
  • 第18章(高斯过程):非参数贝叶斯预测。
  • 第19章(分布偏移):评估模型在分布外数据的表现。

8. 总结与重点

8.1 核心要点

  • 预测模型的核心是条件分布 $p(y \mid x)$,分为参数和非参数两类。
  • 拟合方法从 MLE、MAP 到完全贝叶斯,复杂度递增,不确定性表达更丰富。
  • 评估需考虑校准、适当评分规则以及联合预测能力。
  • 共形预测 提供分布自由的预测集,保证有限样本覆盖率。

8.2 常见难点

  • 区分校准与判别性能:高准确率不一定意味着校准好。
  • 理解适当评分规则的“适当性”及其与对数损失的关系。
  • 掌握共形预测的交换性假设及其对时间序列的限制。
  • 理解联合预测评估与单点评估的差异及其在决策中的重要性。

8.3 学习建议

  • 在简单分类任务上计算 ECE,并尝试温度缩放改善校准。
  • 用 scikit-learn 实现共形预测分类器,观察预测集大小与覆盖率。
  • 比较不同评分规则(对数损失 vs Brier)对模型选择的影响。
  • 阅读共形预测综述,理解其在机器学习中的最新应用。

本章为后续各预测模型章节提供了统一视角:无论是线性模型还是深度网络,我们最终关心的是其输出的概率分布的质量。掌握本章内容,将帮助读者在实际问题中正确选择、拟合和评估预测模型。


《Probabilistic Machine Learning: Advanced Topics》第15章“Generalized Linear Models”详细讲解

1. 引言:从线性模型到广义线性模型

线性回归是统计学和机器学习中最基础的模型之一,它假设响应变量 $y$ 服从正态分布,且均值是输入特征 $x$ 的线性函数:$\mathbb{E}[y \mid x] = w^\mathsf{T}x$。然而,许多实际问题中响应变量并非正态,例如:

  • 二分类:$y \in \{0,1\}$,期望值应在 $[0,1]$ 区间。
  • 计数数据:$y \in \{0,1,2,\dots\}$,期望应为非负整数。
  • 生存时间:$y > 0$,分布常呈正偏态。

广义线性模型(Generalized Linear Model, GLM)统一处理这类问题,它将线性预测器 $\eta = w^\mathsf{T}x$ 通过一个链接函数(link function)映射到响应变量的均值,并允许响应来自指数族分布。GLM 是连接经典线性模型与现代机器学习的重要桥梁,广泛应用于生物统计、流行病学、社会科学等领域。

下图概括了本章的知识体系:

graph TD A[广义线性模型 GLM] --> B[定义与结构] A --> C[常见GLM] A --> D[参数估计] A --> E[贝叶斯GLM] A --> F[稀疏模型] A --> G[分层GLM] A --> H[扩展与变体] B --> B1[指数族分布] B --> B2[链接函数] B --> B3[均值函数] C --> C1[线性回归] C --> C2[逻辑回归] C --> C3[泊松回归] C --> C4[多项逻辑回归] C --> C5[零膨胀模型] D --> D1[MLE与IRLS] D --> D2[SGD] D --> D3[共轭先验] D --> D4[拉普拉斯近似] D --> D5[MCMC] D --> D6[变分推断] E --> E1[正态-正态] E --> E2[贝叶斯逻辑回归] E --> E3[贝叶斯泊松] F --> F1[岭回归] F --> F2["Lasso/贝叶斯Lasso"] F --> F3[ARD] F --> F4[Horseshoe] G --> G1[混合效应模型] G --> G2[层次模型] H --> H1[Probit回归] H --> H2[序数回归] H --> H3[多项Probit]

2. GLM 的定义与结构

2.1 指数族分布

GLM 假设响应变量 $y$ 的条件分布属于指数族:

$$ p(y \mid \eta, \sigma^2) = \exp\left( \frac{y\eta - A(\eta)}{\sigma^2} + \log h(y, \sigma^2) \right), $$

其中 $\eta$ 是自然参数,$\sigma^2$ 是色散参数(dispersion parameter),$A(\eta)$ 是对数配分函数,$h$ 是基础测度。对于单参数指数族(如伯努利、泊松),$\sigma^2 = 1$。

2.2 链接函数与均值函数

GLM 将自然参数与线性预测器联系起来:$\eta = w^\mathsf{T}x$。但有时我们更关心均值 $\mu = \mathbb{E}[y \mid x]$。链接函数 $g$ 定义为 $g(\mu) = \eta$,其逆为均值函数 $\mu = g^{-1}(\eta)$。常用的链接:

  • 恒等链接:$\mu = \eta$(线性回归)。
  • 对数链接:$\mu = \exp(\eta)$(泊松回归)。
  • 逻辑(logit)链接:$\mu = \sigma(\eta) = 1/(1+e^{-\eta})$(二项回归)。
  • 概率(probit)链接:$\mu = \Phi(\eta)$,其中 $\Phi$ 是标准正态 CDF。

2.3 方差函数

由指数族性质,方差可表示为 $\mathbb{V}[y \mid x] = \sigma^2 A''(\eta)$,即方差是均值的函数(例如泊松:$\mathbb{V}=\mu$,二项:$\mathbb{V}=\mu(1-\mu)$)。


3. 常见 GLM

3.1 线性回归(正态)

  • 分布:$y \sim \mathcal{N}(\mu, \sigma^2)$
  • 链接:恒等 $\mu = \eta$
  • 对数配分函数:$A(\eta) = \eta^2/2$
  • 方差:$\sigma^2$

3.2 逻辑回归(二项)

  • 分布:$y \sim \mathrm{Bernoulli}(\mu)$,或二项 $\mathrm{Bin}(N,\mu)$
  • 链接:logit $\eta = \log\frac{\mu}{1-\mu}$
  • 均值函数:$\mu = \sigma(\eta) = 1/(1+e^{-\eta})$
  • 对数配分:$A(\eta) = \log(1+e^\eta)$
  • 方差:$\mu(1-\mu)$

3.3 泊松回归

  • 分布:$y \sim \mathrm{Poisson}(\mu)$
  • 链接:对数 $\eta = \log \mu$
  • 均值函数:$\mu = e^\eta$
  • 对数配分:$A(\eta) = e^\eta$
  • 方差:$\mu$

3.4 多项逻辑回归

  • 响应为类别 $y \in \{1,\dots,C\}$,用 softmax 链接: $$ \mu_c = \frac{\exp(\eta_c)}{\sum_{j=1}^C \exp(\eta_j)},\quad \eta_c = w_c^\mathsf{T}x. $$
  • 对数似然:$\sum_{n} \log \mu_{n, y_n}$。

3.5 零膨胀泊松(ZIP)

用于处理过多零的计数数据,混合两个成分:一个退化在零的分布和一个泊松分布:

$$ \mathrm{ZIP}(y \mid \rho, \lambda) = \begin{cases} \rho + (1-\rho)e^{-\lambda} & y=0 \\ (1-\rho) \frac{\lambda^y e^{-\lambda}}{y!} & y>0 \end{cases} $$

可通过两个线性预测器分别建模 $\rho$(logit 链接)和 $\lambda$(对数链接)。


4. 参数估计

4.1 最大似然估计(MLE)

对数似然为 $\ell(w) = \sum_n [y_n \eta_n - A(\eta_n)]/\sigma^2$。梯度:

$$ \frac{\partial \ell}{\partial w} = \sum_n (y_n - \mu_n) x_n, $$

其中 $\mu_n = g^{-1}(\eta_n)$。Hessian:

$$ \frac{\partial^2 \ell}{\partial w \partial w^\mathsf{T}} = -\sum_n v_n x_n x_n^\mathsf{T},\quad v_n = \frac{\partial \mu_n}{\partial \eta_n} = A''(\eta_n). $$

由于 Hessian 负定,对数似然是凹函数,MLE 唯一。

IRLS(迭代重加权最小二乘):牛顿-拉夫森更新为

$$ w^{(t+1)} = w^{(t)} + \left( \sum_n v_n x_n x_n^\mathsf{T} \right)^{-1} \sum_n (y_n - \mu_n) x_n, $$

等价于求解加权最小二乘问题,权重为 $v_n$。

4.2 随机梯度下降(SGD)

对于大数据,可用 SGD 更新:$w \leftarrow w + \eta_t (y_n - \mu_n) x_n$。需配合学习率调度。

4.3 贝叶斯推断

贝叶斯 GLM 引入参数先验,计算后验分布。常用方法:

  • 共轭先验:仅适用于特定模型(如正态-正态)。
  • 拉普拉斯近似:用高斯近似后验,均值取 MAP,协方差为 Hessian 逆(适用于 logistic 回归)。
  • MCMC:如 HMC 可用于任意 GLM,给出样本后验。
  • 变分推断:如 ADVI,可扩展至大数据。

5. 线性回归的贝叶斯分析

线性回归 $y = w^\mathsf{T}x + \epsilon,\ \epsilon \sim \mathcal{N}(0,\sigma^2)$ 是 GLM 特例。

5.1 共轭先验

  • 已知 $\sigma^2$:正态先验 $w \sim \mathcal{N}(m_0, S_0)$ 得正态后验(公式 15.47-15.48)。
  • 未知 $\sigma^2$:正态-逆伽马(NIG)先验,后验为 NIG,边缘后验为 t 分布。

5.2 无信息先验

  • Jeffreys 先验:$p(w,\sigma^2) \propto 1/\sigma^2$,后验为 t 分布,与频率学派结果一致。
  • Zellner 的 g-先验:$p(w \mid \sigma^2) = \mathcal{N}(0, g\sigma^2 (X^\mathsf{T}X)^{-1})$,后验有简洁形式。

5.3 后验预测分布

对于新输入 $x_*$,后验预测为 t 分布(若 $\sigma^2$ 未知),均值等于后验均值,方差包含观测噪声和参数不确定性。

例子:身高体重数据(15.2.4),用弱信息先验(log-normal 保证斜率正)得到合理后验(图15.1)。二次项先验的选择影响拟合(图15.2)。


6. 稀疏模型

当特征很多时,我们希望自动选择重要变量。贝叶斯框架通过稀疏先验实现。

6.1 岭回归

对应高斯先验 $w \sim \mathcal{N}(0,\tau^2 I)$,后验均值等价于 L2 正则化 MLE。

6.2 拉普拉斯先验(贝叶斯 Lasso)

拉普拉斯先验 $p(w) \propto e^{-\lambda |w|}$ 对应 L1 正则化。可表示为高斯尺度混合:

$$ \text{Laplace}(w \mid 0, \lambda) = \int \mathcal{N}(w \mid 0, \tau^2) \text{Ga}(\tau^2 \mid 1, \lambda^2/2) d\tau^2. $$

引入局部方差 $\tau_j^2$ 后,可构造 Gibbs 采样器(图15.3)。但后验样本不稀疏,只有 MAP 稀疏。

6.3 Horseshoe 先验

Horseshoe 先验 $w_j \sim \mathcal{N}(0, \tau^2 \lambda_j^2),\ \lambda_j \sim C^+(0,1),\ \tau \sim C^+(0,1)$ 在零处有尖峰,尾部厚,兼具稀疏性和鲁棒性。

6.4 自动相关性确定(ARD)

ARD 对每个权重赋予独立高斯先验,方差 $\alpha_j^{-1}$ 作为超参数,通过经验贝叶斯(最大化边际似然)估计 $\alpha_j$。这导致大部分 $\alpha_j \to \infty$,对应权重收缩到零,实现自动特征选择。图15.4 展示了 ARD 如何“惩罚”不相关的特征方向。

RVM(相关向量机)是将 ARD 用于核基函数,选择少量“相关向量”构成稀疏核模型。


7. 逻辑回归的贝叶斯分析

逻辑回归没有共轭先验,需近似推断。

7.1 先验选择

常用高斯先验 $w \sim \mathcal{N}(0, \sigma^2 I)$。需注意:过大方差导致先验在概率尺度上集中在 0 和 1(图15.5a),故常用弱信息先验如 $\sigma=1.5$。对高维输入,需按维度缩放先验方差。

7.2 拉普拉斯近似

用 MAP 作为均值,Hessian 逆作为协方差,得高斯后验。图15.6 展示了二维例子:后验近似捕获参数不确定性,但形状与真实后验有偏差。

7.3 后验预测

对测试点,需积分 $p(y_* \mid x_*, \mathcal{D}) = \int \sigma(w^\mathsf{T}x_*) p(w \mid \mathcal{D}) dw$。可用蒙特卡洛采样,或probit近似

$$ p(y_*=1 \mid x_*) \approx \sigma\left( \frac{\mathbb{E}[w^\mathsf{T}x_*]}{\sqrt{1 + \pi \mathbb{V}[w^\mathsf{T}x_*]/8}} \right). $$

图15.7 显示预测不确定性在远离数据区域增大。

7.4 MCMC

HMC 是黄金标准。图15.8 展示不同样本量下决策边界的后验分布。

7.5 案例:伯克利录取(15.3.9)

用逻辑回归分析录取是否存在性别偏见。简单模型(仅性别)显示对女性不利,但加入院系变量后偏见消失,说明院系是混杂因素。图15.10 给出因果图解释。


8. Probit 回归

Probit 回归用标准正态 CDF $\Phi$ 替代 logistic 函数:$\mu = \Phi(w^\mathsf{T}x)$。

8.1 潜变量解释

假设存在潜变量 $z = w^\mathsf{T}x + \epsilon,\ \epsilon \sim \mathcal{N}(0,1)$,观测 $y = \mathbb{I}(z \ge 0)$。这为 Gibbs 采样提供便利(15.4.3)。

8.2 参数估计

  • MLE:可用梯度法或 EM(视 $z$ 为缺失数据)。EM 简单但收敛慢(图15.12)。
  • 贝叶斯:Gibbs 采样交替采样 $z$ 和 $w$(截断正态 vs 正态)。

8.3 序数 probit

用于有序响应(如 Likert 量表),引入阈值 $\gamma_j$,将潜变量分段映射到类别。

8.4 多项 probit

用于无序多分类,假设潜向量 $z_c = w_c^\mathsf{T}x + \epsilon_c$,选择最大 $z_c$ 的类别。比多项 logit 更灵活,但计算复杂。


9. 多级(分层)GLM

当数据具有组结构(如学生嵌套在学校内),各组可能有自己的参数,但共享全局先验,实现部分池化(partial pooling)。

9.1 模型形式

$$ y_{ij} \mid x_{ij}, \theta_j \sim \text{GLM}(\eta_{ij}),\quad \eta_{ij} = x_{ij}^\mathsf{T}\theta_j, $$

$$ \theta_j \mid \theta_0, \Sigma \sim \mathcal{N}(\theta_0, \Sigma),\quad \theta_0, \Sigma \sim \text{priors}. $$

图15.13 给出两种等价表示(嵌套 vs 指示变量)。

9.2 广义线性混合模型(GLMM)

若 $\theta_j = \theta_0 + \epsilon_j$,$\epsilon_j \sim \mathcal{N}(0,\Sigma)$,则 $\theta_0$ 为固定效应,$\epsilon_j$ 为随机效应。这允许组间变异。

9.3 案例:氡气回归(15.5.2)

预测地下室氡水平,数据按县分组。用层次模型:每个县有自己的截距和斜率,共享全局均值和方差。后验显示斜率 $\beta$ 为负(无地下室降低氡),且估计向全局均值收缩(图15.16)。非中心参数化($\beta_j = \mu_\beta + \tau \tilde{\beta}_j$)改善采样(图15.17)。


10. 与前后的联系

  • 第2章(概率):指数族分布、贝叶斯规则。
  • 第3章(统计):贝叶斯推断、共轭先验、MCMC。
  • 第5章(信息论):KL 散度与 MLE 的关系。
  • 第6章(优化):IRLS、SGD、自然梯度。
  • 第7章(推断):拉普拉斯近似、VI、MCMC。
  • 第14章(预测模型):GLM 是参数预测模型的典型。
  • 第16章(神经网络):可视为 GLM 的非线性扩展。
  • 第17章(贝叶斯神经网络):BNN 的先验与 GLM 的 ARD 相关。
  • 第28章(因子模型):GLM 与指数族 PCA 相关。

11. 总结与重点

11.1 核心要点

  • GLM 将线性预测器与指数族分布结合,通过链接函数连接均值与线性项。
  • 常见 GLM:线性、逻辑、泊松回归,覆盖连续、二元、计数数据。
  • MLE 可用 IRLS 或 SGD 求解,对数似然凹性保证唯一解。
  • 贝叶斯 GLM 通过先验引入正则化,后验近似提供不确定性。
  • 稀疏先验(Lasso、ARD、Horseshoe)实现自动特征选择。
  • 多级 GLM 处理分组数据,实现信息共享与收缩。

11.2 常见难点

  • 理解链接函数与均值函数的区别:$\eta = g(\mu)$ 是建模的起点,但梯度计算涉及 $\partial \mu / \partial \eta$。
  • 区分固定效应与随机效应,理解部分池化的好处。
  • 掌握 ARD 为何能自动选择特征:通过优化边际似然使无关维度的先验方差趋近零。
  • 理解贝叶斯 Lasso 中后验样本不稀疏的原因(连续分布)。

11.3 学习建议

  • 在简单数据集上实现逻辑回归的 IRLS,并与 SGD 对比。
  • 用 PyMC 或 Stan 拟合贝叶斯逻辑回归,观察后验分布与拉普拉斯近似的差异。
  • 实现 ARD 线性回归(可用 EM 或变分),观察特征选择效果。
  • 用 radon 数据集练习层次模型,理解非中心参数化对采样的改善。
  • 阅读伯克利录取案例的因果解释,体会混杂因素的重要性。

GLM 是连接经典统计学与现代机器学习的桥梁。掌握 GLM,将为深入学习非线性模型(神经网络、高斯过程)和复杂数据结构(层次模型)奠定坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第16章“Deep Neural Networks”详细讲解

1. 引言:深度神经网络与概率建模

深度神经网络(DNN)是现代机器学习最强大的工具之一。它们本质上是一种高度灵活的非线性函数近似器,能够学习从输入到输出的复杂映射。在概率机器学习的语境下,DNN 通常扮演两种关键角色:

  • 生成模型中的组件:作为条件分布 $p(y \mid x; \theta)$ 的参数化函数,例如分类器中的 logits 计算、VAE 中的解码器。
  • 推断网络:作为变分后验 $q(z \mid x; \phi)$ 的近似器,例如 VAE 中的编码器。

理解 DNN 的构建模块和典型架构,是将它们成功融入概率框架的前提。本章将系统介绍 DNN 的基本组成单元和主流架构,为后续贝叶斯神经网络(第17章)、深度生成模型(第21-26章)等内容打下基础。

下图展示了 DNN 的构建模块与典型架构的关系:

graph TD A[深度神经网络 DNN] --> B[基本构建模块] A --> C[典型架构] B --> B1[线性层 Linear] B --> B2[非线性激活 Nonlinearities] B --> B3[卷积层 Convolutional] B --> B4[残差连接 Residual] B --> B5[归一化层 Normalization] B --> B6[丢弃层 Dropout] B --> B7[注意力 Attention] B --> B8[循环层 Recurrent] B --> B9[乘法层 Multiplicative] B --> B10[隐式层 Implicit] C --> C1[多层感知机 MLP] C --> C2[卷积神经网络 CNN] C --> C3[自动编码器 Autoencoder] C --> C4[循环神经网络 RNN] C --> C5[Transformer] C --> C6[图神经网络 GNN] B1 --> C1 B2 --> C1 B3 --> C2 B4 --> C2 B5 --> C2 B6 --> C2 B7 --> C5 B8 --> C4 B9 --> C1 B10 --> C1

2. 基本构建模块

2.1 线性层

线性层是最基础的组件,实现仿射变换:

$$ y = W x + b $$

其中 $W$ 是权重矩阵,$b$ 是偏置向量。线性层本身只能表达线性关系,但通过堆叠多个线性层并插入非线性激活,可以逼近任意复杂函数。

例子:在逻辑回归中,logits 计算就是线性层输出。

2.2 非线性激活

激活函数引入非线性,使网络能够学习复杂模式。常见激活函数见表16.1和图16.2:

名称定义范围特点
Sigmoid$\sigma(a) = 1/(1+e^{-a})$(0,1)输出可解释为概率,但易饱和
Tanh$\tanh(a)$(-1,1)零中心,比sigmoid梯度更强
ReLU$\max(0,a)$[0,∞)简单、稀疏,但存在死亡ReLU问题
Leaky ReLU$\max(a,0) + \alpha \min(a,0)$缓解死亡ReLU
ELU指数线性单元(-∞,∞)更平滑,均值接近0
Swish / SiLU$a \sigma(a)$无上界,有下界,平滑
GELU$a \Phi(a)$高斯误差线性单元
Sine$\sin(a)$[-1,1]用于隐式神经表示

激活函数的选择影响训练速度和最终性能。ReLU 及其变体是现代网络最常用的。

2.3 卷积层

卷积层利用局部连接权值共享处理网格结构数据(如图像)。输入 $X \in \mathbb{R}^{H \times W \times C}$,卷积核 $W \in \mathbb{R}^{h \times w \times C \times D}$ 产生输出 $Z \in \mathbb{R}^{H' \times W' \times D}$:

$$ Z_{i,j,d} = \sum_{u=0}^{h-1}\sum_{v=0}^{w-1}\sum_{c=1}^{C} X_{i+u,j+v,c} W_{u,v,c,d}. $$

卷积层具有平移等变性:输入平移导致输出相应平移。与线性层相比,参数量大幅减少。

例子:图16.3展示了输入6×6×3,经两个3×3×3卷积核得到4×4×2输出。

2.4 残差连接(跳跃连接)

残差连接将输入直接加到非线性变换的输出上:

$$ y = \mathcal{F}(x) + x. $$

这缓解了深层网络的梯度消失问题,使信号可以直接传播。图16.4示意了一个卷积层加残差连接的结构。

例子:ResNet 通过大量残差块训练了上百层的网络。

2.5 归一化层

归一化层稳定训练,加速收敛。常见的有:

  • 批归一化(BN):在小批量维度标准化,需累积运行均值。
  • 层归一化(LN):在特征维度标准化,适用于 RNN/Transformer。
  • 实例归一化(IN):对每个样本单独标准化,用于风格迁移。
  • 组归一化(GN):折衷 BN 和 IN,将通道分组。

归一化通常后接可学习的缩放和平移参数,恢复表达能力。

2.6 丢弃层

Dropout 在训练时随机将一部分神经元输出置零(以概率 $p$),相当于训练不同子网络的集成,防止过拟合。测试时所有神经元按期望缩放输出。

2.7 注意力层

注意力机制使网络能根据输入内容动态聚焦重要部分。基本形式:

$$ \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^\mathsf{T}}{\sqrt{d_k}}\right) V. $$

其中 $Q$ 是查询,$K$ 是键,$V$ 是值。多头注意力(MHA)并行多个注意力头,增强表示能力(图16.7)。

例子:在 Transformer 中,自注意力让每个位置关注序列所有位置。

2.8 循环层

循环层通过隐状态传递信息,处理序列数据:

$$ h_t = \tanh(W_{hh} h_{t-1} + W_{xh} x_t + b_h), \quad y_t = W_{hy} h_t + b_y. $$

实际中常用 LSTM 或 GRU 缓解梯度消失。

2.9 乘法层

乘法层允许不同信息源交互,如 FiLM(特征线性调制):

$$ \text{FiLM}(x, z) = \gamma(z) \odot x + \beta(z). $$

常用于条件生成和多模态学习。

2.10 隐式层

隐式层通过求解优化问题或微分方程定义输出,而非显式函数。例如神经 ODE、Deep Equilibrium Models。它们通过隐函数定理求导,节省内存。


3. 典型神经网络架构

3.1 多层感知机(MLP)

MLP 由若干全连接层和非线性堆叠而成:

$$ f(x) = W_L \sigma_{L-1}(W_{L-1} \sigma_{L-2}(\cdots W_1 x \cdots)). $$

MLP 是万能近似器,但参数随输入维度快速增长,不擅长处理网格或序列数据。常用于特征提取后的分类头。

例子:图16.10展示了一个输入 $D$,两层隐藏层的 MLP。

3.2 卷积神经网络(CNN)

CNN 交替使用卷积层、池化层、非线性激活,最后接全连接层。卷积捕捉局部模式,池化降低分辨率,使网络获得平移不变性。现代 CNN(如 ResNet、ConvNeXt)广泛用于图像分类、检测、分割。

例子:图16.12是 LeCun 1989 年用于 MNIST 的早期 CNN。

3.3 自动编码器(Autoencoder)

自动编码器由编码器 $z = f_e(x)$ 和解码器 $\hat{x} = f_d(z)$ 组成,训练目标为重建误差 $\|x - \hat{x}\|^2$。它学习低维表示,用于降维、去噪、预训练。图16.13展示了三层 AE。

例子:图16.14 用卷积 AE 对 MNIST 重建,t-SNE 显示不同类别的嵌入分离。

3.4 循环神经网络(RNN)

RNN 通过循环连接处理变长序列,每个时间步更新隐状态并输出。训练时按时间展开,用 BPTT 更新。LSTM 和 GRU 通过门控机制捕捉长程依赖。图16.15 展示 RNN 的循环和展开形式。

3.5 Transformer

Transformer 完全基于自注意力,摒弃循环,实现并行计算。编码器-解码器结构用于序列到序列任务,如机器翻译。图16.16 对比了 RNN 和 Transformer 的信息流。

  • BERT:编码器 Transformer,预训练后可用于下游任务。
  • GPT:解码器 Transformer,自回归生成文本。
  • Vision Transformer(ViT):将图像分块作为 token,用 Transformer 分类。

例子:图22.5 展示了 ChatGPT 对 PyTorch vs JAX 的 rap 生成。

3.6 图神经网络(GNN)

GNN 在图结构数据上操作,通过消息传递聚合邻居信息。节点表示更新为:

$$ h_v^{(k)} = \text{UPDATE}^{(k)}\left( h_v^{(k-1)}, \text{AGGREGATE}^{(k)}\left( \{ h_u^{(k-1)} : u \in \mathcal{N}(v) \} \right) \right). $$

GNN 可用于节点分类、链接预测、图分类等。


4. 与前后的联系

  • 第6章(优化):自动微分是训练 DNN 的基础,反向传播正是 AD 在计算图上的应用。
  • 第7章(推断):DNN 可作为变分后验(推断网络)的参数化形式,实现摊销推断。
  • 第14章(预测模型):DNN 是参数化预测模型的典型,如神经网络分类器。
  • 第15章(GLM):DNN 是 GLM 的非线性推广,可视为多层特征变换加最后一层 GLM。
  • 第17章(贝叶斯神经网络):将 DNN 参数视为随机变量,引入先验,通过近似推断得到后验。
  • 第21章(VAE):VAE 的编码器和解码器均为 DNN,实现深度隐变量模型。
  • 第22章(自回归模型):自回归模型可用 DNN(如 PixelCNN、Transformer)实现条件分布。
  • 第23章(归一化流):流模型由一系列可逆 DNN 层组成。
  • 第24-26章(EBM、扩散、GAN):这些生成模型的核心也是 DNN。

5. 总结与重点

5.1 核心要点

  • DNN 由基础模块(线性、激活、卷积、归一化、注意力等)堆叠而成。
  • 残差连接归一化是训练深度网络的关键技术。
  • 注意力机制使网络能动态关注输入的重要部分,Transformer 成为序列建模的新范式。
  • 典型架构针对不同数据类型设计:CNN 用于网格,RNN/Transformer 用于序列,GNN 用于图。
  • DNN 在概率模型中扮演生成器或推断器,为深度生成模型和贝叶斯深度学习提供动力。

5.2 常见难点

  • 梯度消失/爆炸:通过残差连接、归一化、合适的激活(ReLU)缓解。
  • 选择激活函数:ReLU 通常优先,但需注意死亡 ReLU;输出层需匹配任务(线性回归、softmax)。
  • 理解注意力:需要掌握查询、键、值的概念以及 softmax 加权求和。
  • Transformer 与 RNN 的对比:Transformer 可并行,但需位置编码;RNN 串行,但天然处理变长。

5.3 学习建议

  • 动手实现一个简单的 MLP 分类 MNIST,观察不同激活函数的效果。
  • 用 Keras/PyTorch 搭建 CNN 对 CIFAR-10 分类,理解卷积、池化、批归一化的作用。
  • 实现 Transformer 的一层自注意力,理解其计算过程。
  • 阅读 ResNet、Transformer、ViT 等经典论文,掌握设计思想。
  • 将 DNN 嵌入概率模型(如 VAE),观察其如何与变分推断结合。

本章为后续贝叶斯深度学习和深度生成模型提供了必要的架构基础。理解 DNN 的构建原理,才能有效设计复杂的概率模型。


《Probabilistic Machine Learning: Advanced Topics》第17章“Bayesian Neural Networks”详细讲解

1. 引言:为什么需要贝叶斯神经网络?

深度神经网络(DNN)在众多任务中表现出色,但它们通常只提供点估计(如最大似然或最大后验),无法表达预测的不确定性。这在实际应用中带来风险:模型可能在不熟悉的输入上过度自信,导致错误决策。

贝叶斯神经网络(Bayesian Neural Network, BNN)通过将先验分布置于网络权重上,并计算后验分布 $p(\theta \mid \mathcal{D})$,从而获得预测的不确定性。通过对后验进行积分,得到预测分布:

$$ p(y \mid x, \mathcal{D}) = \int p(y \mid x, \theta) p(\theta \mid \mathcal{D}) d\theta. $$

这不仅能给出预测均值,还能给出方差,从而表达认知不确定性(epistemic uncertainty,源于对模型参数的无知)和偶然不确定性(aleatoric uncertainty,源于数据本身的噪声)。BNN 在少量数据、分布偏移、主动学习、安全关键应用中具有重要价值。

下图概括了本章的知识体系:

graph TD A[贝叶斯神经网络 BNN] --> B[先验选择] A --> C[后验近似方法] A --> D[后验预测分布] A --> E[泛化与理解] A --> F[在线推断] A --> G[分层BNN] B --> B1[高斯先验] B --> B2[稀疏先验] B --> B3[学习先验] B --> B4[函数空间先验] B --> B5[架构先验] C --> C1[拉普拉斯近似] C --> C2[变分推断 VI] C --> C3[期望传播 EP] C --> C4[MC Dropout] C --> C5[MCMC] C --> C6[SG-MCMC] C --> C7[深度集成 Deep Ensembles] C --> C8["SWA / SWAG"] C1 --> C1a[GGN近似] C1 --> C1b[KFAC] C2 --> C2a[Bayes by Backprop] C2 --> C2b[VOGN] C2 --> C2c[NAGVAC] C4 --> C4a[变分解释] C4 --> C4b[与深度集成的比较] C7 --> C7a[MultiSWAG] C7 --> C7b[随机先验] C7 --> C7c[批量集成] D --> D1[蒙特卡洛近似] D --> D2[线性化近似] D --> D3[拉普拉斯桥] D --> D4[蒸馏] E --> E1[尖锐 vs 平坦极小] E --> E2[模式连通性] E --> E3[有效维度] E --> E4[假设空间] E --> E5[PAC-Bayes] E --> E6[分布外泛化] F --> F1[序贯拉普拉斯] F --> F2[EKF] F --> F3[ADF] F --> F4[在线VI] G --> G1["多任务/多环境"] G --> G2[例:多个月球]

2. 先验选择

先验 $p(\theta)$ 反映了我们在看到数据前对权重的信念。在 BNN 中,先验的选择至关重要,它影响后验的形状和泛化性能。

2.1 高斯先验

最常用的先验是各向同性高斯:$W_\ell \sim \mathcal{N}(0, \alpha_\ell^2 I)$,$b_\ell \sim \mathcal{N}(0, \beta_\ell^2 I)$。超参数 $\alpha_\ell, \beta_\ell$ 控制每层权重的尺度。

  • Xavier/Glorot 初始化:对应先验方差 $\alpha_\ell^2 = 2/(n_{\text{in}} + n_{\text{out}})$,使前向和反向传播的信号方差保持稳定。
  • LeCun 初始化:$\alpha_\ell^2 = 1/n_{\text{in}}$。

图17.1 展示了不同超参数下随机网络函数的样本,直观显示先验如何影响函数的光滑性、幅度和偏移。

2.2 稀疏性促进先验

当希望网络自动选择重要特征或实现模型压缩时,可使用稀疏先验,如拉普拉斯先验(对应 L1 正则化)或 horseshoe 先验。这些先验通常在零点有尖峰,鼓励权重接近零。

2.3 学习先验

先验的超参数可通过经验贝叶斯(empirical Bayes)从数据中学习,即最大化边际似然 $p(\mathcal{D} \mid \alpha, \beta)$。这在 ARD(自动相关性确定)中实现,可自动决定每层权重的有效维度。

2.4 函数空间先验

直接指定对函数 $f$ 的先验,而非对权重的先验,有时更直观。例如,通过高斯过程(GP)定义函数分布,而无限宽神经网络收敛到 GP(第18章)。

2.5 架构先验

网络架构本身也是一种先验,它编码了对数据结构的假设。例如,CNN 假设平移不变性,RNN 假设序列性。即使不训练,随机初始化的 CNN 也能作为有效的图像先验(“深度图像先验”)。


3. 后验近似方法

BNN 的后验通常无法解析计算,需要近似。本节介绍主要方法。

3.1 拉普拉斯近似

拉普拉斯近似用高斯分布近似后验,均值为 MAP 估计 $\theta^*$,协方差为负对数后验 Hessian 的逆:

$$ p(\theta \mid \mathcal{D}) \approx \mathcal{N}(\theta \mid \theta^*, H^{-1}),\quad H = -\nabla^2 \log p(\theta, \mathcal{D})|_{\theta^*}. $$
  • 广义 Gauss-Newton(GGN):为避免 Hessian 非正定,用 GGN 近似 $H \approx \sum_n J_n^\mathsf{T} \Lambda_n J_n + \text{prior precision}$,其中 $J_n$ 是网络输出的 Jacobian,$\Lambda_n$ 是观测噪声的 Hessian。GGN 保证正定,且可用 KFAC(Kronecker 因子近似曲率)高效计算。

拉普拉斯近似计算量小,但过于局部,且假设后验为高斯,可能不准确。

3.2 变分推断(VI)

VI 选择一族近似分布 $q_\psi(\theta)$(如对角高斯),最小化 $D_{\text{KL}}(q_\psi \| p)$,等价于最大化 ELBO。

  • Bayes by Backprop(BBB):用重参数化技巧训练高斯变分后验,每个权重的均值和方差作为可训练参数。图17.3 展示了从点估计到分布估计的转变。
  • 局部重参数化技巧:采样激活而非权重,降低方差。
  • VOGN:变分在线 Gauss-Newton,用噪声版本的自然梯度更新。
  • NAGVAC:低秩+对角后验,可用自然梯度高效更新。

VI 可扩展至大型网络,但近似族有限,可能低估不确定性。

3.3 期望传播(EP)

EP 最小化 $D_{\text{KL}}(p \| q)$,即反向 KL,产生零避免(mode-covering)行为。概率反向传播(PBP)是 EP 在 BNN 中的应用,通过 ADF 递推更新权重分布。PBP 在小型数据集上表现良好。

3.4 蒙特卡洛 Dropout(MCD)

Dropout 通常在训练时随机丢弃神经元,测试时固定。MCD 在测试时仍保持 dropout,多次前向得到样本,近似后验预测。这相当于在变分推断框架下,用 Bernoulli 分布近似后验。MCD 简单有效,但不保证收敛到真实后验,且需调节 dropout 率。

3.5 拉普拉斯与最后一层方法

只对最后一层进行贝叶斯推断,前面层用 MAP 估计,得到神经线性模型(neural-linear model)。预测分布为:

$$ p(z \mid x, \mathcal{D}) \approx \mathcal{N}(z \mid \mu_L \phi(x), \phi(x)^\mathsf{T} \Sigma_L \phi(x)). $$

这种方法计算简单,但在特征提取层的不确定性被忽略。

3.6 谱归一化高斯过程(SNGP)

SNGP 对特征提取层施加谱归一化,使网络成为距离保持映射,然后对最后一层用高斯过程分类器。这提高了 OOD 检测性能,因为特征空间的几何得以保留。

3.7 MCMC 方法

  • HMC:利用梯度信息高效探索后验,是 BNN 的黄金标准。图17.4 展示了 HMC 在二分类任务上的后验均值与标准差,不确定性在远离数据处增大。
  • SGLD:随机梯度 Langevin 动力学,用 minibatch 梯度加噪声近似 Langevin 扩散,可扩展至大数据。

3.8 基于 SGD 轨迹的方法

SGD 在固定学习率下会围绕局部极小振荡,这些迭代可视为后验样本。

  • SWA:随机权重平均,取多个 SGD 迭代的平均值,得到更宽极小(图17.5)。
  • SWAG:对 SGD 迭代拟合高斯分布,协方差为对角+低秩近似,可生成任意样本。

3.9 深度集成(Deep Ensembles)

训练多个模型(不同随机初始化),用它们的平均作为预测。这等价于用混合 delta 分布近似后验。深度集成简单有效,且能捕捉多模态后验。图17.6 示意了集成与局部近似的区别。

  • MultiSWAG:对每个模式用 SWAG 拟合高斯,得到混合高斯后验。
  • 随机先验集成:每个成员为 $g_i(x) = t_i(x) + \beta p_i(x)$,其中 $p_i$ 是固定随机网络,增加成员多样性(图17.7)。
  • 批量集成:共享大部分权重,用 rank-1 扰动实现成员多样性,节省内存(图17.8)。

3.10 后验预测的近似

  • 蒙特卡洛近似:从后验采样,平均预测。
  • 线性化近似:在网络输出处线性化,将参数高斯映射为输出高斯,再用 probit 近似分类概率。
  • 拉普拉斯桥:将输出高斯转化为 Dirichlet 分布,得到每个类别的 Beta 边际,用于构建预测集(图17.9)。
  • 蒸馏:用简单模型(如神经网络)拟合教师模型的预测分布,加速预测。

4. 泛化与理解

4.1 尖锐 vs 平坦极小

平坦极小对应参数空间中的宽谷,描述长度短,泛化好。SGD 倾向于找到平坦极小,而贝叶斯模型平均自然赋予平坦区域更高权重。

4.2 模式连通性与损失景观

不同 SGD 解之间可能存在低损失路径相连,这些路径上的函数差异显著(图17.11)。贝叶斯平均可结合这些模式,获得更好性能。

4.3 有效维度

模型的有效维度定义为 Hessian 特征值经正则化后的和:

$$ N_{\text{eff}} = \sum_i \frac{\lambda_i}{\lambda_i + c}. $$

低有效维度对应更好的压缩和泛化。图17.12 显示有效维度与测试损失正相关。

4.4 假设空间与先验的支持

神经网络具有巨大容量,但先验将概率质量集中在特定函数上(如 CNN 偏好自然图像)。贝叶斯平均在这些函数上加权,从而避免过拟合(图17.13)。

4.5 PAC-Bayes

PAC-Bayes 提供泛化误差的界,形式为 $\sqrt{(D_{\text{KL}}(Q\|P) + \log(1/\delta))/(2n)}$。这启发我们设计先验和变分后验,但当前界仍较松。

4.6 分布外泛化

BNN 并不总是对分布外输入更鲁棒。例如,MNIST 的边界像素恒为 0,后验在这些方向与先验相同,导致对边界噪声敏感。用经验协方差先验(EmpCov)将先验与数据主成分对齐可改善(图17.14)。

此外,简单的 MLP 即使贝叶斯化,在远离数据的区域也可能过度自信,而 GP 或 SNGP 能更好表达“我不知道”。图17.15 比较了多种方法对 OOD 输入的响应。

4.7 模型选择

可用边际似然或条件边际似然(CLML)选择模型超参数。CLML 基于后一部分数据计算,更接近泛化性能。


5. 在线推断

当数据流式到达时,需在线更新后验。

5.1 序贯拉普拉斯

用当前后验作为下一任务的先验,MAP 更新后重新计算 Hessian。EWC(弹性权重巩固)用对角近似实现持续学习。

5.2 扩展卡尔曼滤波(EKF)

将权重视为状态,用 EKF 递推更新。对 MLP 有效,但计算量 $O(N_z^3)$。节点解耦 EKF(DEKF)分组近似,降低复杂度。

5.3 假设密度滤波(ADF)

ADF 在每步用高斯近似后验,通过矩匹配更新。概率反向传播(PBP)即 ADF 在 BNN 上的应用,用 ReLU 的矩可解析计算。

5.4 在线变分推断(VCL)

VCL 在每步最小化 $D_{\text{KL}}(q_t \| q_{t-1}) + \mathbb{E}_{q_t}[\ell_t]$。过度正则化可能导致变分剪枝(variational overpruning),可通过减小 KL 权重(β-VCL)缓解。


6. 分层贝叶斯神经网络

当数据来自多个相关组(如不同医院的图像)时,可用分层模型共享信息。

模型:每个组有自己的参数 $\theta_j$,它们来自共同的先验 $\theta_j \sim \mathcal{N}(\theta_0, \sigma_\ell^2)$,用非中心参数化 $\theta_j = \theta_0 + \epsilon_j \sigma_\ell$ 改善采样。

例子:多个月球数据集(17.6.1),通过旋转生成 18 个相关任务。分层 MLP 利用共享信息,使每个任务的决策边界更合理(图17.19)。


7. 与前后的联系

  • 第6章(优化):自然梯度、KFAC 用于 VI 和拉普拉斯近似。
  • 第7章(推断):拉普拉斯、VI、MCMC 在本章应用。
  • 第10章(变分推断):BBB、VOGN 是 VI 在 BNN 的特例。
  • 第12章(MCMC):HMC、SGLD 用于 BNN。
  • 第14章(预测模型):BNN 是概率预测模型。
  • 第16章(DNN):BNN 以 DNN 为基础。
  • 第18章(高斯过程):无限宽 BNN 与 GP 等价。
  • 第19章(分布偏移):BNN 的 OOD 行为与检测。
  • 第32章(表示学习):BNN 的特征可用于下游任务。

8. 总结与重点

8.1 核心要点

  • BNN 将先验置于权重,计算后验,得到预测不确定性。
  • 先验选择影响后验,常用高斯先验,稀疏先验实现自动特征选择。
  • 后验近似方法多样:拉普拉斯(快但局部)、VI(可扩展但可能低估)、MCMC(精确但慢)、深度集成(简单有效)。
  • 预测分布可通过 MC 采样、线性化、蒸馏等近似。
  • BNN 的泛化与平坦极小、有效维度、模式连通性相关。
  • 分布外行为需谨慎,可用 SNGP、经验协方差先验改善。
  • 在线推断(EKF、ADF、VCL)支持持续学习。
  • 分层 BNN 处理多组数据,共享统计强度。

8.2 常见难点

  • 理解 VI 与 MCMC 在 BNN 中的优劣:VI 快但族受限,MCMC 慢但渐近精确。
  • 区分认知不确定性与偶然不确定性:BNN 主要捕获认知不确定性,偶然不确定性由似然建模。
  • 掌握拉普拉斯近似中 GGN 与 Hessian 的区别。
  • 理解深度集成为何能近似贝叶斯模型平均:多个模式加权平均。
  • 理解 BNN 在分布外为何可能失效及如何改进。

8.3 学习建议

  • 在小数据集上实现 Bayes by Backprop,观察后验均值和方差。
  • 用 Pyro 或 TensorFlow Probability 实现 BNN 的 VI,并与 MCMC(NUTS)对比。
  • 用 SWAG 对已训练的 ResNet 建模后验,观察预测不确定性。
  • 实现 SNGP 并比较与普通 CNN 在 OOD 检测上的差异。
  • 阅读关于冷后验、模式连通性、有效维度的论文,深入理解 BNN 的泛化机制。

BNN 是概率深度学习的前沿,它将贝叶斯原理与深度网络结合,为可靠、可解释、可适应的智能系统奠定基础。掌握本章内容,将能在实际应用中更好地利用不确定性信息。


《Probabilistic Machine Learning: Advanced Topics》第18章“Gaussian Processes”详细讲解

1. 引言:为什么需要高斯过程?

在第14章和第15章中,我们介绍了参数化预测模型,如线性回归和神经网络。这些模型具有固定数量的参数,其容量受限于参数数量。当数据量增加时,参数模型需要手动增加复杂度(如增加隐藏单元数)来适应数据,这可能导致过拟合或欠拟合。

高斯过程(Gaussian Process, GP)提供了一种非参数的贝叶斯方法:它直接在函数空间上定义先验,然后根据数据更新为后验。GP 可以看作是将贝叶斯线性回归扩展到无限维特征空间的结果,其预测分布具有解析形式(当似然为高斯时),并能自然地表达不确定性。GP 广泛应用于回归、分类、贝叶斯优化、时空建模等领域。

本章将系统介绍高斯过程的定义、核函数、回归与分类、大规模近似以及与深度学习的联系。下图概括了本章的知识体系:

graph TD A[高斯过程 GP] --> B[定义与基础] A --> C[核函数 Kernels] A --> D[高斯似然回归] A --> E[非高斯似然] A --> F[大规模GP] A --> G[核学习] A --> H[与深度学习联系] B --> B1["均值函数 m(x)"] B --> B2["协方差函数 K(x,x')"] B --> B3[作为先验的直观] C --> C1[Mercer核] C --> C2[平稳核] C --> C3[非平稳核] C --> C4[核的组合] D --> D1[预测分布] D --> D2[边际似然] D --> D3[计算与Cholesky] D --> D4[核岭回归 KRR] E --> E1["分类(拉普拉斯/VI)"] E --> E2[泊松回归(Cox过程)] E --> E3[其他似然] F --> F1[子集法] F --> F2[Nyström近似] F --> F3[诱导点方法 FITC] F --> F4[稀疏变分 SVGP] F --> F5["Kronecker/Toeplitz"] F --> F6["SKI / KISS-GP"] F --> F7[状态空间转换] G --> G1[经验贝叶斯] G --> G2[贝叶斯推断] G --> G3[组合核搜索] G --> G4[谱混合核] G --> G5[深度核学习] H --> H1[无限宽网络 → NNGP] H --> H2[神经正切核 NTK] H --> H3[深度GP]

2. 高斯过程基础

2.1 定义

一个高斯过程是一个随机过程,其任意有限个点上的函数值服从多元高斯分布。一个 GP 完全由其均值函数 $m(x)$ 和协方差函数(核函数)$K(x, x')$ 定义:

$$ f(x) \sim \mathcal{GP}(m(x), K(x, x')). $$

这意味着对于任意有限输入集合 $X = \{x_1, \dots, x_N\}$,对应的函数值向量 $\boldsymbol{f} = [f(x_1), \dots, f(x_N)]$ 服从:

$$ \boldsymbol{f} \sim \mathcal{N}(\boldsymbol{m}, \mathbf{K}), \quad \boldsymbol{m}_i = m(x_i), \quad \mathbf{K}_{ij} = K(x_i, x_j). $$

通常我们假设均值函数为零(通过中心化数据实现),因此 GP 完全由核函数决定。

2.2 直观理解

GP 可以看作是函数的分布。从一个 GP 中采样的函数是光滑的(取决于核函数的选择),并且在训练数据点处被观测值约束(更新后)。图18.7 展示了从先验采样的函数和给定数据后的后验样本。


3. Mercer 核与常见核函数

3.1 核函数的正定性

核函数 $K(x, x')$ 必须是正定的,即对于任意 $N$ 个不同点 $x_1,\dots,x_N$ 和任意实数 $c_1,\dots,c_N$,有

$$ \sum_{i=1}^N \sum_{j=1}^N c_i c_j K(x_i, x_j) \ge 0. $$

Gram 矩阵 $\mathbf{K}$ 必须是对称正定的(严格正定要求非零向量时严格大于0)。

3.2 平稳核

平稳核仅依赖于 $r = x - x'$,即平移不变。常见平稳核:

  • 平方指数(SE)核(也称 RBF 核):

    $$ K_{\text{SE}}(r; \ell) = \exp\left(-\frac{r^2}{2\ell^2}\right). $$

    它产生无限可微的样本,非常光滑。图18.3f 和 18.4f 展示了 SE 核的曲线和样本。

  • ARD 核(自动相关性确定):

    $$ K_{\text{ARD}}(x, x') = \sigma^2 \exp\left(-\frac{1}{2} \sum_{d=1}^D \frac{(x_d - x'_d)^2}{\ell_d^2}\right). $$

    每个维度有独立的长度尺度 $\ell_d$,当 $\ell_d$ 很大时该维度几乎被忽略,实现自动特征选择。图18.2 展示了不同长度尺度下的函数样本。

  • Matérn 核

    $$ K_{\text{Matern}}(r; \nu, \ell) = \frac{2^{1-\nu}}{\Gamma(\nu)} \left( \frac{\sqrt{2\nu} r}{\ell} \right)^{\nu} K_\nu \left( \frac{\sqrt{2\nu} r}{\ell} \right), $$

    其中 $K_\nu$ 是修正 Bessel 函数。当 $\nu = 1/2, 3/2, 5/2$ 时有简单形式。$\nu \to \infty$ 时趋于 SE 核。Matérn 核产生粗糙度可控的函数,更符合许多实际物理过程。图18.3a-c 和 18.4a-c 展示了不同 $\nu$ 的核和样本。

  • 周期核

    $$ K_{\text{Per}}(r; \ell, p) = \exp\left(-\frac{2\sin^2(\pi r/p)}{\ell^2}\right). $$

    用于周期信号建模。图18.3d-e 和 18.4d-e 展示周期核及其样本。

  • 有理二次核

    $$ K_{\text{RQ}}(r; \ell, \alpha) = \left(1 + \frac{r^2}{2\alpha\ell^2}\right)^{-\alpha}. $$

    可解释为不同长度尺度的 SE 核的加权平均。图18.3g 和 18.4g。

3.3 非平稳核

  • 多项式核:$K(x, x') = (x^\mathsf{T}x' + c)^M$,产生有限维特征空间,对应线性回归的基函数。
  • Gibbs 核:长度尺度随输入变化,$\ell(x)$ 可建模为另一个函数(如 GP)。

3.4 核的组合

通过加法和乘法可构造更复杂核:

  • 加法:$K = K_1 + K_2$ 对应不同结构的叠加(如趋势+周期)。
  • 乘法:$K = K_1 \times K_2$ 对应不同特征的交互。 图18.5 和 18.6 展示了组合核的示例。

4. 高斯过程回归(高斯似然)

假设观测模型为 $y_i = f(x_i) + \epsilon_i$,$\epsilon_i \sim \mathcal{N}(0, \sigma_y^2)$。

4.1 预测分布

给定训练数据 $X, \boldsymbol{y}$,对于新点 $X_*$,联合分布为:

$$ \begin{bmatrix} \boldsymbol{y} \\ \boldsymbol{f}_* \end{bmatrix} \sim \mathcal{N}\left( \boldsymbol{0}, \begin{bmatrix} K(X,X) + \sigma_y^2 I & K(X, X_*) \\ K(X_*, X) & K(X_*, X_*) \end{bmatrix} \right). $$

条件分布 $p(\boldsymbol{f}_* \mid X_*, X, \boldsymbol{y}) = \mathcal{N}(\boldsymbol{\mu}_*, \boldsymbol{\Sigma}_*)$,其中

$$ \begin{aligned} \boldsymbol{\mu}_* &= K(X_*, X) [K(X,X) + \sigma_y^2 I]^{-1} \boldsymbol{y},\\ \boldsymbol{\Sigma}_* &= K(X_*, X_*) - K(X_*, X) [K(X,X) + \sigma_y^2 I]^{-1} K(X, X_*). \end{aligned} $$

预测均值是训练观测的线性组合,预测方差随远离数据点而增大。图18.7 展示了后验样本和置信区间。

4.2 边际似然

GP 的超参数(核参数和 $\sigma_y^2$)可通过最大化边际似然学习:

$$ \log p(\boldsymbol{y} \mid X) = -\frac{1}{2} \boldsymbol{y}^\mathsf{T} (K + \sigma_y^2 I)^{-1} \boldsymbol{y} - \frac{1}{2} \log |K + \sigma_y^2 I| - \frac{N}{2} \log 2\pi. $$

第一项衡量数据拟合,第二项是模型复杂度惩罚,自动平衡拟合与复杂度。

4.3 计算问题

直接计算需对 $N \times N$ 矩阵求逆,复杂度 $O(N^3)$。通常用 Cholesky 分解 $LL^\mathsf{T} = K + \sigma_y^2 I$,然后解线性系统。预测均值和方差需 $O(N^2)$ 对新点。

4.4 核岭回归(KRR)

KRR 是频率派版本,通过解正则化最小二乘问题得到预测函数,等价于 GP 预测均值(见18.3.7)。图18.8 比较了 KRR 与 GPR,二者结果相似。


5. 非高斯似然

当 $y$ 非高斯(如分类、计数)时,后验不再解析,需近似推断。

5.1 分类

  • 拉普拉斯近似:在 MAP 点处用二阶展开近似后验。梯度与 Hessian 见表18.2。预测时用 probit 近似积分。
  • 变分推断:假设高斯后验,优化 ELBO。常结合诱导点方法实现可扩展。 图18.9 展示了不同核参数下分类边界的差异。

5.2 泊松回归(Cox 过程)

用于计数数据,如疾病制图。似然 $y_i \sim \mathrm{Poisson}(\exp(f_i))$。可用拉普拉斯、MCMC 或 VI 推断。图18.10 展示了 MCMC 与 VI 对 1D 泊松数据的拟合,图18.11 展示了芬兰心脏病空间分布的后验均值和方差。

5.3 其他似然

Student-t 似然用于稳健回归,可用 VI 或 EP 处理。


6. 大规模高斯过程

GP 的 $O(N^3)$ 复杂度限制了其在大数据上的应用。本节介绍各种近似方法,总结于表18.3。

6.1 子集法

随机选取 $M \ll N$ 个点作为训练集,但会损失信息。信息向量机(IVM)用贪心策略选择信息量最大的点。

6.2 Nyström 近似

用 $M$ 个诱导点 $Z$ 构造低秩近似 $K \approx K_{XZ} K_{ZZ}^{-1} K_{ZX}$。复杂度 $O(NM^2)$。

6.3 诱导点方法(SOR、DTC、FITC)

引入伪输入 $Z$ 及其对应的函数值 $\boldsymbol{u}$,假设 $\boldsymbol{f}$ 条件独立给定 $\boldsymbol{u}$。不同近似在条件方差的处理上不同:

  • SOR:完全确定性,$\boldsymbol{f} = K_{XZ} K_{ZZ}^{-1} \boldsymbol{u}$。
  • DTC:训练时用确定性,测试时加回方差。
  • FITC:训练时保留对角不确定性,更准确。 诱导点位置可通过优化边际似然学习。图18.13 展示了在离散输入空间(DNA序列)上学习诱导点。

6.4 稀疏变分 GP(SVGP)

用变分推断近似后验,假设 $q(\boldsymbol{u})$ 为高斯,ELBO 可分解为数据项之和,支持小批量 SGD。对非高斯似然也适用。SVGP 可扩展至百万级数据。

6.5 利用矩阵结构

  • Kronecker 结构:若核可分解为各维度乘积且输入在网格上,Gram 矩阵为 Kronecker 积,可用快速算法。
  • KISS-GP:通过插值将核近似为结构化矩阵(如 Toeplitz),实现 $O(N + M \log M)$ 复杂度。
  • SKIP:将乘积核的 SKI 推广,进一步加速。
  • Tensor Train:对诱导点协方差用张量列分解,可处理数十亿诱导点。

6.6 状态空间转化

许多平稳核(如 Matérn)可表示为线性随机微分方程的解,从而转化为线性高斯状态空间模型,用卡尔曼滤波 $O(N)$ 时间推断。这为时间序列预测提供了高效工具。


7. 核学习

7.1 经验贝叶斯

最大化边际似然(公式18.74)关于核参数。梯度可用公式18.165 计算。但似然面可能有多个局部极小,如图18.16 所示,对应不同复杂度解释。

7.2 贝叶斯推断核参数

当数据少时,点估计可能不可靠。可用 MCMC(HMC、切片采样)或 SMC 采样核参数后验,然后积分预测。图18.18 对比了点估计与贝叶斯平均的预测。

7.3 组合核与自动搜索

  • 多核学习:将核表示为基核的加权和,学习权重。
  • 加法核:$K = \sum_d K_d(x_d, x_d')$,得到广义加法模型(GAM),每个维度函数可单独解释(图18.20)。
  • 组合核搜索:用贪心搜索(如 BIC)在核表达式空间中寻找最佳结构(图18.21),可自动发现趋势、周期等成分(图18.22)。

7.4 谱混合核

用高斯混合谱密度逆傅里叶变换得到核,可逼近任意平稳核。谱混合核能自动学习周期、趋势等,实现外推(图18.24)。

7.5 深度核学习

将 DNN 特征提取与基核结合,$K(x, x') = \text{base}(h_\theta(x), h_\theta(x'))$,通过边际似然联合优化 DNN 参数和核参数。这结合了深度学习的表示能力与 GP 的不确定性估计。图18.26 展示了深度核处理不连续函数,图18.27 显示深度核在面部方向回归中学习到的相似性结构。


8. 高斯过程与深度学习的联系

8.1 无限宽神经网络 → NNGP

单隐层 MLP 在隐单元数趋于无穷时,其输出函数分布收敛到 GP,核由激活函数和权重先验决定(表18.4)。这为 BNN 提供了先验的理解。图18.28 展示了 NNGP 样本。

8.2 神经正切核(NTK)

在无限宽网络训练时,梯度下降下的函数演化由 NTK 描述,该核在训练过程中保持不变。NTK 揭示了网络与核方法的深刻联系。

8.3 深度 GP

深度 GP 将多个 GP 组合,形成层次化函数,表达能力更强。推断需用近似方法(如变分推断)。


9. 应用实例:时间序列预测(Mauna Loa)

图18.29 展示了用组合核(SE长趋势 + 周期核 + 有理二次中程 + SE噪声)对 CO₂ 数据的建模和预测。核函数为:

$$ K(r) = \theta_0^2 \exp\left(-\frac{r^2}{2\theta_1^2}\right) + \theta_2^2 \exp\left(-\frac{r^2}{2\theta_3^2} - \theta_5 \sin^2\left(\frac{\pi r}{\theta_4}\right)\right) + \theta_6^2 \left(1 + \frac{r^2}{2\theta_7^2 \theta_8}\right)^{-\theta_8} + \theta_9^2 \exp\left(-\frac{r^2}{2\theta_{10}^2}\right). $$

这组核成功捕捉了长期趋势、季节周期、不规则波动和噪声。


10. 与前后的联系

  • 第3章(统计):贝叶斯推断、边际似然。
  • 第4章(图模型):GP 可视为无限维图模型。
  • 第5章(信息论):KL 散度、互信息用于变分推断。
  • 第6章(优化):贝叶斯优化依赖 GP 作为代理模型。
  • 第10章(变分推断):稀疏变分 GP 是 VI 的典型应用。
  • 第14章(预测模型):GP 是非参数预测模型的代表。
  • 第15章(GLM):GP 分类是 GLM 的非参数扩展。
  • 第17章(BNN):无限宽 BNN 收敛到 GP,NNGP 核。
  • 第29章(状态空间模型):GP 可转化为 SSM 加速时序预测。

11. 总结与重点

11.1 核心要点

  • GP 定义在函数空间上,由均值函数和核函数决定。
  • 核函数编码了对函数的假设(光滑性、周期性等)。
  • 高斯似然下预测分布解析,边际似然可用于核学习。
  • 非高斯似然需近似推断(拉普拉斯、VI、EP)。
  • 大规模数据需用稀疏近似(诱导点、变分、结构利用)。
  • 核可学习(经验贝叶斯、贝叶斯推断、组合搜索)。
  • GP 与无限宽 DNN 等价,是理解 BNN 和 NTK 的桥梁。

11.2 常见难点

  • 理解核函数如何编码先验:长度尺度控制变化快慢,周期核控制周期。
  • 掌握边际似然中数据拟合与复杂度惩罚的平衡。
  • 区分不同稀疏近似(FITC vs SVGP)的假设和计算。
  • 理解 NNGP 与 NTK 的区别:NNGP 是先验,NTK 是训练动力学。

11.3 学习建议

  • 用 GPyTorch 或 scikit-learn 实现 1D 回归,调整核参数观察预测变化。
  • 用组合核拟合 Mauna Loa 数据,比较不同核的效果。
  • 实现 SVGP 对分类数据训练,观察诱导点位置。
  • 阅读 NNGP 和 NTK 的原始论文,理解无限宽网络的极限行为。
  • 尝试深度核学习,将 CNN 特征与 GP 结合。

高斯过程是概率机器学习中优雅且强大的工具,它将贝叶斯非参数思想与核方法融合,为回归、分类、优化等任务提供了统一框架。掌握 GP,将极大提升处理小数据、不确定性量化、时序建模的能力。


《Probabilistic Machine Learning: Advanced Topics》第19章“Beyond the iid assumption”详细讲解

1. 引言:从独立同分布假设到分布漂移

在机器学习的标准设定中,我们通常假设训练集和测试集中的样本是独立同分布(independent and identically distributed, i.i.d.)的。这意味着所有样本都是从同一个未知分布 $p(x,y)$ 中独立抽取的,模型训练的目标是学习一个映射 $f: \mathcal{X} \to \mathcal{Y}$,使其在测试集上也能表现良好。

然而,现实世界中的应用往往违背这一假设。测试数据的分布可能与训练分布不同,这种现象被称为分布漂移(distribution shift)或数据集漂移(dataset shift)。例如:

  • 一个在晴朗天气下训练的自动驾驶模型,在雨雪天气中性能骤降(协变量漂移,covariate shift)。
  • 一个根据历史数据训练的信贷审批模型,因社会经济环境变化导致“好客户”的定义发生改变(概念漂移,concept shift)。
  • 一个疾病诊断模型在A医院训练(患病率10%),部署到B医院(患病率1%),由于类别先验变化导致预测偏差(标签漂移,label shift)。

理解并处理分布漂移是实现鲁棒、可靠机器学习系统的关键。本章正是围绕这一问题展开,系统地介绍了分布漂移的类型、检测方法、鲁棒性提升技术、适应策略,以及与之相关的持续学习、对抗样本等前沿话题。

下图概括了本章的知识体系:

graph TD A[分布漂移 Distribution Shift] --> B[类型 Taxonomy] A --> C[检测 Detection] A --> D[鲁棒性 Robustness] A --> E[适应 Adaptation] A --> F[多分布学习 Learning from Multiple Distributions] A --> G[持续学习 Continual Learning] A --> H[对抗样本 Adversarial Examples] B --> B1[协变量漂移 Covariate Shift] B --> B2[概念漂移 Concept Shift] B --> B3[标签漂移 Label Shift] B --> B4[表现漂移 Manifestation Shift] B --> B5[选择偏差 Selection Bias] C --> C1[双样本检验 Two-Sample Testing] C --> C2["异常/分布外检测 OOD Detection"] C --> C3[选择性预测 Selective Prediction] C --> C4[开集识别 Open Set Recognition] D --> D1[不变性 Invariance] D --> D2[分布鲁棒优化 DRO] E --> E1[迁移学习 Transfer Learning] E --> E2[加权经验风险最小化 Weighted ERM] E --> E3[无监督域适应 UDA] E --> E4[测试时适应 Test-Time Adaptation] F --> F1[多任务学习 Multi-Task Learning] F --> F2[域泛化 Domain Generalization] F --> F3[不变风险最小化 IRM] F --> F4[元学习 Meta-Learning] G --> G1[灾难性遗忘 Catastrophic Forgetting] G --> G2[在线学习 Online Learning] H --> H1[白盒攻击 White-Box Attacks] H --> H2[黑盒攻击 Black-Box Attacks] H --> H3[防御 Defenses]

接下来,我们将逐一深入每个模块。


2. 分布漂移的类型(Taxonomy of Distribution Shift)

为了系统地分析分布漂移,本章采用因果图(causal graph)的观点。将变量分为输入 $X$ 和输出 $Y$,并考虑两种基本的数据生成过程:

  • 因果预测(causal prediction):$X \to Y$,即输入 $X$ 导致输出 $Y$。例如,$X$ 是医学图像,$Y$ 是专家标注的病变区域。
  • 反因果预测(anticausal prediction):$Y \to X$,即输出 $Y$ 导致输入 $X$。例如,$Y$ 是疾病的真实状态,$X$ 是该状态的图像表现。

基于这两种生成方向,以及漂移发生的组件(边际分布 $p(X)$ 或 $p(Y)$,条件分布 $p(Y|X)$ 或 $p(X|Y)$),可以划分出四种经典的漂移类型。

2.1 协变量漂移(Covariate Shift)

  • 定义:在因果模型 $X \to Y$ 中,输入边际分布 $p(X)$ 发生变化,但条件分布 $p(Y|X)$ 保持不变。即 $p_{\text{source}}(X) \neq p_{\text{target}}(X)$,但 $p_{\text{source}}(Y|X) = p_{\text{target}}(Y|X)$。
  • 例子
    • 训练数据是干净的咖啡壶图片,测试数据是添加了高斯噪声的咖啡壶图片(如图19.1所示)。
    • 训练数据是产品目录中的照片(白色背景),测试数据是“野外”拍摄的同样物品(复杂背景)。
  • 应对思路:可以通过重要性加权(importance weighting)调整训练样本的权重,使其近似目标分布(见19.5.2节)。

2.2 概念漂移(Concept Shift)

  • 定义:在因果模型 $X \to Y$ 中,条件分布 $p(Y|X)$ 发生变化,即标签的定义或标注标准发生了改变。$p_{\text{source}}(Y|X) \neq p_{\text{target}}(Y|X)$。
  • 例子
    • 医学影像中,不同医院对“肺炎”的标注标准不同。
    • 目标分布中出现了训练时未见过的新类别(开集识别问题)。
  • 应对思路:必须依赖目标域的标签样本来重新定义概念,否则无法修正。

2.3 标签漂移(Label Shift / Prior Shift)

  • 定义:在反因果模型 $Y \to X$ 中,标签边际分布 $p(Y)$ 发生变化,但条件分布 $p(X|Y)$ 保持不变。即 $p_{\text{source}}(Y) \neq p_{\text{target}}(Y)$,但 $p_{\text{source}}(X|Y) = p_{\text{target}}(X|Y)$。
  • 例子
    • 疾病诊断:A医院(城市)患病率10%,B医院(农村)患病率1%。疾病在影像上的表现 $p(X|Y)$ 相同,但先验概率 $p(Y)$ 不同。
  • 应对思路:可以利用黑盒漂移估计(blackbox shift estimation, 19.5.4节)估计目标域的标签分布,然后调整分类器的输出。

2.4 表现漂移(Manifestation Shift / Conditional Shift)

  • 定义:在反因果模型 $Y \to X$ 中,条件分布 $p(X|Y)$ 发生变化,即同样的标签在输入空间的表现形式改变了。$p_{\text{source}}(X|Y) \neq p_{\text{target}}(X|Y)$。
  • 例子
    • 同样的疾病在不同年龄段患者身上的影像特征不同(肿瘤形状有差异)。
    • 同一个词“bank”在不同语境下的含义不同,导致其文本表示 $X$ 变化。
  • 应对思路:这相当于概念漂移的反面,通常需要引入隐变量(如年龄、语境)来解释变化。

2.5 选择偏差(Selection Bias)

  • 定义:样本进入训练集的方式不是随机的,导致训练分布与总体分布不一致。设 $S=1$ 表示样本被选入训练集,则训练分布为 $p(X,Y|S=1)$,而目标分布是总体 $p(X,Y)$。选择偏差通常由数据收集过程引入。
  • 例子
    • 只收集高质量图像($X$ 满足某些条件) → 可能导致协变量漂移。
    • 为平衡数据集,过采样罕见类别($Y$ 满足某些条件) → 可能导致标签漂移。
    • 同时基于 $X$ 和 $Y$ 选择样本 → 可能引入非因果依赖,即选择偏差(collider bias)。

3. 检测分布漂移(Detecting Distribution Shifts)

在实际部署中,我们往往无法预先知道测试分布的变化,因此需要实时检测漂移,以便采取相应措施(如拒绝预测、请求人工干预)。

3.1 双样本检验(Two-Sample Testing)

  • 核心思想:收集一组源域样本和目标域样本,检验它们是否来自同一分布。
  • 方法
    • 最大均值差异(MMD):通过核方法衡量两个分布之间的差异(见第2章2.7.3节)。对于未标记样本,可直接比较 $p(X)$ 的差异。
    • 嵌入空间距离:计算源域训练的分类器在嵌入空间上的特征分布距离(如欧氏距离)。
  • 标签漂移检测:如果假设标签漂移成立(即 $p(X|Y)$ 不变),则可通过估计目标域的 $q(Y)$ 并与源域 $p(Y)$ 比较来检测整体分布变化。

3.2 单个输入的分布外检测(Out-of-Distribution Detection, OOD Detection)

当只有一个测试样本 $x$ 时,需要判断它是否属于训练分布(in-distribution, ID)还是分布外(out-of-distribution, OOD)。

3.2.1 监督方法(异常值暴露,Outlier Exposure)

  • 如果有标记的ID和OOD样本,可直接训练一个二分类器区分它们。但实际中OOD样本难以穷举。

3.2.2 基于分类置信度的方法

  • 利用分类器输出的概率或logits构造置信度分数,如:
    • 最大概率 $s = \max_c p(y=c|x)$
    • 间隔 $s = \ell_{c_1} - \ell_{c_2}$(最大logit与第二大logit之差)
    • $s = H(p(y|x))$
    • 能量分数 $s = \log\sum_c e^{\ell_c}$
  • 实验表明,简单的最大概率基线往往表现良好。

3.2.3 共形预测(Conformal Prediction)

  • 共形预测可以构造一个包含真实标签的预测集,并提供有限样本的覆盖保证(见第14章14.3节)。将其扩展到OOD检测,可构建两阶段决策:
    • 首先判断是否为OOD,若不是,则返回一个自适应预测集(APS)。
    • 通过校准集调整阈值,控制ID样本被误判为OOD的概率(类型I错误)以及预测集不包含真实标签的概率。

3.2.4 无监督方法

  • 拟合一个密度模型(如VAE、归一化流)到ID样本,然后根据似然 $p(x)$ 判断。但实验发现,某些模型对复杂度低的数据(如SVHN)可能给出比ID数据(CIFAR-10)更高的似然,这被称为似然悖论(likelihood paradox)。
  • 解决方法:
    • 使用对数似然比 $R(x) = \log p(x) / q(x)$,其中 $q$ 是一个基线密度模型。比值对数据变换具有不变性。
    • 基于重建误差:用自编码器重建样本,OOD样本的重建误差通常更大。
    • 使用GAN的判别器输出作为置信度。

3.3 选择性预测(Selective Prediction)

当模型对输入 $x$ 的置信度低于某个阈值时,可以选择弃权(abstain),不给出预测。这在错误成本高昂的场景(如医疗诊断)中非常有用。通过调节阈值,可以权衡准确率与弃权率。

实例:用MLP在MNIST上训练,分别用SGD和SGLD(一种贝叶斯MCMC方法)估计后验。在分布外数据(Fashion-MNIST)上,SGLD在相同置信度阈值下弃权更多,表明其不确定性估计更合理(见图19.8-19.9)。

3.4 开集识别与开放世界识别(Open Set / Open World Recognition)

  • 开集识别:不仅检测OOD样本,还要求将OOD样本识别为“未知类别”,而不是强行分到已知类别。
  • 开放世界分类:允许类别集合随时间增长,模型不断学习新类别(通常与持续学习结合)。

4. 提高对分布漂移的鲁棒性(Robustness to Distribution Shifts)

本节讨论如何训练一个模型,使其对未知的测试分布 $q(y|x)$ 具有内在的鲁棒性,而不依赖目标域数据。

4.1 不变性(Invariance)与分布鲁棒优化(DRO)

  • 核心思想:寻找一个预测器,在所有可能的分布(在一个不确定性集合内)上表现良好。
  • 分布鲁棒优化(Distributionally Robust Optimization, DRO): $$ \min_\theta \sup_{Q \in \mathcal{U}} \mathbb{E}_{Q}[\ell(y, f_\theta(x))] $$ 其中 $\mathcal{U}$ 是以源分布为中心的某个邻域(如KL散度球、Wasserstein球)。DRO迫使模型在最坏情况分布上表现稳健。
  • 不变性:如果模型只依赖于因果特征(不受分布变化影响的特征),则其对分布漂移具有鲁棒性。例如,在因果推断中,预测 $Y$ 应基于其直接原因,而非虚假相关。

4.2 本章未展开的因果方法

作者指出,因果推断是获得鲁棒性的重要途径,但详细内容在第36章。第19章只是引出这一思想。


5. 适应分布漂移(Adapting to Distribution Shifts)

当拥有少量目标域标记数据或无标记数据时,我们可以调整模型以更好地适应目标分布。

5.1 迁移学习(Transfer Learning)

5.1.1 预训练与微调(Pre-train and Fine-tune)

  • 在源域上训练一个模型 $f^s$,然后在目标域上微调。目标函数为: $$ f^t = \arg\min_f \hat{R}(f, \mathcal{D}^t) + \lambda \|f - f^s\| $$ 通常冻结大部分层,只调整最后几层,以防过拟合。
  • 实践中常用大型预训练模型(如Transformer)作为特征提取器,然后训练一个线性分类器。

5.1.2 提示调优(Prompt Tuning)/ 上下文学习(In-Context Learning)

  • 用于大语言模型:保持模型参数不变,仅通过文本提示(prompt)将目标任务信息注入模型。例如,在输入中附加几个示例,模型通过注意力机制自动学习任务。这可以视为一种隐式贝叶斯推断。

5.2 协变量漂移下的加权经验风险最小化(Weighted ERM)

如果目标域只有无标记数据 $x$,且假设协变量漂移成立($q(y|x) = p(y|x)$),则我们可以通过重要性权重调整源域损失:

$$ R(f,q) \approx \frac{1}{N}\sum_{n=1}^N w_n \ell(y_n, f(x_n)), \quad w_n = \frac{q(x_n)}{p(x_n)}. $$

权重可通过密度比估计得到,例如训练一个分类器区分源域和目标域样本,其输出logits可导出权重 $w_n = \exp(h(x_n))$(见式19.18)。

5.3 无监督域适应(Unsupervised Domain Adaptation, UDA)

当有源域标记数据和目标域无标记数据时,可通过域对抗训练等方法使特征提取器学习域不变特征。

域对抗学习(Domain Adversarial Learning):

  • 包含特征提取器 $f_\alpha$、域分类器 $c_\beta$(区分源/目标域)和标签分类器 $g_\gamma$。
  • 优化目标:最小化标签分类损失,同时最大化域分类损失,迫使特征提取器混淆域信息,只保留与标签相关的共同特征。 $$ \min_{\gamma}\max_{\alpha,\beta} \frac{1}{N_1+N_2}\sum \ell(d_n, c_\beta(f_\alpha(x_n))) + \frac{1}{N_1}\sum \ell(y_n, g_\gamma(f_\alpha(x_n))). $$

5.4 测试时适应(Test-Time Adaptation)

当模型部署后,我们只能访问当前测试样本(可能是一个batch),无法获得目标域训练数据。测试时适应方法通过无监督信号(如自监督任务、熵最小化)在线更新模型。

  • TTT(Test-Time Training):在训练时同时学习一个自监督任务(如旋转预测),测试时对每个batch更新模型以优化该自监督任务,从而调整特征提取器。
  • TENT(Test-Time Adaptation by Entropy Minimization):直接最小化模型对测试batch预测的熵,使预测更自信且一致。
  • MEMO(Marginal Entropy Minimization with One test point):对单个测试样本做数据增强,得到多个增强版本,然后最小化这些版本预测的平均熵,鼓励模型对同一输入的不同扰动输出一致且自信的预测。

5.5 标签漂移的适应(Blackbox Shift Estimation)

当只有目标域无标记数据且假设标签漂移成立($q(x|y) = p(x|y)$),可通过求解线性方程组估计目标域的标签分布 $q(y)$:

$$ \mu = C q, $$

其中 $\mu$ 是模型在目标域上预测的各类别频率,$C$ 是源域上的混淆矩阵($C_{ij} = p(\hat{y}=i|y=j)$)。解得 $q = C^{-1}\mu$ 后,可用贝叶斯公式调整预测:

$$ q(y|x) \propto p(y|x) \frac{q(y)}{p(y)}. $$

6. 从多个分布中学习(Learning from Multiple Distributions)

当训练数据来自多个不同的分布(环境)时,我们可以利用这些信息学习更通用的模型。

6.1 多任务学习(Multi-Task Learning)

  • 目标:同时学好 $J$ 个任务,每个任务有自己的数据集 $\mathcal{D}^j$ 和损失函数 $\ell_j$。
  • 方法:通常采用共享骨干网络加多个输出头的结构(shared trunk + task-specific heads)。但简单的共享可能不如独立训练,因为存在任务干扰(task interference)或负迁移(negative transfer)。需要设计更巧妙的交互机制,如“交叉缝合网络”(cross-stitch networks)。

6.2 域泛化(Domain Generalization)

  • 目标:在 $J$ 个源域上训练,期望模型能泛化到未知的目标域(不依赖目标域任何数据)。
  • 方法
    • 层次贝叶斯模型:假设每个域的模型参数 $w^j$ 来自一个共同的先验 $p(w|\theta)$,目标域参数也由该先验生成(图19.13)。这鼓励参数共享。
    • 但许多研究表明,简单的经验风险最小化(将所有源域数据合并训练)往往能取得和复杂方法相当的性能,域泛化仍是一个开放挑战。

6.3 不变风险最小化(Invariant Risk Minimization, IRM)

  • 动机:寻找一个在所有环境中都最优的预测器,且该预测器仅依赖于因果特征,而不是环境特定的虚假关联。
  • 优化目标: $$ \begin{aligned} \min_{f\in\mathcal{F}} & \sum_{j=1}^J \frac{1}{N_j}\sum_{n=1}^{N_j} \ell(y_n^j, f(x_n^j)) \\ \text{s.t.} & f \in \arg\min_{g\in\mathcal{F}} \frac{1}{N_j}\sum_{n=1}^{N_j} \ell(y_n^j, g(x_n^j)) \quad \forall j. \end{aligned} $$ 即要求 $f$ 不仅是所有环境平均最优,而且在每个环境中也是最优的。这迫使 $f$ 使用跨环境稳定的特征。
  • 局限性:后续研究表明,IRM 在实践中并不总是优于基线,且理论上也存在一些问题(如对抗协变量漂移时效果不佳)。

6.4 元学习(Meta-Learning)

  • 目标:学习一个“学习算法”,使得在新任务上仅用少量样本就能快速适应。这可以看作在多个任务上训练一个元学习器,每个任务分为支持集(训练)和查询集(测试)。
  • 层次贝叶斯视角:每个任务有任务特定的参数 $w^j$,共享全局参数 $w^0$。元学习的目标是最大化查询集上的预测对数似然,积分掉任务参数: $$ \mathcal{L}_{\text{meta}} = \frac{1}{MJ} \sum_{m=1}^M \sum_{j=1}^J \log \left( \frac{1}{S} \sum_{s=1}^S p(\tilde{y}_m^j | \tilde{x}_m^j, w_s^j) \right). $$
  • 代表性方法
    • 神经过程(Neural Processes):用神经网络直接学习从支持集到预测分布的映射。
    • MAML(Model-Agnostic Meta-Learning):通过一步或多步梯度更新得到任务参数。
    • 原型网络(Prototypical Networks):用每个类的特征原型进行分类。

7. 持续学习(Continual Learning)

持续学习研究模型如何从非平稳的数据流中不断学习,同时避免遗忘过去的知识。

7.1 领域漂移(Domain Drift)与概念漂移(Concept Drift)

  • 领域漂移:输入分布 $p_t(x)$ 随时间变化,但映射 $f_t(x)$ 不变。例如自动驾驶从白天到夜晚。
  • 概念漂移:映射 $f_t(x)$ 随时间变化,但输入分布 $p_t(x)$ 不变。例如法律条款变更导致行为分类改变。

7.2 类别增量学习(Class Incremental Learning)

  • 场景:新类别随时间逐步出现。模型需要不断扩展输出空间,同时保留对旧类别的识别能力。
  • 常见设定
    • 任务已知(task-aware):训练时知道任务边界,测试时可能已知或未知任务ID。
    • 任务未知(task-agnostic):更现实,但更具挑战。
  • 主要挑战灾难性遗忘(catastrophic forgetting)——学习新任务导致旧任务性能急剧下降。
  • 评估指标
    • 前向迁移(Forward Transfer):过去任务对新任务学习的促进作用。
    • 后向迁移(Backward Transfer):新任务学习对旧任务性能的提升。
  • 解决方法
    • 正则化方法:如弹性权重巩固(EWC,见第17章17.5.1),通过保护重要参数权重。
    • 记忆方法:存储部分旧样本(经验回放)或生成伪样本。
    • 架构方法:动态增加网络容量以容纳新任务。

7.3 在线学习(Online Learning)

  • 场景:数据以流式到达,每次收到一个样本 $(x_t, y_t)$,模型预测后立即更新,并评估累积损失。
  • 目标:最小化总损失 $\sum_{t=1}^T \ell(\hat{p}_{t|t-1}, y_t)$。这等价于最大化条件边际似然(序贯预测似然)。
  • 与持续学习的区别:在线学习更关注单步预测性能,而持续学习通常关注所有任务上的测试性能。

8. 对抗样本(Adversarial Examples)

对抗样本是故意构造的、与原始输入“感知相似”但能导致模型误分类的输入。这是分布漂移的一种极端形式——由攻击者故意制造。

8.1 白盒攻击(White-Box Attacks)

  • 假设:攻击者知道模型参数 $\theta$。
  • 目标:在输入 $\ell_p$ 范数约束下,最大化损失(非定向)或最大化目标类别概率(定向): $$ x_{\text{adv}} = \underset{x'\in \Delta(x)}{\arg\max} \mathcal{L}(x', y; \theta). $$
  • 常见方法
    • 快速梯度符号法(FGSM):单步梯度上升,$\delta = \epsilon \operatorname{sign}(\nabla_x \log p(y|x))$。
    • 投影梯度下降(PGD):多步迭代,每一步投影回约束球内。

8.2 黑盒攻击(Black-Box Attacks)

  • 假设:攻击者不知道模型参数,只能查询模型的输出。
  • 方法
    • 进化算法:对随机噪声图像进行演化,直至模型给出高置信度的预测(愚弄图像,fooling images)。
    • 单像素攻击:仅修改一个像素($\ell_0$ 约束)。
    • 替代模型攻击:训练一个可微分的替代模型,在其上生成对抗样本,这些样本往往能迁移到原始模型。

8.3 真实世界中的对抗攻击

威胁模型往往比 $\ell_p$ 范数更复杂,如图像可能包含背景物体、不同字体等。攻击者可以手工设计输入,使其在语义上符合要求(如广告图片),但仍能欺骗分类器。

8.4 防御:基于鲁棒优化的对抗训练

  • 对抗训练:在训练中求解最小-最大问题: $$ \min_\theta \mathbb{E}_{(x,y)\sim p} \left[ \max_{x'\in\Delta(x)} \mathcal{L}(x',y;\theta) \right]. $$ 内层最大化通常用PGD近似。
  • 认证鲁棒性:如随机平滑(randomized smoothing),通过向输入添加高斯噪声并取多数投票,可以证明模型在 $\ell_2$ 范数下的鲁棒性。

8.5 为什么模型存在对抗样本?

  • 高维空间中的测度集中:在高维空间中,即使是小的随机噪声,其范数也可能很大($\sigma\sqrt{d}$)。而决策边界附近的错误区域体积极小,但距离正常样本很近。因此,只要模型存在错误,就必然存在距离正常样本极近的对抗样本。这并非模型缺陷,而是高维几何的必然结果。

9. 与前后的联系

  • 第2章(概率):MMD、KL散度等用于分布漂移检测。
  • 第4章(图模型):因果图用于解释分布漂移的类型($X\to Y$ vs $Y\to X$)。
  • 第14章(预测模型):共形预测用于OOD检测,选择性预测的概念。
  • 第15-17章(线性模型、神经网络、贝叶斯神经网络):迁移学习中的预训练-微调、贝叶斯方法用于不确定性估计(如SGLD)。
  • 第18章(高斯过程):作为概率模型,可用于OOD检测(但存在似然悖论)。
  • 第36章(因果推断):深入讨论因果模型与分布漂移的关系,以及不变性、干预等概念。

10. 总结与重点

10.1 核心要点

  1. 分布漂移是现实机器学习的常态,不能简单假设i.i.d.。
  2. 四种基本漂移类型:协变量漂移、概念漂移、标签漂移、表现漂移,由因果方向决定。
  3. 检测方法包括双样本检验、OOD检测、选择性预测;贝叶斯模型能更好估计不确定性。
  4. 鲁棒性可通过不变性、分布鲁棒优化获得。
  5. 适应方法包括迁移学习、加权ERM、域适应、测试时适应;标签漂移有专门的估计方法。
  6. 多分布学习涵盖多任务学习、域泛化、IRM、元学习,旨在利用多个源域信息。
  7. 持续学习解决非平稳数据流中的灾难性遗忘问题。
  8. 对抗样本是攻击者故意制造的分布漂移,对抗训练是主要防御手段。

10.2 常见难点

  • 区分漂移类型:需要理解因果方向,否则容易混淆协变量漂移与标签漂移。
  • OOD检测中的似然悖论:高似然不一定是ID,需要结合其他信息(如密度比)。
  • 域泛化 vs 多任务学习:域泛化不依赖目标域数据,多任务学习目标是所有源域性能。
  • 对抗训练的计算成本:内层最大化需要多次迭代,训练昂贵。
  • 持续学习中的任务边界假设:现实场景往往任务边界未知,任务无关持续学习更具挑战。

10.3 学习建议

  • 动手实践:在简单数据集(如MNIST、Fashion-MNIST)上实现协变量漂移(加噪声)和标签漂移,比较不同适应方法的效果。
  • 阅读经典论文:如“Domain-Adversarial Training of Neural Networks”(Ganin et al.)、“Learning to Detect Concepts”(等)。
  • 关注评估指标:在持续学习中,不仅要看平均准确率,还要看前向/后向迁移、遗忘率。
  • 理解因果视角:推荐阅读第36章,加深对因果不变性的理解。

以上是对第19章“Beyond the iid assumption”的详细讲解。本章内容丰富,覆盖了从基础概念到前沿研究的广阔领域,是理解实际机器学习系统鲁棒性与适应性的关键。掌握本章内容,将为后续学习因果推断、强化学习等高级主题奠定坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第20章“Generative models: an overview”详细讲解

1. 引言:从预测到生成

在前面的章节中,我们主要讨论了预测模型(第14-18章),它们学习从输入 $x$ 到输出 $y$ 的映射,即条件分布 $p(y|x)$。这些模型在分类、回归等任务中表现出色,但它们关注的是“给定输入,输出是什么”,而不是数据本身是如何产生的。

生成模型则更进一步,它学习数据的联合概率分布 $p(x)$(或者有条件地 $p(x|c)$)。一旦我们掌握了数据的分布,我们就可以:

  • 生成新的、看起来真实的数据样本(例如,画一张逼真的猫的图片)。
  • 估计任意数据点的概率密度(例如,判断一张图片是否属于训练集的分布)。
  • 发现数据背后隐藏的结构(例如,找出图像中的潜在因子:姿势、颜色、形状)。
  • 填充缺失的数据(例如,修复破损的图片)。
  • 压缩数据(因为越可能的数据可以用越短的编码表示)。

本章作为第四部分“生成”的开篇,为后续各种深度生成模型(VAE、ARM、Flow、EBM、Diffusion、GAN)的学习提供了统一的概览和基础。

下图概括了本章的知识体系:

graph TD A[生成模型] --> B[生成模型的类型] A --> C[生成模型的目标] A --> D[生成模型的评估] A --> E[训练目标] B --> B1[深度生成模型 DGM] B --> B2[经典概率图模型 PGM] B1 --> B1a[VAE, ARM, Flows, EBM, Diffusion, GAN] B2 --> B2a[有向图, 无向图] C --> C1[生成数据] C --> C2[密度估计] C --> C3[插补] C --> C4[结构发现] C --> C5[潜空间插值] C --> C6[潜空间算术] C --> C7[生成设计] C --> C8[基于模型的强化学习] C --> C9[表示学习] C --> C10[数据压缩] D --> D1[基于似然] D --> D2[特征空间距离] D --> D3[精度与召回] D --> D4[统计双样本检验] D --> D5[使用预训练分类器的挑战] D --> D6[用样本训练分类器] D --> D7[评估过拟合] D --> D8[人类评估] E --> E1[最大似然估计 MLE] E --> E2["其他散度 (如 f-divergence)"]

2. 生成模型的类型

生成模型可以大致分为两类:经典的概率图模型(PGM)深度生成模型(DGM)。PGM通常使用简单的(往往是线性的)映射和结构化的隐变量(如图模型中的节点),而DGM则使用深度神经网络从单个潜向量 $z$ 映射到观测数据 $x$。当然,两者可以混合使用。

本章重点介绍DGM,但首先通过一个表格对比了常见生成模型的关键特性,这对理解后续各章非常有帮助。

2.1 深度生成模型的分类

表20.1总结了六种主要的深度生成模型,我们从几个维度来理解它们:

模型密度计算采样速度训练方式潜变量典型架构
VAE(变分自编码器)下界,快最大化下界(ELBO)有,通常压缩编码器-解码器
ARM(自回归模型)精确,快慢(逐点生成)最大似然序列网络(RNN, Transformer)
Flow(归一化流)精确,慢最大似然有,同维度可逆网络
EBM(基于能量的模型)近似,慢慢(需MCMC)近似最大似然可有可无判别式网络
Diffusion(扩散模型)下界慢(逐步去噪)最大化下界有,同维度编码器-解码器(U-Net)
GAN(生成对抗网络)极小极大博弈有,通常压缩生成器-判别器

关键概念解释

  • 密度计算:模型能否以及多快计算出给定数据点 $x$ 的概率密度 $p(x)$。VAE只能计算下界(ELBO),EBM需要近似,GAN根本没有定义密度。
  • 采样速度:从模型中生成一个新样本的速度。VAE和GAN非常快(一次前向传播),而ARM、Flow、Diffusion需要多次迭代。
  • 训练方式:如何学习模型参数。MLE(最大似然估计)是最直接的,但EBM和GAN需要特殊处理。
  • 潜变量:模型是否使用隐变量 $z$,以及 $z$ 的维度是否与 $x$ 相同(同维度)或更低(压缩)。ARM没有隐变量,Flow和Diffusion的隐变量与数据同维度,VAE和GAN通常有压缩的隐变量。
  • 架构:实现该模型的神经网络结构。

例子:要生成一张人脸图像,VAE会先将图像编码为低维向量,再解码;ARM会逐个像素预测;Flow会通过一系列可逆变换将噪声映射为图像;EBM会定义一个能量函数,然后通过MCMC采样;Diffusion会从噪声开始逐步去噪;GAN则通过生成器与判别器的对抗来生成图像。

2.2 深度生成模型的关系图

下图形象地展示了这些模型的核心思想:

graph LR subgraph VAE A[编码器] -->|z| B[解码器] --> x' end subgraph GAN C[生成器] --> x' D[判别器] --> 真/假 end subgraph Flow E[可逆变换] --> x' end subgraph Diffusion F[加噪过程] --> x_T G[去噪过程] --> x_0 end subgraph ARM H["x_1,...,x_{t-1}"] --> I[网络] --> x_t end subgraph EBM J[能量函数] --> K[概率] end

3. 生成模型的目标

生成模型有很多应用场景,本章列举了十个主要目标。

3.1 生成数据(Generative AI)

最直接的应用是创造新的数据样本。例如:

  • 无条件生成:训练一个模型 $p(x)$ 在名人脸上,然后从中采样,得到新的人脸(如图25.10)。
  • 条件生成:模型 $p(x|c)$ 根据条件 $c$ 生成数据。$c$ 可以是文本、图像、声音等。
    • 文本到图像:输入“一只长颈鹿穿着圣诞毛衣”,生成对应图像(图20.2、20.3)。
    • 图像到文本:输入图片,生成描述(图像字幕)。
    • 图像到图像:输入草图,生成彩色图;输入黑白图,着色;修复破损图像(图20.4)。
    • 语音到文本:自动语音识别(ASR)。
    • 英语到法语:机器翻译。
    • 文本续写:给定开头,生成后续文本(如GPT)。

注意:当条件 $c$ 是低维标签时,$p(y|x)$ 就是判别模型;但生成模型 $p(x|c)$ 允许有多个正确的输出(例如,一张草图可以对应多种着色方案),因此更难评估。

3.2 密度估计

计算一个数据点 $x$ 的概率 $p(x)$,可用于:

  • 异常检测:低概率的点可能是异常点。
  • 数据压缩:根据概率分配编码长度。
  • 模型比较:用测试集上的平均对数似然比较不同模型。

低维情况下可用核密度估计(KDE)

$$ p(x|\mathcal{D}) = \frac{1}{N} \sum_{n=1}^N K_h(x - x_n) $$

其中 $K_h$ 是带宽为 $h$ 的核函数(如高斯核)。图20.5展示了1D例子。

高维数据需要参数化密度模型 $p_\theta(x)$,如后面各章所述。

3.3 插补

填充缺失数据。例如,数据矩阵中有缺失值,可以用均值填充(图20.6),但更好的方法是学习生成模型 $p(X)$,然后采样 $p(X_m|X_o)$(给定观测值 $X_o$ 下缺失值 $X_m$ 的后验)。这在图像修复(图20.4)、医疗数据填补中很有用。

3.4 结构发现

如果模型有隐变量 $z$,我们可以通过贝叶斯规则计算后验 $p(z|x)$,从而发现数据背后的潜在结构。例如,通过测量蛋白质磷酸化状态(图20.7a),可以推断细胞信号网络结构(图20.7b)。这是因果发现和科学发现的典型例子。

3.5 潜空间插值

对于有编码器-解码器结构的模型(如VAE),我们可以将两个真实数据点 $x_1, x_2$ 编码为 $z_1, z_2$,然后在潜空间线性插值:$z = \lambda z_1 + (1-\lambda)z_2$,再解码得到 $x'$。这会产生融合了两个样本语义特征的过渡样本。图20.8展示了MNIST数字“7”到“2”的平滑过渡,图20.9展示了人脸属性的插值。

3.6 潜空间算术

在潜空间中,我们可以进行向量算术来改变属性。例如,在CelebA数据集上,计算“戴墨镜”和“不戴墨镜”的平均潜编码之差 $\Delta$,然后在任意图像的潜编码上加上或减去 $\Delta$,就可以增加或减少墨镜属性(图20.10)。这类似于 word2vec 中的“国王-男人+女人=女王”现象。

3.7 生成设计

利用生成模型自动设计新对象,如分子。训练VAE在分子表示(如SMILES字符串)上,然后在潜空间中进行贝叶斯优化(第6.6节),寻找具有特定性质(如溶解度)的新分子(图21.9)。

3.8 基于模型的强化学习

在强化学习中,如果真实环境交互昂贵,可以学习一个生成式的“世界模型” $p(s'|s,a)$,然后让智能体在“梦境”中规划和学习(第35.4节)。

3.9 表示学习

学习到的潜变量 $z$ 可以作为下游任务的特征。例如,将VAE的编码器用于分类任务的特征提取(第32章)。

3.10 数据压缩

根据香农源编码定理,最优编码长度是 $-\log p(x)$。因此,好的生成模型可以用于无损压缩。例如,bits-back编码(第5.4.3节)利用潜变量模型实现接近理论极限的压缩。


4. 评估生成模型

评估生成模型非常具有挑战性,因为我们需要衡量样本质量、多样性和泛化能力。本章介绍了多种评估方法。

4.1 基于似然的评估

最直接的是计算测试集上的负对数似然(NLL)

$$ \mathrm{NLL} = -\frac{1}{N}\sum_{n=1}^N \log q(x_n) $$

对于语言模型,常用困惑度 $\mathrm{perplexity} = 2^{\mathrm{NLL}}$。

对于连续数据(如图像),由于模型是连续密度,而数据是离散的(像素值0-255),直接计算似然会无限大。常用均匀去量化:给数据添加均匀噪声,将其转化为连续值,然后计算似然的下界。这保证了比较的公平性。

问题:似然与样本质量并不总是正相关。例如,一个混合了1%好样本和99%坏样本的模型,在高维空间中,似然几乎不受坏样本影响(因为坏样本区域概率极低)。反之,一个只记住了训练集的模型(如每个训练样本加微小噪声)可能样本质量很高,但似然很低(因为测试集过拟合)。因此,似然不是唯一标准。

4.2 特征空间距离

为了解决像素空间距离的语义不敏感性,通常将样本通过预训练分类器(如Inception网络)提取特征,然后比较特征分布的差异。

  • Inception Score (IS):衡量两个方面的质量:

    $$ \mathrm{IS} = \exp\left(\mathbb{E}_{p_\theta(x)}[D_{\mathrm{KL}}(p(y|x) \| p(y))]\right) $$

    其中 $p(y|x)$ 是分类器给出的类别概率,$p(y)$ 是边际类别分布。高IS要求每个样本容易分类(低熵),且整体类别分布均匀(高熵)。但IS只考虑类别,不关心类内多样性。

  • Fréchet Inception Distance (FID):假设特征服从高斯分布,计算两个高斯分布之间的Fréchet距离:

    $$ \mathrm{FID} = \|\mu_m - \mu_d\|^2 + \mathrm{tr}\left(\Sigma_d + \Sigma_m - 2(\Sigma_d\Sigma_m)^{1/2}\right) $$

    其中 $(\mu_d,\Sigma_d)$ 来自真实数据,$(\mu_m,\Sigma_m)$ 来自模型生成样本。FID越低越好,但它对样本数敏感,且依赖预训练分类器的特征。

  • Kernel Inception Distance (KID):用MMD(最大均值差异)代替Fréchet距离,对样本数更鲁棒。

4.3 精度与召回

FID是单一分数,难以区分“质量差”和“多样性不足”。精度和召回将两者分开:

  • 精度:生成样本中有多少在真实数据流形附近(衡量质量)。
  • 召回:真实数据流形中有多少被生成样本覆盖(衡量多样性)。

常用方法是基于特征空间的k近邻来估计。

4.4 统计双样本检验

将生成样本和真实样本视为两个分布,用统计检验(如MMD-based test)来判断它们是否相同。可以控制第一类错误,但计算成本高,适用于最终比较。

4.5 使用预训练分类器的挑战

预训练分类器可能是在不同数据集上训练的,其泛化能力有限,可能无法捕捉生成模型与真实数据之间的微妙差异。而且,生成模型的样本对于分类器是OOD数据,特征可能不可靠。

4.6 用模型样本训练分类器

一种更可靠的评估是下游任务评估:用生成样本(可能混合真实数据)训练一个分类器,看它在真实测试集上的表现。这直接度量了生成样本对下游任务的实用性。

4.7 评估过拟合

通过检查生成样本的最近邻(在特征空间)是否来自训练集,来判断模型是否只是记住了数据。图20.12展示了BigGAN的样本与训练集最近邻差异较大,表明没有过拟合。

4.8 人类评估

最终,生成的艺术或内容需要人类来判断质量。但人类评估主观、昂贵、难以标准化。


5. 训练目标

大多数生成模型基于最大似然估计(MLE)或其近似。MLE等价于最小化 $D_{\mathrm{KL}}(p_{\mathrm{data}} \| p_\theta)$。

然而,在高维连续空间中,数据往往位于低维流形上。这意味着真实分布 $p_{\mathrm{data}}$ 在大多数区域为0,模型 $p_\theta$ 必须将概率质量集中在流形上。如果模型用连续密度(如高斯)定义在整个空间上,它会将概率质量散布在流形周围,导致似然值不稳定且难以优化。这解释了为什么GAN、EBM等使用其他散度(如JS散度、Wasserstein距离)可能更合适。

核心难点:生成模型需要同时学习数据的流形结构流形上的密度。MLE强制模型在整个空间上归一化,而其他散度(如f-divergence)允许模型只关注流形附近。


6. 与前后的联系

  • 第1章(引言):介绍了本书的六大主题,生成是其中之一。
  • 第4章(图模型):经典PGM是生成模型的一种,本章为其提供了概览。
  • 第5章(信息论):交叉熵、KL散度、率失真理论是评估和训练生成模型的基础。
  • 第14章(预测模型):对比了判别模型与生成模型的目标。
  • 第21-26章:分别深入讲解VAE、ARM、Flow、EBM、Diffusion、GAN,本章是它们的导航图。
  • 第28-30章:经典潜变量模型(如因子分析、主题模型)也是生成模型,但本章更侧重于深度模型。
  • 第32章(表示学习):生成模型是表示学习的重要手段。

7. 总结与重点

7.1 核心要点

  • 生成模型建模数据的联合分布 $p(x)$ 或条件分布 $p(x|c)$。
  • 主要类型:VAE、ARM、Flow、EBM、Diffusion、GAN,各有优劣(密度、采样、训练)。
  • 应用广泛:生成数据、密度估计、插补、发现结构、潜空间操作、设计、压缩等。
  • 评估困难:似然不完美,需结合特征距离、精度/召回、下游任务、人类评估等多种方法。
  • 训练目标:MLE是基础,但高维连续数据下需考虑流形假设,其他散度可能更优。

7.2 常见难点

  • 理解不同生成模型的优缺点:特别是密度可计算性、采样速度、训练稳定性之间的权衡。
  • 似然与样本质量的关系:为什么高似然不一定意味着好样本?反之亦然。
  • 评估指标的选择:FID、IS、精度/召回分别侧重什么?如何根据应用选择?
  • 流形假设:为什么连续密度模型在高维空间会“犯傻”?去量化如何帮助似然计算?

7.3 学习建议

  1. 对比记忆:反复对照表20.1,理解每种模型的“基因”。
  2. 动手实践:用现有库(如PyTorch、TensorFlow)实现一个简单的生成模型(如VAE on MNIST),观察生成样本、计算似然。
  3. 阅读经典论文:每种模型的原始论文(VAE, PixelCNN, NICE/RealNVP, DDPM, GAN)能加深理解。
  4. 关注评估:多思考如何评价你生成的样本,尝试计算FID、IS,并观察它们与人类感知的相关性。
  5. 联系实际:思考生成模型在你所在领域的潜在应用,如药物设计、艺术创作、数据增强等。

本章为后续深入学习各种生成模型奠定了坚实的基础。理解这些基本概念后,你将能够更有效地选择、使用和改进生成模型。


《Probabilistic Machine Learning: Advanced Topics》第21章“Variational Autoencoders”详细讲解

1. 引言:从深度潜变量模型到变分自编码器

深度潜变量模型(Deep Latent Variable Model, DLVM)是一类生成模型,其核心思想是假设观测数据 $x$ 由一个低维的隐变量 $z$ 通过一个非线性映射生成:

$$ z \sim p(z), \quad x \sim p(x|z) = \text{ExpFamily}(x | d_\theta(z)) $$

其中 $d_\theta$ 是一个深度神经网络,称为解码器(decoder)。当先验 $p(z)$ 取高斯分布时,模型称为深度潜高斯模型(Deep Latent Gaussian Model, DLGM)。

这类模型在理论上很优美,但实际应用中面临两个主要困难:

  1. 后验推断 $p_\theta(z|x)$ 难以计算,因为它涉及积分 $p_\theta(x) = \int p_\theta(x|z)p(z)dz$。
  2. 边际似然 $p_\theta(x)$ 同样难以计算,无法直接进行最大似然估计。

变分自编码器(Variational Autoencoder, VAE)[Kingma & Welling, 2014] 提供了一种优雅的解决方案:它同时训练一个生成模型(解码器)和一个推断模型(编码器),并使用摊销变分推断(amortized variational inference)来近似后验。编码器 $q_\phi(z|x)$ 将每个数据点映射到一个高斯分布,通过最大化证据下界(ELBO)来联合优化生成参数 $\theta$ 和推断参数 $\phi$。

本章将深入讲解VAE的基本原理、多种扩展、训练技巧以及与自编码器的对比。下图概括了本章的知识体系:

graph TD A[变分自编码器 VAE] --> B[VAE基础] A --> C[VAE泛化] A --> D[避免后验坍塌] A --> E[分层VAE] A --> F[向量量化VAE] B --> B1[建模假设] B --> B2["模型拟合 ELBO + 重参数化"] B --> B3[与AE比较] B --> B4[优化增强空间] C --> C1[β-VAE] C --> C2[InfoVAE] C --> C3[多模态VAE] C --> C4[半监督VAE] C --> C5[序列VAE] D --> D1[KL annealing] D --> D2[Free bits] D --> D3[Skip connections] D --> D4[Improved VI] D --> D5[InfoVAE] E --> E1[Hierarchical VAE] E --> E2[VDVAE] E --> E3[与AR模型联系] F --> F1[VQ-VAE] F --> F2[VQ-VAE-2] F --> F3["离散VAE (Gumbel-Softmax)"] F --> F4[VQ-GAN]

2. VAE基础

2.1 建模假设

一个标准的VAE定义如下:

  • 先验:$p_\theta(z) = \mathcal{N}(z|\mathbf{0},\mathbf{I})$(通常取标准高斯)。
  • 解码器(生成模型):$p_\theta(x|z) = \prod_{d=1}^D p(x_d|z)$,其中每个因子可以是指数族分布。例如对于二值数据,$p_\theta(x|z) = \prod_{d=1}^D \mathrm{Ber}(x_d|\sigma(d_\theta(z)_d))$,其中 $\sigma$ 是sigmoid函数,$d_\theta$ 是一个神经网络。
  • 编码器(推断模型):$q_\phi(z|x) = \mathcal{N}(z|\mu_\phi(x), \mathrm{diag}(\exp(\ell_\phi(x))))$,其中 $\ell_\phi(x)$ 输出对数方差。编码器网络 $e_\phi(x) = (\mu_\phi(x), \ell_\phi(x))$ 将输入映射到高斯分布的参数。

这种结构被称为“摊销推断”,因为推断的计算被摊销到所有数据点上,而不是对每个数据点单独优化。

2.2 模型拟合:ELBO与重参数化技巧

VAE的训练目标是最小化真实后验与近似后验之间的KL散度,但直接优化 $D_{\mathrm{KL}}(q_\phi(z|x)\|p_\theta(z|x))$ 是不可行的,因为涉及真实后验。转而最大化证据下界(ELBO):

$$ \log p_\theta(x) \ge \mathcal{L}(\theta,\phi;x) = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{\mathrm{KL}}(q_\phi(z|x)\|p_\theta(z)). $$

ELBO 由两项组成:

  • 重建项 $\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)]$:鼓励解码器能根据隐变量 $z$ 重建 $x$。
  • 正则项 $D_{\mathrm{KL}}(q_\phi(z|x)\|p_\theta(z))$:鼓励编码器输出的后验接近先验,防止过拟合。

为了对 ELBO 关于 $\phi$ 求梯度,需要使用重参数化技巧(reparameterization trick)。假设 $q_\phi(z|x) = \mathcal{N}(z|\mu,\sigma^2)$,我们可以写:

$$ z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(\mathbf{0},\mathbf{I}). $$

这样,期望 $\mathbb{E}_{q_\phi(z|x)}[f(z)] = \mathbb{E}_{\epsilon}[f(\mu+\sigma\odot\epsilon)]$,梯度可以交换期望与求导,从而使用标准的反向传播。

算法21.1给出了拟合VAE的伪代码(以伯努利似然为例)。核心步骤是:采样 $x$,采样 $\epsilon$,计算 $z = \mu + \sigma\epsilon$,然后计算重建损失和KL项,最后更新 $\theta,\phi$。

2.3 VAE与自编码器的比较

确定性自编码器(AE)与VAE的主要区别:

  • AE 的目标是重建损失,没有KL正则项。
  • AE 的编码器是确定性的,只输出一个点估计 $z = e_\phi(x)$,而不是分布。

比较实验(以 CelebA 数据集为例):

  • 无条件生成:从先验 $z\sim\mathcal{N}(\mathbf{0},\mathbf{I})$ 采样后解码,VAE能生成合理的人脸,而AE只能重构训练集中的编码,随机输入会生成无意义图像(图21.2)。
  • 重建:AE重建更清晰,VAE重建较模糊(图21.3)。这是因为VAE的KL项迫使后验接近先验,导致不同输入可能映射到重叠的潜空间区域,解码器需输出这些输入的平均值,从而产生模糊。

引入 $\beta$-VAE($\beta<1$)可以降低KL惩罚,使重建更清晰,但会偏离标准VAE的生成能力。

2.4 VAEs优化增强空间

通过定义联合分布 $q_{\mathcal{D},\phi}(x,z) = p_{\mathcal{D}}(x)q_\phi(z|x)$,可以导出ELBO的不同形式:

$$ \mathcal{L} = -D_{\mathrm{KL}}(q_{\mathcal{D},\phi}(x,z)\|p_\theta(x,z)) + \text{const}. $$

进一步分解可得:

$$ \mathcal{L} \triangleq -D_{\mathrm{KL}}(p_{\mathcal{D}}(x)\|p_\theta(x)) - \mathbb{E}_{p_{\mathcal{D}}(x)}[D_{\mathrm{KL}}(q_\phi(z|x)\|p_\theta(z|x))]. $$

这表明最大化ELBO同时最小化两个KL:数据分布与模型边际分布的KL,以及后验近似的KL。由于第一个KL由MLE处理,第二个KL受限于后验族,两者可能存在冲突。

另一种形式涉及聚合后验 $q_{\mathcal{D},\phi}(z) = \int p_{\mathcal{D}}(x)q_\phi(z|x)dx$:

$$ \mathcal{L} \triangleq -D_{\mathrm{KL}}(q_{\mathcal{D},\phi}(z)\|p_\theta(z)) - \mathbb{E}_{q_{\mathcal{D},\phi}(z)}[D_{\mathrm{KL}}(q_\phi(x|z)\|p_\theta(x|z))]. $$

这里第一项鼓励聚合后验匹配先验,第二项鼓励重建。在维数很高时,第二项占主导,可能导致学习到的后验不是真实后验的良好近似。


3. VAE的泛化

3.1 $\beta$-VAE

$\beta$-VAE 修改ELBO为目标:

$$ \mathcal{L}_\beta = -\underbrace{\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)]}_{\text{重建项}} + \beta \underbrace{D_{\mathrm{KL}}(q_\phi(z|x)\|p_\theta(z))}_{\text{KL项}}. $$

当 $\beta=1$ 时恢复标准VAE,$\beta=0$ 时退化为确定性AE,$\beta>1$ 时更强调正则化。

  • 率失真权衡:$\beta$ 控制潜变量承载的信息量(率)。$\beta<1$ 允许存储更多信息(率高),重建更清晰;$\beta>1$ 导致压缩更强,重建模糊,但可能促进解耦(disentanglement)。

  • 解耦:指每个潜变量维度独立地控制数据的一个语义因子(如位置、旋转、颜色)。$\beta$-VAE 通过减小总相关(total correlation)来鼓励解耦:

    $$ \mathrm{TC}(z) = \sum_k H(z_k) - H(z) = D_{\mathrm{KL}}\left(p(z)\|\prod_k p(z_k)\right). $$

    当 $\beta>1$ 时,对聚合后验施加更强的独立性压力。但非线性潜变量模型不可识别,仅靠 $\beta$ 不能保证恢复真实因子,还需合适的归纳偏置。

  • 与信息瓶颈的联系:$\beta$-VAE 等价于无监督信息瓶颈,其中 $\beta$ 控制潜变量与输入之间的互信息惩罚。

3.2 InfoVAE

标准VAE存在两个问题:当解码器强大时潜变量可能被忽略(后验坍塌);后验近似与真实后验可能失配。InfoVAE 提出更一般的目标:

$$ \mathcal{L}_{\text{InfoVAE}} = -\lambda D_{\mathrm{KL}}(q_\phi(z)\|p_\theta(z)) - \mathbb{E}_{q_\phi(z)}[D_{\mathrm{KL}}(q_\phi(x|z)\|p_\theta(x|z))] + \alpha \mathbb{I}_q(x;z). $$

其中 $\mathbb{I}_q(x;z)$ 是互信息。直接优化互信息困难,但可用其下界。当 $\alpha=1-\lambda$ 时退化为 $\beta$-VAE;当 $\alpha=1,\lambda=1$ 且使用JS散度时,得到对抗自编码器(AAE)。

一个实用的特例是 MMD VAE,它用最大均值差异(MMD)代替聚合后验与先验的KL:

$$ \mathcal{L} = \mathbb{E}_{p_{\mathcal{D}}(x)}[\mathbb{E}_{q_\phi(z|x)}[-\log p_\theta(x|z)]] + \mathrm{MMD}(q_\phi(z), p_\theta(z)). $$

MMD可用核函数高效计算(式21.38),避免了KL的显式计算,且有助于防止后验坍塌。

3.3 多模态VAE

当数据由多个模态组成(如图像和文本),且假设它们在给定潜变量 $z$ 下条件独立,则生成模型为:

$$ p_\theta(x_1,\ldots,x_M,z) = p(z)\prod_{m=1}^M p_\theta(x_m|z). $$

挑战:训练时部分模态可能缺失;推理时需根据任意子集计算后验。利用条件独立性,精确后验可表示为专家乘积:

$$ p(z|X) \propto p(z)\prod_{m} \frac{p(z|x_m)}{p(z)} \approx p(z)\prod_{m} \tilde{q}(z|x_m). $$

若每个专家 $\tilde{q}(z|x_m)$ 取高斯,则乘积仍是高斯(式21.47)。训练时需同时优化联合ELBO、各单模态ELBO和随机子集的ELBO(式21.48),以实现对不同缺失模式的泛化。

3.4 半监督VAE

半监督学习利用少量有标签数据 $\mathcal{D}_L = \{(x_n,y_n)\}$ 和大量无标签数据 $\mathcal{D}_U = \{(x_n)\}$。M2模型 引入类别变量 $y$ 和连续潜变量 $z$:

  • 生成模型:$p_\theta(x,y,z) = p_\theta(y)p(z)p_\theta(x|y,z)$。
  • 有标签数据:用 $q_\phi(z|x,y)$ 计算ELBO $\mathcal{L}(x,y)$。
  • 无标签数据:用 $q_\phi(z,y|x) = q_\phi(z|x)q_\phi(y|x)$ 计算ELBO $\mathcal{U}(x)$,其中 $q_\phi(y|x)$ 扮演分类器角色。
  • 总目标:$\mathcal{L}_{\text{total}} = \mathbb{E}_{(x,y)\sim\mathcal{D}_L}[\mathcal{L}(x,y)] + \mathbb{E}_{x\sim\mathcal{D}_U}[\mathcal{U}(x)] + \alpha \mathbb{E}_{(x,y)\sim\mathcal{D}_L}[-\log q_\phi(y|x)]$,最后一项显式训练分类器。

3.5 序列VAE

对于文本、草图等序列数据,VAE 需使用序列编码器和解码器。

  • VAE-RNN:编码器用双向RNN得到固定维向量作为高斯参数,解码器用RNN(将 $z$ 作为初始状态或每步输入)。可用于句子生成(图21.7a)、草图生成(图21.8)、分子设计(图21.9)。
  • Transformer VAE:用BERT作为编码器,GPT作为解码器,并将潜向量作为额外输入(拼接或交叉注意力)。可处理长文本。

后验坍塌在序列VAE中尤为严重,因为RNN/Transformer解码器本身就非常强大,可能不依赖 $z$。常用KL退火或InfoVAE缓解。


4. 避免后验坍塌

后验坍塌指解码器过于强大,导致ELBO最优时潜变量 $z$ 与 $x$ 独立,即 $q_\phi(z|x) \approx p_\theta(z)$。此时潜变量不携带任何关于 $x$ 的信息,模型退化为自回归模型。原因在于强大的解码器可以不依赖 $z$ 而生成数据,使KL项被驱动到零。

解决方法:

  1. KL退火:训练初期将KL项权重从0逐渐增加到1,让模型先学会用潜变量。
  2. Free bits:为每个潜变量维度设置KL下限,如果KL小于阈值则不计入损失,确保每个维度至少携带 $\lambda$ 比特信息。
  3. 跳跃连接:在解码器中添加从输入到输出的跳跃连接(skip-VAE),使信息更容易流过潜变量。
  4. 改进变分推断:更精确的后验近似(如更灵活的 $q$ 族)可以保持信息。
  5. 替代目标:InfoVAE 显式最大化互信息 $I(x;z)$,从根本上防止坍塌。

5. 分层VAE

5.1 模型定义

分层VAE(Hierarchical VAE, HVAE)引入多个随机层 $z_1,\ldots,z_L$,生成过程为:

$$ p_\theta(x,z_{1:L}) = p_\theta(z_L) \left[ \prod_{l=L-1}^{1} p_\theta(z_l|z_{l+1:L}) \right] p_\theta(x|z_{1:L}). $$

通常采用自顶向下(top-down)结构:高层捕获全局信息,低层捕获细节。推断网络也采用自顶向下结构,依次计算 $q_\phi(z_l|z_{>l},x)$。

5.2 VDVAE(Very Deep VAE)

VDVAE [Child, 2021] 使用了多达78个随机层,每层对应不同空间分辨率(图21.11-21.12)。高层学习全局结构,低层学习纹理细节。这种模型在样本质量和似然上超越了强自回归模型(如PixelCNN),且采样速度更快(因为低层可并行生成)。

5.3 与自回归模型的联系

任何自回归模型都可视为一个退化VAE,其中潜变量直接复制输入(图21.14左)。分层VAE通过树状结构实现了部分条件独立性,允许并行生成,打破了自回归的顺序瓶颈。

5.4 变分剪枝与稳定训练

分层VAE可能遭遇高层被忽略的问题(变分剪枝)。常用KL平衡系数(式21.70-21.71)确保各层信息均匀。训练时还需注意梯度裁剪、谱正则化等技巧以保持稳定。


6. 向量量化VAE

6.1 VQ-VAE

VQ-VAE 将潜变量离散化,用代码本(codebook)$\{e_k\}_{k=1}^K$ 表示。编码器输出连续向量 $z_e(x)$,然后通过最近邻查找得到离散索引 $k$ 和对应的代码向量 $z_q = e_k$。解码器根据 $z_q$ 重建 $x$。

由于离散采样不可导,使用直通估计器(straight-through estimator)将梯度从 $z_q$ 复制到 $z_e$。训练损失包含三部分:

$$ \mathcal{L} = -\log p(x|z_q(x)) + \|\mathrm{sg}(z_e(x)) - e\|_2^2 + \beta \|z_e(x) - \mathrm{sg}(e)\|_2^2. $$

其中 $\mathrm{sg}$ 表示停止梯度,第二项更新代码本,第三项(承诺损失)迫使编码器靠近代码本。

6.2 学习先验

训练好VQ-VAE后,可将数据集中的图像转化为离散代码序列,然后用自回归模型(如PixelCNN、Transformer)学习序列上的先验 $p(z)$,进而无条件生成新图像(图21.17)。

6.3 VQ-VAE-2

VQ-VAE-2 引入分层结构:第一个潜层编码64×64的离散图,第二个潜层编码32×32的离散图(图21.17)。高层捕捉全局结构,低层处理细节。分别用不同的自回归模型建模先验。

6.4 离散VAE

Gumbel-Softmax放松离散分布,实现可微的离散VAE。通过温度参数控制软化的程度,温度→0时趋近于one-hot。ELBO中的KL项可精确计算,采样时仍用重参数化。

6.5 VQ-GAN

VQ-GAN 用GAN损失感知损失替代VQ-VAE中的MSE重建损失,使重建图像更清晰。同时用Transformer建模先验。该模型在图像合成任务中表现出色。


7. 与前后章节的联系

  • 第2章(概率):高斯分布、KL散度、指数族。
  • 第3章(统计):贝叶斯推断、共轭先验(VAE的先验是高斯)。
  • 第6章(优化):重参数化技巧、SGD、ELBO优化。
  • 第10章(变分推断):摊销推断、ELBO、重参数化,是VAE的理论基础。
  • 第14章(预测模型):VAE作为生成模型,与判别模型对比。
  • 第16章(深度神经网络):编码器和解码器是DNN,CNN、RNN、Transformer架构。
  • 第20章(生成模型概览):VAE是深度生成模型的一种,本章是其实例化。
  • 第22-26章:VAE与ARM、Flow、EBM、Diffusion、GAN等生成模型有交叉(如VQ-VAE与ARM结合)。
  • 第28章(潜变量模型):VAE是经典潜变量模型的深度版本。
  • 第32章(表示学习):VAE用于学习可解释的表示。

8. 总结与重点

8.1 核心要点

  • VAE 通过摊销变分推断训练深度潜变量模型,同时学习编码器和解码器。
  • ELBO 平衡重建质量与后验正则,是训练的关键目标。
  • 重参数化技巧 使得对推断网络的梯度可计算。
  • β-VAE 通过调整KL权重控制信息率与重建质量的平衡,并可能促进解耦。
  • InfoVAE 引入互信息项,缓解后验坍塌,MMD VAE 是其高效实现。
  • 后验坍塌 是VAE训练的常见问题,可通过KL退火、free bits、跳跃连接、InfoVAE等方法缓解。
  • 分层VAE 通过多级潜变量提升模型容量,VDVAE 在图像生成上超越自回归模型。
  • VQ-VAE 引入离散潜变量,结合自回归先验,实现高质量生成,VQ-GAN 进一步改善视觉质量。

8.2 常见难点

  • 理解 ELBO:为什么最大化下界等价于最小化KL?
  • 重参数化技巧:为什么不能直接对 $q_\phi(z|x)$ 采样求梯度?
  • 后验坍塌机制:强大的解码器如何使ELBO退化解?
  • β-VAE 与解耦:为什么 β>1 有助于解耦?不可识别性意味着什么?
  • VQ-VAE 训练:直通估计器如何工作?代码本如何更新?

8.3 学习建议

  1. 实现一个简单VAE:在MNIST或Fashion-MNIST上动手实现,观察重建样本和潜空间插值。
  2. 比较β值:尝试不同 β,观察重建质量与潜变量解耦程度。
  3. 处理后验坍塌:在文本生成任务上实现VAE-RNN,尝试KL退火,观察效果。
  4. 尝试分层VAE:用现有库(如PyTorch)搭建简单的两层级VAE,比较与单层VAE的性能。
  5. 研究VQ-VAE:理解代码本更新机制,尝试用PixelCNN作为先验生成图像。
  6. 阅读经典论文:VAE原始论文 [Kingma & Welling, 2014]、β-VAE [Higgins et al., 2017]、VQ-VAE [van den Oord et al., 2017]、VDVAE [Child, 2021]。

本章全面介绍了变分自编码器及其众多变体,是理解深度生成模型和表示学习的关键章节。掌握VAE的原理和扩展,将为学习后续更复杂的生成模型(如扩散模型、GAN)奠定坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第22章“Autoregressive models”详细讲解

1. 引言:从概率分解到自回归模型

自回归模型(Autoregressive Model, ARM)是一类生成模型,其核心思想是使用概率论中的链式法则将联合概率分解为一系列条件概率的乘积。对于一组随机变量 $x_1, x_2, \dots, x_T$(通常是有序的,如时间序列中的时刻、文本中的词序列、图像中的像素位置),我们有:

$$ p(\boldsymbol{x}_{1:T}) = p(x_1)p(x_2|x_1)p(x_3|x_1,x_2)\cdots = \prod_{t=1}^{T} p(x_t | \boldsymbol{x}_{1:t-1}) $$

这种分解总是成立,并且对应一个全连接有向无环图(fully connected DAG),其中每个节点依赖于所有前驱节点(见图22.1)。如果我们能有效地建模每个条件分布 $p(x_t | \boldsymbol{x}_{1:t-1})$,那么我们就得到了一个完整的生成模型。

优点:易于计算和优化精确的似然(因为似然是条件概率的乘积)。
缺点:生成样本时必须顺序计算,速度慢;且模型不学习紧凑的潜在表示(与VAE相反)。

本章将介绍如何用神经网络实现这些条件分布,从简单的神经自回归密度估计器(NADE)开始,再到更强大的因果卷积网络(如PixelCNN)和Transformer,最后简要介绍大语言模型(LLM)及其应用。

下图概括了本章的知识体系:

graph TD A[自回归模型 ARM] --> B[基于全连接神经网络的ARM] A --> C[基于因果卷积的ARM] A --> D[基于Transformer的ARM] B --> B1[NADE] B --> B2[RNADE] B --> B3[MADE] C --> C1["1D因果CNN (WaveNet)"] C --> C2["2D因果CNN (PixelCNN)"] D --> D1[因果自注意力] D --> D2[GPT系列] D --> D3["DALL-E / Parti"] D --> D4[LLM] style A fill:#f9f,stroke:#333 style B fill:#bbf,stroke:#333 style C fill:#bbf,stroke:#333 style D fill:#bbf,stroke:#333

2. 神经自回归密度估计器(NADE)

2.1 基本思想

最直接的方式是用一个广义线性模型(如逻辑回归)来表示每个条件分布 $p(x_t | \boldsymbol{x}_{1:t-1})$,但这样模型容量有限。神经自回归密度估计器(Neural Autoregressive Density Estimator, NADE)[Larochelle & Murray, 2011] 使用一个单隐层神经网络来建模每个条件概率。对于二元数据,第 $t$ 个变量的条件概率为:

$$ p(x_t = 1 | \boldsymbol{x}_{1:t-1}) = \sigma\left( \boldsymbol{V}_{t,\cdot} \cdot \boldsymbol{h}_t + b_t \right), \quad \boldsymbol{h}_t = \sigma\left( \boldsymbol{W}_{t,\cdot} \cdot \boldsymbol{x}_{1:t-1} + \boldsymbol{c}_t \right) $$

其中 $\boldsymbol{V}, \boldsymbol{W}$ 是权重矩阵,$\boldsymbol{b}, \boldsymbol{c}$ 是偏置,$\sigma$ 是激活函数。注意每个 $t$ 有自己的参数集,导致参数数量随 $T$ 线性增长,且训练时每个条件网络要分别计算。

2.2 RNADE:连续数据的NADE

对于连续数据,可以将条件分布建模为混合高斯(Mixture of Gaussians)。RNADE(Real-valued Neural Autoregressive Density Estimator)[Uria et al., 2013] 就是这种扩展:

$$ p(x_t | \boldsymbol{x}_{1:t-1}) = \sum_{k=1}^{K} \pi_{t,k} \mathcal{N}(x_t | \mu_{t,k}, \sigma_{t,k}^2) $$

参数 $(\pi_{t,k}, \mu_{t,k}, \sigma_{t,k})$ 由网络 $f_t(\boldsymbol{x}_{1:t-1})$ 生成。

2.3 MADE:掩码自编码器

为了克服NADE中每个 $t$ 要独立计算的问题,MADE(Masked Autoencoder for Density Estimation)[Germain et al., 2015] 提出用一个共享的自编码器结构同时输出所有条件概率。通过对权重矩阵施加适当的掩码,确保每个输出单元 $t$ 只依赖于输入中的前 $t-1$ 个变量。这样一次前向传播就能计算出所有 $p(x_t | \boldsymbol{x}_{1:t-1})$,极大提高了效率。MADE可以看作是一种“一次性”的自回归密度估计器。

例子:对于 $T=4$ 的二元数据,MADE的输入是 $(x_1, x_2, x_3, x_4)$,输出是四个概率值 $p_1, p_2, p_3, p_4$,其中 $p_1$ 依赖于输入中的空集(即常数),$p_2$ 只依赖于 $x_1$,$p_3$ 依赖于 $x_1, x_2$,$p_4$ 依赖于 $x_1, x_2, x_3$。通过掩码实现这种依赖关系。

MADE是许多现代自回归模型的基础。


3. 因果卷积神经网络(Causal CNNs)

当变量具有自然顺序(如时间、空间网格)时,可以用卷积神经网络高效地捕获局部依赖关系。

3.1 一维因果卷积(WaveNet)

考虑一维序列数据(如音频波形)。因果卷积确保输出 $y_t$ 只依赖于当前及之前的输入 $x_{\le t}$,而不依赖于未来。标准的1D卷积可以通过适当填充和移位实现因果性。例如,滤波器长度为 $k$,输出 $y_t$ 由输入 $x_{t-k+1:t}$ 卷积得到,但如果我们在时间轴上使用屏蔽(mask),只允许使用 $x_{\le t}$,就实现了因果卷积。

WaveNet [van den Oord et al., 2016] 是一个用于原始音频生成的自回归模型,它使用堆叠的因果卷积层,并引入膨胀卷积(dilated convolution)来指数级增大感受野,从而捕获长程依赖。WaveNet的条件模型 $p(x_t | \boldsymbol{x}_{1:t-1}, \boldsymbol{c})$ 可以用于文本到语音合成(TTS)。

3.2 二维因果卷积(PixelCNN)

对于图像,自然顺序是光栅扫描(raster scan):逐行、逐列地生成像素。PixelCNN [van den Oord et al., 2016] 使用2D因果卷积实现:

$$ p(\boldsymbol{x} | \boldsymbol{\theta}) = \prod_{r=1}^{R} \prod_{c=1}^{C} p(x_{r,c} | \boldsymbol{x}_{1:r-1,1:C}, \boldsymbol{x}_{r,1:c-1}) $$

即生成第 $(r,c)$ 个像素时,依赖于所有之前行(全部列)以及当前行之前的列。为了在卷积中实现这种依赖,需要对卷积核进行掩码,区分“上文”和“下文”。PixelCNN引入了两种掩码:一种是“A型掩码”,用于第一个卷积层,禁止使用当前像素本身;另一种是“B型掩码”,用于后续层,允许使用当前像素但只依赖之前的信息。此外,为了避免感受野中的“盲点”,PixelCNN++等改进版本使用了垂直栈水平栈两个独立的卷积路径,分别处理行间和行内依赖。

PixelCNN++ [Salimans et al., 2017] 进一步改进,使用离散化混合逻辑分布(discretized logistic mixture)作为输出分布,并引入更多技巧,如短连接、Dropout等,显著提升图像生成质量。

PixelRNN [van den Oord et al., 2016] 用循环神经网络(如LSTM)替代卷积,但速度较慢。

Subscale Pixel Network [Menick & Kalchbrenner, 2019] 提出按位平面(bit-plane)顺序生成,先产生高位信息,再产生低位细节,允许并行生成。


4. Transformer

4.1 自注意力机制与因果掩码

Transformer [Vaswani et al., 2017] 的核心是自注意力(self-attention),它允许模型动态地关注输入序列的不同位置。对于自回归生成,我们需要确保预测 $y_t$ 时只能使用之前的位置,因此使用因果掩码(causal mask)——在注意力权重矩阵中,将未来位置的权重设为 $-\infty$,从而在softmax后忽略它们。

在Transformer解码器中,输入是已生成的序列,经过嵌入层后,叠加位置编码。然后经过多个解码器层,每层包括:

  • 因果自注意力(masked multi-head attention)
  • 前馈网络(feed-forward network)

最后一层的输出经过线性变换和softmax得到下一个token的概率分布。

训练时,所有位置的预测可以并行计算(teacher forcing),因为目标序列已知。生成时则必须逐个token进行。

4.2 GPT系列

GPT(Generative Pre-trained Transformer)[Radford et al., 2018] 是OpenAI提出的仅解码器(decoder-only)Transformer,用于文本生成。它在大规模语料上预训练,然后可以微调或直接用于下游任务。GPT-2 [Radford et al., 2019] 和 GPT-3 [Brown et al., 2020] 不断扩大模型规模和训练数据,展现出强大的文本生成能力和上下文学习(in-context learning)能力——通过提示(prompt)中包含几个例子,模型就能理解任务并给出正确输出(见图22.4)。这种能力使LLM成为“基础模型” [Bommasani et al., 2021]。

4.3 图像生成:DALL-E 和 Parti

DALL-E [Ramesh et al., 2021] 将Transformer应用于文本到图像生成。其流程如下:

  1. 训练一个离散VAE(VQ-VAE)将图像压缩为离散token序列 $\boldsymbol{z}$。
  2. 训练一个Transformer学习图像token $\boldsymbol{z}$ 和文本token $\boldsymbol{y}$ 的联合分布 $p(\boldsymbol{z}, \boldsymbol{y})$。
  3. 生成时,给定文本 $\boldsymbol{y}$,用Transformer采样图像token $\boldsymbol{z}$,再用VQ-VAE解码器得到图像。

为了提高生成质量,DALL-E 使用对比模型(CLIP)对生成的多张图像进行重排序(reranking),选出与文本最匹配的。

Parti [Yu et al., 2022] 是Google的类似模型,规模更大,展现出随模型规模增长而质的提升(图20.3)。

DALL-E 2 [Ramesh et al., 2022] 和 Imagen [Saharia et al., 2022] 以及 Stable Diffusion [Rombach et al., 2022] 则转向了扩散模型(第25章),但DALL-E 2仍保留了Transformer用于文本编码。

4.4 其他应用

Transformer已被用于生成音乐(Music Transformer [Huang et al., 2018])、蛋白质序列(ProGen [Madani et al., 2020])等。


5. 大语言模型(LLMs)

大语言模型本质上就是自回归Transformer,只是规模巨大(数十亿到数千亿参数),训练数据庞大(涵盖互联网文本)。其基本原理已在第4节中描述。LLM的兴起带来了许多新现象,如涌现能力(emergent abilities)——随着模型规模增大,一些复杂任务(如算术推理、代码生成)突然出现。这些能力往往不需要专门训练,通过上下文学习就能展现。

局限与挑战

  • 幻觉(hallucination):生成不真实或无意义的内容。
  • 偏见:从训练数据中继承有害偏见。
  • 计算成本:训练和推理消耗巨大资源。
  • 安全性:可能被滥用生成有害内容。

这些是当前研究的热点。


6. 与前后的联系

  • 第2章(概率):链式法则、条件概率是自回归模型的基础。
  • 第4章(图模型):自回归模型对应全连接有向图,与概率图模型紧密相关。
  • 第16章(深度神经网络):自回归模型中使用的神经网络(MLP、CNN、Transformer)在第16章有详细介绍。
  • 第20章(生成模型概览):自回归模型是深度生成模型的一种,与VAE、Flow、Diffusion、GAN并列。
  • 第21章(VAE):自回归模型可作为VAE的解码器(如VQ-VAE中的PixelCNN先验),也可与VAE结合(如VQ-VAE-2)。
  • 第23章(归一化流):自回归流(如MAF、IAF)是自回归模型的一种,本章为后续流模型铺垫。
  • 第25章(扩散模型):扩散模型与自回归模型有概念联系(如离散扩散模型 D3PM)。
  • 第32章(表示学习):自回归模型可以学习丰富的表示(如BERT的上下文表示)。

7. 总结与重点

7.1 核心要点

  1. 自回归模型通过链式法则将联合概率分解为条件概率乘积,易于精确似然计算。
  2. NADE/MADE 是神经网络实现自回归条件的早期工作,MADE通过掩码实现参数共享。
  3. 因果卷积(WaveNet、PixelCNN)利用卷积结构高效建模局部依赖,适合图像和音频。
  4. Transformer 通过自注意力捕获长程依赖,成为现代自回归模型(如GPT)的核心。
  5. LLMs 是大型Transformer,通过预训练和上下文学习展现强大能力,但也带来新挑战。
  6. 自回归模型的应用涵盖文本、图像、音频、分子等,是生成AI的重要支柱。

7.2 常见难点

  • 因果卷积的实现:理解掩码如何确保未来信息不被泄露。
  • Transformer的因果掩码:在自注意力中屏蔽未来位置的具体操作。
  • 自回归模型与条件独立假设:虽然模型没有显式条件独立,但通过神经网络结构隐含了归纳偏置(如局部性)。
  • 生成速度问题:顺序生成是瓶颈,但可通过知识蒸馏、并行解码(如MaskGIT)缓解。

7.3 学习建议

  1. 动手实现MADE:在MNIST上实现MADE,理解掩码机制。
  2. 实现PixelCNN:在CIFAR-10上搭建简易PixelCNN,观察生成效果。
  3. 研究Transformer的因果注意力:用PyTorch实现一个简化的GPT解码器,在字符级语言模型上训练。
  4. 阅读经典论文:原始NADE、PixelCNN、WaveNet、Transformer、GPT-3等。
  5. 关注LLM前沿:了解上下文学习、涌现能力、幻觉问题等,阅读相关综述。
  6. 结合其他生成模型:思考自回归模型如何与VAE、Flow结合(如VQ-VAE)。

通过本章的学习,你将对自回归模型有全面深入的理解,并能将其应用到各种生成任务中。自回归模型是生成模型家族中非常重要的一支,也是现代大语言模型的基础。掌握本章内容,将为学习后续的归一化流、扩散模型等打下坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第23章“Normalizing Flows”详细讲解

1. 引言:从简单分布变换到复杂分布

在生成建模中,我们希望从复杂的数据分布 $p_x(x)$ 中采样,并计算其密度。归一化流(Normalizing Flow)提供了一种优雅的框架:从一个简单的基础分布(base distribution)$p_u(u)$(通常是标准高斯或均匀分布)出发,通过一系列可逆且可微的变换 $\boldsymbol{f} = \boldsymbol{f}_K \circ \cdots \circ \boldsymbol{f}_1$,将随机变量 $\boldsymbol{u}$ 映射到 $\boldsymbol{x}$:

$$ \boldsymbol{x} = \boldsymbol{f}(\boldsymbol{u}), \quad \boldsymbol{u} \sim p_u(\boldsymbol{u}). $$

由于变换是可逆的,我们可以通过变量变换公式(change of variables)计算 $\boldsymbol{x}$ 的概率密度:

$$ p_x(\boldsymbol{x}) = p_u(\boldsymbol{f}^{-1}(\boldsymbol{x})) \left| \det \frac{\partial \boldsymbol{f}^{-1}}{\partial \boldsymbol{x}} \right| = p_u(\boldsymbol{u}) \left| \det \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{u}} \right|^{-1}. $$

取对数得到:

$$ \log p_x(\boldsymbol{x}) = \log p_u(\boldsymbol{u}) - \log \left| \det \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{u}} \right|. $$

只要基础分布易于评估,且变换的雅可比行列式易于计算,我们就可以在训练时计算精确的似然,并在生成时快速采样。

关键挑战:如何构造灵活、可逆且雅可比行列式易算的变换?本章将系统介绍多种构建归一化流的方法。

下图概括了本章的知识体系:

graph TD A[归一化流] --> B[基本思想与训练] A --> C[构造流的方法] A --> D[应用] B --> B1[变量变换公式] B --> B2["密度估计: 最大化似然"] B --> B3["变分推断: 最大化ELBO"] C --> C1[仿射流] C --> C2[元素级流] C --> C3[耦合流] C --> C4[自回归流] C --> C5[残差流] C --> C6[连续时间流] C2 --> C2a[仿射标量双射] C2 --> C2b[非线性平方流] C2 --> C2c[单调神经网络] C2 --> C2d[样条] C4 --> C4a[仿射自回归流] C4 --> C4b[掩码自回归流 MAF] C4 --> C4c[逆自回归流 IAF] C4 --> C4d[与自回归模型联系] C5 --> C5a["收缩残差块 (iResNet)"] C5 --> C5b["瓶颈结构 (Planar, Sylvester)"] C6 --> C6a["神经常微分方程 (Neural ODE)"] C6 --> C6b[FFJORD] D --> D1[密度估计] D --> D2[生成建模] D --> D3[变分推断] D --> D4["模拟推断 (SBI)"]

2. 基本思想与训练

2.1 变量变换公式

设 $\boldsymbol{u} \sim p_u(\boldsymbol{u})$,$\boldsymbol{x} = \boldsymbol{f}(\boldsymbol{u})$,其中 $\boldsymbol{f}$ 是可微的双射。那么 $\boldsymbol{x}$ 的密度为:

$$ p_x(\boldsymbol{x}) = p_u(\boldsymbol{f}^{-1}(\boldsymbol{x})) \left| \det \mathbf{J}_{\boldsymbol{f}^{-1}}(\boldsymbol{x}) \right| = p_u(\boldsymbol{u}) \left| \det \mathbf{J}_{\boldsymbol{f}}(\boldsymbol{u}) \right|^{-1}. $$

推导:由累积分布函数的变换关系,再对 $\boldsymbol{x}$ 求导即得。

关键:雅可比行列式 $\det \mathbf{J}_{\boldsymbol{f}}(\boldsymbol{u})$ 必须容易计算,否则流模型无法实用。

2.2 密度估计(最大似然训练)

给定数据集 $\mathcal{D} = \{\boldsymbol{x}_n\}$,我们最大化对数似然:

$$ \mathcal{L}(\theta) = \sum_n \log p_x(\boldsymbol{x}_n) = \sum_n \left[ \log p_u(\boldsymbol{f}^{-1}(\boldsymbol{x}_n)) - \log \left| \det \mathbf{J}_{\boldsymbol{f}}(\boldsymbol{f}^{-1}(\boldsymbol{x}_n)) \right| \right]. $$

这要求我们能够高效计算 $\boldsymbol{f}^{-1}$ 及其雅可比行列式。训练后,我们可以通过 $\boldsymbol{x} = \boldsymbol{f}(\boldsymbol{u})$ 生成新样本。

2.3 变分推断(ELBO优化)

在变分自编码器(VAE)中,可以用归一化流作为变分后验 $q_\theta(\boldsymbol{z}|\boldsymbol{x})$,以获得更灵活的后验近似。ELBO为:

$$ \mathcal{L}(\theta) = \mathbb{E}_{q_\theta(\boldsymbol{z}|\boldsymbol{x})}[\log p(\boldsymbol{x}|\boldsymbol{z}) + \log p(\boldsymbol{z}) - \log q_\theta(\boldsymbol{z}|\boldsymbol{x})]. $$

若 $q_\theta(\boldsymbol{z}|\boldsymbol{x})$ 由基础分布 $q(\boldsymbol{u})$ 和可逆变换 $\boldsymbol{z} = \boldsymbol{f}_\theta(\boldsymbol{u};\boldsymbol{x})$ 定义,则可使用重参数化技巧,将对 $q_\theta$ 的期望转化为对 $q(\boldsymbol{u})$ 的期望,从而计算梯度。此时,我们需要能高效计算 $\boldsymbol{f}_\theta$(前向采样)和 $\log q_\theta(\boldsymbol{z}|\boldsymbol{x})$(通过变量变换公式)。这要求前向方向容易计算,而反向不一定需要(因为采样时我们只前向)。逆自回归流(IAF)正是为此设计。


3. 构造流的方法

3.1 仿射流

最简单的形式:$\boldsymbol{x} = \boldsymbol{A}\boldsymbol{u} + \boldsymbol{b}$。要求 $\boldsymbol{A}$ 可逆。雅可比行列式为 $\det \boldsymbol{A}$,计算复杂度 $O(D^3)$。为了效率,可限制 $\boldsymbol{A}$ 为三角矩阵(行列式为对角元乘积,求逆需回代 $O(D^2)$)或对角矩阵(行列式为对角元乘积,求逆 $O(D)$)。为了增加混合,可固定使用置换矩阵(行列式为 $\pm 1$)打乱维度顺序。

对于图像,可用可逆 $1\times1$ 卷积(如GLOW)实现通道间的混合。

3.2 元素级流

将标量双射 $h:\mathbb{R}\to\mathbb{R}$ 逐元素作用于向量:$\boldsymbol{x} = (h(u_1), \dots, h(u_D))$。雅可比行列式为 $\prod_i h'(u_i)$,计算简单。但元素级流不能建模变量间的依赖,通常作为其他流(如耦合流)的组成部分。

常见的标量双射:

  • 仿射标量双射:$h(u) = au + b$,$a\neq 0$。$a$ 常参数化为正值(如指数函数)。
  • 非线性平方流(NLSq):$h(u) = au + b + \frac{c}{1+(du+e)^2}$,通过约束保证可逆,可产生多峰分布(图23.1)。
  • 单调神经网络:由严格单调的函数(如带正权重的MLP)构成,可逆但求逆需二分搜索。
  • 积分构造:直接参数化导数 $h'(u)$ 为正,再积分得到 $h$(如Unconstrained Monotonic Neural Networks)。
  • 样条:用分段多项式(线性、二次、有理)构造单调函数,可解析求逆(解低次方程)。

3.3 耦合流

耦合层(coupling layer)[Dinh et al., 2015, 2017] 是构建高维灵活流的重要模块。它将输入 $\boldsymbol{u}$ 分成两部分 $\boldsymbol{u}^A, \boldsymbol{u}^B$,输出为:

$$ \boldsymbol{x}^A = \mathbf{f}(\boldsymbol{u}^A; \Theta(\boldsymbol{u}^B)), \quad \boldsymbol{x}^B = \boldsymbol{u}^B. $$

其中 $\mathbf{f}$ 是元素级双射(如仿射),$\Theta$ 是一个任意复杂的神经网络(称为条件器),以 $\boldsymbol{u}^B$ 为输入,输出 $\mathbf{f}$ 的参数。这样,$\boldsymbol{u}^A$ 被灵活变换,而 $\boldsymbol{u}^B$ 直接传递。雅可比矩阵是块三角的,行列式等于 $\det \mathbf{J}_{\mathbf{f}}$,易于计算。逆变换只需交换 $\mathbf{f}$ 与其逆。

通过交替使用不同的划分(如二分、棋盘掩码),可以让所有变量都得到变换,并混合信息。

图23.3展示了用耦合流拟合双月数据集(two moons)的例子。

3.4 自回归流

自回归流将每个输出 $x_i$ 表示为输入 $u_i$ 和之前输出 $\boldsymbol{x}_{1:i-1}$ 的函数:

$$ x_i = h(u_i; \Theta_i(\boldsymbol{x}_{1:i-1})). $$

雅可比矩阵是下三角的,行列式为 $\prod_i \partial x_i / \partial u_i = \prod_i h'(u_i)$,计算高效。但前向计算必须顺序进行(因为 $x_i$ 依赖前序输出),而反向(求逆)可以并行(因为给定 $\boldsymbol{x}$,各 $u_i$ 独立)。因此,自回归流的方向决定了它的适用场景。

3.4.1 仿射自回归流

取 $h$ 为仿射标量双射:$x_i = u_i \exp(\alpha_i(\boldsymbol{x}_{1:i-1})) + \mu_i(\boldsymbol{x}_{1:i-1})$。其逆为 $u_i = (x_i - \mu_i)\exp(-\alpha_i)$。图23.4展示了单层仿射自回归流的结构。单层仿射自回归流只能产生条件高斯分布,但堆叠多层并反转维度顺序,可逼近复杂分布(图23.5)。

3.4.2 掩码自回归流(MAF)

MAF [Papamakarios et al., 2017] 用掩码技术将多个自回归层组合成一个单一网络,一次前向计算出所有参数 $\alpha_i, \mu_i$。具体地,使用MADE风格的掩码MLP,确保第 $i$ 个输出只依赖于前 $i-1$ 个输入。MAF 计算 $\boldsymbol{f}^{-1}$(即密度评估)很快,但生成(前向 $\boldsymbol{f}$)很慢,适合密度估计。

3.4.3 逆自回归流(IAF)

IAF [Kingma et al., 2016] 交换了依赖关系:$x_i = h(u_i; \Theta_i(\boldsymbol{u}_{1:i-1}))$。这样前向(生成)可以并行,而反向(密度评估)需顺序。因此IAF适合作为VAE的变分后验(因为只需采样和评估采样点的密度)。

3.4.4 与自回归模型联系

任何连续自回归模型都可以看作单层自回归流,其中每个条件分布用逆CDF采样实现。通过堆叠多层自回归流,可以增加模型的表达能力。

3.5 残差流

残差连接 $\boldsymbol{x} = \boldsymbol{u} + \boldsymbol{F}(\boldsymbol{u})$ 若满足收缩条件($\boldsymbol{F}$ 的Lipschitz常数 < 1),则变换可逆,且逆可通过不动点迭代求得。这种iResNet [Behrmann et al., 2019] 用谱归一化保证收缩性,并利用Hutchinson迹估计器近似对数行列式。

若 $\boldsymbol{F}$ 具有瓶颈结构($\boldsymbol{F} = \boldsymbol{F}_2 \circ \boldsymbol{F}_1$,中间维数较小),则可通过矩阵行列式引理简化行列式计算。平面流(Planar flow)[Rezende & Mohamed, 2015] 是这类特例:$\boldsymbol{x} = \boldsymbol{u} + \boldsymbol{v} \sigma(\boldsymbol{w}^T\boldsymbol{u} + b)$,其雅可比行列式为 $1 + \boldsymbol{w}^T\boldsymbol{v} \sigma'(\cdot)$。Sylvester流 [van den Berg et al., 2018] 进一步推广到多个隐藏单元。

3.6 连续时间流

将变换看作常微分方程(ODE)的解:

$$ \frac{d\boldsymbol{x}(t)}{dt} = \mathbf{F}(\boldsymbol{x}(t), t), \quad \boldsymbol{x}(0) = \boldsymbol{u}, \quad \boldsymbol{x}(T) = \boldsymbol{x}. $$

若 $\mathbf{F}$ 满足Lipschitz条件,则解唯一且可逆(时间反向)。这称为神经ODE [Chen et al., 2018] 或连续归一化流。对数密度变化满足另一个ODE:

$$ \frac{d}{dt} \log p(\boldsymbol{x}(t)) = -\mathrm{tr}\left( \frac{\partial \mathbf{F}}{\partial \boldsymbol{x}(t)} \right). $$

FFJORD [Grathwohl et al., 2019] 用Hutchinson迹估计器高效估计迹,避免了显式计算。

连续时间流前后向计算代价对称,且可通过流匹配(flow matching)[Lipman et al., 2023] 简化训练,直接用目标向量场回归,无需模拟ODE。


4. 应用

4.1 密度估计

归一化流可对任意复杂分布进行精确似然计算,适用于低维密度估计(图23.3)和高维图像密度估计(如GLOW、Residual Flows)。通过设计合适的流结构,可以学习多模态分布。

4.2 生成建模

作为生成模型,归一化流能够生成高质量图像、音频等。GLOW [Kingma & Dhariwal, 2018] 是早期成功的图像生成流模型。Residual Flows [Chen et al., 2019] 进一步提升了图像生成质量。

4.3 变分推断

在VAE中,用IAF作为变分后验,可获得更灵活的后验近似,提升ELBO。这是VAE改进的重要方向之一。

4.4 模拟推断(Simulation-based Inference)

在似然不可得但可模拟的情况下,可用归一化流直接近似后验或似然,加速推断。这在宇宙学、神经科学等领域有重要应用。


5. 与前后的联系

  • 第2章(概率):变量变换公式、雅可比行列式。
  • 第6章(优化):重参数化技巧、SGD。
  • 第10章(变分推断):归一化流可作为变分后验,用于改进VI。
  • 第16章(深度神经网络):流模型中的神经网络架构(MLP、CNN、ResNet)。
  • 第18章(高斯过程):连续时间流与神经ODE联系。
  • 第20章(生成模型概览):归一化流是深度生成模型的一种,与VAE、ARM、Diffusion等并列。
  • 第21章(VAE):VAE与流结合(如IAF)。
  • 第22章(自回归模型):自回归流(MAF、IAF)是自回归模型的流式推广。
  • 第24章(EBM):流模型可视为能量模型的一种特例(可归一化)。
  • 第25章(扩散模型):连续时间流与扩散模型有相似之处(都涉及ODE/SDE)。

6. 总结与重点

6.1 核心要点

  • 归一化流通过可逆变换将简单分布映射到复杂分布,支持精确似然计算和高效采样(取决于方向)。
  • 变量变换公式是流模型的数学基础,要求雅可比行列式易算。
  • 训练方式:密度估计用最大似然,变分推断用ELBO + 重参数化。
  • 构造方法:仿射流、元素流、耦合流、自回归流、残差流、连续时间流,各有优劣。
    • 耦合流:灵活且雅可比简单,是实用流的基础(如RealNVP、GLOW)。
    • 自回归流:MAF(密度估计快)和IAF(生成快),适合不同场景。
    • 残差流:iResNet,用收缩性保证可逆。
    • 连续时间流:神经ODE,时间对称,适合连续建模。
  • 应用广泛:密度估计、生成建模、变分推断、模拟推断。

6.2 常见难点

  • 雅可比行列式计算:理解不同流如何利用三角结构或矩阵恒等式简化计算。
  • 耦合流与自回归流的联系:耦合流可视为自回归流的特例(对 $\boldsymbol{u}^B$ 恒等映射),但两者有不同计算特性。
  • 可逆性保证:如何构造始终可逆的变换(如收缩残差、正权重MLP、样条约束)。
  • 连续时间流的训练与推断:ODE求解的数值误差、伴随法求导。

6.3 学习建议

  1. 实现简单流:从仿射耦合层开始,在二维数据(如双月)上实现RealNVP。
  2. 理解自回归流:分别实现MAF和IAF,比较它们在密度估计和生成中的速度差异。
  3. 尝试残差流:用iResNet在MNIST上训练一个简单的生成模型。
  4. 阅读经典论文:NICE, RealNVP, MAF, IAF, GLOW, FFJORD, Flow Matching。
  5. 结合VAE:将IAF作为变分后验,在简单数据集上观察ELBO的提升。
  6. 探索连续时间流:用torchdiffeq实现神经ODE,在玩具数据上拟合简单分布。

归一化流是生成模型家族中独特的一员,它结合了精确似然和灵活变换的优点。掌握本章内容,将为理解更复杂的生成模型(如扩散模型)和先进变分推断打下坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第24章“Energy-based models”详细讲解

1. 引言:从约束到能量

在前面的章节中,我们学习了多种生成模型:VAE(第21章)、自回归模型(第22章)、归一化流(第23章)。这些模型都可以用有向图表示,通过局部归一化的条件概率逐步生成数据。然而,在某些情况下,我们更希望直接指定一组约束条件,满足这些约束的样本才有效,而不是描述一个生成过程。这种思想催生了基于能量的模型(Energy-based Model, EBM)。

EBM 将概率分布定义为 Gibbs 分布:

$$ p_{\theta}(\mathbf{x}) = \frac{\exp(-\mathcal{E}_{\theta}(\mathbf{x}))}{Z_{\theta}}, \quad Z_{\theta} = \int \exp(-\mathcal{E}_{\theta}(\mathbf{x})) d\mathbf{x} $$

其中 $\mathcal{E}_{\theta}(\mathbf{x})$ 称为能量函数(energy function),参数为 $\theta$,$Z_{\theta}$ 是配分函数(partition function),它是一个与 $\mathbf{x}$ 无关但与 $\theta$ 有关的归一化常数。由于配分函数通常难以计算,EBM 的训练和推断都面临着巨大挑战。

EBM 的优势在于能量函数可以是任意返回非负标量的函数,不受积分归一化的限制,因此可以使用各种神经网络架构来定义能量。这使得 EBM 在图像生成、判别学习、自然语言处理、密度估计、强化学习等领域都有广泛应用。

1.1 实例:专家乘积(Product of Experts, PoE)

为什么能量模型很有用?考虑一个例子:我们要生成一种蛋白质,它需要同时满足两个条件:在室温下热稳定性好,并且能与 COVID-19 刺突蛋白结合。假设我们有两个模型:$p_1(\mathbf{x})$ 擅长生成稳定蛋白质,$p_2(\mathbf{x})$ 擅长生成能结合的蛋白质。将这两个模型相乘(即取它们的能量之和)可以得到一个新模型:

$$ p_{12}(\mathbf{x}) = \frac{1}{Z_{12}} p_1(\mathbf{x}) p_2(\mathbf{x}) $$

这相当于两个专家的乘积(PoE)。新模型会给同时满足两个条件的蛋白质分配高概率,而给只满足一个或都不满足的分配低概率。相比之下,混合专家(mixture of experts)只会从某个专家生成,不能同时具备两个特征。如果每个专家用 EBM 表示,则乘积模型的能量就是各专家能量之和(图24.1 示意了两个能量函数相加的效果)。

1.2 计算困难

尽管 EBM 概念优雅,但配分函数 $Z_{\theta}$ 的存在使得似然计算和采样都变得棘手。本章将介绍多种近似方法来解决这些问题,包括基于 MCMC 的最大似然训练、评分匹配、噪声对比估计等。


2. 最大似然训练

2.1 似然梯度

对于 i.i.d. 数据,最大似然估计(MLE)旨在最大化 $\mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})}[\log p_{\theta}(\mathbf{x})]$。对 EBM,对数概率的梯度为:

$$ \nabla_{\theta} \log p_{\theta}(\mathbf{x}) = -\nabla_{\theta} \mathcal{E}_{\theta}(\mathbf{x}) - \nabla_{\theta} \log Z_{\theta}. $$

第一项易于通过自动微分计算,第二项是配分函数的梯度。利用链式法则:

$$ \nabla_{\theta} \log Z_{\theta} = -\mathbb{E}_{p_{\theta}(\mathbf{x})}[\nabla_{\theta} \mathcal{E}_{\theta}(\mathbf{x})]. $$

因此,似然梯度可写为:

$$ \nabla_{\theta} \mathbb{E}_{p_{\mathcal{D}}}[\log p_{\theta}] = -\mathbb{E}_{p_{\mathcal{D}}}[\nabla_{\theta} \mathcal{E}_{\theta}] + \mathbb{E}_{p_{\theta}}[\nabla_{\theta} \mathcal{E}_{\theta}]. $$

这是典型的“对比”形式:正相(positive phase)降低数据点的能量,负相(negative phase)提高模型样本的能量。只要我们能从 $p_{\theta}$ 中采样,就可以用蒙特卡洛估计梯度。

2.2 基于梯度的MCMC采样

由于 EBM 的得分函数(score function)$\nabla_{\mathbf{x}} \log p_{\theta}(\mathbf{x}) = -\nabla_{\mathbf{x}} \mathcal{E}_{\theta}(\mathbf{x})$ 易于计算,我们可以使用基于梯度的 MCMC 方法从模型中采样,如Langevin MCMC

$$ \mathbf{x}^{k+1} \leftarrow \mathbf{x}^{k} - \frac{\epsilon}{2} \nabla_{\mathbf{x}} \mathcal{E}_{\theta}(\mathbf{x}^{k}) + \sqrt{\epsilon} \mathbf{z}^{k}, \quad \mathbf{z}^{k} \sim \mathcal{N}(\mathbf{0},\mathbf{I}). $$

当 $\epsilon \to 0$ 且步数足够多时,样本分布趋近于 $p_{\theta}$。实际中常用有限步数,并用 Metropolis-Hastings 校正离散化误差,得到 Metropolis-adjusted Langevin algorithm (MALA)。

2.3 对比散度(Contrastive Divergence, CD)

运行 MCMC 至收敛非常耗时,对比散度 [Hinton, 2002] 提出用固定步数(通常 1 步)的 MCMC 来近似负相梯度。具体来说,从数据点 $\mathbf{x}$ 出发,进行 $T$ 步 MCMC,得到样本 $\tilde{\mathbf{x}}$,然后用 $\nabla_{\theta} \mathcal{E}_{\theta}(\tilde{\mathbf{x}})$ 近似 $\mathbb{E}_{p_{\theta}}[\nabla_{\theta} \mathcal{E}_{\theta}]$。这相当于最小化:

$$ \mathrm{CD}_T = D_{\mathrm{KL}}(p_{\mathcal{D}} \| p_\infty) - D_{\mathrm{KL}}(p_T \| p_\infty) $$

其中 $p_T$ 是 $T$ 步 MCMC 后的分布。CD 在训练 RBM 时非常成功(见算法24.1)。

2.3.1 持久性对比散度(Persistent CD, PCD)

PCD [Tieleman, 2008] 在训练过程中维持一个持续更新的 MCMC 状态(称为“幻想粒子”),而不是每次从数据点重启。这利用了参数变化缓慢,前后分布相近的特点,用前一步的状态作为新步的初始值,仅需几步 MCMC 即可获得近似样本。算法24.2给出了伪代码。

2.3.2 其他改进

  • 使用回放缓冲区(replay buffer)存储历史 MCMC 状态,随机初始化新链,可以改善混合 [Du & Mordatch, 2019]。
  • 针对 CD 的偏差问题,有研究者提出耦合 MCMC 等方法获得无偏梯度估计。

2.4 梯度消失与模式崩溃

用截断 MCMC 训练的 EBM 可能无法忠实捕捉数据分布,因为梯度更新有偏。近年来,一些工作尝试通过可微分的 MCMC 采样或熵校正项来减少偏差。


3. 评分匹配(Score Matching)

3.1 动机

最大似然训练需要采样,而评分匹配 [Hyvärinen, 2005] 提供了一种无需采样的训练方法。它通过匹配数据分布和模型分布的得分函数(score function)$\nabla_{\mathbf{x}} \log p(\mathbf{x})$ 来学习模型。对于 EBM,得分函数就是负的能量梯度:

$$ \mathbf{s}_{\theta}(\mathbf{x}) = \nabla_{\mathbf{x}} \log p_{\theta}(\mathbf{x}) = -\nabla_{\mathbf{x}} \mathcal{E}_{\theta}(\mathbf{x}), $$

不涉及配分函数。

评分匹配最小化Fisher散度

$$ D_F(p_{\mathcal{D}} \| p_{\theta}) = \mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})} \left[ \frac{1}{2} \| \nabla_{\mathbf{x}} \log p_{\mathcal{D}}(\mathbf{x}) - \nabla_{\mathbf{x}} \log p_{\theta}(\mathbf{x}) \|^2 \right]. $$

3.2 基本评分匹配

直接使用 Fisher 散度需要知道真实数据分布的得分 $\nabla_{\mathbf{x}} \log p_{\mathcal{D}}(\mathbf{x})$,这是未知的。Hyvärinen [2005] 证明,在一定正则条件下,可以通过分部积分将 Fisher 散度重写为:

$$ D_F(p_{\mathcal{D}} \| p_{\theta}) = \mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})} \left[ \frac{1}{2} \sum_{i=1}^{d} \left( \frac{\partial \mathcal{E}_{\theta}(\mathbf{x})}{\partial x_i} \right)^2 - \frac{\partial^2 \mathcal{E}_{\theta}(\mathbf{x})}{\partial x_i^2} \right] + \text{const}. $$

其中 $d$ 是 $\mathbf{x}$ 的维数。这个表达式只依赖于 $\mathcal{E}_{\theta}$ 及其二阶导数,不再需要真实得分。但计算二阶导数需要 $O(d^2)$ 时间,限制了其在高维上的应用。

3.3 去噪评分匹配(Denoising Score Matching, DSM)

为了解决正则条件和计算成本问题,去噪评分匹配 [Vincent, 2011] 引入一个噪声分布 $q(\tilde{\mathbf{x}}|\mathbf{x})$,并匹配噪声数据的得分。可以证明:

$$ D_F(q(\tilde{\mathbf{x}}) \| p_{\theta}(\tilde{\mathbf{x}})) = \frac{1}{2} \mathbb{E}_{q(\mathbf{x},\tilde{\mathbf{x}})} \left[ \left\| \mathbf{s}_{\theta}(\tilde{\mathbf{x}}) - \nabla_{\tilde{\mathbf{x}}} \log q(\tilde{\mathbf{x}}|\mathbf{x}) \right\|^2 \right] + \text{const}. $$

如果取 $q(\tilde{\mathbf{x}}|\mathbf{x}) = \mathcal{N}(\tilde{\mathbf{x}}|\mathbf{x}, \sigma^2 \mathbf{I})$,则 $\nabla_{\tilde{\mathbf{x}}} \log q = -\frac{\tilde{\mathbf{x}} - \mathbf{x}}{\sigma^2}$,这类似于一个“去噪”项:我们希望得分函数指向从噪声中恢复原始数据的方向。DSM 只需计算一阶导数,但只能学习到噪声分布 $q$,而非原始数据分布。当 $\sigma \to 0$ 时,DSM 目标与基本评分匹配渐近等价,但方差会爆炸。

3.4 切片评分匹配(Sliced Score Matching, SSM)

切片评分匹配 [Song et al., 2019] 在保持一致性的同时降低了计算复杂度。它用随机投影向量 $\mathbf{v}$ 将得分函数投影到一维,然后比较投影后的标量值:

$$ D_{SF}(p_{\mathcal{D}} \| p_{\theta}) = \mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})} \mathbb{E}_{p(\mathbf{v})} \left[ \frac{1}{2} \left( \mathbf{v}^T \nabla_{\mathbf{x}} \log p_{\mathcal{D}}(\mathbf{x}) - \mathbf{v}^T \nabla_{\mathbf{x}} \log p_{\theta}(\mathbf{x}) \right)^2 \right]. $$

同样可以转化为不含真实得分的隐式形式:

$$ D_{SF}(p_{\mathcal{D}} \| p_{\theta}) = \mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})} \mathbb{E}_{p(\mathbf{v})} \left[ \frac{1}{2} \left( \mathbf{v}^T \nabla_{\mathbf{x}} \mathcal{E}_{\theta}(\mathbf{x}) \right)^2 + \mathbf{v}^T \mathbf{H}_{\mathcal{E}_{\theta}}(\mathbf{x}) \mathbf{v} \right] + \text{const}, $$

其中 $\mathbf{H}_{\mathcal{E}_{\theta}}$ 是能量函数的 Hessian 矩阵。由于 $\mathbf{v}^T \mathbf{H} \mathbf{v}$ 可以通过一次前向-后向自动微分计算(Jacobian-vector product),SSM 的计算复杂度仅为 $O(d)$,适合高维数据。当 $p(\mathbf{v}) = \mathcal{N}(\mathbf{0},\mathbf{I})$ 时,第一项可解析简化,且第二项可用 Hutchinson 迹估计器近似。

3.5 与对比散度的联系

有趣的是,评分匹配与对比散度存在深刻联系。对于 Langevin 一步采样,Hyvärinen [2007] 证明 CD 的梯度近似等于评分匹配梯度的缩放。这源于 de Bruijn 恒等式:KL 散度的导数等于 Fisher 散度。

3.6 基于得分的生成模型(Score-based Generative Models)

不直接学习能量函数,而是直接学习得分函数 $\mathbf{s}_{\theta}(\mathbf{x})$ 的模型称为基于得分的生成模型(SGM)。这类模型可以用评分匹配训练,然后用 Langevin 采样生成样本。我们将在第25章(扩散模型)中看到,SGM 与扩散模型密切相关。


4. 噪声对比估计(Noise Contrastive Estimation, NCE)

噪声对比估计 [Gutmann & Hyvärinen, 2010] 是另一种训练 EBM 的方法,它通过对比数据分布与一个已知的噪声分布来学习模型。

4.1 基本原理

设数据分布为 $p_{\mathcal{D}}(\mathbf{x})$,我们选择一个易于采样的噪声分布 $p_n(\mathbf{x})$(如高斯分布)。引入一个二元变量 $y$,表示样本来自数据($y=1$)还是噪声($y=0$),并假设先验 $p(y=1) = \nu$。则混合分布为:

$$ p_{n,\text{data}}(\mathbf{x}) = p(y=0)p_n(\mathbf{x}) + p(y=1)p_{\mathcal{D}}(\mathbf{x}). $$

定义我们的 EBM 为 $p_{\theta}(\mathbf{x}) = \exp(-\mathcal{E}_{\theta}(\mathbf{x}))/Z_{\theta}$,其中 $Z_{\theta}$ 是可学习的标量参数。类似地,构造噪声与模型的混合:

$$ p_{n,\theta}(\mathbf{x}) = p(y=0)p_n(\mathbf{x}) + p(y=1)p_{\theta}(\mathbf{x}). $$

我们训练一个判别器来区分 $y=0$ 和 $y=1$。在最优判别器下,有 $p_{n,\theta}(y=0|\mathbf{x}) = p_{n,\text{data}}(y=0|\mathbf{x})$,从而推出 $p_{\theta}(\mathbf{x}) = p_{\mathcal{D}}(\mathbf{x})$。因此,最大化条件似然 $\mathbb{E}[\log p_{n,\theta}(y|\mathbf{x})]$ 可以训练出正确的 EBM。

实际优化时,我们通常将 $Z_{\theta}$ 吸收到能量函数中(即令 $Z_{\theta}=1$),训练得到的模型是自归一化的(self-normalized),即归一化常数接近1。

4.2 噪声分布的选择

NCE 对噪声分布敏感,通常希望噪声分布接近数据分布但又不完全相同。已有工作提出了自动调整噪声分布的方法,如对抗对比估计(ACE)、条件NCE、流对比估计(Flow Contrastive Estimation)等。

4.3 与评分匹配的联系

当噪声分布取为数据分布的平移扰动,且扰动向量 $\mathbf{v}$ 很小时,NCE 的目标可以展开为与切片评分匹配类似的形式 [Gutmann & Hirayama, 2012;Song et al., 2019]。因此,NCE 可以看作评分匹配的一种推广。


5. 其他方法

5.1 最小化KL散度的差异/导数

由于 EBM 的归一化常数难处理,我们可以考虑最小化两个 KL 散度的差值或导数,从而消去配分函数。典型方法包括:

  • 最小速度学习(Minimum Velocity Learning)[Movellan, 2008]:设计一个从数据分布向模型分布演化的马尔可夫链,最小化演化初期的“速度”。
  • 最小概率流(Minimum Probability Flow)[Sohl-Dickstein et al., 2011]:类似地,最小化数据分布与模型分布之间概率流的初始变化率。
  • 最小KL收缩(Minimum KL Contraction)[Lyu, 2011]:利用 KL 散度在线性变换下的收缩性质构造目标。

这些方法都可视为评分匹配和噪声对比估计的推广。

5.2 最小化Stein散度

Stein散度 [Gorham & Mackey, 2015] 基于 Stein 算子,通过一个函数族 $\mathcal{F}$ 衡量分布差异:

$$ D_{\mathrm{Stein}}(p_{\mathcal{D}} \| p_{\theta}) = \sup_{\mathbf{f} \in \mathcal{F}} \mathbb{E}_{p_{\mathcal{D}}}[\nabla_{\mathbf{x}} \log p_{\theta}(\mathbf{x})^T \mathbf{f}(\mathbf{x}) + \mathrm{trace}(\nabla_{\mathbf{x}} \mathbf{f}(\mathbf{x}))]. $$

当 $\mathcal{F}$ 取 RKHS 中的单位球时,得到核化 Stein 散度(KSD),可用核方法计算。Stein 散度也只依赖于得分函数,无需归一化常数,但迹项计算仍较复杂,可用 Hutchinson 估计近似。

5.3 对抗训练

将 EBM 的负相采样替换为一个可训练的生成器(如 GAN 的生成器),通过对抗训练来避免 MCMC。这可以导出类似 GAN 的 min-max 目标:

$$ \max_{\theta} \min_{\phi} \mathbb{E}_{q_{\phi}(\mathbf{x})}[\mathcal{E}_{\theta}(\mathbf{x})] - \mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})}[\mathcal{E}_{\theta}(\mathbf{x})] - H(q_{\phi}(\mathbf{x})). $$

其中 $q_{\phi}$ 是生成器,$H(q)$ 是其熵。为了可解,$q_{\phi}$ 需选择易于计算熵的族(如归一化流)或使用近似(如噪声采样器、变分下界)。Kim & Bengio [2016] 和 Zhai et al. [2016] 等提出了多种实现。


6. 与前后的联系

  • 第2章(概率):Gibbs分布、KL散度、f-散度、评分函数。
  • 第4章(图模型):无向图模型、配分函数、对比散度训练 RBM。
  • 第5章(信息论):KL散度、互信息、f-散度。
  • 第6章(优化):MCMC、Langevin 动力学。
  • 第7章(推断概述):MCMC、变分推断、近似推断。
  • 第10章(变分推断):ELBO、变分下界,与 NCE 有联系。
  • 第18章(高斯过程):能量函数可与 GP 结合。
  • 第20章(生成模型概览):EBM 是深度生成模型的一种。
  • 第21章(VAE):VAE 与 EBM 可结合(如能量模型的变分训练)。
  • 第22章(自回归模型):ARM 是局部归一化,EBM 是全局归一化。
  • 第23章(归一化流):流模型可视为可归一化的 EBM(配分函数为1)。
  • 第25章(扩散模型):扩散模型与基于得分的 EBM 紧密相关,SGM 可看作 EBM 的一种形式。
  • 第26章(GAN):对抗训练与 EBM 的对抗训练有相似之处。

7. 总结与重点

7.1 核心要点

  • EBM 将概率分布定义为能量函数的 Gibbs 分布,配分函数导致训练困难。
  • 最大似然训练 需要从模型中采样,可用 Langevin MCMC 进行负相采样。
  • 对比散度(CD) 用短链 MCMC 近似负相,PCD 用持久链提高效率。
  • 评分匹配(SM) 通过匹配数据与模型的得分函数训练,无需采样。基本 SM 需二阶导,DSM 用噪声数据简化,SSM 用随机投影实现线性复杂度。
  • 噪声对比估计(NCE) 通过区分数据和噪声来学习,可同时估计归一化常数。
  • 其他方法 包括最小化 KL 差异/导数、Stein 散度、对抗训练等,各有特色。
  • EBM 的应用 包括图像生成、密度估计、判别学习等。

7.2 常见难点

  • 配分函数的影响:理解为什么配分函数使训练困难,以及各种方法如何绕过它。
  • 对比散度的偏差:短链 MCMC 引入的偏差及其对学习的影响。
  • 评分匹配的维度诅咒:基本 SM 需要 $O(d^2)$ 计算,SSM 如何解决。
  • NCE 的噪声选择:噪声分布如何影响估计的方差和一致性。
  • EBM 与 GAN 的联系:对抗训练 EBM 与 GAN 的相似与差异。

7.3 学习建议

  1. 实现 RBM 的 CD 训练:在二元数据(如 MNIST)上实现受限玻尔兹曼机(RBM),理解正相和负相。
  2. 尝试评分匹配:在简单 2D 数据上实现基本评分匹配,观察学习到的能量函数。
  3. 理解 DSM:用高斯噪声扰动数据,实现去噪评分匹配,训练一个小型神经网络作为得分函数。
  4. 探索 SSM:在图像数据上实现切片评分匹配,感受其效率。
  5. 阅读经典论文:Hinton 的 CD 论文、Hyvärinen 的评分匹配、Gutmann 的 NCE、Song 的 SSM 等。
  6. 与现代方法结合:阅读基于得分的生成模型(Song & Ermon, 2019)和扩散模型(Ho et al., 2020),理解 EBM 在其中的角色。

本章深入探讨了基于能量的模型的核心思想和训练方法。尽管训练困难,但 EBM 因其灵活性和与物理、神经科学的联系而备受关注。掌握 EBM,将为理解更现代的生成模型(特别是扩散模型)和探索新的训练范式奠定基础。


《Probabilistic Machine Learning: Advanced Topics》第25章“Diffusion Models”详细讲解

1. 引言:从噪声到数据的逆过程

扩散模型(Diffusion Models)是一类近年来备受瞩目的生成模型,其核心思想源于非平衡热力学。想象一下,我们有一张清晰的图像,我们逐步向其添加高斯噪声,经过足够多的步骤后,它变成了纯噪声。如果我们能学习这个过程的逆过程——从纯噪声开始,逐步去噪,最终还原出清晰的图像——我们就得到了一个生成模型。

扩散模型与VAE(第21章)、归一化流(第23章)以及基于能量的模型(第24章)有着密切的联系,但其独特的训练方式和生成质量使其成为当前生成式AI的主流技术之一(例如DALL·E 2、Stable Diffusion、Imagen等)。

本章将深入探讨扩散模型的原理、训练方法、加速技巧、条件生成以及离散数据上的扩展。

下图概括了本章的知识体系:

graph TD A[扩散模型] --> B[去噪扩散概率模型 DDPM] A --> C[基于得分的生成模型 SGM] A --> D["连续时间模型 SDE/ODE"] A --> E[加速采样] A --> F[条件生成] A --> G[离散状态扩散] B --> B1[前向扩散过程 q] B --> B2[反向去噪过程 p_θ] B --> B3[ELBO与训练目标] B --> B4[噪声预测与简化损失 L_simple] C --> C1["得分函数 s_θ(x,t)"] C --> C2[多尺度噪声扰动] C --> C3[与DDPM等价] D --> D1[随机微分方程 SDE] D --> D2[概率流ODE] D --> D3[逆时SDE与生成] D --> D4[流匹配 Flow Matching] E --> E1[DDIM 确定性采样] E --> E2[非高斯解码器] E --> E3[知识蒸馏] F --> F1[条件扩散模型] F --> F2[分类器引导] F --> F3[无分类器引导] F --> F4[级联生成与超分辨率] G --> G1[离散去噪扩散 D3PM] G --> G2[掩码扩散与BERT] G --> G3[MaskGIT]

2. 去噪扩散概率模型(DDPM)

2.1 前向扩散过程

给定一个数据分布 $q_0(\mathbf{x}_0)$,我们定义一个长度为 $T$ 的前向扩散过程(forward diffusion process),逐步向数据添加高斯噪声,使其最终接近标准高斯分布 $\mathcal{N}(\mathbf{0},\mathbf{I})$。这个过程是一个马尔可夫链:

$$ q(\mathbf{x}_t | \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t | \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}), \quad t = 1, \dots, T $$

其中 $\beta_t \in (0,1)$ 是预先定义的噪声调度(noise schedule),控制每一步添加的噪声量。一个重要的性质是,我们可以直接计算任意 $t$ 步的边际分布:

$$ q(\mathbf{x}_t | \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t | \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1-\bar{\alpha}_t) \mathbf{I}), \quad \alpha_t := 1-\beta_t, \quad \bar{\alpha}_t := \prod_{s=1}^t \alpha_s. $$

当 $T$ 足够大且噪声调度使得 $\bar{\alpha}_T \approx 0$ 时,$q(\mathbf{x}_T | \mathbf{x}_0) \approx \mathcal{N}(\mathbf{0},\mathbf{I})$。图25.1和25.2形象地展示了这个逐渐加噪的过程。

2.2 反向去噪过程

我们的目标是学习一个反向过程(reverse process),从纯噪声 $\mathbf{x}_T \sim \mathcal{N}(\mathbf{0},\mathbf{I})$ 开始,逐步去噪,最终生成数据 $\mathbf{x}_0$。反向过程也是一个马尔可夫链,但转移核需要学习:

$$ p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1} | \boldsymbol{\mu}_{\theta}(\mathbf{x}_t, t), \boldsymbol{\Sigma}_{\theta}(\mathbf{x}_t, t)). $$

通常将方差设为固定值,如 $\sigma_t^2 = \beta_t$ 或 $\tilde{\beta}_t = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \beta_t$,而均值由神经网络预测。

2.3 模型训练:ELBO与简化损失

训练目标是最大化数据的对数似然,可以通过变分下界(ELBO)进行优化。对于每个数据点 $\mathbf{x}_0$,ELBO 为:

$$ \log p_{\theta}(\mathbf{x}_0) \ge \mathbb{E}_{q(\mathbf{x}_{1:T}|\mathbf{x}_0)} \left[ \log \frac{p(\mathbf{x}_T) \prod_{t=1}^T p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_t)}{\prod_{t=1}^T q(\mathbf{x}_t|\mathbf{x}_{t-1})} \right] =: \mathcal{L}(\mathbf{x}_0). $$

经过推导(见式25.19-25.20),ELBO 可以分解为三项之和:

  • $L_T = D_{\mathrm{KL}}(q(\mathbf{x}_T|\mathbf{x}_0) \| p(\mathbf{x}_T))$:先验匹配项,由于 $\mathbf{x}_T$ 近似高斯,此项接近常数。
  • $L_{t-1} = \mathbb{E}_{q(\mathbf{x}_t|\mathbf{x}_0)} [ D_{\mathrm{KL}}(q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0) \| p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_t)) ]$,$t=2,\dots,T$:每一步的KL散度。
  • $L_0 = -\mathbb{E}_{q(\mathbf{x}_1|\mathbf{x}_0)} [\log p_{\theta}(\mathbf{x}_0|\mathbf{x}_1)]$:重建项。

其中 $q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)$ 是已知的高斯分布(由贝叶斯公式可得,式25.8)。因此,每个 $L_{t-1}$ 是两个高斯之间的KL散度,有解析表达式。

关键洞察:可以将 $p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_t)$ 的参数化为预测噪声 $\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t)$。利用关系 $\mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}$,可以推导出:

$$ \boldsymbol{\mu}_{\theta}(\mathbf{x}_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t) \right). $$

代入KL项后,得到加权MSE损失:

$$ L_{t-1} = \mathbb{E}_{\mathbf{x}_0,\boldsymbol{\epsilon}} \left[ \frac{\beta_t^2}{2\sigma_t^2 \alpha_t (1-\bar{\alpha}_t)} \left\| \boldsymbol{\epsilon} - \boldsymbol{\epsilon}_{\theta}(\sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}, t) \right\|^2 \right]. $$

Ho et al. [2020] 发现,忽略权重(设为1)可以生成更高质量的样本,从而得到简化损失

$$ L_{\text{simple}} = \mathbb{E}_{\mathbf{x}_0,\boldsymbol{\epsilon}, t} \left[ \left\| \boldsymbol{\epsilon} - \boldsymbol{\epsilon}_{\theta}(\sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}, t) \right\|^2 \right]. $$

训练时,均匀采样 $t \sim \{1,\dots,T\}$,采样噪声 $\boldsymbol{\epsilon}$,计算噪声预测误差并更新网络。算法25.1给出了伪代码。

2.4 生成采样

训练完成后,从 $\mathbf{x}_T \sim \mathcal{N}(\mathbf{0},\mathbf{I})$ 开始,逐步采样:

$$ \mathbf{x}_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t) \right) + \sigma_t \mathbf{z}, \quad \mathbf{z} \sim \mathcal{N}(\mathbf{0},\mathbf{I}) \quad (\text{除最后一步外}). $$

算法25.2给出了伪代码。

2.5 学习噪声调度:变分扩散模型(VDM)

Kingma et al. [2021] 提出了变分扩散模型(VDM),将噪声调度参数化为一个可学习的函数,并通过最大化ELBO来优化它。他们将扩散过程推广到连续时间,并用信号-噪声比(SNR)重参数化,使得ELBO可以写成一个简洁的积分形式,从而允许学习最优的噪声调度。


3. 基于得分的生成模型(Score-based Generative Models, SGM)

3.1 得分函数与Langevin采样

回顾第24章,得分函数是概率密度对数的梯度:$\mathbf{s}(\mathbf{x}) = \nabla_{\mathbf{x}} \log p(\mathbf{x})$。Langevin动力学是一种MCMC方法,可以从得分函数中采样:

$$ \mathbf{x}^{k+1} = \mathbf{x}^k + \frac{\epsilon}{2} \mathbf{s}(\mathbf{x}^k) + \sqrt{\epsilon} \mathbf{z}^k, \quad \mathbf{z}^k \sim \mathcal{N}(\mathbf{0},\mathbf{I}). $$

如果能学习到数据分布的得分函数,就可以通过Langevin采样生成新样本。

3.2 多尺度噪声扰动

直接学习 $p_{\mathcal{D}}(\mathbf{x})$ 的得分函数存在困难,尤其在低密度区域。Song & Ermon [2019, 2020] 提出用多个噪声尺度扰动数据,学习噪声条件得分网络(Noise Conditional Score Network)$\mathbf{s}_{\theta}(\mathbf{x}, \sigma)$,其中 $\sigma$ 是噪声尺度。通过去噪得分匹配(DSM)训练:

$$ \mathcal{L}(\theta; \sigma) = \frac{1}{2} \mathbb{E}_{p_{\mathcal{D}}(\mathbf{x})} \mathbb{E}_{\tilde{\mathbf{x}} \sim \mathcal{N}(\mathbf{x}, \sigma^2 \mathbf{I})} \left[ \left\| \mathbf{s}_{\theta}(\tilde{\mathbf{x}}, \sigma) + \frac{\tilde{\mathbf{x}} - \mathbf{x}}{\sigma^2} \right\|^2 \right]. $$

训练多个噪声尺度的得分网络后,可以通过退火Langevin动力学(annealed Langevin dynamics)生成样本:从大噪声开始,逐步减小噪声尺度,在每个尺度上运行若干步Langevin采样。

3.3 与DDPM的等价性

Song et al. [2021] 证明了DDPM与SGM的等价性。如果定义 $\mathbf{s}_{\theta}(\mathbf{x}_t, t) = -\frac{\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t)}{\sqrt{1-\bar{\alpha}_t}}$,则DDPM的简化损失等价于加权后的DSM损失(权重为 $\lambda_t = \sigma_t^2$)。因此,DDPM实际上是在学习得分函数。


4. 连续时间模型:随机微分方程(SDE)与概率流ODE

4.1 前向扩散SDE

将DDPM推广到无穷多步($T \to \infty$),前向过程可以用随机微分方程(SDE)描述:

$$ d\mathbf{x} = \mathbf{f}(\mathbf{x}, t) dt + g(t) d\mathbf{w}, $$

其中 $\mathbf{w}$ 是维纳过程(Brownian motion),$\mathbf{f}$ 是漂移系数,$g$ 是扩散系数。对于DDPM(方差保持过程),对应的SDE为:

$$ d\mathbf{x} = -\frac{1}{2} \beta(t) \mathbf{x} dt + \sqrt{\beta(t)} d\mathbf{w}. $$

对于SGM(方差爆炸过程),对应的SDE为:

$$ d\mathbf{x} = \sqrt{\frac{d[\sigma(t)^2]}{dt}} d\mathbf{w}. $$

4.2 反向时间SDE

Anderson [1982] 证明,任何前向SDE都有对应的反向时间SDE,从 $T$ 到 $0$ 演化:

$$ d\mathbf{x} = \left[ \mathbf{f}(\mathbf{x}, t) - g(t)^2 \nabla_{\mathbf{x}} \log q_t(\mathbf{x}) \right] dt + g(t) d\bar{\mathbf{w}}, $$

其中 $\bar{\mathbf{w}}$ 是反向时间的维纳过程。这里的得分函数 $\nabla_{\mathbf{x}} \log q_t(\mathbf{x})$ 正是我们需要学习的。因此,我们可以训练一个得分网络 $\mathbf{s}_{\theta}(\mathbf{x}, t)$ 来近似它,然后用反向SDE生成样本。

4.3 概率流ODE

除了SDE,还可以用概率流ODE(Probability Flow ODE)来描述相同边际分布的确定性演化:

$$ d\mathbf{x} = \left[ \mathbf{f}(\mathbf{x}, t) - \frac{1}{2} g(t)^2 \nabla_{\mathbf{x}} \log q_t(\mathbf{x}) \right] dt. $$

这个ODE的解在任意时刻 $t$ 的分布与SDE相同。因此,我们可以通过求解ODE来生成样本,这比SDE更快(因为不需要随机性),并且可以通过变量变换公式计算精确似然。

4.4 流匹配(Flow Matching)

流匹配 [Lipman et al., 2023] 是一种简化连续时间扩散模型训练的方法。它直接学习一个向量场 $\mathbf{v}_{\theta}(\mathbf{x}, t)$,使其匹配从数据到噪声的插值路径的导数,而不需要模拟SDE或ODE。这可以看作是概率流ODE的一种直接回归。


5. 加速采样

扩散模型的主要缺点之一是生成需要很多步(通常是数百到数千步),这在实际应用中可能太慢。本节介绍几种加速采样的方法。

5.1 DDIM(Denoising Diffusion Implicit Models)

Song et al. [2021] 提出了DDIM,它使用非马尔可夫的前向过程,使得反向过程可以是确定性的。DDIM的采样公式为:

$$ \mathbf{x}_{t-1} = \sqrt{\bar{\alpha}_{t-1}} \left( \frac{\mathbf{x}_t - \sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t)}{\sqrt{\bar{\alpha}_t}} \right) + \sqrt{1-\bar{\alpha}_{t-1} - \sigma_t^2} \boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t) + \sigma_t \mathbf{z}. $$

当 $\sigma_t = 0$ 时,采样是确定性的,且可以用更少的步数(如50步)生成质量不错的样本。DDIM可以应用于任何预训练的DDPM模型。

5.2 非高斯解码器

如果反向过程步长变大,条件分布 $p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_t)$ 会变得多模态(图25.11)。此时可以用更复杂的分布建模,例如用EBM或GAN作为每步的去噪器。Gao et al. [2021] 提出用EBM,而Xiao et al. [2022] 提出用GAN(Denoising Diffusion GAN),可以在几步内生成高质量样本。

5.3 知识蒸馏

渐进蒸馏(Progressive Distillation)[Salimans & Ho, 2022] 是一种将多步扩散模型蒸馏为少步模型的方法。首先训练一个教师模型,然后训练一个学生模型,使其在每两步之间预测教师模型的输出。重复这个过程,可以将步数指数级减少,最终得到只需几步的模型。


6. 条件生成

在实际应用中,我们通常希望生成符合特定条件的样本,例如给定类别标签或文本描述。

6.1 条件扩散模型

最直接的方法是将条件信息 $\mathbf{c}$ 作为额外输入加入到噪声预测网络 $\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_t, t, \mathbf{c})$ 中。训练时使用配对数据 $(\mathbf{x}, \mathbf{c})$,最大化条件似然。这是许多文本到图像模型(如Imagen、Stable Diffusion)的基础。

6.2 分类器引导(Classifier Guidance)

如果我们有一个预训练的分类器 $p_{\phi}(\mathbf{c}|\mathbf{x}_t)$,可以利用贝叶斯规则将条件得分表示为无条件得分加上分类器得分的梯度:

$$ \nabla_{\mathbf{x}_t} \log p_{\theta}(\mathbf{x}_t | \mathbf{c}) = \nabla_{\mathbf{x}_t} \log p_{\theta}(\mathbf{x}_t) + \nabla_{\mathbf{x}_t} \log p_{\phi}(\mathbf{c}|\mathbf{x}_t). $$

通过缩放分类器梯度(乘以权重 $w > 1$),可以增强条件影响,得到更符合条件的高质量样本,但会降低多样性。

6.3 无分类器引导(Classifier-Free Guidance)

训练一个分类器 $p_{\phi}(\mathbf{c}|\mathbf{x}_t)$ 是困难的,尤其需要对每个噪声尺度训练。无分类器引导 [Ho & Salimans, 2021] 用条件扩散模型和无条件扩散模型共同推导出引导得分:

$$ \nabla_{\mathbf{x}_t} \log p_{\theta}(\mathbf{x}_t | \mathbf{c}) = (1 + w) \nabla_{\mathbf{x}_t} \log p_{\theta}(\mathbf{x}_t | \mathbf{c}) - w \nabla_{\mathbf{x}_t} \log p_{\theta}(\mathbf{x}_t). $$

这只需要训练一个模型,通过随机丢弃条件(设置 $\mathbf{c} = \varnothing$)来同时学习条件和无条件分布。无分类器引导已成为最常用的条件采样技术。

6.4 高分辨率生成:级联模型

为了生成高分辨率图像(如 $1024 \times 1024$),通常采用级联方法:先训练一个低分辨率生成模型,再训练一个超分辨率模型将低分辨率样本上采样到高分辨率。Imagen [Saharia et al., 2022] 和 DALL·E 2 [Ramesh et al., 2022] 都采用了这种策略。


7. 离散状态空间的扩散模型

扩散模型最初用于连续数据,但也可以扩展到离散数据(如文本、语义标签)。

7.1 离散去噪扩散概率模型(D3PM)

Austin et al. [2021] 提出了D3PM,将扩散过程定义在离散状态空间上。前向过程是分类变量上的马尔可夫链,转移矩阵 $\mathbf{Q}_t$ 可以是均匀噪声、吸收状态(mask)或离散化高斯。训练目标仍是ELBO,其中KL项可逐维度计算。反向过程可以用神经网络预测原始数据 $\mathbf{x}_0$ 的logits,再与解析的后验组合得到 $p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_t)$。

7.2 与BERT和MaskGIT的联系

有趣的是,当使用吸收态(mask)作为噪声时,D3PM 与 BERT 的掩码语言模型训练目标等价。如果进一步将扩散过程设计为逐步增加 mask,可以得到掩码生成模型,如 MaskGIT [Chang et al., 2022],它可以在几步内并行生成图像token,比自回归模型快得多。


8. 与前后的联系

  • 第2章(概率):高斯分布、条件分布、KL散度。
  • 第5章(信息论):率失真理论,与β-VAE的联系。
  • 第6章(优化):SGD、重参数化技巧。
  • 第7章(推断):变分推断(ELBO)、MCMC(Langevin)。
  • 第10章(变分推断):ELBO、分层VAE,与扩散模型的关系。
  • 第16章(深度神经网络):U-Net架构、Transformer。
  • 第20章(生成模型概览):扩散模型是深度生成模型的一种。
  • 第21章(VAE):扩散模型可视为分层VAE,且可与VAE结合(如LSGM、LDM)。
  • 第22章(自回归模型):离散扩散模型与自回归模型有联系(如D3PM与BERT)。
  • 第23章(归一化流):概率流ODE与连续归一化流等价。
  • 第24章(EBM):得分匹配与EBM的联系,扩散模型可视为基于得分的EBM。
  • 第26章(GAN):扩散模型与GAN结合可加速采样。

9. 总结与重点

9.1 核心要点

  • 扩散模型通过前向加噪和反向去噪学习数据分布,训练目标为预测噪声(DDPM)或得分函数(SGM)。
  • 前向过程是预定义的马尔可夫链,可解析计算任意时刻的边际分布。
  • ELBO可简化为加权MSE损失,忽略权重后得到 $L_{\text{simple}}$,实践中效果更好。
  • 连续时间视角将扩散模型统一为SDE,并引入概率流ODE,允许确定采样和似然计算。
  • 加速方法包括DDIM、非高斯解码器、蒸馏等,将步数减少到个位数。
  • 条件生成通过条件网络、分类器引导或无分类器引导实现。
  • 离散扩散模型将扩散思想推广到离散数据,与BERT和MaskGIT联系紧密。

9.2 常见难点

  • 理解ELBO推导:从联合分布开始,利用马尔可夫性质,最终得到噪声预测损失。
  • SDE与ODE的关系:如何从离散DDPM过渡到连续SDE,以及概率流ODE的推导。
  • 分类器引导 vs 无分类器引导:前者需要额外训练分类器,后者只需一个模型,但需要小心设置条件丢弃率。
  • 离散扩散的转移矩阵设计:不同转移矩阵对应不同噪声类型,影响模型行为。
  • 流匹配的简化:如何从向量场回归替代复杂的SDE训练。

9.3 学习建议

  1. 实现简单DDPM:在MNIST或CIFAR-10上实现DDPM,观察不同噪声调度和步数的影响。
  2. 尝试DDIM采样:用预训练的DDPM,实现DDIM,比较不同步数下的样本质量。
  3. 探索得分匹配:用SGM训练一个得分网络,并用Langevin采样生成样本。
  4. 理解连续时间模型:阅读Song et al. [2021] 的SDE论文,尝试用torchsde实现简单的SDE生成。
  5. 实践条件生成:在MNIST上训练条件DDPM,加入类别标签,观察引导效果。
  6. 阅读经典论文:DDPM [Ho et al., 2020]、SGM [Song & Ermon, 2019, 2020]、Score SDE [Song et al., 2021]、Classifier-Free Guidance [Ho & Salimans, 2021]、D3PM [Austin et al., 2021]、Imagen [Saharia et al., 2022]。
  7. 关注最新进展:流匹配、一致性模型(consistency models)等进一步加速的方法。

扩散模型已经成为生成建模领域的主流工具,其简洁的理论和惊人的生成质量使其在图像、音频、视频生成中占据主导地位。通过本章的学习,你将对扩散模型有全面深入的理解,并能将其应用于实际任务中。


《Probabilistic Machine Learning: Advanced Topics》第26章“Generative Adversarial Networks”详细讲解

1. 引言:从显式概率模型到隐式生成模型

在前面的章节中,我们学习了多种生成模型:VAE(第21章)通过最大化ELBO学习数据分布;自回归模型(第22章)通过链式法则分解条件概率;归一化流(第23章)通过可逆变换实现精确似然;基于能量的模型(第24章)通过能量函数定义分布但需近似归一化;扩散模型(第25章)通过逐步去噪生成数据。这些模型都属于显式概率模型(prescribed probabilistic models)——它们明确地定义了数据的概率密度函数(或下界),我们可以直接计算或近似 $p_{\theta}(x)$。

然而,有一类模型不显式定义密度,而是通过一个可微的生成器网络 $G_{\theta}(z)$ 将简单分布的噪声 $z \sim q(z)$ 映射到数据空间,从而定义了一个隐式概率模型(implicit probabilistic model)。这类模型只提供采样过程,无法计算精确的似然。生成对抗网络(Generative Adversarial Network, GAN)正是这类隐式模型中最具代表性的一种。

GAN 的核心思想是通过一个判别器(discriminator)$D$ 来区分真实数据与生成器生成的数据,而生成器 $G$ 则试图“欺骗”判别器,使其无法区分。两者在极小极大博弈(minimax game)中共同进化,最终达到纳什均衡,此时生成器产生的分布逼近真实数据分布。

本章将系统介绍GAN的基本原理、不同的学习准则、训练算法、架构设计、常见挑战以及广泛的应用。

下图概括了本章的知识体系:

graph TD A[生成对抗网络 GAN] --> B[隐式模型与学习准则] A --> C[GAN算法与挑战] A --> D[架构与改进] A --> E[应用] B --> B1[隐式模型定义] B --> B2[通过比较学习] B --> B3[密度比估计与JS散度] B --> B4[f-散度与f-GAN] B --> B5[积分概率度量 IPM] B --> B6[矩匹配 MMD] C --> C1[损失函数与博弈] C --> C2[梯度下降与交替更新] C --> C3[模式崩溃与不收敛] C --> C4[理论分析:Dirac-GAN] D --> D1[DCGAN] D --> D2[条件GAN] D --> D3[自注意力SAGAN] D --> D4[渐进式生成] D --> D5[正则化技术] D --> D6[大规模GAN(BigGAN, StyleGAN)] E --> E1[图像生成] E --> E2[视频生成] E --> E3[音频生成] E --> E4[文本生成] E --> E5[模仿学习] E --> E6[域适应] E --> E7[艺术与设计]

2. 隐式模型与学习准则

2.1 隐式概率模型

一个隐式概率模型由一个生成器网络 $G_{\theta}: \mathcal{Z} \to \mathcal{X}$ 定义,其中 $\mathcal{Z}$ 是低维潜空间(通常为高斯分布 $q(z)$),$\mathcal{X}$ 是数据空间。生成的样本为 $x = G_{\theta}(z)$。模型隐含地定义了数据分布 $q_{\theta}(x)$,但无法显式计算其密度。这种模型也被称为可微模拟器(differentiable simulator)。

2.2 通过比较学习(Learning by Comparison)

由于无法直接最大化似然,我们需要一种只依赖于样本的比较准则来训练隐式模型。理想准则 $D(p^*, q_{\theta})$ 应满足:

  1. $D(p^*, q_{\theta}) \ge 0$,且 $D(p^*, q_{\theta}) = 0 \iff p^* = q_{\theta}$(即它是一个散度或距离)。
  2. 能仅通过样本估计。
  3. 计算可行。

由于直接计算散度往往困难,我们引入一个判别器(critic)$D_{\phi}$,通过优化来近似散度:

$$ D(p^*, q_{\theta}) \approx \max_{\phi} \mathcal{F}(\phi, p^*, q_{\theta}), $$

其中 $\mathcal{F}$ 可表示为样本期望的形式:

$$ \mathcal{F}(\phi, p^*, q_{\theta}) = \mathbb{E}_{p^*(x)}[f(x,\phi)] + \mathbb{E}_{q_{\theta}(x)}[g(x,\phi)]. $$

2.3 密度比估计与二元分类

两个分布 $p^*$ 和 $q_{\theta}$ 的密度比 $r(x) = p^*(x)/q_{\theta}(x)$ 包含了它们是否相同的全部信息。我们可以通过训练一个二元分类器 $D_{\phi}(x)$ 来估计密度比:

$$ \frac{p^*(x)}{q_{\theta}(x)} = \frac{D_{\phi}(x)}{1 - D_{\phi}(x)}. $$

分类器使用伯努利对数损失(二元交叉熵)训练:

$$ \max_{\phi} \frac{1}{2} \mathbb{E}_{p^*(x)}[\log D_{\phi}(x)] + \frac{1}{2} \mathbb{E}_{q_{\theta}(x)}[\log(1 - D_{\phi}(x))]. $$

当分类器最优时,有 $D^*(x) = \frac{p^*(x)}{p^*(x) + q_{\theta}(x)}$。代入上式可得:

$$ V^*(q_{\theta}, p^*) = \text{JSD}(p^* \| q_{\theta}) - \log 2, $$

其中 JSD 是 Jensen-Shannon 散度。因此,训练分类器等价于估计 JSD。生成器的目标是最小化 JSD,从而得到极小极大博弈:

$$ \min_{\theta} \max_{\phi} \frac{1}{2} \mathbb{E}_{p^*(x)}[\log D_{\phi}(x)] + \frac{1}{2} \mathbb{E}_{q(z)}[\log(1 - D_{\phi}(G_{\theta}(z)))]. $$

这正是原始GAN的目标 [Goodfellow et al., 2014]。

除了对数损失,其他适当的评分规则(如Brier分数、hinge损失)也可用于训练,对应不同的散度(如 Pearson $\chi^2$、总变差)。

2.4 f-散度与f-GAN

f-散度(f-divergence)是一类广泛的散度,定义为:

$$ D_f(p^* \| q_{\theta}) = \int q_{\theta}(x) f\left( \frac{p^*(x)}{q_{\theta}(x)} \right) dx, $$

其中 $f$ 是凸函数,$f(1)=0$。KL、反向KL、JSD、Pearson $\chi^2$ 等都是其特例。利用凸共轭,可以得到 f-散度的变分下界:

$$ D_f(p^* \| q_{\theta}) \ge \sup_{t \in \mathcal{T}} \mathbb{E}_{p^*(x)}[t(x)] - \mathbb{E}_{q_{\theta}(x)}[f^*(t(x))], $$

其中 $f^*$ 是 $f$ 的凸共轭。用神经网络参数化 $t_{\phi}$,得到 f-GAN 的目标:

$$ \min_{\theta} \max_{\phi} \mathbb{E}_{p^*(x)}[t_{\phi}(x)] - \mathbb{E}_{q(z)}[f^*(t_{\phi}(G_{\theta}(z)))]. $$

不同的 $f$ 对应不同的散度,且与评分规则有密切联系。

2.5 积分概率度量(Integral Probability Metrics, IPM)

IPM 通过函数族 $\mathcal{F}$ 衡量分布差异:

$$ I_{\mathcal{F}}(p^*, q_{\theta}) = \sup_{f \in \mathcal{F}} \left| \mathbb{E}_{p^*}[f(x)] - \mathbb{E}_{q_{\theta}}[f(x)] \right|. $$

选择不同的 $\mathcal{F}$ 得到不同的度量:

  • 1-Lipschitz 函数Wasserstein-1 距离
  • RKHS 中的单位球最大均值差异(MMD)

2.5.1 Wasserstein GAN (WGAN)

WGAN [Arjovsky et al., 2017] 使用 Wasserstein-1 距离,其 critic $f$ 需满足 1-Lipschitz 约束。通过梯度惩罚(Gradient Penalty)或谱归一化(Spectral Normalization)强制 Lipschitz 条件,得到目标:

$$ \min_{\theta} \max_{\phi: \|f_{\phi}\|_{Lip} \le 1} \mathbb{E}_{p^*(x)}[f_{\phi}(x)] - \mathbb{E}_{q(z)}[f_{\phi}(G_{\theta}(z))]. $$

WGAN 缓解了模式崩溃,提供了有意义的损失曲线。

2.5.2 MMD GAN

使用 MMD 作为距离,可以训练生成器直接最小化 MMD:

$$ \min_{\theta} \text{MMD}^2(p^*, q_{\theta}). $$

为了学习更好的特征,可以同时训练一个特征网络 $\zeta_{\phi}$,最大化 MMD,形成极小极大博弈(如 MMD GAN [Li et al., 2017])。

2.6 矩匹配(Moment Matching)

更一般地,可以选择一组测试统计量 $s(x)$,最小化矩差异:

$$ \min_{\theta} \| \mathbb{E}_{p^*}[s(x)] - \mathbb{E}_{q_{\theta}}[s(x)] \|^2. $$

关键在于选择充分的统计量。MMD 可视为在 RKHS 特征空间中的矩匹配。也可以使用判别器的特征和梯度作为统计量 [Ravuri et al., 2018]。

2.7 密度比 vs 密度差

密度比方法(如 f-GAN)在分布无重叠时可能失效(比值无穷大),但通过平滑的神经网络 critic 可提供有用梯度。IPM 方法(如 WGAN)通过 Lipschitz 约束天然具有平滑性,在无重叠时也能提供梯度。


3. GAN算法与挑战

3.1 损失函数与博弈

原始GAN使用零和博弈,但实践中常用非饱和损失(non-saturating loss):

  • 判别器:$L_D = -\mathbb{E}_{p^*}[\log D(x)] - \mathbb{E}_{q_{\theta}}[\log(1 - D(G(z)))]$
  • 生成器:$L_G = -\mathbb{E}_{q_{\theta}}[\log D(G(z))]$ (即最大化判别器将生成样本判为真实的概率)

非饱和损失在生成器早期提供更强梯度(图26.5)。其他损失如 LSGAN(最小二乘)、hinge GAN 也常用。

3.2 梯度下降与交替更新

GAN 的训练是交替更新判别器和生成器(算法26.1-26.2)。通常每步先更新判别器 $K$ 次,再更新生成器一次。生成器的梯度通过重参数化技巧计算(式26.49)。

3.3 挑战:模式崩溃与不收敛

  • 模式崩溃(mode collapse):生成器只生成少数几类样本,缺乏多样性(图26.6)。
  • 模式跳跃(mode hopping):生成器在不同模式间跳跃,无法稳定覆盖所有模式。

原因在于生成器与判别器的博弈动态复杂,且损失函数可能不提供覆盖所有模式的足够梯度。

3.4 理论分析:Dirac-GAN

Dirac-GAN [Mescheder et al., 2018] 是一个简化的玩具问题,用于分析 GAN 的收敛行为。数据分布为 Dirac delta,生成器也为 Dirac,判别器为线性函数。分析表明,同时梯度下降(simultaneous gradient descent)无法收敛到均衡点,而是围绕均衡点做周期运动(图26.7-26.8)。这揭示了 GAN 训练的困难,并启发了改进优化器(如使用动量、正则化)的思路。


4. 架构与改进

4.1 判别器架构的重要性

判别器不仅是散度的近似器,更提供了学习的损失函数。好的判别器架构能提供更丰富的梯度信号。例如,卷积判别器能捕捉图像的空间结构,促进生成器学习锐利边缘。

4.2 DCGAN

深度卷积GAN(DCGAN)[Radford et al., 2015] 是最早成功将 CNN 引入 GAN 的工作,提出了系列架构指导原则:

  • 使用步幅卷积(strided convolution)替代池化。
  • 生成器使用 ReLU,判别器使用 LeakyReLU。
  • 使用批归一化(Batch Normalization)稳定训练。 DCGAN 显著提升了图像生成质量。

4.3 自注意力 GAN(SAGAN)

SAGAN [Zhang et al., 2019] 引入自注意力机制,使生成器和判别器能捕获长程依赖,提升生成图像的全局一致性(图26.12)。自注意力层通过计算特征图各位置间的注意力权重,允许信息跨区域流动。

4.4 渐进式生成

LapGAN [Denton et al., 2015] 使用拉普拉斯金字塔,先生成低分辨率图像,再逐步上采样并添加细节。ProgressiveGAN [Karras et al., 2018] 更巧妙:在训练过程中逐渐增加生成器和判别器的分辨率层,新层以残差方式融入,通过α blending平滑过渡(图26.14)。这使模型能稳定生成高分辨率图像。

4.5 正则化技术

正则化对 GAN 训练至关重要:

  • 梯度惩罚(Gradient Penalty)[Gulrajani et al., 2017]:在 WGAN 中强制 critic 的梯度范数接近1。
  • 谱归一化(Spectral Normalization)[Miyato et al., 2018]:将判别器每层的权重矩阵除以它的最大奇异值,使其 Lipschitz 常数 ≤1,稳定训练。
  • 一致性正则化(Consistency Regularization)[Zhao et al., 2020]:对输入施加微小扰动,要求判别器输出一致。

4.6 大规模 GAN

BigGAN [Brock et al., 2018] 结合了残差网络、自注意力、谱归一化和大批量训练,在 ImageNet 上生成高质量图像。StyleGAN [Karras et al., 2019, 2020] 引入风格向量和自适应实例归一化(AdaIN),实现对生成图像不同层次属性的解耦控制,生成的人脸极为逼真。Alias-free GAN [Karras et al., 2021] 进一步消除了混叠伪影。


5. 应用

5.1 图像生成

GAN 在图像生成领域应用最广:

  • 无条件生成:生成随机图像(如人脸、场景)。
  • 条件生成:根据类别标签生成图像(如 BigGAN)。
  • 图像翻译:将输入图像转换为另一种风格或模态。

5.1.1 条件 GAN

条件 GAN(cGAN)[Mirza & Osindero, 2014] 将条件信息(如标签、文本)同时输入生成器和判别器。为了更好利用条件,常将条件信息嵌入并在网络各层注入(如投影判别器 [Miyato & Koyama, 2018])。

5.1.2 成对图像翻译:pix2pix

pix2pix [Isola et al., 2017] 使用 U-Net 作为生成器,PatchGAN 作为判别器(判别局部图像块),实现成对数据的图像到图像翻译(如边缘图→彩色图)。训练目标结合了对抗损失和 L1 损失,以保持输入输出结构一致。

5.1.3 非成对图像翻译:CycleGAN

当没有成对数据时,CycleGAN [Zhu et al., 2017] 引入循环一致性损失,要求图像经过两次翻译($X \to Y \to X$ 或 $Y \to X \to Y$)后与原始图像尽可能接近。这使得模型能在无配对数据下学习跨域映射(如图26.18)。

5.2 视频生成

GAN 也可用于生成视频,需额外保证时序一致性。常用方法包括使用3D卷积、时序判别器(区分真实和生成视频序列)以及光流约束。代表工作如 MoCoGAN [Tulyakov et al., 2018] 和 Video-to-Video Synthesis [Wang et al., 2018]。

5.3 音频生成

GAN 在音频生成中也有应用,如 WaveGAN [Donahue et al., 2018] 生成原始音频波形,GAN-TTS [Bińkowski et al., 2019] 用于文本到语音合成。

5.4 文本生成

文本是离散数据,GAN 生成面临梯度不可导问题。常用方法:

  • 使用强化学习中的策略梯度(如 SeqGAN [Yu et al., 2017])。
  • 使用连续松弛(如 Gumbel-Softmax)。
  • 预训练语言模型后微调。

5.5 模仿学习

生成对抗模仿学习(GAIL)[Ho & Ermon, 2016] 将 GAN 引入模仿学习:判别器区分专家轨迹与智能体轨迹,生成器(智能体策略)试图欺骗判别器,从而学习专家行为。GAIL 可扩展到各种 f-散度,形成 f-GAIL。

5.6 域适应

通过对抗训练,可以促使特征提取器学习域不变特征,用于域适应(如 Domain-Adversarial Training [Ganin et al., 2016])。CyCADA [Hoffman et al., 2018] 结合 CycleGAN 和语义一致性损失,实现像素级和特征级适应。

5.7 设计、艺术与创意

GAN 被广泛用于艺术创作,如生成新画作、设计服装、创作音乐等。StyleGAN 生成的逼真人脸甚至引发了关于 deepfake 的伦理讨论。


6. 与前后的联系

  • 第2章(概率):f-散度、IPM、MMD。
  • 第3章(统计):密度比估计、分类器与散度的联系。
  • 第4章(图模型):与能量模型的联系(对抗训练 EBM)。
  • 第5章(信息论):f-散度、互信息。
  • 第6章(优化):SGD、重参数化、博弈优化。
  • 第10章(变分推断):与 VAE 的联系(对抗自编码器)。
  • 第16章(深度神经网络):GAN 的生成器和判别器是深度网络。
  • 第20章(生成模型概览):GAN 是深度生成模型的一种。
  • 第21章(VAE):VAE 与 GAN 可结合(如 VAE-GAN)。
  • 第22章(自回归模型):离散 GAN 与 ARM 的联系。
  • 第23章(归一化流):流模型可作为 GAN 的生成器。
  • 第24章(EBM):EBM 的对抗训练与 GAN 相似。
  • 第25章(扩散模型):扩散模型与 GAN 可结合加速采样。

7. 总结与重点

7.1 核心要点

  • GAN 通过判别器与生成器的博弈学习隐式生成模型,无需显式密度。
  • 学习准则包括密度比估计(对应 JSD)、f-散度(f-GAN)、IPM(WGAN、MMD GAN)等。
  • 训练挑战:模式崩溃、不收敛、梯度消失。对策包括改进损失(WGAN)、正则化(梯度惩罚、谱归一化)、架构设计(DCGAN、SAGAN、渐进式生成)。
  • 条件GAN 扩展了生成可控性,广泛用于图像翻译、文本到图像等任务。
  • 大规模 GAN(BigGAN、StyleGAN)在图像生成上达到顶尖质量。
  • 应用广泛:图像、视频、音频、文本、模仿学习、域适应、艺术创作。

7.2 常见难点

  • 理解 f-散度与 IPM 的区别:前者基于密度比,后者基于函数差值,对无重叠分布行为不同。
  • WGAN 的 Lipschitz 约束:如何实现(梯度惩罚 vs 谱归一化)及其效果。
  • 模式崩溃的原因:博弈动态导致生成器满足于局部最优。
  • 条件信息的注入方式:拼接、投影、自适应归一化等。
  • 离散数据 GAN 的梯度估计:策略梯度 vs 连续松弛。

7.3 学习建议

  1. 实现简单 GAN:在 MNIST 上用 MLP 实现原始 GAN,观察模式崩溃。
  2. 尝试 DCGAN:用卷积架构在 CIFAR-10 上训练,调整超参数。
  3. 实践 WGAN-GP:比较与原始 GAN 的损失曲线和样本质量。
  4. 理解条件 GAN:在 MNIST 上实现条件 GAN,生成指定数字。
  5. 探索 CycleGAN:用简单数据集(如 horse2zebra)训练 CycleGAN,理解循环一致性。
  6. 阅读经典论文:原始 GAN、DCGAN、WGAN、SAGAN、StyleGAN、CycleGAN。
  7. 关注稳定训练技巧:谱归一化、一致性正则化、TTUR(Two-Timescale Update Rule)等。

生成对抗网络是生成模型家族中极具影响力的一支,尽管训练困难,但其生成质量和多样性使其在众多领域大放异彩。通过本章的学习,你将掌握 GAN 的核心原理、关键技术和应用场景,为进一步研究和应用打下坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第27章“Discovery Methods: An Overview”详细讲解

1. 引言:从预测和生成到发现

在本书的前几部分,我们深入探讨了预测模型(Part III)和生成模型(Part IV)。预测模型(如线性模型、神经网络、高斯过程)学习从输入 $x$ 到输出 $y$ 的条件映射 $p(y|x)$,用于分类、回归等任务。生成模型(如VAE、自回归模型、流、扩散模型、GAN)学习数据的联合分布 $p(x)$ 或条件分布 $p(x|c)$,能够生成新数据、估计密度、进行插补等。

然而,在科学研究和实际应用中,我们往往不满足于仅仅做出准确的预测或生成逼真的样本。我们更希望理解数据——发现数据背后隐藏的、有意义的、可解释的结构。例如,分析医学影像时,我们希望知道哪些病变特征导致了诊断结果;分析基因表达数据时,我们希望揭示调控网络;分析图像时,我们希望分离出物体的形状、颜色、姿势等语义因子。这种对“为什么”的追求,正是发现方法的核心目标。

1.1 为什么预测和生成还不够?

  • 预测模型(如深度神经网络)通常被视为“黑箱”,它们给出准确的输出,但很难解释预测的依据。即使我们使用特征重要性、注意力机制等事后解释方法,也可能不稳定或不可靠。
  • 生成模型虽然能创造新数据,但它们的内部表示(如VAE的潜变量)往往不可解释,不同训练运行可能得到截然不同的表示,且与人类理解的语义概念缺乏对应。

因此,我们需要一类新的方法,专门用于发现数据中潜在的、可解释的结构。这些方法通常基于潜变量模型(latent variable models),假设观测数据是由一组低维的、有意义的潜变量生成的。通过推断这些潜变量的后验分布,我们可以获得对数据的洞察。

1.2 发现方法的总体目标

第五部分“发现方法”的目标是介绍一系列能够揭示数据内在结构的概率模型和技术。这些方法不仅关注预测精度,更强调模型的可解释性和可发现性。我们将学习如何从数据中提取有意义的因子、如何建模时间序列中的隐藏状态、如何学习图结构、如何使用非参数贝叶斯自动调整模型复杂度、如何学习可解释的表示以及如何解释复杂模型的预测。

下图概括了本章以及整个第五部分的知识框架:

graph TD A[发现方法] --> B[潜变量模型
(第28章)] A --> C[状态空间模型
(第29章)] A --> D[图学习
(第30章)] A --> E[非参数贝叶斯
(第31章)] A --> F[表示学习
(第32章)] A --> G[可解释性
(第33章)] B --> B1[因子分析、PCA、NMF] B --> B2[主题模型(LDA)] B --> B3[独立成分分析(ICA)] B --> B4[非线性扩展(VAE)] C --> C1[隐马尔可夫模型(HMM)] C --> C2[线性动态系统(LDS)] C --> C3[切换模型(SLDS)] C --> C4["非线性/非高斯SSM"] D --> D1[潜变量图模型(如随机块模型)] D --> D2[图结构学习(从数据推断图)] E --> E1[高斯过程] E --> E2[狄利克雷过程] F --> F1[自监督学习] F --> F2[对比学习] F --> F3[解耦表示] G --> G1[固有可解释模型] G --> G2[事后解释方法] G --> G3[解释的属性与评估]

2. 核心思想:潜变量模型与逆图形学

2.1 潜变量模型的基本形式

大多数发现方法的核心是潜变量模型(latent variable model, LVM)。这类模型假设观测数据 $x$ 是由一组潜在变量 $z$ 通过一个映射 $f$ 生成的:

$$ z \sim p(z), \quad x \sim p(x|z) = \text{ExpFamily}(x | f(z)), $$

其中 $p(z)$ 是先验分布,$p(x|z)$ 是给定潜变量的观测似然,$f$ 可以是线性或非线性函数。潜变量 $z$ 通常假设具有较低维度,并且希望每个维度或子空间对应数据中一个可解释的因子(factor of variation)。例如,在手写数字图像中,$z$ 可能编码数字的类别、书写风格、倾斜角度等。

2.2 从观测到潜变量:后验推断

给定一个观测 $x$,我们可以通过贝叶斯定理计算潜变量的后验分布:

$$ p(z|x) = \frac{p(x|z)p(z)}{p(x)}. $$

然而,这个后验通常难以解析计算,尤其当映射 $f$ 是非线性时。因此,我们需要借助近似推断方法,如变分推断(第10章)、MCMC(第12章)或摊销推断(如VAE的编码器)。

在发现任务中,我们往往对后验的点估计(如MAP估计)或后验均值感兴趣,作为潜变量的估计值:

$$ \hat{z}(x) = \underset{z}{\operatorname{argmax}} \log p(z) + \log p(x|z). $$

这些估计值可以用于下游分析,例如聚类、可视化、因果推断等。

2.3 例子:视觉作为逆图形学

一个经典的例子是视觉作为逆图形学(vision as inverse graphics)或分析合成(analysis by synthesis)。在计算机视觉中,我们假设图像是由一个三维场景(包括物体、光照、材质等)通过图形渲染管线生成的。这个渲染过程是一个确定性的前向模型 $x = \text{render}(z)$。给定一张图像 $x$,我们希望反推场景参数 $z$(如物体位置、形状、纹理)。这是一个典型的逆问题,通常需要先验 $p(z)$ 来约束解空间(例如物体通常位于地面上)。

例如,在 [KMY04] 中,作者用贝叶斯方法从单张图像推断物体的3D姿态。他们定义了一个生成模型,包括物体形状、光照等潜变量,然后通过采样或优化寻找最可能的解释。


3. 第五部分各章预览

3.1 第28章:潜因子模型(Latent Factor Models)

这一章将深入介绍经典的“浅层”潜变量模型,其中映射 $f$ 是线性的。我们将学习:

  • 因子分析(Factor Analysis):将观测变量表示为少数公共因子的线性组合加上独立噪声。其协方差结构为低秩加对角。
  • 主成分分析(PCA)的概率版本(PPCA),以及它与因子分析的关系。
  • 混合模型(Mixture Models):如高斯混合模型(GMM),用于聚类和密度估计。
  • 非负矩阵分解(NMF):使用非负因子和稀疏先验,学习可加性部分表示(图28.21)。
  • 主题模型(Topic Models):如潜在狄利克雷分配(LDA),用于文档集合中主题的发现。
  • 独立成分分析(ICA):假设潜变量非高斯且独立,用于盲源分离。

这些模型为理解数据提供了线性、可解释的框架,在许多领域(如心理学、金融、文本分析)仍有广泛应用。

3.2 第29章:状态空间模型(State-Space Models)

当数据具有时间或序列结构时,我们需要动态模型来捕获时间依赖性。本章将介绍:

  • 隐马尔可夫模型(HMM):离散状态,观测可以是离散或连续。用于语音识别、生物序列分析、时间序列分割(图29.6-29.7)。
  • 线性动态系统(LDS):连续状态,线性高斯转移和观测。用于目标跟踪、时间序列预测、在线学习(图29.23)。
  • 切换线性动态系统(SLDS):结合离散和连续状态,用于多模态动态行为建模。
  • 非线性/非高斯状态空间模型:如扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)、粒子滤波(PF)等近似推断方法。
  • 结构时间序列模型:用于预测和因果推断(如CausalImpact)。

通过推断隐状态,我们可以发现数据中的潜在模式、变化点、趋势等。

3.3 第30章:图学习(Graph Learning)

许多数据以图的形式存在(社交网络、蛋白质相互作用网络),或者我们希望从数据中推断变量之间的依赖关系(图结构)。本章将涵盖:

  • 潜变量图模型:如随机块模型(Stochastic Block Model),用于发现网络中的社区结构。
  • 图结构学习:从观测数据中推断概率图模型的图结构(如贝叶斯网络结构学习、高斯图模型的结构估计)。例如,通过图拉索(graphical lasso)学习稀疏精度矩阵(图30.1)。
  • 因果发现:从观测数据中推断因果图,需要额外的假设(如无混杂、 faithfulness)。

3.4 第31章:非参数贝叶斯模型(Nonparametric Bayesian Models)

当模型复杂度(如混合分量数、隐状态数)未知时,非参数贝叶斯方法提供了一种优雅的解决方案。本章将介绍:

  • 高斯过程(GP):函数上的分布,可用于回归、分类,且能自动适应数据复杂度。
  • 狄利克雷过程(DP):用于无限混合模型,自动确定聚类数量。
  • 其他随机过程:如 Pitman-Yor 过程、Beta 过程等,用于语言模型、因子分析等。

这些模型通过先验分布允许模型复杂度随着数据增加而增长,避免了模型选择问题。

3.5 第32章:表示学习(Representation Learning)

表示学习的目的是将原始输入转换为更有用的特征,以便于后续任务。本章将讨论:

  • 自监督学习:通过设计预文本任务(如旋转预测、掩码重建)学习表示,无需标签。
  • 对比学习:如 SimCLR、MoCo,通过拉近正样本对、推远负样本对学习表示。
  • 解耦表示学习:如 β-VAE,试图让每个潜变量维度对应一个独立的语义因子。
  • 评估表示:通过下游任务性能、表示相似性度量(如 CKA、CCA)等。

3.6 第33章:可解释性(Interpretability)

当模型是黑箱时,我们需要事后解释方法来理解其行为。本章将涵盖:

  • 固有可解释模型:如线性模型、决策树、规则列表。
  • 事后解释方法:如特征重要性(LIME、SHAP)、概念激活向量(TCAV)、反事实解释。
  • 解释的属性:忠实性(faithfulness)、稳定性(stability)、可理解性等。
  • 评估解释:通过用户研究、替代任务、启发式测试。

可解释性是确保模型安全、公平、可靠的关键。


4. 核心概念与实例

4.1 潜变量(Latent Variables)

定义:潜变量是模型中未观测到的变量,它们被假设为观测数据背后的“原因”。在发现方法中,我们希望这些潜变量具有语义意义。

例子:在因子分析中,潜变量代表公共因子(如智力、能力)。在主题模型中,潜变量代表文档的主题分布。

4.2 后验推断(Posterior Inference)

定义:给定观测数据,计算潜变量的后验分布 $p(z|x)$。这是从数据中“发现”潜变量的关键步骤。

例子:在 HMM 中,给定观测序列,用前向-后向算法计算每个时刻的状态后验。

4.3 可解释性(Interpretability)

定义:模型或其预测能够被人类理解的程度。在发现方法中,我们追求的是潜变量的可解释性,即每个潜变量维度或因子对应一个人类可理解的语义概念。

例子:在 β-VAE 中,调节 β 可以促使模型学习解耦表示,其中一个维度控制旋转,另一个控制颜色。

4.4 结构发现(Structure Discovery)

定义:从数据中发现变量之间的依赖关系或因果结构。

例子:从基因表达数据推断基因调控网络(图30.1)。从时间序列中检测变化点(changepoint)。


5. 与前后的联系

  • 第1章(引言):本书六大主题,发现是其中之一。
  • 第4章(图模型):为结构发现提供图形化语言。
  • 第10-13章(推断算法):为潜变量模型提供后验推断工具(变分推断、MCMC、SMC)。
  • 第14-18章(预测模型):预测模型可作为发现的基础(如提取特征)。
  • 第20-26章(生成模型):生成模型可作为发现的手段(如VAE的潜空间)。
  • 第28-33章:后续各章将详细展开本章概述的方法。

6. 总结与重点

6.1 核心要点

  • 发现方法旨在从数据中提取可解释的结构,而不仅仅是预测或生成。
  • 潜变量模型是发现的核心工具,通过假设数据由低维潜变量生成,并推断其后验来揭示结构。
  • 不同的数据类型(静态、时序、图)对应不同的模型家族(因子模型、状态空间模型、图模型)。
  • 模型复杂度可通过非参数贝叶斯自动调整。
  • 表示学习关注如何学习有用的特征,可解释性关注如何理解模型本身。
  • 发现方法需要结合领域知识概率建模,评估往往需要人工判断

6.2 常见难点

  • 潜变量的可解释性:如何确保学到的潜变量真的有语义意义?非线性模型中存在不可识别性。
  • 模型选择:如何选择潜变量维度、状态数等?非参数贝叶斯提供了一种途径。
  • 因果 vs 关联:发现的结构是因果的还是仅仅是相关?需要额外的假设和实验。
  • 评估困难:没有“真实”潜变量作为基准,通常需要通过下游任务或人工评估。

6.3 学习建议

  1. 先理解经典模型:从因子分析、PCA、GMM、HMM 入手,掌握它们的基本原理和推断算法。
  2. 动手实践:用 Python 库(如 scikit-learn、PyMC、Stan)实现一些简单模型,观察潜变量的含义。
  3. 阅读经典案例:例如 Sachs et al. [2005] 的蛋白质信号网络发现,Card & Krueger [1994] 的因果推断,Lake et al. [2015] 的概念学习。
  4. 关注前沿:了解解耦表示学习、因果表示学习、可解释AI的最新进展。
  5. 结合应用:思考在你的研究或工作中,哪些问题可以转化为发现任务,如何设计潜变量模型。

本章作为第五部分的序章,为后续各章的学习指明了方向。掌握发现方法,将使你不仅能构建高性能模型,还能从数据中挖掘真正的洞见,推动科学发现和可信AI的发展。


《Probabilistic Machine Learning: Advanced Topics》第28章“Latent Factor Models”详细讲解

1. 引言:从观测数据到隐藏因子

在许多科学和工程问题中,观测数据往往是由一些潜在的、不可观测的因子(factors)所驱动的。例如,在心理学中,学生的考试成绩可能由智力、努力程度等潜在因子决定;在金融中,股票收益率可能受宏观经济因子影响;在图像处理中,一张人脸图像可以由身份、表情、光照、姿态等因子生成。

潜变量模型(Latent Variable Model, LVM)正是为了揭示这种隐藏结构而设计的概率模型。它假设每个观测数据点 $\mathbf{x}_n \in \mathbb{R}^D$ 是由一个低维的潜变量 $\mathbf{z}_n \in \mathbb{R}^L$(通常 $L \ll D$)通过某个映射生成的,同时可能包含观测噪声。其一般形式为:

$$ \mathbf{z}_n \sim p(\mathbf{z}), \quad \mathbf{x}_n | \mathbf{z}_n \sim p(\mathbf{x}|\mathbf{z}_n). $$

当映射为线性时,我们得到一系列经典的“浅层”潜因子模型;当映射为非线性(如神经网络)时,则发展为深度生成模型(如VAE,第21章)。

本章聚焦于线性潜因子模型,它们不仅是许多现代方法的基础,而且由于其可解释性,在数据发现任务中仍然广泛使用。表28.1总结了各种模型,我们将在本章逐一展开。

下图概括了本章的知识体系:

graph TD A[潜因子模型] --> B[混合模型] A --> C[因子分析] A --> D[非高斯先验的因子模型] A --> E[主题模型] A --> F[独立成分分析] B --> B1[高斯混合模型 GMM] B --> B2[伯努利混合] B --> B3["尺度混合 (GSM)"] B --> B4[GMM作为图像先验] C --> C1[因子分析 FA] C --> C2["概率PCA (PPCA)"] C --> C3[混合因子分析 MFA] C --> C4[配对数据的因子模型] D --> D1[非负矩阵分解 NMF] D --> D2["多项式PCA / 单纯形因子分析"] D --> D3[指数族因子分析] E --> E1[潜在狄利克雷分配 LDA] E --> E2[相关主题模型 CTM] E --> E3[动态主题模型 DTM] E --> E4[LDA-HMM] F --> F1[独立成分分析 ICA] F --> F2[稀疏编码]

2. 混合模型(Mixture Models)

2.1 基本思想

混合模型是一种最简单的潜变量模型,其中潜变量 $z$ 是离散的,表示观测样本属于哪一个“成分”或“簇”。模型将数据分布表示为多个简单分布的凸组合:

$$ p(\mathbf{x}|\boldsymbol{\theta}) = \sum_{k=1}^{K} \pi_k \, p_k(\mathbf{x}), $$

其中 $\pi_k$ 是混合权重($\pi_k \ge 0, \sum_k \pi_k = 1$),$p_k$ 是第 $k$ 个成分的分布。引入潜变量 $z \in \{1,\dots,K\}$,则联合分布为:

$$ p(z=k) = \pi_k, \quad p(\mathbf{x}|z=k) = p_k(\mathbf{x}). $$

混合模型可以用于软聚类:通过后验 $p(z=k|\mathbf{x})$ 将数据点分配给不同成分。

2.2 高斯混合模型(Gaussian Mixture Model, GMM)

GMM 是最常用的混合模型,每个成分为高斯分布:

$$ p(\mathbf{x}) = \sum_{k=1}^{K} \pi_k \, \mathcal{N}(\mathbf{x} | \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k). $$

图28.1展示了3个高斯成分的密度。GMM 可逼近任何连续分布。通过EM算法(第6.5.3节)估计参数,然后计算后验得到软聚类(图28.2)。

2.3 伯努利混合模型

对于二元数据(如文本词袋、黑白图像),可使用伯努利分布作为成分:

$$ p(\mathbf{x}) = \sum_{k=1}^{K} \pi_k \prod_{d=1}^{D} \mathrm{Ber}(x_d | \mu_{kd}). $$

这相当于一种“潜在类分析”(latent class analysis)。

2.4 尺度混合(Scale Mixtures)

许多重尾分布(如Student-t、拉普拉斯)可以表示为高斯分布的尺度混合(Gaussian Scale Mixture, GSM)。引入一个正的尺度变量 $\tau$:

$$ p(x) = \int \mathcal{N}(x | 0, \tau^2 \sigma_0^2) \, p(\tau) d\tau. $$
  • Student-t 分布:$\tau \sim \mathrm{IG}(\nu/2, \nu/2)$。
  • 拉普拉斯分布:$\tau^2 \sim \mathrm{Ga}(1, \lambda^2/2)$。
  • Spike-and-slab 先验:$\tau$ 以概率 $\pi$ 取1,以概率 $1-\pi$ 取0(退化)。
  • Horseshoe 先验:$\tau \sim \mathcal{C}^+(0,1)$(半柯西),产生强收缩和重尾。

尺度混合在稀疏建模和稳健回归中非常重要。

2.5 GMM 作为图像先验

Zoran & Weiss [2011] 提出用 GMM 建模自然图像块(patch)的分布,然后用于解决逆成像问题(如去噪、去模糊、修复)。对于每个图像块 $\mathbf{x}_i$,假设它来自 GMM:

$$ p(\mathbf{x}_i) = \sum_{k=1}^{K} \pi_k \mathcal{N}(\mathbf{x}_i | \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k). $$

给定退化模型 $\mathbf{y} = \mathbf{W}\mathbf{x} + \mathbf{n}$,可通过 MAP 估计复原图像。图28.4展示了去噪、去模糊、修复的结果。图28.5显示了GMM成分的主特征向量,它们类似边缘和纹理基元。


3. 因子分析(Factor Analysis)

3.1 基本模型

因子分析(Factor Analysis, FA)假设观测 $\mathbf{x} \in \mathbb{R}^D$ 由低维潜变量 $\mathbf{z} \in \mathbb{R}^L$ 线性生成,加上独立的高斯噪声:

$$ p(\mathbf{z}) = \mathcal{N}(\mathbf{z} | \mathbf{0}, \mathbf{I}), \quad p(\mathbf{x}|\mathbf{z}) = \mathcal{N}(\mathbf{x} | \mathbf{W}\mathbf{z} + \boldsymbol{\mu}, \boldsymbol{\Psi}), $$

其中 $\mathbf{W}$ 是 $D \times L$ 的因子载荷矩阵,$\boldsymbol{\Psi} = \mathrm{diag}(\psi_1,\dots,\psi_D)$ 是观测噪声的方差(对角矩阵)。边际分布为:

$$ p(\mathbf{x}) = \mathcal{N}(\mathbf{x} | \boldsymbol{\mu}, \mathbf{W}\mathbf{W}^T + \boldsymbol{\Psi}). $$

这实现了对协方差矩阵的低秩分解(图28.6)。

3.2 推断与学习

后验 $p(\mathbf{z}|\mathbf{x})$ 也是高斯,可用贝叶斯公式计算(式28.43-28.45)。通过矩阵求逆引理可高效计算边际似然。参数可用EM算法估计(式28.51-28.58),M步更新 $\mathbf{W}$ 和 $\boldsymbol{\Psi}$。

3.3 非唯一性与旋转

因子载荷矩阵 $\mathbf{W}$ 不是唯一确定的:对于任意正交矩阵 $\mathbf{R}$,$\tilde{\mathbf{W}} = \mathbf{W}\mathbf{R}$ 给出相同的协方差,因为 $\tilde{\mathbf{W}}\tilde{\mathbf{W}}^T = \mathbf{W}\mathbf{R}\mathbf{R}^T\mathbf{W}^T = \mathbf{W}\mathbf{W}^T$。这称为因子旋转问题。为了使因子可解释,可采用:

  • 强制 $\mathbf{W}$ 为下三角(识别性条件)。
  • 使用稀疏先验(如ARD)鼓励每个因子只影响少数变量。
  • 旋转到简单结构(如varimax)。

3.4 概率主成分分析(PPCA)

当噪声为各向同性 $\boldsymbol{\Psi} = \sigma^2 \mathbf{I}$ 时,得到概率PCA(PPCA)[Tipping & Bishop, 1999]。其MLE有闭式解:$\mathbf{W}_{\text{ML}}$ 的列张成与数据协方差矩阵的前 $L$ 个主成分相同的子空间。当 $\sigma^2 \to 0$ 时,PPCA退化为经典PCA。

3.5 混合因子分析(Mixture of Factor Analyzers, MFA)

MFA [Ghahramani & Hinton, 1996] 结合了混合模型和因子分析,每个混合成分有自己的因子模型:

$$ p(\mathbf{x}) = \sum_{k=1}^{K} \pi_k \, \mathcal{N}(\mathbf{x} | \boldsymbol{\mu}_k, \mathbf{W}_k\mathbf{W}_k^T + \boldsymbol{\Psi}), $$

其中 $\boldsymbol{\Psi}$ 可共享。MFA 可以近似弯曲流形(图28.8)。通过EM算法学习,并可用ARD自动确定各成分的有效维度(图28.9-28.10)。MFA在图像建模中表现惊人(图28.11-28.14),可用于生成、离群点检测、图像修复。

3.6 配对数据的因子模型

当有两个观测模态 $\mathbf{x}$ 和 $\mathbf{y}$ 时,可建立共享潜变量的模型:

  • 监督PCA [Yu et al., 2006]:$p(\mathbf{x},\mathbf{y}|\mathbf{z}) = p(\mathbf{x}|\mathbf{z})p(\mathbf{y}|\mathbf{z})$,潜变量 $\mathbf{z}$ 共享。
  • 偏最小二乘(PLS):允许 $\mathbf{x}$ 有自己的私有潜变量,共享部分预测 $\mathbf{y}$。
  • 典型相关分析(CCA)的概率版本 [Bach & Jordan, 2005]:$\mathbf{x}$ 和 $\mathbf{y}$ 各有私有潜变量,并有共享潜变量。

这些模型可用于多视图学习、数据融合。

3.7 指数族因子分析

当观测为非高斯(如二元、计数)时,可用指数族分布作为似然:

$$ p(\mathbf{x}_n|\mathbf{z}_n) = \prod_{d} \mathrm{ExpFamily}(x_{nd} | \eta_{nd}), \quad \eta_{nd} = \mathbf{w}_d^T \mathbf{z}_n. $$

这称为指数族PCA [Collins et al., 2002]。由于非共轭,通常使用变分EM或拉普拉斯近似。图28.18展示了二元PCA在合成数据上的结果。


4. 非高斯先验的因子模型

当对潜变量施加非高斯先验时,可以获得更具可解释性的分解,例如稀疏性、非负性等。

4.1 非负矩阵分解(NMF)

如果数据非负(如图像像素、词频),且希望因子也非负,则得到非负矩阵分解(NMF)[Lee & Seung, 1999]。其概率版本为GaP(Gamma-Poisson)模型 [Canny, 2004]:

$$ z_{nk} \sim \mathrm{Ga}(\alpha_k, \beta_k), \quad x_{nd} \sim \mathrm{Poi}(\sum_k z_{nk} w_{kd}). $$

NMF 能学习到“部分”表示(图28.21),在图像分析、音频处理、推荐系统中应用广泛。

4.2 多项式PCA / 单纯形因子分析

当数据为多项分布(如文档词频)时,可用多项式PCA(multinomial PCA)或单纯形因子分析(simplex factor analysis)[Buntine & Jakulin, 2006]。模型为:

$$ \mathbf{z}_n \sim \mathrm{Dir}(\boldsymbol{\alpha}), \quad x_{nd} \sim \mathrm{Cat}(\mathbf{W}_d \mathbf{z}_n). $$

这相当于混合成员模型(admixture model),允许每个数据点部分属于多个因子。用于分析美国参议院投票数据(图28.22)可揭示政治派别。

4.3 与主题模型的联系

多项式PCA 是潜在狄利克雷分配(LDA)的基础。在 LDA 中,每个文档有主题分布 $\mathbf{z}_n$,每个词的主题分配 $m_{nl}$ 是离散的。这将在第5节详细讨论。


5. 主题模型(Topic Models)

主题模型用于从文档集合中发现隐藏的“主题”——一组共现的词。最著名的是潜在狄利克雷分配(LDA)[Blei et al., 2003]。

5.1 LDA 模型定义

LDA 假设每个文档由多个主题混合而成,每个主题是一个词上的分布。生成过程:

  1. 对每个文档 $n$,采样主题比例 $\mathbf{z}_n \sim \mathrm{Dir}(\boldsymbol{\alpha})$。
  2. 对文档中每个词位置 $l$:
    • 采样主题分配 $m_{nl} \sim \mathrm{Cat}(\mathbf{z}_n)$。
    • 采样词 $x_{nl} \sim \mathrm{Cat}(\mathbf{W}_{m_{nl},:})$,其中 $\mathbf{W}_{k,:}$ 是第 $k$ 个主题的词分布。

图28.23展示了LDA的图模型。通常对主题分布也加狄利克雷先验 $\mathbf{W}_{k,:} \sim \mathrm{Dir}(\boldsymbol{\beta})$,鼓励稀疏性。

5.2 后验推断

LDA 的后验难以计算,常用方法:

  • 变分EM [Blei et al., 2003]。
  • 折叠吉布斯采样 [Griffiths & Steyvers, 2004]:积分掉 $\mathbf{z}_n$ 和 $\mathbf{W}$,直接采样主题分配。
  • 随机变分推断 [Hoffman et al., 2010] 用于大规模数据。

5.3 多义性与解释

图28.25展示了 LDA 发现的三个与“play”相关的主题(音乐、戏剧、体育),说明了模型处理一词多义的能力。图28.26展示了在文档层面,LDA 可以给不同词分配不同主题,从而实现词义消歧。

5.4 主题数选择

可用交叉验证、边际似然近似(如和谐均值)、非参数贝叶斯(如 HDP)等方法确定主题数。

5.5 相关主题模型(Correlated Topic Model, CTM)

LDA 的狄利克雷先验假设主题之间不相关,这不符合实际(如“商业”和“金融”常共现)。CTM [Blei & Lafferty, 2007] 用逻辑正态先验替代狄利克雷:

$$ \mathbf{z}_n = \mathrm{softmax}(\boldsymbol{\epsilon}_n), \quad \boldsymbol{\epsilon}_n \sim \mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma}). $$

这允许主题间有协方差。通过推断 $\boldsymbol{\Sigma}$ 并剪枝,可得到主题关系图(图28.27)。

5.6 动态主题模型(Dynamic Topic Model, DTM)

当文档按时间顺序排列,主题可能随时间演变。DTM [Blei & Lafferty, 2006] 让主题的词分布在时间上平滑变化,用状态空间模型建模:

$$ \mathbf{w}_t^k \sim \mathcal{N}(\mathbf{w}_{t-1}^k, \sigma^2 \mathbf{I}), \quad \mathbf{x}_{nl} \sim \mathrm{Cat}(\mathrm{softmax}(\mathbf{w}_t^k)). $$

图28.29展示了“神经科学”主题随时间从“nerve”转向“neuron”、“calcium”等,反映了研究焦点的变迁。

5.7 LDA-HMM

为了同时建模文档的局部语法结构和全局语义,LDA-HMM [Griffiths et al., 2004] 将 HMM 用于生成功能词(如“the”、“and”),而 LDA 用于生成实义词。这提高了主题的纯净度(表28.2),并能区分一词多义(图28.31)。


6. 独立成分分析(ICA)

6.1 问题:盲源分离

独立成分分析(ICA)旨在从线性混合信号中恢复出统计独立的源信号。例如,在“鸡尾酒会问题”中,多个麦克风接收到不同说话人的混合声音,我们希望分离出每个说话人的声音。

模型为:

$$ \mathbf{x} = \mathbf{A} \mathbf{s}, \quad \mathbf{s} \sim \prod_j p_j(s_j), $$

其中 $\mathbf{A}$ 是混合矩阵(可逆),$\mathbf{s}$ 是源信号。目标是找到分离矩阵 $\mathbf{B} = \mathbf{A}^{-1}$,使得 $\hat{\mathbf{s}} = \mathbf{B}\mathbf{x}$ 的各分量尽可能独立。

6.2 为什么需要非高斯先验?

如果源信号是高斯且独立,则 $\mathbf{x}$ 也是高斯,且 $\mathbf{A}$ 无法唯一确定(旋转不变性)。因此 ICA 必须依赖非高斯性。通常假设源分布是超高斯(如拉普拉斯)或亚高斯(如均匀)。图28.33说明了PCA只能找到不相关子空间(白化),而ICA通过非高斯性确定旋转。

6.3 最大似然估计

由变量变换公式,$\mathbf{x}$ 的似然为:

$$ p_x(\mathbf{x}) = p_s(\mathbf{B}\mathbf{x}) |\det \mathbf{B}|. $$

最大化对数似然得到目标函数。通过白化数据,将 $\mathbf{B}$ 约束为正交,可简化优化。FastICA [Hyvärinen & Oja, 2000] 是一种快速算法,基于近似负熵的固定点迭代。

6.4 其他观点

  • 最大化非高斯性:投影寻踪。
  • 最小化互信息:等价于最大似然。
  • 信息最大化(Infomax):等价于最大似然当使用logistic非线性。

6.5 稀疏编码

当允许 $L > D$(过完备)且源分布为拉普拉斯时,模型称为稀疏编码(sparse coding)。观测由稀疏的基函数组合生成:

$$ \mathbf{x} = \mathbf{W}\mathbf{s} + \boldsymbol{\epsilon}, \quad s_j \sim \mathrm{Laplace}(0, 1/\lambda). $$

给定 $\mathbf{W}$,推断 $\mathbf{s}$ 是 $\ell_1$ 正则化问题。学习 $\mathbf{W}$ 可通过交替优化(字典学习)。图28.34展示了稀疏编码学到的边缘检测器,与初级视觉皮层(V1)的简单细胞相似。


7. 与前后的联系

  • 第2章(概率):高斯分布、指数族、共轭先验。
  • 第3章(统计):贝叶斯推断、EM算法。
  • 第4章(图模型):有向图、无向图、因子图,为本章的图模型表示提供基础。
  • 第10章(变分推断):用于主题模型的变分EM。
  • 第12章(MCMC):用于主题模型的吉布斯采样。
  • 第15章(GLM):广义线性模型与指数族联系,用于指数族因子分析。
  • 第16章(深度神经网络):非线性因子分析(VAE)是本章模型的深度扩展。
  • 第18章(高斯过程):GP-LVM 是因子分析的非线性非参数版本。
  • 第21章(VAE):VAE 是本章非线性因子分析的深度版本。
  • 第32章(表示学习):本章模型是表示学习的经典方法。

8. 总结与重点

8.1 核心要点

  • 潜因子模型通过低维潜变量解释高维观测,核心是线性映射加噪声。
  • 混合模型(GMM、伯努利混合)用于聚类和密度估计。
  • 因子分析(FA、PPCA)对协方差进行低秩分解,用于降维和结构发现。
  • 混合因子分析(MFA)结合了混合模型和因子分析,可建模多模态数据流形。
  • 非负矩阵分解(NMF)施加非负性,学习“部分”表示。
  • 主题模型(LDA及其扩展)从文本中发现语义主题,可建模多义性和时间演化。
  • 独立成分分析(ICA)利用非高斯性分离独立源信号,用于盲源分离。
  • 稀疏编码用稀疏先验学习过完备基,模拟初级视觉皮层。

8.2 常见难点

  • 因子旋转与可解释性:非唯一性需要额外约束或后处理。
  • 模型选择:确定因子数、主题数等,可用交叉验证、信息准则或非参数贝叶斯。
  • 非高斯似然的推断:指数族因子分析需近似推断(变分、拉普拉斯)。
  • ICA的非高斯性要求:理解为什么高斯源不可识别。
  • LDA的推断算法:变分EM与吉布斯采样的区别与联系。

8.3 学习建议

  1. 从GMM和FA开始:理解EM算法,实现简单的GMM和FA,观察潜变量的作用。
  2. 实践主题模型:用Gensim或Scikit-learn运行LDA,调整主题数,解释结果。
  3. 尝试NMF:在人脸数据集上应用NMF,观察学习到的“部分”特征。
  4. 模拟ICA:生成人工混合信号,用FastICA分离,验证恢复效果。
  5. 阅读经典论文:LDA原始论文、NMF、ICA综述。
  6. 与现代方法联系:思考本章模型与VAE、自编码器的关系,如何将它们扩展到非线性。

本章涵盖了概率机器学习中一系列经典且强大的潜变量模型。它们不仅是理解现代深度生成模型的基础,而且在许多领域仍然是可解释数据分析的首选工具。掌握这些模型,将为后续学习更复杂的非线性模型和表示学习方法奠定坚实的基石。


《Probabilistic Machine Learning: Advanced Topics》第29章“State-Space Models”详细讲解

1. 引言:从静态潜变量到动态系统

在第28章中,我们学习了潜因子模型,它们假设观测数据由一组静态的潜变量生成,且样本间独立。然而,许多现实世界的数据具有时间依赖性:今天的观测与昨天的观测相关,未来的状态依赖于当前的状态。例如,股票价格随时间波动,语音信号前后关联,机器人的位置随运动连续变化。

为了建模这种动态依赖,我们需要引入状态空间模型(State-Space Model, SSM)。SSM 用一个随时间演化的隐状态(hidden state)$\mathbf{z}_t$ 来捕捉系统的动态,每个时刻的隐状态生成当前的观测 $\mathbf{y}_t$。隐状态遵循马尔可夫性质:给定当前状态 $\mathbf{z}_t$,未来状态 $\mathbf{z}_{t+1}$ 与过去状态 $\mathbf{z}_{1:t-1}$ 独立。这形成了一个部分可观测的马尔可夫模型(partially observed Markov model)。

本章将系统介绍 SSM 的各类变体:从经典的隐马尔可夫模型(HMM)和线性动态系统(LDS),到复杂的切换模型、非线性模型以及结合深度学习的深度状态空间模型。我们将重点讨论推断(给定观测,估计隐状态)和学习(估计模型参数)这两大核心问题。

下图概括了本章的知识体系:

graph TD A[状态空间模型 SSM] --> B[隐马尔可夫模型 HMM] A --> C[线性动态系统 LDS] A --> D[切换线性动态系统 SLDS] A --> E["非线性/非高斯SSM"] A --> F[结构时间序列模型] A --> G[深度SSM] B --> B1[定义与表示] B --> B2[推断(前向-后向、维特比)] B --> B3[学习(Baum-Welch, SGD, 贝叶斯)] B --> B4[扩展(HSMM, FHMM, DBN)] B --> B5[应用(分割、对齐、拼写)] C --> C1[定义与参数化] C --> C2["卡尔曼滤波/平滑"] C --> C3[学习(EM, 子空间, 贝叶斯)] C --> C4[应用(跟踪、RLS、预测)] D --> D1[定义与挑战] D --> D2[近似推断(多假设、粒子、ADF)] D --> D3[应用(多目标跟踪)] E --> E1[非线性高斯(EKF, UKF)] E --> E2[非高斯(泊松LDS, 随机波动)] E --> E3[粒子滤波] F --> F1[分解为趋势、季节等] F --> F2[作为LDS的组合] F --> F3[拟合与预测(BSTS, Prophet)] F --> F4[因果推断(CausalImpact)] G --> G1[深度马尔可夫模型 DMM] G --> G2[循环SSM RSSM] G --> G3[变分RNN VRNN] G --> G4[应用(视频预测、RL)]

2. 状态空间模型基础

2.1 定义

一个离散时间的状态空间模型由两部分组成:

  • 状态转移模型:$\mathbf{z}_t = f(\mathbf{z}_{t-1}, \mathbf{u}_t, \mathbf{q}_t)$,其中 $\mathbf{u}_t$ 是可选的输入(控制信号),$\mathbf{q}_t$ 是过程噪声。概率形式:$p(\mathbf{z}_t | \mathbf{z}_{t-1}, \mathbf{u}_t)$。
  • 观测模型:$\mathbf{y}_t = h(\mathbf{z}_t, \mathbf{u}_t, \mathbf{r}_t)$,$\mathbf{r}_t$ 是观测噪声。概率形式:$p(\mathbf{y}_t | \mathbf{z}_t, \mathbf{u}_t)$。

通常假设观测只依赖于当前状态(马尔可夫性质),即 $p(\mathbf{y}_t | \mathbf{z}_{1:t}, \mathbf{y}_{1:t-1}, \mathbf{u}_{1:t}) = p(\mathbf{y}_t | \mathbf{z}_t, \mathbf{u}_t)$。联合分布为:

$$ p(\mathbf{y}_{1:T}, \mathbf{z}_{1:T} | \mathbf{u}_{1:T}) = p(\mathbf{z}_1 | \mathbf{u}_1) \prod_{t=2}^T p(\mathbf{z}_t | \mathbf{z}_{t-1}, \mathbf{u}_t) \prod_{t=1}^T p(\mathbf{y}_t | \mathbf{z}_t, \mathbf{u}_t). $$

2.2 三类推断任务

  • 滤波(Filtering):在线估计当前状态,即计算 $p(\mathbf{z}_t | \mathbf{y}_{1:t}, \mathbf{u}_{1:t})$。
  • 平滑(Smoothing):离线估计过去状态,即计算 $p(\mathbf{z}_t | \mathbf{y}_{1:T}, \mathbf{u}_{1:T})$。
  • 预测(Prediction):预测未来状态或观测,即 $p(\mathbf{z}_{t+h} | \mathbf{y}_{1:t}, \mathbf{u}_{1:t+h})$ 或 $p(\mathbf{y}_{t+h} | \mathbf{y}_{1:t}, \mathbf{u}_{1:t+h})$。

2.3 图模型表示

图29.1展示了SSM的通用图结构:隐状态节点 $\mathbf{z}_t$ 构成链,每个 $\mathbf{z}_t$ 生成观测 $\mathbf{y}_t$,输入 $\mathbf{u}_t$ 可影响转移和观测。


3. 隐马尔可夫模型(HMM)

3.1 定义

HMM 是状态空间模型的特例,其中隐状态 $\mathbf{z}_t$ 是离散的,取值于 $\{1,\dots,K\}$。观测可以是离散或连续。

  • 初始状态分布:$\pi_k = p(z_1 = k)$。
  • 转移矩阵:$A_{ij} = p(z_t = j | z_{t-1} = i)$,每行和为1。
  • 观测模型:$p(\mathbf{y}_t | z_t = j)$ 可以是:
    • 离散:$p(y_t = v | z_t = j) = B_{jv}$。
    • 高斯:$p(\mathbf{y}_t | z_t = j) = \mathcal{N}(\mathbf{y}_t | \boldsymbol{\mu}_j, \boldsymbol{\Sigma}_j)$(图29.3)。
    • 自回归:$p(y_t | y_{t-1}, z_t = j) = \mathcal{N}(y_t | \phi_j y_{t-1} + \mu_j, \sigma_j^2)$(图29.4-29.5)。
    • 神经网络:通过分类器构造似然(“缩放似然技巧”)。

3.2 推断

  • 滤波:前向算法($\alpha_t(j) = p(z_t = j | \mathbf{y}_{1:t})$),递归: $$ \alpha_t(j) \propto p(\mathbf{y}_t | z_t = j) \sum_i \alpha_{t-1}(i) A_{ij}. $$
  • 平滑:前向-后向算法,计算 $\gamma_t(j) = p(z_t = j | \mathbf{y}_{1:T})$,以及两时刻联合 $\xi_{t-1,t}(i,j)$。
  • Viterbi 算法:寻找最可能状态序列 $\mathbf{z}_{1:T}^*$。
  • 前向滤波后向采样:从后验 $p(\mathbf{z}_{1:T} | \mathbf{y}_{1:T})$ 采样,用于贝叶斯HMM。

3.3 学习

  • Baum-Welch(EM):E步用前向-后向计算期望充分统计量(状态占用计数、转移计数),M步更新 $\pi, A, B$。算法29.1给出了离散观测的伪代码。
  • SGD:直接优化 $\log p(\mathbf{y}_{1:T})$,可用前向算法计算似然,并保持参数的约束(如 softmax 重参数化)。图29.13-29.14比较了EM和SGD在赌场HMM上的表现。
  • 谱方法:利用观测之间的矩(如协方差张量)来估计参数,无需迭代。
  • 贝叶斯HMM:用先验(如狄利克雷、正态-Wishart),通过吉布斯采样(算法29.2)或变分推断学习后验。

3.4 应用实例

  • 时间序列分割:泊松HMM 检测变化点(图29.6-29.8),通过边际似然选择状态数。
  • 蛋白质序列对齐:profile HMM 建模序列家族,用于搜索和比对(图29.9-29.10)。
  • 拼写纠正:HMM 结合语言模型和错误模型,纠正用户查询(图29.11)。

3.5 扩展

  • 半马尔可夫模型(HSMM):显式建模状态持续时间,克服几何分布限制(图29.15-29.16)。
  • 层次HMM(HHMM):多尺度抽象(图29.17-29.18)。
  • 因子HMM(FHMM):多个独立马尔可夫链的乘积,用于能源分解(图29.19)。
  • 耦合HMM:多个相关链,用于多传感器融合(图29.19b)。
  • 动态贝叶斯网络(DBN):任意图结构的随机过程(图29.20)。
  • 变点检测:BOCPD 算法,在线推断运行长度(图29.21-29.22)。

4. 线性动态系统(LDS)

4.1 定义

LDS 是状态空间模型的线性高斯版本:

$$ \mathbf{z}_t = \mathbf{F}_t \mathbf{z}_{t-1} + \mathbf{B}_t \mathbf{u}_t + \mathbf{q}_t, \quad \mathbf{q}_t \sim \mathcal{N}(\mathbf{0}, \mathbf{Q}_t), $$

$$ \mathbf{y}_t = \mathbf{H}_t \mathbf{z}_t + \mathbf{D}_t \mathbf{u}_t + \mathbf{r}_t, \quad \mathbf{r}_t \sim \mathcal{N}(\mathbf{0}, \mathbf{R}_t). $$

通常假设时不变,即参数与 $t$ 无关。

4.2 推断:卡尔曼滤波与平滑

  • 卡尔曼滤波(第8章):递归计算高斯滤波分布 $p(\mathbf{z}_t | \mathbf{y}_{1:t}) = \mathcal{N}(\boldsymbol{\mu}_{t|t}, \boldsymbol{\Sigma}_{t|t})$。步骤:
    • 预测:$\boldsymbol{\mu}_{t|t-1} = \mathbf{F}\boldsymbol{\mu}_{t-1|t-1} + \mathbf{B}\mathbf{u}_t$,$\boldsymbol{\Sigma}_{t|t-1} = \mathbf{F}\boldsymbol{\Sigma}_{t-1|t-1}\mathbf{F}^T + \mathbf{Q}$。
    • 更新:计算卡尔曼增益 $\mathbf{K}_t$,更新均值和协方差。
  • RTS平滑:后向递归,得到平滑分布 $p(\mathbf{z}_t | \mathbf{y}_{1:T})$,比滤波更准确(图29.23)。
  • 信息形式:使用精度矩阵,适用于无先验信息或多传感器融合。

4.3 应用

  • 目标跟踪:用常速度模型(式29.81)跟踪移动物体(图29.23)。
  • 在线贝叶斯线性回归:将参数视作状态,观测为 $y_t = \mathbf{x}_t^T \mathbf{w}_t + \epsilon_t$,用卡尔曼滤波实现递归最小二乘(RLS),比SGD更快收敛(图29.24)。
  • 自适应滤波:估计时变 AR 模型参数。
  • 时间序列预测:作为结构时间序列的基础。

4.4 学习

  • EM 算法:E步用卡尔曼平滑计算期望充分统计量,M步更新参数(式29.89-29.108)。
  • 子空间识别(SSID):通过观测矩阵的奇异值分解估计状态序列,再拟合模型。
  • 贝叶斯LDS:用吉布斯采样(算法29.3)或变分推断学习参数后验。
  • 在线学习:自适应滤波方法(如递推EM)。

5. 切换线性动态系统(SLDS)

5.1 定义

SLDS 结合了离散和连续状态:离散模式 $m_t \in \{1,\dots,K\}$ 控制连续状态的动态:

$$ p(m_t = k | m_{t-1} = j) = A_{jk}, $$

$$ p(\mathbf{z}_t | \mathbf{z}_{t-1}, m_t = k) = \mathcal{N}(\mathbf{z}_t | \mathbf{F}_k \mathbf{z}_{t-1} + \mathbf{B}_k \mathbf{u}_t, \mathbf{Q}_k), $$

$$ p(\mathbf{y}_t | \mathbf{z}_t, m_t = k) = \mathcal{N}(\mathbf{y}_t | \mathbf{H}_k \mathbf{z}_t + \mathbf{D}_k \mathbf{u}_t, \mathbf{R}_k). $$

5.2 推断难题

由于离散状态的历史组合,后验 $p(\mathbf{z}_{1:T}, \mathbf{m}_{1:T} | \mathbf{y}_{1:T})$ 的规模随时间指数增长(图29.25b)。因此必须使用近似方法:

  • 多假设跟踪:剪枝低概率轨迹。
  • 粒子滤波:采样离散轨迹,对连续状态用卡尔曼滤波(RBPF)。
  • ADF(假设密度滤波):用混合高斯近似后验,并合并相近成分(如 GPB2、IMM)。

5.3 应用:多目标跟踪

多目标跟踪是SLDS的经典应用。每个目标有自己的状态,但观测未标记,需要解决数据关联问题(图29.27-29.28)。近似方法包括:

  • 最近邻匈牙利算法:硬分配。
  • SPADA:用置信传播软关联。
  • 随机有限集(PHD滤波)处理未知目标数。

6. 非线性/非高斯状态空间模型

6.1 非线性高斯SSM

当转移或观测函数非线性时,可用:

  • 扩展卡尔曼滤波(EKF):一阶线性化,简单但可能发散。
  • 无迹卡尔曼滤波(UKF):用确定性采样(无迹变换)传播高斯,无需导数,精度更高。
  • 一般高斯滤波(GGF):通过矩匹配统一 EKF、UKF、CKF 等。
  • 迭代后验线性化(IPLF/IPLS):在测量附近多次线性化,提高精度。

6.2 非高斯SSM

当噪声非高斯(如泊松、学生-t)时,可采用:

  • 泊松LDS:用于神经尖峰计数(图29.30-29.31)。推断可用拉普拉斯近似或粒子滤波。
  • 随机波动率模型:金融中建模收益率波动(式29.129-29.130)。
  • 粒子滤波:通用非线性非高斯滤波,通过重要性采样和重采样近似后验(第13章)。

7. 结构时间序列模型(Structural Time Series, STS)

7.1 基本思想

STS 将观测序列分解为多个可解释成分的和:

$$ y_t = \mu_t + \tau_t + s_t + \beta^T \mathbf{u}_t + \epsilon_t, $$

其中 $\mu_t$ 是趋势,$\tau_t$ 是周期,$s_t$ 是季节,$\mathbf{u}_t$ 是协变量。每个成分用线性高斯SSM建模,然后组合成一个大的LDS。

7.2 构建块

  • 局部水平:$\mu_t = \mu_{t-1} + \eta_t$。
  • 局部线性趋势:$\mu_t = \mu_{t-1} + \delta_{t-1} + \eta_t$,$\delta_t = \delta_{t-1} + \zeta_t$。
  • 季节成分:对周期 $S$,有 $s_t = -\sum_{k=1}^{S-1} s_{t-k} + \omega_t$。
  • 回归:$\beta^T \mathbf{u}_t$。

将这些状态合并成一个大状态向量,转移矩阵和观测矩阵由块构成(式29.149)。

7.3 拟合与预测

  • MLE:通过卡尔曼滤波计算似然,用梯度法或EM优化。
  • 贝叶斯(BSTS):用MCMC或变分推断学习参数后验,得到预测分布(图29.33-29.34)。
  • Prophet:Facebook 开发的简化版本,用分段线性和傅里叶季节,通过优化拟合,适合商业预测。

7.4 应用:因果影响

利用 STS 可以估计干预的因果效应(CausalImpact)。用干预前数据训练模型,预测干预后的反事实序列,与实际比较得到因果效应(图29.39-29.41)。这需要假设没有其他干扰。


8. 深度状态空间模型

8.1 深度马尔可夫模型(DMM)

DMM [Krishnan et al., 2017] 用神经网络参数化转移和观测模型,并用摊销变分推断(编码器)学习。编码器可以是单向RNN(用于滤波)或双向RNN(用于平滑)(图29.42)。ELBO 为:

$$ \mathcal{L} = \sum_{t=1}^T \mathbb{E}_{q(\mathbf{z}_t)}[\log p(\mathbf{y}_t|\mathbf{z}_t)] - \mathbb{E}_{q(\mathbf{z}_{t-1})}[D_{\mathrm{KL}}(q(\mathbf{z}_t) \| p(\mathbf{z}_t|\mathbf{z}_{t-1}))]. $$

8.2 循环状态空间模型(RSSM)

RSSM [Hafner et al., 2019] 引入确定性隐藏状态 $\mathbf{h}_t$ 来记忆过去信息:

$$ \mathbf{h}_t = f(\mathbf{h}_{t-1}, \mathbf{z}_{t-1}), \quad \mathbf{z}_t \sim p(\mathbf{z}_t | \mathbf{h}_t), \quad \mathbf{y}_t \sim p(\mathbf{y}_t | \mathbf{h}_t, \mathbf{z}_t). $$

这增强了模型容量,用于模型强化学习(如 PlaNet、Dreamer)。

8.3 变分RNN(VRNN)

VRNN [Chung et al., 2015] 在每个时刻,$\mathbf{z}_t$ 依赖于过去的 $\mathbf{z}_{1:t-1}$ 和 $\mathbf{y}_{1:t-1}$,生成 $\mathbf{y}_t$ 时也依赖于 $\mathbf{z}_{1:t}$。它非常灵活,但预测时需要已知未来输入,不适合长期预测。

8.4 应用

  • 视频预测:SVG [Denton & Fergus, 2018] 用VRNN生成未来帧。
  • 模型强化学习:PlaNet、Dreamer 用 RSSM 学习世界模型,在潜空间规划。

9. 与前后的联系

  • 第4章(图模型):SSM 是动态图模型的实例。
  • 第8章(高斯滤波):详细介绍了卡尔曼滤波、EKF、UKF,是本章LDS的基础。
  • 第10章(变分推断):用于深度SSM的训练。
  • 第12章(MCMC):用于贝叶斯HMM和LDS的参数学习。
  • 第13章(序贯蒙特卡洛):粒子滤波是非线性非高斯SSM的主要推断工具。
  • 第14章(预测模型):STS 用于时间序列预测。
  • 第18章(高斯过程):GP 可作为非线性SSM的转移或观测模型(如 GP-LVM)。
  • 第21章(VAE):深度SSM 是VAE在序列数据上的扩展。
  • 第34-35章(决策与强化学习):模型强化学习依赖世界模型(如 RSSM)。

10. 总结与重点

10.1 核心要点

  • 状态空间模型是处理时间序列数据的统一框架,包含隐状态和观测。
  • HMM 用于离散状态,推断算法(前向-后向、维特比)和EM学习成熟,广泛应用于序列标注、分割、对齐。
  • LDS 用于线性高斯连续状态,卡尔曼滤波/平滑提供精确推断,EM学习有效。
  • SLDS 结合离散和连续状态,但推断困难,需近似。
  • 非线性/非高斯SSM 需要扩展/无迹卡尔曼滤波或粒子滤波。
  • 结构时间序列 将序列分解为可解释成分,用于预测和因果推断。
  • 深度SSM 用神经网络建模复杂动态,结合变分推断,用于视频预测和强化学习。

10.2 常见难点

  • 理解滤波与平滑的区别:滤波利用当前及过去观测,平滑利用全部观测。
  • HMM 的后向算法与前向-后向:注意归一化和数值稳定性。
  • 卡尔曼滤波的推导:从高斯联合分布出发,理解预测和更新。
  • SLDS 的指数爆炸:为什么精确推断不可行,近似方法的权衡。
  • 粒子滤波的退化与重采样:如何缓解退化,选择重采样策略。
  • 结构时间序列的组合状态:如何将多个成分合并成一个大LDS。
  • 深度SSM 的ELBO推导:与静态VAE的异同。

10.3 学习建议

  1. 从HMM开始:实现前向-后向和维特比算法,用于简单问题(如赌场HMM)。
  2. 动手实现卡尔曼滤波:在2D跟踪问题上实践,观察滤波与平滑的差异。
  3. 学习粒子滤波:用 Python 实现 bootstrap 粒子滤波,跟踪非线性系统(如 bearings-only)。
  4. 实践结构时间序列:用 Prophet 或 TensorFlow Probability 的 STS 模块预测真实时间序列(如气温、电力需求)。
  5. 探索深度SSM:用 PyTorch 实现简单的 DMM 或 RSSM,用于视频预测任务。
  6. 阅读经典论文:HMM 教程 [Rabiner, 1989]、卡尔曼滤波 [Maybeck, 1979]、PlaNet [Hafner et al., 2019]、Dreamer [Hafner et al., 2020]。

本章全面覆盖了从经典到现代的状态空间模型,是理解动态系统和时间序列分析的核心。掌握本章内容,将为后续学习强化学习、控制理论、因果推断等奠定坚实基础。


《Probabilistic Machine Learning: Advanced Topics》第30章“Graph Learning”详细讲解

1. 引言:图与机器学习

图(Graph)是一种通用的数据结构,能够表示实体(节点)及其之间的关系(边)。在机器学习中,图无处不在:

  • 社交网络:用户是节点,好友关系是边。
  • 蛋白质相互作用网络:蛋白质是节点,相互作用是边。
  • 引文网络:论文是节点,引用关系是边。
  • 分子结构:原子是节点,化学键是边。
  • 知识图谱:实体是节点,关系是边。

处理图数据通常有两种不同的目标:

  1. 已知图结构,发现隐藏模式:假设图的结构(即节点和边)是已知的,我们想从图中找出有意义的潜在结构,例如社区、功能模块或潜在因子。这需要使用潜变量图模型(latent variable models for graphs)。
  2. 未知图结构,从数据中学习:我们只有节点上的观测数据(如每个节点的特征),而不知道节点之间的边。目标是推断出变量之间的依赖关系图,即图结构学习(graphical model structure learning)。这有助于理解变量间的交互机制,甚至用于因果推断。

本章正是围绕这两个核心问题展开,为后续深入学习图神经网络(第16章)、因果推断(第36章)等奠定基础。

下图概括了本章的知识体系:

graph TD A[图学习] --> B[潜变量图模型
(已知图结构)] A --> C[图结构学习
(未知图结构)] B --> B1[随机块模型 SBM] B --> B2[其他生成模型
(如 LDA 用于文本网络)] C --> C1[方法分类] C --> C2[应用场景] C1 --> C1a[基于约束的方法] C1 --> C1b[基于得分的方法] C1 --> C1c[贝叶斯方法] C1 --> C1d[正则化方法(如 graphical lasso)] C2 --> C2a[理解:系统生物学] C2 --> C2b[预测:金融、交通] C2 --> C2c[因果发现]

2. 潜变量图模型(已知图结构)

在许多应用中,图的结构是已知的(例如,社交网络的好友关系已经记录在案),但我们希望发现这些节点背后的隐藏组织。例如,社交网络中可能存在社区(community),同一社区的节点连接更紧密。潜变量图模型正是为了发现这种隐藏结构而设计的生成模型。

2.1 随机块模型(Stochastic Block Model, SBM)

随机块模型 [Holland et al., 1983] 是最经典的潜变量图模型之一。它假设每个节点属于一个隐藏的“块”(block)或“社区”,而节点间的连接概率只取决于它们所属的块。

模型定义

  • 假设图有 $N$ 个节点,每个节点 $i$ 有一个离散的潜变量 $z_i \in \{1,\dots,K\}$,表示它所属的社区。
  • 先验:$p(z_i = k) = \pi_k$,通常为均匀分布或狄利克雷先验。
  • 连接概率:给定节点的社区分配,边 $A_{ij}$(通常为0/1,表示是否存在边)的条件分布为: $$ p(A_{ij} = 1 | z_i = k, z_j = l) = \theta_{kl}, $$ 其中 $\boldsymbol{\theta} \in [0,1]^{K \times K}$ 是块间连接概率矩阵。

生成过程

  1. 为每个节点 $i$ 从社区分布 $\boldsymbol{\pi}$ 中采样社区 $z_i$。
  2. 对于每一对节点 $(i,j)$($i

推断与学习

  • 给定观测到的邻接矩阵 $\mathbf{A}$,我们需要推断节点社区分配 $\mathbf{z}$ 和参数 $\boldsymbol{\pi}, \boldsymbol{\theta}$。这通常通过EM算法或变分推断完成。
  • 社区数 $K$ 可通过模型选择(如贝叶斯信息准则)或非参数贝叶斯(如无限SBM)确定。

例子:在一个由200个节点组成的网络中,假设有两个社区,社区内部连接概率为0.8,社区间连接概率为0.1。SBM可以生成这样的网络,并且给定观测,可以恢复出节点所属的社区。

2.2 其他潜变量图模型

  • 度修正随机块模型(Degree-corrected SBM):允许节点度数不同,更符合真实网络。
  • 混合成员模型(Mixed Membership Model):允许节点同时属于多个社区,类似于主题模型中的文档-主题分布。例如,潜在狄利克雷分配(LDA)可用于文档网络(如论文引用网络),其中每篇文档有多个主题。
  • 潜在空间模型(Latent Space Model):假设节点位于一个潜在的低维空间,边的概率取决于节点在该空间中的距离。例如,多维尺度(MDS)或高斯过程潜变量模型(GP-LVM)可用于嵌入网络。

这些模型帮助我们理解网络的宏观结构,为社区检测、链路预测等任务提供概率基础。


3. 图模型结构学习(未知图结构)

在许多场景中,图结构本身是未知的,我们只有节点上的观测数据。例如,我们测量了多个变量(如基因表达水平)在多个样本上的值,希望知道哪些变量之间存在直接的依赖关系。这种依赖关系可以用概率图模型(PGM)来表示,包括有向图(贝叶斯网络)和无向图(马尔可夫随机场)。

3.1 问题定义

给定一个 $N \times D$ 的数据矩阵 $\mathbf{X}$,其中行是样本,列是变量。假设数据是从一个未知的图结构 $G$ 对应的概率分布中独立同分布采样得到的。图结构学习的目标是从数据中恢复图 $G$(或其等价类)。

3.2 方法分类

图结构学习方法大致可分为四类:

3.2.1 基于约束的方法(Constraint-based)

这类方法利用条件独立性检验来构建图。典型代表是 PC算法 [Spirtes et al., 2000],用于学习有向无环图(DAG)。基本步骤:

  1. 从完全无向图开始。
  2. 通过条件独立性检验(如卡方检验、Fisher z检验)删除变量间存在条件独立的边。
  3. 利用d-分离等信息确定边的方向(部分可定向)。

优点:无需评分函数,计算相对高效。
缺点:依赖于独立性检验的准确性,样本量少时可能不可靠。

3.2.2 基于得分的方法(Score-based)

这类方法定义了一个评分函数,衡量图结构与数据的拟合程度,然后在图空间上搜索最优图。评分函数通常包括对数似然加上模型复杂度惩罚(如AIC、BIC)。常用搜索算法有:

  • 贪婪搜索:如爬山法,每次添加、删除或反转一条边,直到评分不再改善。
  • 元启发式:如遗传算法、模拟退火。
  • 精确算法:对于小规模问题,可用动态规划或整数规划求解最优图。

例子BIC评分:$\text{BIC}(G) = -2\log p(\mathbf{X}|\hat{\boldsymbol{\theta}},G) + d_G \log N$,其中 $d_G$ 是图 $G$ 的自由参数个数。

3.2.3 贝叶斯方法

贝叶斯方法对图结构本身赋予先验 $p(G)$,然后计算后验 $p(G|\mathbf{X}) \propto p(\mathbf{X}|G) p(G)$。由于图空间巨大,通常使用MCMC采样(如结构MCMC)或变分近似来估计后验。

边际似然 $p(\mathbf{X}|G)$ 可通过对参数积分得到。对于某些分布(如高斯、多项分布),如果使用共轭先验,边际似然有闭式解。

3.2.4 正则化方法(Regularization)

对于无向图模型(特别是高斯图模型),图结构由精度矩阵 $\boldsymbol{\Theta} = \boldsymbol{\Sigma}^{-1}$ 中的非零元决定。图拉索(graphical lasso)[Friedman et al., 2008] 通过求解 $\ell_1$ 正则化似然来估计稀疏精度矩阵:

$$ \max_{\boldsymbol{\Theta} \succ 0} \log \det \boldsymbol{\Theta} - \mathrm{tr}(\mathbf{S}\boldsymbol{\Theta}) - \lambda \|\boldsymbol{\Theta}\|_1, $$

其中 $\mathbf{S}$ 是样本协方差矩阵,$\|\boldsymbol{\Theta}\|_1$ 是 $\boldsymbol{\Theta}$ 中所有非对角元绝对值之和。解得的非零非对角元对应图结构中的边。图30.1展示了不同 $\lambda$ 下从流式细胞术数据学习到的图。

3.3 应用场景

3.3.1 理解:系统生物学

在系统生物学中,我们希望从基因表达或蛋白质活性数据中推断调控网络。例如,Sachs et al. [2005] 测量了11种蛋白质在不同干预下的磷酸化状态,用图拉索学习到的稀疏图揭示了已知的信号通路(图30.1)。另一个例子:Smith et al. [2006] 从鸟类脑电图数据中恢复神经连接图,与已知功能解剖结构吻合。

3.3.2 预测:金融与交通

  • 金融:学习股票收益之间的依赖图(稀疏精度矩阵)可用于投资组合优化,因为稀疏图能降低估计误差 [Carvalho & West, 2007]。
  • 交通:JamBayes 系统 [Horvitz et al., 2005] 从实时交通数据中学习有向图,预测交通拥堵,并部署于实际应用。

3.3.3 因果发现

如果图是有向无环图,且满足某些假设(如无混杂、忠实性),则学习到的图可以解释为因果图。因果发现是结构学习的重要延伸,用于从观测数据中推断因果关系。但需注意,关联不等于因果,需要额外的假设和验证(如干预实验)。这部分内容将在第36章深入讨论。


4. 与前后的联系

  • 第4章(图模型):本章学习的图正是第4章中介绍的概率图模型(贝叶斯网、马尔可夫网)的图结构。第4章假设图已知,本章讨论如何从数据中学习图。
  • 第16章(图神经网络):GNN通常需要已知图结构作为输入。本章的潜变量图模型可以为GNN提供节点嵌入或社区信息。
  • 第28章(潜因子模型):潜变量图模型(如SBM)与混合模型、主题模型有相似之处,都是发现隐藏结构。
  • 第29章(状态空间模型):动态图结构学习可视为状态空间模型在图上的扩展。
  • 第36章(因果推断):因果发现是图结构学习的核心应用之一,需要更严格的假设和推断方法。

5. 总结与重点

5.1 核心要点

  • 图学习分为两大类:已知图结构时的潜变量发现(如SBM)和未知图结构时的结构学习(如图拉索、PC算法)。
  • 随机块模型(SBM)是发现网络中社区的基本模型,可扩展为度修正、混合成员等版本。
  • 图结构学习方法多样,包括基于约束、基于得分、贝叶斯、正则化等,各有优劣。
  • 图拉索(graphical lasso)是学习高斯图模型稀疏结构的常用方法,通过 $\ell_1$ 正则化实现。
  • 应用广泛:系统生物学(基因调控网络)、金融(资产相关性)、交通预测、因果发现。

5.2 常见难点

  • 理解条件独立性检验:如何正确检验变量间的条件独立,需注意检验的统计功效和多重检验问题。
  • 图拉索的优化:目标函数非光滑,如何高效求解?常用块坐标下降法。
  • 有向图的可识别性:从观测数据中通常只能学习到马尔可夫等价类,而非唯一DAG。需要额外假设(如时间顺序、干预)才能确定方向。
  • 社区数的选择:SBM中如何确定K?可用交叉验证、信息准则或非参数贝叶斯。

5.3 学习建议

  1. 动手实现SBM:用Python生成SBM数据,并用变分EM算法推断社区,观察恢复效果。
  2. 尝试图拉索:用scikit-learn的GraphicalLassoskggm包对真实数据(如股票收益率)学习稀疏图,调整 $\lambda$ 观察图的变化。
  3. 学习PC算法:用causal-learnpcalg包实现PC算法,在模拟数据上测试其恢复DAG的能力。
  4. 阅读经典论文:Sachs et al. [2005] 的蛋白质网络、Friedman et al. [2008] 的图拉索、Spirtes et al. [2000] 的因果关系发现。
  5. 结合因果推断:思考如何将结构学习与第36章的因果推断方法结合,进行更严谨的因果发现。

本章作为“发现方法”部分的最后一章,将图这一重要数据结构与概率建模紧密结合。掌握图学习,不仅有助于理解复杂系统中的依赖关系,也为后续学习因果推断、图神经网络打下基础。


《Probabilistic Machine Learning: Advanced Topics》第31章“Nonparametric Bayesian Models”详细讲解

1. 引言:为什么需要非参数贝叶斯?

在前面的章节中,我们学习了各种参数模型——无论是线性回归、神经网络还是高斯混合模型,它们都由有限个参数完全确定。例如,一个线性回归模型由权重向量 $\mathbf{w}$ 和噪声方差 $\sigma^2$ 参数化;一个高斯混合模型由混合权重 $\pi_k$、均值 $\boldsymbol{\mu}_k$ 和协方差 $\boldsymbol{\Sigma}_k$ 参数化。参数的数量是固定的,不随数据量变化。

然而,现实世界的数据往往是复杂的,我们事先并不知道模型应该有多复杂。例如,聚类问题中我们不知道有多少个簇;回归问题中我们不知道函数的平滑程度。如果模型太简单,可能会欠拟合;如果模型太复杂(但用固定参数),可能会过拟合。我们需要一种能够随着数据量增加而自动调整模型复杂度的方法。

非参数贝叶斯(Nonparametric Bayesian, NPB)方法提供了一种解决方案。它通过在无限维空间上放置先验分布,使得模型的复杂度可以随着数据增长而增长。这里的“非参数”并不意味着没有参数,而是参数的数量可以无限,且随着数据量自适应。常见的非参数贝叶斯模型包括高斯过程(Gaussian process, GP)和狄利克雷过程(Dirichlet process, DP)。高斯过程对未知函数进行建模,狄利克雷过程对未知分布进行建模。

本章将简要介绍这些核心概念,为后续更深入的学习(如第18章高斯过程、第28章混合模型等)提供桥梁。

下图概括了本章的知识体系:

graph TD A[非参数贝叶斯] --> B[高斯过程 GP] A --> C[狄利克雷过程 DP] A --> D[其他过程] B --> B1[定义:均值函数、协方差函数] B --> B2[先验:函数分布] B --> B3[后验:预测与推断] B --> B4[与无限宽神经网络联系] C --> C1[定义:分布上的分布] C --> C2[构造:折棍过程、中国餐馆过程] C --> C3[应用:狄利克雷过程混合模型 DPMM] C --> C3[推断:吉布斯采样、变分推断] D --> D1[Beta过程(特征选择)] D --> D2[印度自助餐过程(无限特征模型)]

2. 参数模型与非参数模型的对比

2.1 参数模型

一个参数化模型假设数据是由一个已知函数形式但未知参数的分布生成的。例如,线性回归模型:

$$ y = \mathbf{w}^T \mathbf{x} + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2). $$

模型由参数 $\mathbf{w} \in \mathbb{R}^D$ 和 $\sigma^2$ 决定,参数数量固定为 $D+1$。当数据量 $N$ 很大时,模型的容量可能不足以捕捉数据中的复杂模式,导致欠拟合。

2.2 非参数模型

非参数模型不对函数形式做先验假设,而是让模型复杂度随着数据量增长。典型的例子是核密度估计(Kernel Density Estimation):

$$ p(x) = \frac{1}{N} \sum_{n=1}^N K_h(x - x_n). $$

这里模型“参数”就是所有训练数据点,数量随 $N$ 增长。然而,传统的非参数方法缺乏概率框架,无法表达不确定性。

非参数贝叶斯结合了贝叶斯方法和无限维参数空间,既保持灵活性,又能够量化不确定性。


3. 高斯过程(Gaussian Process)

3.1 定义

高斯过程(GP)是定义在函数空间上的随机过程,它可以看作是对函数的分布建模。一个 GP 由均值函数 $m(\mathbf{x})$ 和协方差函数(核函数) $k(\mathbf{x}, \mathbf{x}')$ 完全确定:

$$ f(\mathbf{x}) \sim \mathcal{GP}(m(\mathbf{x}), k(\mathbf{x}, \mathbf{x}')). $$

这意味着对于任意有限个输入点 $\mathbf{x}_1, \dots, \mathbf{x}_N$,对应的函数值向量 $\mathbf{f} = [f(\mathbf{x}_1), \dots, f(\mathbf{x}_N)]$ 服从多元高斯分布:

$$ \mathbf{f} \sim \mathcal{N}(\mathbf{m}, \mathbf{K}), \quad \mathbf{m}_i = m(\mathbf{x}_i), \quad \mathbf{K}_{ij} = k(\mathbf{x}_i, \mathbf{x}_j). $$

3.2 先验样本

我们可以从一个 GP 先验中采样得到函数。图18.7展示了不同核函数下的先验样本。例如,使用平方指数核(RBF):

$$ k(\mathbf{x}, \mathbf{x}') = \sigma^2 \exp\left(-\frac{\|\mathbf{x} - \mathbf{x}'\|^2}{2\ell^2}\right), $$

得到的函数样本是无限光滑的;使用 Matérn 核可以得到更粗糙的函数。

3.3 后验预测

给定观测数据 $\mathcal{D} = \{(\mathbf{x}_n, y_n)\}_{n=1}^N$,其中 $y_n = f(\mathbf{x}_n) + \epsilon_n$,$\epsilon_n \sim \mathcal{N}(0, \sigma_n^2)$,我们可以计算后验预测分布:

$$ p(f_* | \mathbf{x}_*, \mathcal{D}) = \mathcal{N}(\mu_*, \sigma_*^2), $$

其中

$$ \mu_* = \mathbf{k}_*^T (\mathbf{K} + \sigma^2 \mathbf{I})^{-1} \mathbf{y}, $$

$$ \sigma_*^2 = k(\mathbf{x}_*, \mathbf{x}_*) - \mathbf{k}_*^T (\mathbf{K} + \sigma^2 \mathbf{I})^{-1} \mathbf{k}_*. $$

预测均值是训练观测的线性组合,预测方差在远离数据点处增大,体现了模型的不确定性。

3.4 与无限宽神经网络的关系

有趣的是,单隐层神经网络在隐单元数趋于无穷时,其先验分布收敛到一个高斯过程,其核函数由激活函数和权重先验决定(Neal, 1996)。这称为NNGP(Neural Network Gaussian Process)。这为贝叶斯深度学习提供了理论联系(详见第18章)。


4. 狄利克雷过程(Dirichlet Process)

4.1 定义

狄利克雷过程(DP)是定义在概率分布上的分布。它可以看作狄利克雷分布的无限维推广。一个 DP 由两个参数定义:基分布 $G_0$ 和浓度参数 $\alpha > 0$,记作 $G \sim \mathrm{DP}(\alpha, G_0)$。这意味着从 DP 中抽取的随机分布 $G$ 是离散的,且对于任意有限可测划分 $\{A_1, \dots, A_K\}$,随机向量 $(G(A_1), \dots, G(A_K))$ 服从狄利克雷分布:

$$ (G(A_1), \dots, G(A_K)) \sim \mathrm{Dir}(\alpha G_0(A_1), \dots, \alpha G_0(A_K)). $$

4.2 构造方式

4.2.1 折棍构造(Stick-Breaking Construction)

Sethuraman (1994) 给出了 DP 的显式构造:

$$ G = \sum_{k=1}^\infty \pi_k \delta_{\theta_k}, \quad \pi_k = \beta_k \prod_{j=1}^{k-1} (1 - \beta_j), \quad \beta_k \sim \mathrm{Beta}(1, \alpha), \quad \theta_k \sim G_0. $$

这里 $\pi_k$ 是递减的权重,$\theta_k$ 是独立同分布于 $G_0$ 的原子。这种构造清晰地表明 DP 生成的分布是几乎必然离散的。

4.2.2 中国餐馆过程(Chinese Restaurant Process, CRP)

中国餐馆过程是一个与 DP 等价的分配过程。想象一个餐馆有无限多张桌子,每个顾客进入时可以选择一张已有人的桌子(概率与当前人数成正比)或新开一张桌子(概率与 $\alpha$ 成正比)。最终顾客的分配对应于从 DP 中抽取的分布的样本(原子对应桌子,顾客对应数据点)。CRP 在聚类问题中非常直观。

4.3 狄利克雷过程混合模型(DP Mixture Model, DPMM)

DPMM 是 DP 在密度估计和聚类中的典型应用。模型假设数据由无限个混合成分生成,每个成分的参数来自 $G$:

$$ G \sim \mathrm{DP}(\alpha, G_0), \quad \theta_i \sim G, \quad x_i \sim p(x | \theta_i). $$

由于 $G$ 离散,多个数据点可能共享同一个 $\theta_k$,从而形成聚类。与有限混合模型不同,DPMM 自动决定聚类的数量(随着数据增加可以增加新簇)。

4.4 后验推断

DPMM 的后验推断通常采用:

  • 吉布斯采样:利用 CRP 表示,迭代采样每个数据点的簇分配。
  • 变分推断:用截断折棍构造近似后验。

这些算法在贝叶斯非参数文献中有详细介绍。

4.5 例子

假设我们用 DPMM 对一组身高数据进行聚类。随着数据点增多,模型可能会发现新的簇(例如,区分男性和女性的身高分布)。后验簇数会自适应地增长。


5. 其他非参数贝叶斯过程

5.1 Beta 过程(Beta Process)

Beta 过程(BP)是定义在 $[0,1]$ 上的随机过程,常用于特征选择因子分析。它类似于 DP,但生成的分布不是概率分布而是测度,其原子权重在 $[0,1]$ 之间。BP 可以用于构建无限潜在特征模型(如 Indian Buffet Process)。

5.2 印度自助餐过程(Indian Buffet Process, IBP)

IBP 是 BP 的分配过程对应,用于建模每个数据点拥有无限个可能特征中的哪些特征。每个特征是一个潜在的二元变量,数据点可以拥有多个特征。IBP 常用于非参数贝叶斯矩阵分解、主题模型等。


6. 与前后的联系

  • 第2章(概率):狄利克雷分布、伽马分布等是 DP 的基础。
  • 第10章(变分推断):DPMM 的变分推断是 VI 的重要应用。
  • 第12章(MCMC):吉布斯采样用于 DPMM。
  • 第18章(高斯过程):本章是 GP 的补充,GP 作为函数上的非参数贝叶斯先验。
  • 第28章(潜因子模型):DPMM 可以看作无限混合模型,是有限混合模型的推广;IBP 可用于无限因子分析。
  • 第30章(图学习):非参数贝叶斯可用于无限社区数的随机块模型。

7. 总结与重点

7.1 核心要点

  • 非参数贝叶斯模型允许模型复杂度随数据增长,避免模型选择问题。
  • 高斯过程是函数上的分布,用于回归、分类等任务,能够表达不确定性。
  • 狄利克雷过程是分布上的分布,用于无限混合模型,自动确定聚类数。
  • 其他过程(Beta过程、IBP)用于无限特征模型。
  • 推断通常通过 MCMC 或变分近似进行。

7.2 常见难点

  • 理解无限维先验:如何从直观上理解 DP 产生的离散分布。
  • 折棍构造的推导:需要熟悉 Beta 分布和乘积关系。
  • CRP 与 DP 的等价性:理解分配过程如何对应 DP 采样。
  • 后验簇数的变化:MCMC 采样中簇数如何动态调整。

7.3 学习建议

  1. 先掌握高斯过程:通过第18章深入理解 GP 的预测和核函数选择。
  2. 动手实现 CRP 采样:用 Python 模拟中国餐馆过程,观察簇数随顾客数的变化。
  3. 尝试 DPMM:用 PyMC3 或 Stan 实现一个简单的 DPMM,观察后验簇数。
  4. 阅读经典论文:Neal (2000) 的 DPMM 综述、Gershman & Blei (2012) 的非参数贝叶斯教程。
  5. 联系实际应用:思考在聚类、特征选择、密度估计等任务中如何使用非参数贝叶斯方法。

本章作为非参数贝叶斯的概览,为深入理解高斯过程、狄利克雷过程及其应用奠定了基础。掌握这些概念,将使你能够处理模型复杂度未知的现实问题,并在贝叶斯统计和机器学习领域迈向更高层次。


《Probabilistic Machine Learning: Advanced Topics》第32章“Representation Learning”详细讲解

1. 引言:什么是表示学习?

在机器学习中,我们通常直接将原始输入(如图像像素、文本词向量)馈送给模型进行训练。然而,原始输入往往包含大量噪声和无关信息,且其维度可能很高,这使得学习变得困难。表示学习(Representation Learning)的目标是将原始输入转换为一种更易于下游任务使用的表示(representation),通常是一个低维、紧凑、信息丰富的特征向量。

表示学习之所以重要,是因为我们通常不知道未来会面临什么任务。一个好的表示应当能够服务于多种未知任务,例如分类、检测、生成、聚类等。换句话说,我们希望学习到的表示能够捕获数据中的语义信息,同时丢弃与任务无关的细节。

本章将系统介绍如何评估表示的质量、如何通过不同方式(监督、生成、自监督、多视角)学习表示,以及表示学习的理论基础。

下图概括了本章的知识体系:

graph TD A[表示学习] --> B[评估表示] A --> C[学习方法] A --> D[理论基础] B --> B1[下游性能] B --> B2[表示相似性] B1 --> B1a[线性分类器] B1 --> B1b[微调] B1 --> B1c[解耦度量] B2 --> B2a["RSA / CKA"] B2 --> B2b["CCA / SVCCA / PWCCA"] C --> C1[监督表示学习] C --> C2[生成表示学习] C --> C3[自监督表示学习] C --> C4[多视角表示学习] C1 --> C1a[预训练与迁移] C1 --> C1b[弱监督] C2 --> C2a[潜变量模型] C2 --> C2b[完全观测模型] C2 --> C2c[自编码器] C3 --> C3a["去噪/掩码"] C3 --> C3b[变换预测] C4 --> C4a[对比学习] C4 --> C4b[非对比学习] D --> D1[可识别性] D --> D2[信息最大化]

2. 评估和比较学习到的表示

2.1 下游性能

最常用的评估方式是测试表示在下游任务(downstream task)上的表现。下游任务通常不同于训练表示时使用的任务(预训练任务)。常见评估协议:

  • 线性分类器 / 线性评估:将学习到的表示固定,在其顶部训练一个线性分类器(如逻辑回归)。这种评估假设表示本身应是线性可分的,即只需一个线性层就能完成分类。训练时使用整个下游数据集,但只更新线性层。由于目标凸,可用全批量优化(如L-BFGS)得到稳定结果。
  • 微调:将预训练模型的所有层在下游任务上继续训练(可能使用较小学习率)。微调通常能得到更高性能,尤其当预训练任务与下游任务差异较大时。但计算成本更高。
  • 解耦度量:当数据集具有已知的生成因子(如位置、颜色、形状)时,可以评估每个潜变量维度是否对应单个语义因子。常用的解耦指标包括互信息差、可预测性等。但需要注意的是,非线性潜变量模型存在不可识别性,因此解耦度量需谨慎使用。

2.2 表示相似性

当我们想比较两个不同的表示(例如来自不同层、不同模型)时,需要表示相似性度量。这些度量应满足对神经元排列的不变性(因为网络神经元顺序无关紧要)。

2.2.1 表示相似性分析(RSA)与中心核对齐(CKA)

RSA 首先计算每个表示内部的表示相似性矩阵(RSM),即样本两两之间的相似性(如相关系数),然后比较两个 RSM 的相似性(如斯皮尔曼相关)。

CKA 是一种特定形式的 RSA,使用核矩阵(如线性核)计算样本相似性,并用中心化后的核矩阵的余弦相似性作为度量:

$$ \mathrm{CKA}(\mathbf{K}, \mathbf{K}') = \frac{\langle \mathbf{HKH}, \mathbf{HK'H} \rangle_F}{\|\mathbf{HKH}\|_F \|\mathbf{HK'H}\|_F}, $$

其中 $\mathbf{H}$ 是中心化矩阵。对于线性核,CKA 可简化为:

$$ \mathrm{CKA}_{\text{linear}} = \frac{\|\mathbf{X}^T \mathbf{Y}\|_F^2}{\|\mathbf{X}^T\mathbf{X}\|_F \|\mathbf{Y}^T\mathbf{Y}\|_F}. $$

CKA 已被证明满足一些期望的性质,如对正交变换不变,且能反映表示之间的相关性。

2.2.2 典型相关分析(CCA)及其变体

CCA 寻找两组变量的线性组合,使得它们之间的相关性最大。对于表示矩阵 $\mathbf{X} \in \mathbb{R}^{n \times p_1}$ 和 $\mathbf{Y} \in \mathbb{R}^{n \times p_2}$,CCA 得到一系列典型相关系数 $\rho_i$。常用的汇总统计包括平均平方相关系数 $R^2_{\mathrm{CCA}}$、平均相关系数 $\bar{\rho}$ 等。

由于高维表示可能导致所有相关系数为1(过拟合),SVCCA 先对每个表示进行 PCA 截断(保留99%方差),然后计算 CCA。PWCCA 用每个典型成分在原始表示中的投影权重加权平均相关系数。这些方法试图减轻维度灾难。


3. 表示学习方法

3.1 监督表示学习

3.1.1 预训练与迁移

最直接的表示学习方法是在大规模标记数据集(如 ImageNet)上训练一个神经网络用于分类。训练完成后,去除最后一层分类器,将前面的特征作为通用表示。这些表示可以迁移到各种下游任务(如目标检测、医学图像分类)。研究表明,更大的模型和更多的数据通常带来更好的迁移性能。

3.1.2 弱监督学习

收集大规模精确标注数据成本高昂,因此人们转向弱监督信号,如图像的哈希标签、用户点击、图像-文本对等。例如,使用 Instagram 图片的 hashtag 作为标签训练模型,或在图像-文本对上使用对比学习(如 CLIP)。这些方法可以学到通用的视觉-语义嵌入,甚至支持零样本分类。

3.2 生成表示学习

生成模型通过学习数据的分布 $p(x)$ 来捕获其内在结构。如果模型具有潜变量 $z$,则 $z$ 可作为表示。

3.2.1 潜变量模型

  • 变分自编码器(VAE):通过最大化 ELBO 训练,编码器 $q_\phi(z|x)$ 将输入映射到潜空间。β-VAE 通过调整 KL 权重促进解耦(但需注意不可识别性)。
  • 对抗自编码器(AAE)BiGAN 通过对抗训练使聚合后验匹配先验,同时学习编码器和解码器。

3.2.2 完全观测模型

即使没有显式潜变量,一些模型(如 ImageGPT)在像素级自回归训练中,其隐藏层表示也可用于下游任务。但通常掩码模型(如 BERT)效果更好。

3.2.3 自编码器

自编码器通过编码-解码重建学习表示。为了防止平凡解(恒等映射),需施加约束:瓶颈维度、稀疏性、去噪等。去噪自编码器 通过从损坏输入重建原输入,迫使模型学习数据流形结构。

3.3 自监督表示学习

自监督学习通过设计预文本任务(pretext task),从无标签数据中自动生成标签,从而训练模型。这类方法近年来取得巨大成功。

3.3.1 去噪与掩码

  • BERT 的掩码语言模型:随机 mask 输入 token,训练模型预测被 mask 的 token。这是自然语言处理中表示学习的基石。
  • MAE(Masked Autoencoder):对图像 patches 进行高比例 mask,用浅层解码器重建像素,学习到丰富的视觉表示。

3.3.2 变换预测

  • 旋转预测:对图像施加 0°、90°、180°、270° 旋转,训练模型预测旋转角度。
  • 拼图(Jigsaw):将图像切分为 patches 并随机打乱,训练模型预测原始排列。
  • 上下文预测:预测两个图像块之间的相对位置。

这些方法简单有效,但可能学到捷径(如利用色差),需谨慎设计。

3.4 多视角表示学习

多视角学习假设同一数据的多个“视角”(views)应映射到相近的表示空间,而不同数据的视角应分开。

3.4.1 视角选择

  • SimCLR:对同一图像应用两次随机数据增强(如裁剪、色彩抖动),得到正样本对;其余图像为负样本。通过对比学习拉近正样本对,推远负样本。
  • SupCon:使用标签信息,同一类的样本作为正样本,不同类为负样本。
  • CMC:将图像拆分为不同模态(如亮度与色度),分别编码,对比学习。
  • CLIP:图像-文本对,图像编码器与文本编码器输出对比学习,学到联合嵌入。

3.4.2 对比损失

  • InfoNCE 损失: $$ \mathcal{L}_{\text{InfoNCE}} = -\log \frac{\exp(\mathrm{sim}(z_i, z_j)/\tau)}{\sum_{k=1}^{2N} \mathbb{1}_{[k \ne i]} \exp(\mathrm{sim}(z_i, z_k)/\tau)}. $$ 它最大化正样本对的相似度,同时最小化与所有负样本的相似度。该损失与互信息下界有关。
  • 三元组损失:$\max(0, d_+ - d_- + \epsilon)$,要求正样本距离比负样本至少小 $\epsilon$。

3.4.3 非对比损失(免负样本)

为避免大 batch 对负样本的需求,研究者提出非对比方法:

  • BYOL:使用两个网络(在线网络和目标网络),在线网络预测目标网络的输出,目标网络通过动量更新。无需负样本即可避免坍塌。
  • SimSiam:简化版,直接让两个网络输出互相预测,但停止梯度。
  • Barlow Twins:计算两个视角输出的交叉相关矩阵,使其接近单位矩阵,鼓励特征维度不相关。
  • VICReg:同时保证方差(防止坍塌)、不变性(正样本一致)和协方差(维度去相关)。

这些方法避免了对比学习对大批量的依赖,但在某些任务上仍需仔细调参。


4. 表示学习理论

4.1 可识别性(Identifiability)

在非线性潜变量模型中,存在不可识别性问题:不同的潜变量设置可能生成相同的观测分布。例如,对潜变量施加任意可逆变换,再相应调整解码器,不会改变似然。因此,仅凭观测数据无法唯一确定潜变量。这使得解耦表示学习成为一个病态问题,必须依赖额外的假设(如稀疏性、因果结构、多视角信息)才能获得可识别的表示。

最近的工作表明,通过利用弱监督(如同一物体的不同视角、时序连续性),可以在一定条件下实现可识别性。例如,假设潜变量的变化是稀疏的(每次只有一个因子变化),则可识别性得以保证。

4.2 信息最大化(InfoMax)

信息瓶颈(Information Bottleneck)原则认为,一个好的表示 $Z$ 应该在尽可能压缩输入 $X$ 的同时,最大程度地保留与目标 $Y$ 相关的信息。这可以形式化为:

$$ \max I(Z; Y) - \beta I(Z; X). $$

变分信息瓶颈(VIB)通过变分下界近似互信息,得到可训练的目标。信息瓶颈与 β-VAE 有密切联系,后者是无监督版本($Y$ 是 $X$ 本身)。

然而,对于连续确定性编码器,互信息可能是无穷大,因此信息最大化的实际效果往往依赖于估计器的偏差和架构的归纳偏置。


5. 与前后的联系

  • 第2章(概率):互信息、熵等概念是本章理论的基础。
  • 第5章(信息论):信息瓶颈、互信息下界。
  • 第10章(变分推断):VAE 用于生成表示学习。
  • 第14章(预测模型):监督表示学习与迁移。
  • 第16章(深度神经网络):表示学习的基础架构。
  • 第20-26章(生成模型):生成表示学习的各种方法。
  • 第21章(VAE):β-VAE 用于解耦表示。
  • 第28章(潜因子模型):线性潜变量模型是表示学习的经典形式。
  • 第31章(非参数贝叶斯):非参数方法可用于表示学习(如无限特征模型)。
  • 第33章(可解释性):好的表示有助于模型解释。

6. 总结与重点

6.1 核心要点

  • 表示学习旨在学习一种特征,能有效支持多种下游任务。
  • 评估方法包括线性评估、微调、解耦度量以及表示相似性分析(CKA、CCA)。
  • 监督表示学习通过大规模标记数据(或弱监督信号)预训练模型,迁移到下游任务。
  • 生成表示学习通过重建或生成数据来学习潜变量,如 VAE、自编码器。
  • 自监督学习利用数据自身的结构设计预文本任务,如掩码重建、旋转预测。
  • 多视角学习通过对比或非对比方式,使同一数据的不同视图在表示空间靠近。
  • 理论方面:可识别性需要额外假设,信息最大化提供原则性框架。

6.2 常见难点

  • 对比损失中的负样本选择:如何有效采样负样本以避免坍塌但保持效率。
  • 非对比方法为何不坍塌:理解 BYOL、SimSiam 的动力学机制。
  • 解耦度量的不一致性:不同度量可能给出矛盾结论,需结合下游任务判断。
  • 可识别性条件:需要哪些假设才能在非线性情况下恢复真实因子。

6.3 学习建议

  1. 从监督迁移开始:用 ImageNet 预训练模型提取特征,在小型数据集上训练线性分类器,观察性能。
  2. 实践对比学习:用 SimCLR 在 CIFAR-10 上训练,调整温度、数据增强,观察表示质量。
  3. 尝试非对比方法:用 BYOL 或 Barlow Twins 在小型数据集上实现,感受无需负样本的便利。
  4. 评估表示相似性:用 CKA 比较不同层、不同训练阶段的表示。
  5. 阅读经典论文:SimCLR、MoCo、BYOL、Barlow Twins、CLIP、MAE、BERT。
  6. 关注理论进展:可识别性、信息瓶颈在表示学习中的应用。

本章全面概述了表示学习的核心内容,为深入理解现代深度学习的成功(如大语言模型、多模态模型)提供了关键视角。掌握本章内容,将使你能够设计、评估和改进自己的表示学习模型,为各种下游任务提供强大的基础。


《Probabilistic Machine Learning: Advanced Topics》第33章“Interpretability”详细讲解

1. 引言:为什么需要可解释性?

随着机器学习模型被广泛应用于医疗、金融、司法等高风险领域,确保模型的行为符合人类价值观变得至关重要。仅仅依靠传统的性能指标(如准确率、对数损失)往往不足以发现模型的潜在问题。模型可能学习到数据中的虚假关联(例如,根据背景而非物体本身分类),或者对分布外输入做出过度自信的预测。即使模型整体表现良好,也可能在特定子群体上表现不佳,带来公平性问题。

可解释性(interpretability)允许人类专家检查模型,从而:

  • 发现盲点:找出模型依赖的虚假特征(例如,一张“牛”的图片中背景草地才是真正的预测依据),避免模型在新环境中失效。
  • 获得新见解:通过观察模型学到的模式,科学家可能发现新的知识(例如,某种疾病的新特征)。
  • 人机协作:医生可以结合模型的解释和自己的专业知识做出更优决策。
  • 个体补救:被拒绝贷款的人可以通过解释知道如何改进申请。

简而言之,当数学指标无法完全形式化我们的目标时,解释就成为人类与模型沟通的桥梁,帮助我们建立对模型的信任,并指导我们何时信任、何时质疑。

1.1 一个简单的例子

考虑一个预测柠檬水摊利润的模型,有两个输入特征:温度和街道清洁度。两个不同的模型可能具有相似的行为,但解释方法却给出截然不同的特征重要性(见第33.1.2节)。这提示我们:解释的质量不仅取决于模型,还取决于解释方法和我们关心的属性。


2. 术语与框架

可解释机器学习不仅是模型问题,更是涉及人类、社会、技术系统的多学科问题。图33.1展示了这个生态系统。

graph LR subgraph 上下文 Context A[用户 User] B[任务 Task] C[环境 Environment] end subgraph 技术系统 D[模型 Model] E[解释 Explanation] end subgraph 评估 F[下游性能 Downstream Performance] G[属性 Properties] end A --> D C --> D D --> E E --> A A --> F G --> E G -.-> F
  • 上下文(Context):谁在使用解释?在什么场景下?有什么时间和认知限制?
  • 最终任务(End-task):用户希望完成什么目标?例如,是检测模型错误,还是理解科学现象?
  • 方法(Method):如何产生解释?可以是模型本身(固有可解释),也可以是事后生成的局部视图。
  • 指标(Metrics):如何评价解释的有效性?这通常通过用户完成最终任务的性能来衡量。
  • 属性(Properties):解释应具有哪些特征?例如,忠实性、紧致性、稳定性等。属性连接了上下文和方法。

2.1 核心定义

  • 解释(Explanation):提供给用户的信息,旨在帮助用户理解模型的部分行为。
  • 固有可解释模型(Inherently Interpretable Model):模型本身就是解释,例如一个小型决策树或稀疏线性模型。
  • 事后解释(Post-hoc Explanation):针对已训练好的黑箱模型,生成一个简化的、局部的视图。

3. 可解释机器学习方法

3.1 固有可解释模型

这类模型的设计使其决策过程易于人类审查。主要分为两类:

3.1.1 紧凑或基于特征的模型

  • 稀疏线性模型:如Lasso回归,只有少数非零权重。优点是权重可以直接解释为特征的重要性。但需要注意:相关特征可能相互抵消,导致权重失去意义。
  • 广义加性模型(GAM):$ f(x) = \sum_i f_i(x_i) $,每个特征对预测的贡献是独立的,可以单独可视化。
  • 单调性约束模型:强制模型对某些特征单调(例如,年龄越大风险越高),这符合常识,也易于解释。

3.1.2 基于逻辑的模型

  • 决策树:一系列if-then-else规则,路径易于理解。但树可能很大,超过人类处理能力。
  • 规则列表(Rule List):有序的if-then规则,最后有默认规则。例如,用于中风预测的简单规则集。
  • 规则集(Rule Set):无序的规则集合,样本满足多条规则时通过投票或加权决定。
  • 逻辑程序:用一阶逻辑表示知识,适合关系数据。

当输入特征本身不可解释(如图像像素)时,可以引入概念层(concept layer):先将像素映射到人类可理解的概念(如“有胡须”、“戴眼镜”),再基于这些概念进行预测。这要求概念映射准确且忠实。

3.2 半固有可解释模型:基于示例的方法

  • K近邻(KNN):预测基于与训练集中最相似的样本。解释可以是这些邻居样本及其标签。
  • 原型(Prototypes):每个类别的代表性样本,可以展示给用户作为解释。
  • 反事实示例(Counterfactual Examples):展示如果改变某些特征,预测结果会如何变化。例如,“如果你增加收入,贷款将被批准”。

基于示例的方法直观,但需要确保相似性度量(如距离函数)本身是可解释的。

3.3 事后解释:给出模型的局部视图

当模型过于复杂(如深度神经网络),无法直接审查时,我们生成一个简化的、局部的解释。

3.3.1 解释形式

  • 特征重要性:列出对预测最重要的特征。可以是全局的(整个模型)或局部的(针对单个输入)。
  • 近似简单模型:在输入点附近拟合一个简单模型(如线性模型),用该简单模型的参数作为解释。
  • 代表性示例:找出与当前输入最相似的训练样本或原型。
  • 对比解释:解释为什么是类别A而不是类别B,通常与反事实相关。

3.3.2 解释范围

  • 局部解释:针对单个输入,例如“这张图片被分类为猫,因为它的耳朵形状”。
  • 全局解释:描述整个模型的行为,例如“模型主要依赖颜色和纹理特征”。

3.3.3 解释的计算

  • 扰动分析:对输入添加扰动,观察输出变化,重要特征是那些改变预测的特征。例如LIME [Ribeiro et al., 2016]。
  • 敏感度分析:计算输出对输入的梯度,梯度大的区域表示重要。例如Saliency Maps。
  • 合作博弈:将预测视为特征的合作结果,用Shapley值分配贡献。例如SHAP [Lundberg & Lee, 2017]。
  • 反事实搜索:寻找最小改动输入使预测改变,例如“把这只狗的耳朵形状改成猫的”。

3.3.4 联合训练 vs 事后应用

  • 事后应用:模型已训练好,再生成解释。优点是灵活,但解释可能与模型行为不完全一致。
  • 联合训练:在训练时加入正则化,使模型更容易被解释(例如,鼓励稀疏注意力、限制特征使用)。这能提高解释的忠实性。

3.4 透明度与可视化

除了解释模型决策,还可以提供关于模型训练过程、数据分布、代码等的透明度信息。可视化技术(如特征可视化、注意力图)可以帮助用户直观感受模型关注的内容。


4. 属性:上下文与方法之间的抽象

不同上下文和任务需要解释具备不同的属性。属性是连接上下文和具体方法的桥梁。

4.1 从机器学习中提炼的属性

  • 忠实性(Faithfulness/Fidelity):解释在多大程度上准确反映了模型的行为?例如,如果解释说特征A重要,那么改变A应显著改变预测。
  • 完整性(Completeness):解释是否包含了所有重要的因素?有时特征交互可能导致遗漏。
  • 紧致性(Compactness/Sparsity):解释应足够简洁,以适应人类的认知限制。
  • 稳定性(Stability):对相似输入的解释应相似。不稳定的解释会降低用户信任。
  • 可操作性(Actionability):解释应聚焦于用户可以改变的因素(例如,贷款申请中的收入而非年龄)。
  • 模块性(Modularity):解释可以被分解为独立可理解的组件。
  • 交互性(Interactivity):用户可以向解释系统提问,探索“如果……会怎样”。
  • 透明性(Translucence):解释应告知自身的局限性,例如“这个局部线性近似只在附近有效”。
  • 可模拟性(Simulability):用户能否用解释手动模拟模型的预测过程?
  • 与用户词汇对齐:解释应使用用户熟悉的术语和概念。

4.2 从认知科学中提炼的属性

  • 合理性(Soundness):解释应基于真实情况。
  • 完整性(Completeness):解释应包含所有相关信息。
  • 一般性(Generality):解释应适用于类似情况。
  • 简洁性(Simplicity):简单的解释通常更受欢迎。
  • 对比性(Contrastiveness):解释为何是A而不是B,更有帮助。

这些属性并非全部必需,应根据具体上下文选择关键属性,并据此设计或选择解释方法。


5. 可解释机器学习的评估

评估是确保解释真正有用的关键。主要分为两类:计算评估和用户研究。

5.1 计算评估(无用户)

通过数学或实验方法检验解释是否满足某些属性。例如:

  • 忠实性测试:删除解释中最重要的特征,观察预测是否改变;或仅保留最重要的特征,观察预测是否保持不变。
  • 随机化测试:对模型参数随机化,解释应发生显著变化(否则说明解释不忠实于模型)。
  • 对抗攻击:对输入添加微小扰动,保持预测不变但解释剧变,说明解释不稳定。
  • 合成数据集:构造已知重要特征的数据(如前景物体与背景相关),检验解释能否正确识别。

5.2 用户研究(有用户)

最终,解释的目的是帮助用户完成任务。因此,应在目标用户群体中测试:

  • 真实环境:例如,让医生使用解释系统辅助诊断,测量诊断准确率、时间等。
  • 合成环境:简化任务(如人工数据集),便于控制变量和扩大样本量。

5.2.1 实验设计要点

  • 界面设计:解释的呈现方式影响其可用性,应确保公平比较。
  • 基线:包括无解释、安慰剂解释、人工解释等。
  • 假设与变量:明确自变量(解释类型)和因变量(任务完成指标)。
  • 参与者选择与排除:确保用户代表性。
  • 随机化与重复测量:减少偏差。
  • 定性研究:通过“有声思维”了解用户如何利用解释。

6. 讨论:如何看待可解释机器学习

6.1 没有普遍定义

解释的有效性取决于上下文和最终任务,因此不存在一个适用于所有场景的数学定义。

6.2 解释是解决方案的一部分

它与公平、安全、因果等目标并列,而非替代品。有时我们不需要解释,例如当模型在充分测试的环境下表现完美时。

6.3 不是要理解一切

只需理解足够完成任务的部分。例如,要判断贷款申请是否公平,只需关注敏感属性是否被使用。

6.4 部分视图的风险

任何事后解释都只是模型的局部视图,可能遗漏重要信息。这些视图可能不稳定,甚至可被攻击(通过对抗性扰动改变解释而不改变预测)。

6.5 固有可解释模型与性能之间通常没有必然权衡

许多情况下,简单的模型可以匹配甚至超越复杂模型的表现,尤其是在有足够领域知识设计特征时。

6.6 人为因素至关重要

  • 过度信任:解释的存在可能使用户不加批判地接受模型预测。
  • 误解:用户可能将模型中的相关性误解为因果关系,或将解释中的概念误解为模型拥有真正的理解。
  • 感知问题:如图33.6所示,人类视觉系统可能将来自随机网络的解释误认为与训练网络相似,导致错误判断。

7. 与前后的联系

  • 第32章(表示学习):可解释性常基于学习到的表示(如概念激活向量)。表示的质量直接影响解释的可用性。
  • 第36章(因果推断):反事实解释依赖于因果模型,需要区分因果与关联。
  • 第3章(统计):不确定性估计为解释提供置信度,帮助用户判断解释的可靠性。
  • 第14-18章(预测模型):解释的对象正是这些模型,固有可解释模型属于预测模型家族。
  • 第21-26章(生成模型):生成模型的潜空间可被用于生成示例解释(如反事实)。

8. 总结与重点

8.1 核心要点

  • 可解释性是在上下文和最终任务中,通过解释帮助用户理解模型。
  • 方法分为:固有可解释模型、基于示例的方法、事后解释。
  • 解释应具备一系列属性,如忠实性、稳定性、可操作性等,具体选择取决于上下文。
  • 评估包括计算验证和用户研究,后者是检验解释有效性的最终标准。
  • 可解释性不是万能药,需警惕过度信任、误解和潜在滥用。

8.2 常见难点

  • 忠实性与可理解性的权衡:过于详细的解释可能难以理解,过于简化的解释可能不忠实。
  • 属性的冲突:例如,稳定性与忠实性可能在某些情况下矛盾。
  • 解释的鲁棒性:对抗攻击可能轻易改变解释,需要额外防御。
  • 用户研究的设计:如何排除混淆因素,得出可靠结论。

8.3 学习建议

  1. 先理解问题:明确你希望解释帮助用户完成什么任务。
  2. 尝试简单方法:从线性模型、决策树开始,观察它们是否足够可解释且性能可接受。
  3. 实践事后解释:用LIME或SHAP分析一个已训练的黑箱模型,比较不同解释的结果。
  4. 评估解释质量:用随机化测试检查解释的忠实性,用合成数据验证特征识别能力。
  5. 阅读批判性文献:了解解释方法的局限性,如“Sanity Checks for Saliency Maps” [Adebayo et al., 2018]。
  6. 关注用户研究:学习如何设计实验来评估解释的实际效用。

通过本章的学习,你将掌握可解释机器学习的核心概念、方法和评估框架,能够根据具体任务选择或设计合适的解释方案,并批判性地看待解释结果。记住,解释的目的是赋能人类,而非仅仅满足好奇心。


《Probabilistic Machine Learning: Advanced Topics》第34章“Decision Making Under Uncertainty”详细讲解

1. 引言:从推断到决策

在前面各章中,我们主要关注推断(inference)——从数据中学习模型参数、预测未知变量、发现隐藏结构。然而,机器学习的最终目的往往不是知识本身,而是行动:我们希望在不确定的情况下做出最优的决策。例如:

  • 医疗诊断系统不仅要推断患者可能患有什么疾病,还要建议下一步的治疗方案。
  • 自动驾驶汽车不仅要感知周围环境,还要决定加速、刹车还是转向。
  • 广告系统不仅要预测点击率,还要决定展示哪条广告。
  • 金融投资不仅要预测资产回报,还要决定如何配置资产。

不确定性下的决策(Decision Making Under Uncertainty)正是研究如何利用概率模型来指导行动的科学。它将概率论与效用理论相结合,旨在选择能最大化期望效用的行动,同时考虑我们对世界状态的不确定性。

本章将从基础的统计决策理论开始,逐步扩展到单步决策(如分类、A/B测试)、序贯决策(如上下文赌博机、马尔可夫决策过程)以及主动学习等更复杂的场景。

下图概括了本章的知识体系:

graph TD A[不确定性下的决策] --> B[统计决策理论] A --> C[贝叶斯决策理论] A --> D[决策图] A --> E["A/B测试"] A --> F[上下文赌博机] A --> G[马尔可夫决策过程] A --> H[规划] A --> I[主动学习] B --> B1[动作, 状态, 损失] B --> B2[风险函数] B --> B3[贝叶斯风险 vs 频率风险] C --> C1[后验期望损失] C --> C2[最大期望效用原则] C --> C3[例子:分类, 回归, 参数估计, 结构化预测, 公平性] D --> D1[机会节点, 决策节点, 效用节点] D --> D2[信息弧] D --> D3[油钻工问题] E --> E1["贝叶斯A/B测试"] E --> E2[最优样本量] E --> E3[后悔] F --> F1[多臂赌博机] F --> F2[上下文赌博机] F --> F3[UCB, 汤普森采样] F --> F4[后悔下界] G --> G1[MDP定义] G --> G2[值函数与贝尔曼方程] G --> G3[最优策略] H --> H1[值迭代] H --> H2[策略迭代] H --> H3[线性规划] I --> I1[获取函数] I --> I2[不确定性采样, 委员会查询, 信息增益] I --> I3[批量主动学习]

2. 统计决策理论

2.1 基本框架

统计决策理论由以下要素构成:

  • 状态空间 $\mathcal{H}$:未知的世界状态 $h$(例如,疾病的真实类型、股票的真实收益)。
  • 动作空间 $\mathcal{A}$:我们可以采取的行动 $a$(例如,开药、买入、拒绝贷款)。
  • 损失函数 $\ell(h, a)$:当真实状态为 $h$ 时采取行动 $a$ 所遭受的损失(通常为非负,越小越好)。
  • 数据 $x$:我们观测到的信息,与状态 $h$ 相关。
  • 决策规则(策略)$\delta(x)$:从数据到动作的映射,即给定 $x$,我们选择行动 $\delta(x)$。

风险函数 $R(h, \delta)$ 衡量在固定状态 $h$ 下,重复使用决策规则 $\delta$ 的平均损失:

$$ R(h, \delta) = \mathbb{E}_{x \sim p(x|h)} [\ell(h, \delta(x))]. $$

2.2 频率派决策

频率派将 $h$ 视为固定但未知的常数。我们无法直接最小化 $R(h, \delta)$,因为 $h$ 未知。因此提出以下准则:

  • 最大风险:$R_{\max}(\delta) = \max_h R(h, \delta)$。
  • 最小化最大风险(Minimax):$\delta^* = \arg\min_\delta \max_h R(h, \delta)$。

最小化最大风险是一种保守策略,适合对抗性环境,但可能过于悲观。

2.3 贝叶斯决策

贝叶斯方法引入先验分布 $p(h)$,将风险对 $h$ 积分得到贝叶斯风险(也称为集成风险):

$$ R_{\pi}(\delta) = \mathbb{E}_{h \sim p(h)} [R(h, \delta)] = \iint \ell(h, \delta(x)) p(x|h) p(h) \, dx \, dh. $$

最小化贝叶斯风险的规则称为贝叶斯规则贝叶斯估计量。可以证明,贝叶斯规则等价于对每个 $x$ 最小化后验期望损失:

$$ \delta^*(x) = \arg\min_{a \in \mathcal{A}} \mathbb{E}_{h \sim p(h|x)} [\ell(h, a)]. $$

这就是后验期望损失(posterior expected loss)准则。

2.4 最大期望效用原则

若定义效用函数 $U(h, a) = -\ell(h, a)$,则贝叶斯规则等价于最大化后验期望效用:

$$ \delta^*(x) = \arg\max_{a} \mathbb{E}_{h \sim p(h|x)} [U(h, a)]. $$

3. 贝叶斯决策理论的应用实例

3.1 分类问题

  • 状态:真实类别 $y \in \{1,\dots,C\}$。
  • 动作:预测的类别 $\hat{y}$。
  • 0-1损失:$\ell(y, \hat{y}) = \mathbb{I}(y \neq \hat{y})$。
  • 后验期望损失:$\mathbb{E}[\ell(y, \hat{y})|x] = 1 - p(y=\hat{y}|x)$。
  • 最优动作:选择后验概率最大的类别,即 MAP 估计

如果使用非对称损失(例如,假阴性代价高于假阳性),则最优决策会偏向代价较小的类别。

3.2 回归问题

  • 状态:真实值 $y \in \mathbb{R}$。
  • 动作:预测值 $\hat{y}$。
  • 平方损失:$\ell(y, \hat{y}) = (y - \hat{y})^2$。
  • 后验期望损失:$\mathbb{E}[(y - \hat{y})^2|x] = \mathbb{E}[y^2|x] - 2\hat{y}\mathbb{E}[y|x] + \hat{y}^2$。
  • 最优动作:对 $\hat{y}$ 求导得 $\hat{y}^* = \mathbb{E}[y|x]$,即后验均值(MMSE估计)。

3.3 参数估计

  • 状态:参数 $\theta$。
  • 动作:估计值 $\hat{\theta}$。
  • 0-1损失:$\ell(\theta, \hat{\theta}) = \mathbb{I}(\theta \neq \hat{\theta})$,最优为后验众数(MAP)。
  • 汉明损失(用于离散向量):$\ell(\theta, \hat{\theta}) = \sum_d \mathbb{I}(\theta_d \neq \hat{\theta}_d)$,最优为最大化后验边际(MPM),即对每个维度取边际后验众数。

图34.2展示了一个离散例子,说明MAP可能位于低概率区域,而MPM更稳健。

3.4 结构化预测

在自然语言处理或计算机视觉中,输出是一个结构化对象 $y$(如序列、树)。我们可能有一个损失函数 $\ell(y, \hat{y})$(如词错误率)。最优解码是最小贝叶斯风险(MBR):

$$ \hat{y}^* = \arg\min_{\hat{y}} \sum_{y} p(y|x) \ell(y, \hat{y}). $$

由于求和难以计算,可用蒙特卡洛近似:从后验中采样 $y^{(s)} \sim p(y|x)$,然后选择使经验风险最小的候选:

$$ \hat{y}^* \approx \arg\min_{y_i} \sum_{s} p(y^{(s)}|x) \ell(y^{(s)}, y_i). $$

3.5 公平性

公平性目标可以转化为带约束的决策问题。例如,统计均等要求 $p(\hat{y}=1|s=0) = p(\hat{y}=1|s=1)$,其中 $s$ 是敏感属性。这相当于在最大化准确率的同时加入等式约束。


4. 决策(影响)图

决策图(影响图)是概率图模型(第4章)的扩展,包含三类节点:

  • 机会节点(圆形):随机变量,如状态 $h$ 或观测 $x$。
  • 决策节点(方形):我们可选择的行动 $a$。
  • 效用节点(菱形):损失或效用,通常依赖机会节点和决策节点。

信息弧从机会节点指向决策节点,表示在做决策时可获得该机会变量的观测值。

4.1 油钻工问题(经典例子)

一个石油公司决定是否在某处钻井。状态 $o \in \{\text{dry}, \text{wet}, \text{soaking}\}$,先验 $p(o) = [0.5, 0.3, 0.2]$。钻井成本与收益如表:

行动\状态drywetsoaking
不钻井000
钻井-7050200

无信息时:期望效用 $EU(\text{钻井}) = 0.5\times(-70) + 0.3\times50 + 0.2\times200 = -35 + 15 + 40 = 20$,$EU(\text{不钻井})=0$,因此钻井。

若有地震探测(sounding)$s$,其条件分布 $p(s|o)$ 已知。我们可以计算后验 $p(o|s)$ 和条件期望效用,从而得到依赖于 $s$ 的最优策略。信息价值(value of information)定义为有信息时的期望效用减去无信息时的期望效用。本例中约为12.2万美元,因此只要探测成本低于此值就值得做。

决策树是表示这类问题的另一种方式(图34.5)。


5. A/B测试

A/B测试是两臂赌博机的特例,用于比较两个版本(控制A vs 处理B)的效果。

5.1 贝叶斯模型

假设每个版本的收益 $Y_{ij} \sim \mathcal{N}(\mu_j, \sigma^2)$(或伯努利),先验 $\mu_j \sim \mathcal{N}(m_j, \tau_j^2)$。观测到数据后,后验为高斯(式34.32-34.34)。最优决策规则是选择后验期望收益较大的版本:

$$ \pi^*(y_1, y_0) = \mathbb{I}(\mathbb{E}[\mu_1|y_1] \ge \mathbb{E}[\mu_0|y_0]). $$

5.2 最优样本量

假设总人口 $N$,测试阶段分配 $n_1, n_0$ 样本,剩余用于部署。总期望收益为测试期收益加上部署期收益(后者依赖于决策规则)。通过优化可得最优 $n^*$ 满足式34.43,随噪声 $\sigma$ 增大而增大,随先验确定性 $\tau$ 增大而减小。

后悔定义为完美信息下的期望收益与实际收益之差。对于最优策略,后悔为 $O(\sqrt{N})$,这是理论下界。

5.3 错误率

如果目标是识别最优臂,可计算错误概率(式34.47)。错误率随样本量增大而减小,但仅优化错误率可能推荐过大的样本量,忽略效应大小。

图34.6展示了在网站测试例子中,期望收益和错误率随样本量的变化,存在最优样本量。


6. 上下文赌博机

6.1 定义

上下文赌博机(Contextual Bandit)是A/B测试的推广:每个时刻 $t$,我们观察到上下文 $x_t$(如用户特征),然后选择动作 $a_t$,并获得随机奖励 $r_t \sim p(r|x_t, a_t)$。目标是在 $T$ 步内最大化累积期望奖励:

$$ J = \sum_{t=1}^T \mathbb{E}[r_t]. $$

与完整强化学习不同,赌博机中状态转移不依赖于动作,即下一个上下文是独立给定的(通常假设i.i.d.或任意,但不受动作影响)。

6.2 探索-利用权衡

关键难题:我们需要收集足够数据来估计每个上下文-动作对的期望奖励(探索),同时又要利用当前知识选择最优动作(利用)。

ϵ-贪婪:以概率 $1-\epsilon$ 选择当前估计最优动作,以概率 $\epsilon$ 随机探索。简单但可能次优。 玻尔兹曼探索:根据奖励估计的 softmax 分布选择动作,温度控制探索程度。

6.3 上置信界(UCB)

UCB 基于“乐观面对不确定性”原则。对每个动作维护一个置信上界 $\tilde{R}_t(a) = \hat{R}_t(a) + c \cdot \text{std}_t(a)$,然后选择上界最高的动作。常见形式:

  • 对于伯努利奖励,$\tilde{R}_t(a) = \hat{\mu}_t(a) + \sqrt{\frac{2\log t}{N_t(a)}}$。
  • 对于线性模型,可用线性UCB。

6.4 汤普森采样

汤普森采样是一种概率匹配方法:从后验分布 $p(\theta|\mathcal{D}_t)$ 中采样参数 $\tilde{\theta}_t$,然后选择使 $\mathbb{E}[r|x_t, a, \tilde{\theta}_t]$ 最大的动作。它自动平衡探索和利用,且易于实现。图34.10展示了在线性高斯上下文赌博机上的表现。

6.5 后悔下界

对于 $K$ 臂赌博机,最优累积后悔下界为 $\Omega(\log T)$,且 $\Omega(\sqrt{KT})$ 在某些情况下。UCB 和汤普森采样都能达到对数后悔(在合适假设下)。


7. 马尔可夫决策过程

7.1 定义

马尔可夫决策过程(MDP)由五元组 $\langle \mathcal{S}, \mathcal{A}, p, p_R, p_0 \rangle$ 定义:

  • $\mathcal{S}$:状态空间(可以是离散或连续)。
  • $\mathcal{A}$:动作空间。
  • 转移概率 $p(s'|s, a)$:执行动作 $a$ 后从状态 $s$ 转移到 $s'$ 的概率。
  • 奖励分布 $p_R(r|s, a, s')$,通常用期望奖励 $R(s, a) = \mathbb{E}[r|s, a]$ 简化。
  • 初始状态分布 $p_0(s_0)$。

策略 $\pi(a|s)$ 指定在每个状态采取各动作的概率。目标是最大化期望累积折扣奖励:

$$ J(\pi) = \mathbb{E}_{\pi} \left[ \sum_{t=0}^\infty \gamma^t r_t \right], $$

其中 $\gamma \in [0,1)$ 是折扣因子。

7.2 值函数

  • 状态值函数 $V^\pi(s) = \mathbb{E}_\pi[\sum_{t=0}^\infty \gamma^t r_t | s_0 = s]$。
  • 动作值函数 $Q^\pi(s, a) = \mathbb{E}_\pi[\sum_{t=0}^\infty \gamma^t r_t | s_0 = s, a_0 = a]$。
  • 优势函数 $A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s)$。

7.3 贝尔曼方程

贝尔曼方程描述了值函数的递归关系:

$$ V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ R(s, a) + \gamma \mathbb{E}_{s' \sim p(\cdot|s,a)}[V^\pi(s')] \right]. $$

对于最优值函数,有贝尔曼最优性方程:

$$ V^*(s) = \max_a \left[ R(s, a) + \gamma \mathbb{E}_{s' \sim p(\cdot|s,a)}[V^*(s')] \right]. $$

7.4 最优策略

最优策略可以通过贪婪地选择使 $Q^*$ 最大的动作得到:$\pi^*(s) = \arg\max_a Q^*(s, a)$。


8. 规划

当 MDP 模型已知时,可以通过动态规划求解最优策略。

8.1 值迭代

从任意初始 $V_0$ 开始,重复贝尔曼最优性更新直到收敛:

$$ V_{k+1}(s) = \max_a \left[ R(s, a) + \gamma \sum_{s'} p(s'|s, a) V_k(s') \right]. $$

值迭代是收缩映射,收敛到 $V^*$。

8.2 策略迭代

交替进行:

  • 策略评估:求解线性方程组 $V^{\pi_k} = R^{\pi_k} + \gamma P^{\pi_k} V^{\pi_k}$。
  • 策略改进:$\pi_{k+1}(s) = \arg\max_a [R(s, a) + \gamma \sum_{s'} p(s'|s, a) V^{\pi_k}(s')]$。

策略迭代通常收敛更快(有限步内)。

8.3 线性规划

MDP 也可表示为线性规划(式34.92-34.93),对偶形式涉及状态-动作访问频率。


9. 主动学习

主动学习是一种特殊的决策问题:我们可以在无标签池中选择最有信息量的样本请求标签,以最小化学习目标函数所需的标注成本。

9.1 与赌博机和贝叶斯优化的联系

问题目标动作空间
主动学习学习函数 $f$ 使其在输入分布上期望损失最小选择输入点 $x$ 查询标签
贝叶斯优化找到使 $f(x)$ 最大的 $x$选择 $x$ 评估 $f(x)$
上下文赌博机学习策略 $\pi$ 最大化期望奖励选择动作 $a$ 获得奖励

三者都涉及探索-利用,常用高斯过程或贝叶斯神经网络建模不确定性,然后根据获取函数选择查询点。

9.2 获取函数

  • 不确定性采样:选择当前模型最不确定的点,例如分类问题中后验熵最大或边际最小(图34.17)。
  • 委员会查询(QBC):用多个模型(如集成)的投票分歧作为不确定性度量(图34.18)。
  • 信息增益(BALD):选择能最大程度降低参数不确定性的点: $$ \alpha(x) = H(w|\mathcal{D}) - \mathbb{E}_{y|x,\mathcal{D}}[H(w|\mathcal{D},x,y)] = I(w, y|x, \mathcal{D}). $$ 这等价于预测分布熵与期望条件熵之差。

9.3 批量主动学习

当需要同时选择多个点(如并行标注)时,需考虑多样性以避免信息冗余。BatchBALD 使用联合互信息 $I(y_{1:B}; w|x_{1:B})$,其值小于各点独立BALD之和,通过贪心算法选择(图34.19-34.20)。


10. 与前后的联系

  • 第3章(统计):后验分布、贝叶斯推断是决策的基础。
  • 第5章(信息论):互信息用于主动学习(BALD)。
  • 第8章(高斯滤波):卡尔曼滤波用于在线状态估计,与MDP的状态推断相关。
  • 第10章(变分推断):用于后验近似,可结合主动学习。
  • 第14章(预测模型):分类、回归的决策问题。
  • 第18章(高斯过程):作为贝叶斯优化和主动学习的代理模型。
  • 第29章(状态空间模型):MDP是离散状态空间模型的推广。
  • 第35章(强化学习):本章的MDP是强化学习的基础,RL处理模型未知的情况。

11. 总结与重点

11.1 核心要点

  • 不确定性下的决策通过结合概率模型和效用理论来指导行动。
  • 贝叶斯决策最小化后验期望损失,统一了推断与决策。
  • 决策图决策树是表示和求解小规模决策问题的直观工具。
  • A/B测试上下文赌博机解决在线实验和个性化决策问题,核心是探索-利用权衡。
  • 马尔可夫决策过程建模序贯决策,值迭代和策略迭代是基本规划算法。
  • 主动学习通过信息获取函数选择最有价值的样本,可显著降低标注成本。

11.2 常见难点

  • 理解风险与后验期望损失:频率派风险与贝叶斯风险的区别,以及后验期望损失的推导。
  • 信息价值的计算:需要区分“完美信息”与“样本信息”。
  • UCB与汤普森采样的实现:如何从后验采样,如何构造置信上界。
  • 贝尔曼方程的理解:从递归到最优性,以及收缩性质。
  • 主动学习中BALD与BatchBALD的区别:联合互信息如何避免冗余。

11.3 学习建议

  1. 从分类问题开始:理解0-1损失下后验众数最优,尝试用不同损失函数(如F-beta)重新推导最优决策。
  2. 动手实现油钻工问题:画出决策树,计算信息价值,验证直觉。
  3. 模拟A/B测试:用贝叶斯方法比较两个伯努利臂,观察后验分布和后悔曲线。
  4. 实现汤普森采样:在线性上下文赌博机上模拟,观察累积后悔。
  5. 解决小规模MDP:如网格世界,用值迭代和策略迭代求解,验证结果。
  6. 实践主动学习:用高斯过程分类器实现BALD,在MNIST上模拟主动采样。

通过本章的学习,你将掌握从简单到复杂的各类决策问题的数学框架和求解方法。这些工具将帮助你在实际应用中不仅做出准确的预测,更能做出明智的决策。


《Probabilistic Machine Learning: Advanced Topics》第35章“Reinforcement Learning”详细讲解

1. 引言:从规划到学习

在第34章中,我们介绍了马尔可夫决策过程(MDP)以及当模型已知时的规划方法(值迭代、策略迭代)。然而,在大多数现实问题中,环境的转移概率 $p(s'|s,a)$ 和奖励函数 $R(s,a)$ 是未知的。智能体只能通过与环境的交互来收集经验数据,并从中学习最优策略。这正是强化学习(Reinforcement Learning, RL)的核心。

本章将系统介绍强化学习的主要方法,涵盖从基础的基于值的方法(如Q学习)、基于策略的方法(如策略梯度)、基于模型的方法,到高级的异策略学习控制作为推断等主题。图35.1给出了RL方法的概览。

下图概括了本章的知识体系:

graph TD A[强化学习] --> B[基于值的方法] A --> C[基于策略的方法] A --> D[基于模型的方法] A --> E[异策略学习] A --> F[控制作为推断] B --> B1[蒙特卡洛] B --> B2[时序差分 TD] B --> B3[SARSA] B --> B4[Q学习] B --> B5[DQN] C --> C1[策略梯度定理] C --> C2[REINFORCE] C --> C3["演员-评论员 A2C/A3C"] C --> C4["置信域 TRPO/PPO"] C --> C5["确定性策略梯度 DDPG/TD3"] D --> D1[模型预测控制 MPC] D --> D2[MBRL与无模型结合] D --> D3[PILCO] D --> D4["世界模型 PlaNet/Dreamer"] E --> E1[重要性采样] E --> E2[双重稳健] E --> E3[行为正则化] E --> E4[地平线诅咒] E --> E5[致命三元组] F --> F1["最大熵 RL (SAC)"] F --> F2["模仿学习 (GAIL)"]

2. 强化学习基础

2.1 MDP回顾

一个MDP由以下要素定义(详见第34章):

  • 状态空间 $\mathcal{S}$
  • 动作空间 $\mathcal{A}$
  • 转移概率 $p(s'|s,a)$
  • 奖励函数 $R(s,a)$(通常指期望即时奖励)
  • 折扣因子 $\gamma \in [0,1)$

策略 $\pi(a|s)$ 给出在状态 $s$ 下采取动作 $a$ 的概率。目标是最大化期望折扣累积奖励:

$$ J(\pi) = \mathbb{E}_{\pi} \left[ \sum_{t=0}^{\infty} \gamma^t R(s_t, a_t) \right]. $$

值函数

  • 状态值函数 $V^\pi(s) = \mathbb{E}_\pi[\sum_{t=0}^\infty \gamma^t R(s_t, a_t) | s_0 = s]$
  • 动作值函数 $Q^\pi(s, a) = \mathbb{E}_\pi[\sum_{t=0}^\infty \gamma^t R(s_t, a_t) | s_0 = s, a_0 = a]$
  • 优势函数 $A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s)$

贝尔曼方程

$$ V^\pi(s) = \mathbb{E}_{a\sim\pi(\cdot|s)} \left[ R(s, a) + \gamma \mathbb{E}_{s'\sim p(\cdot|s,a)}[V^\pi(s')] \right]. $$

当模型未知时,我们必须从与环境的交互中学习。

2.2 探索与利用

RL的核心困境是探索-利用权衡:智能体必须尝试未知的动作以获取更多信息(探索),同时利用已知的好动作获得高奖励(利用)。常用探索策略包括:

  • ε-贪婪:以概率 $1-\epsilon$ 选择当前最优动作,以概率 $\epsilon$ 随机选择。
  • 玻尔兹曼探索:根据当前Q值的softmax分布选择动作,温度控制探索程度。
  • 上置信界(UCB):基于不确定性估计选择最有潜力的动作。
  • 汤普森采样:从后验分布中采样参数,然后贪婪选择。

3. 基于值的方法

3.1 蒙特卡洛方法

蒙特卡洛(MC)方法通过完整回合的回报来估计值函数。对于回合制任务,我们收集一个回合的轨迹 $(s_0, a_0, r_0, s_1, \dots, s_T)$,计算每个时间步的回报 $G_t = \sum_{k=0}^{T-t-1} \gamma^k r_{t+k}$,然后用 $G_t$ 作为 $Q(s_t, a_t)$ 的更新目标。MC方法无偏但方差大,且只能用于回合制任务。

3.2 时序差分学习

时序差分(TD)学习结合了MC和动态规划的思想,使用当前估计的值函数来构造目标:

$$ V(s_t) \leftarrow V(s_t) + \alpha \left[ r_t + \gamma V(s_{t+1}) - V(s_t) \right], $$

其中 $\alpha$ 是学习率。TD误差 $\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)$ 提供了更新信号。TD方法方差低,可在线学习。

3.3 TD(λ)与资格迹

TD(λ) 通过资格迹(eligibility trace)将当前TD误差传播到过去的状态,实现多步预测的加权平均。资格迹 $e_t(s)$ 记录了状态 $s$ 最近被访问的程度。更新规则:

$$ V(s) \leftarrow V(s) + \alpha \delta_t e_t(s). $$

当 $\lambda = 0$ 时退化为一步TD,$\lambda = 1$ 时近似于MC。

3.4 SARSA:同策略TD控制

SARSA(State-Action-Reward-State-Action)直接学习动作值函数 $Q(s,a)$。更新规则:

$$ Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right], $$

其中 $a_{t+1}$ 是实际在 $s_{t+1}$ 采取的动作(由当前策略生成)。SARSA是同策略(on-policy)算法,即学习的是当前正在执行的策略的值。

3.5 Q学习:异策略TD控制

Q学习异策略(off-policy)算法,它直接学习最优动作值函数 $Q^*$,而不管当前策略如何。更新规则:

$$ Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t) \right]. $$

Q学习利用贝尔曼最优性方程,目标中使用最大Q值,因此可以从任何行为策略收集的数据中学习。图35.4展示了Q学习在简单网格世界中的学习过程。

双重Q学习(Double Q-learning)通过使用两个独立的Q函数来缓解最大化偏差(optimizer’s curse)。一个Q函数用于选择动作,另一个用于估计其值,交替更新。

3.6 深度Q网络(DQN)

当状态空间很大(如图像)时,需要用深度神经网络参数化 $Q(s,a;\theta)$。DQN [Mnih et al., 2015] 引入两个关键技巧:

  • 经验回放(experience replay):将转移 $(s, a, r, s')$ 存储在回放缓冲区中,训练时随机采样小批量,打破数据相关性。
  • 目标网络(target network):使用一个延迟更新的目标网络 $Q_{\theta^-}$ 计算TD目标,增加稳定性。

损失函数:

$$ \mathcal{L}(\theta) = \mathbb{E}_{(s,a,r,s')\sim \mathcal{D}} \left[ \left( r + \gamma \max_{a'} Q_{\theta^-}(s', a') - Q_\theta(s, a) \right)^2 \right]. $$

后续改进包括双重DQN(用两个网络减少过估计)、优先经验回放( Prioritized Experience Replay)、决斗DQN(Dueling DQN,将Q分解为V和A)以及Rainbow(集成多种改进)。


4. 基于策略的方法

基于值的方法通过学习 $Q^*$ 再导出策略 $\pi(s) = \arg\max_a Q(s,a)$,这在高维连续动作空间或随机策略下可能困难。基于策略的方法直接参数化策略 $\pi_\theta(a|s)$,并通过梯度上升最大化 $J(\theta)$。

4.1 策略梯度定理

策略梯度定理给出了目标函数梯度的表达式(推导见式35.21):

$$ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) Q^{\pi_\theta}(s, a) \right]. $$

实际中常用优势函数 $A(s,a)$ 代替 $Q$ 以减少方差,且可以减去一个与动作无关的基线(如 $V(s)$)。

4.2 REINFORCE

REINFORCE [Williams, 1992] 是最简单的策略梯度算法,它使用蒙特卡洛采样的回报 $G_t$ 作为 $Q$ 的估计:

$$ \theta \leftarrow \theta + \alpha \sum_t \gamma^t (G_t - b(s_t)) \nabla_\theta \log \pi_\theta(a_t|s_t), $$

其中 $b(s_t)$ 是基线(可用学习的 $V(s)$)。REINFORCE 无偏但方差大。

4.3 演员-评论员方法

演员-评论员(Actor-Critic)方法结合了策略梯度和值函数学习。演员(actor)是策略 $\pi_\theta$,评论员(critic)是值函数 $V_\phi(s)$ 或 $Q_\phi(s,a)$。常见的优势演员-评论员(A2C/A3C)使用TD误差作为优势估计:

$$ \delta_t = r_t + \gamma V_\phi(s_{t+1}) - V_\phi(s_t), $$

然后更新:

$$ \theta \leftarrow \theta + \alpha \delta_t \nabla_\theta \log \pi_\theta(a_t|s_t), \quad \phi \leftarrow \phi + \beta \delta_t \nabla_\phi V_\phi(s_t). $$

A3C(异步优势演员-评论员)并行运行多个环境,异步更新参数,提高数据效率。

4.4 置信域策略优化

策略梯度方法容易因步长过大导致性能崩溃。置信域策略优化(TRPO)[Schulman et al., 2015] 通过约束新旧策略的KL散度来保证单调改进。其目标为:

$$ \max_\theta \mathbb{E}_{s,a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A^{\pi_{\theta_{\text{old}}}}(s,a) \right], \quad \text{s.t.} \ \mathbb{E}_s[D_{\mathrm{KL}}(\pi_{\theta_{\text{old}}}(\cdot|s) \| \pi_\theta(\cdot|s))] \le \delta. $$

PPO(Proximal Policy Optimization)[Schulman et al., 2017] 是 TRPO 的简化版,使用裁剪(clipping)的替代目标:

$$ \mathcal{L}^{\text{PPO}}(\theta) = \mathbb{E} \left[ \min\left( r_t(\theta) A_t, \ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t \right) \right], $$

其中 $r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}$。

4.5 确定性策略梯度

对于连续动作空间,确定性策略梯度(DPG)[Silver et al., 2014] 使用确定性策略 $\mu_\theta(s)$ 输出动作,梯度为:

$$ \nabla_\theta J(\theta) = \mathbb{E}_{s\sim p^\mu} \left[ \nabla_\theta \mu_\theta(s) \nabla_a Q^\mu(s, a) |_{a=\mu_\theta(s)} \right]. $$

DDPG(Deep Deterministic Policy Gradient)[Lillicrap et al., 2016] 将其与 DQN 技巧(经验回放、目标网络)结合,适用于连续控制。TD3(Twin Delayed DDPG)[Fujimoto et al., 2018] 通过使用两个Q函数(减少过估计)和延迟更新进一步提高稳定性。

4.6 无梯度方法

对于不可导的策略或需要全局优化时,可使用进化策略(ES)、交叉熵方法(CEM)等。这些方法直接扰动策略参数,通过评估累积奖励来搜索最优参数。


5. 基于模型的方法

基于模型的方法先学习环境的动态模型,然后利用该模型进行规划或生成模拟数据用于策略学习。

5.1 模型预测控制(MPC)

MPC 是一种在线规划方法:在每一步,根据当前状态 $s_t$,使用模型预测未来 $H$ 步的轨迹,优化动作序列,然后执行第一个动作,并在下一时刻重新规划。动作序列的优化可通过随机采样(如CEM)或梯度下降。

5.2 结合基于模型和无模型

Dyna 框架:学习模型,同时利用真实经验和模型生成的模拟经验来更新值函数或策略。这结合了样本效率和计算效率。

5.3 PILCO:基于高斯过程的MBRL

PILCO [Deisenroth & Rasmussen, 2011] 使用高斯过程(GP)学习概率动力学模型,并通过模型预测得到长期累积奖励的解析梯度,从而优化策略参数(如RBF网络)。PILCO 极其样本高效,能在物理机器人上几分钟内学会控制任务(图35.7)。

5.4 基于深度神经网络的MBRL

当状态高维(如图像)时,GP不再适用。可使用神经网络作为动力学模型,并结合不确定性估计(如集成、Dropout)进行规划。PETS [Chua et al., 2018] 使用概率集成(Probabilistic Ensembles)进行轨迹采样。

5.5 潜变量世界模型

对于图像输入,先学习一个低维潜表示,然后在潜空间进行动态建模和规划。

  • World Models [Ha & Schmidhuber, 2018]:用VAE将图像压缩为潜变量 $z$,用MDN-RNN预测未来潜变量,在潜空间中用CEM训练控制器(图35.8)。
  • PlaNet [Hafner et al., 2019]:使用循环状态空间模型(RSSM)学习潜动态,并在潜空间中使用交叉熵方法进行规划。
  • Dreamer [Hafner et al., 2020]:在潜空间中学习值函数和策略,通过“梦境”中的轨迹进行策略优化,实现高效学习。

6. 异策略学习

异策略学习允许从任意行为策略收集的数据中学习目标策略,这对于数据重用和离线学习至关重要。

6.1 基本技术

  • 直接法:学习动力学模型,然后模拟。
  • 重要性采样(IS):用重要性权重修正行为策略与目标策略的分布差异。轨迹重要性权重为 $\prod_t \frac{\pi_e(a_t|s_t)}{\pi_b(a_t|s_t)}$。
  • 双重稳健(DR):结合直接法和IS,获得更鲁棒的估计。
  • 行为正则化:在优化目标时加入对行为策略的惩罚(如KL散度),防止学习策略偏离数据分布过远。

6.2 地平线诅咒

随着轨迹长度增加,重要性权重的方差会指数增长,导致估计失效。通过状态-动作分布校正(如DualDICE)可以缓解此问题。

6.3 致命三元组

致命三元组指同时使用函数近似异策略学习自举(bootstrapping)时,算法可能发散。例如,简单的线性值函数加Q学习可能导致震荡。解决办法包括使用梯度时差(Gradient TD)或路径一致性学习(PCL)等。

6.4 常见异策略方法

  • Q学习(如DQN)是异策略的。
  • 软演员-评论员(SAC)是异策略的最大熵方法。
  • MPO(Maximum a Posteriori Policy Optimization)是一种基于EM的异策略方法。

7. 控制作为推断

将强化学习视为概率推断问题,可以自然地处理不确定性和探索。

7.1 最大熵强化学习

最大熵RL引入一个二进制最优性变量 $o_t$,其概率正比于 $\exp(R(s_t, a_t)/\alpha)$。推断最优轨迹等价于最大化带熵正则的累积奖励:

$$ J(\pi) = \sum_t \mathbb{E}[R(s_t, a_t) + \alpha \mathcal{H}(\pi(\cdot|s_t))]. $$

软演员-评论员(SAC)[Haarnoja et al., 2018] 基于此原理,学习软Q函数和策略。软贝尔曼方程:

$$ Q(s_t, a_t) = R(s_t, a_t) + \gamma \mathbb{E}_{s_{t+1}}[V(s_{t+1})], \quad V(s_t) = \alpha \log \int \exp(Q(s_t, a)/\alpha) da. $$

SAC 在连续控制任务中表现优异。

7.2 模仿学习

当奖励难以定义但专家演示可用时,模仿学习(IL)试图模仿专家行为。行为克隆(BC)直接监督学习,但可能因分布偏移失败。生成对抗模仿学习(GAIL)[Ho & Ermon, 2016] 使用判别器区分专家轨迹与学习轨迹,生成器(策略)试图欺骗判别器,类似于GAN。


8. 与前后的联系

  • 第34章(决策):提供了MDP、值函数、贝尔曼方程、规划等基础。
  • 第6章(优化):策略梯度、SGD、自然梯度等。
  • 第10章(变分推断):与最大熵RL的变分解释相关。
  • 第16章(深度神经网络):DQN、DDPG等使用神经网络作为函数近似器。
  • 第18章(高斯过程):PILCO使用GP作为动力学模型。
  • 第21章(VAE):World Models 使用VAE学习潜空间。
  • 第29章(状态空间模型):RSSM是状态空间模型的深度版本。
  • 第34章(决策):赌博机是RL的特例(无状态转移)。

9. 总结与重点

9.1 核心要点

  • 基于值的方法(Q学习、DQN)通过学习 $Q^*$ 间接得到策略,适合离散动作。
  • 基于策略的方法(策略梯度、PPO)直接优化策略,适合连续动作或随机策略。
  • 演员-评论员结合二者,通过值函数降低方差。
  • 基于模型的方法通过学习环境模型实现高效规划,适合样本稀缺场景。
  • 异策略学习允许重用数据,但需注意稳定性问题。
  • 最大熵RL将探索自然地融入目标,SAC是代表性算法。
  • 模仿学习在奖励缺失时通过专家演示学习。

9.2 常见难点

  • 探索-利用平衡:ε-贪婪简单但可能低效,UCB和汤普森采样更优但复杂。
  • 值函数发散:致命三元组需谨慎处理。
  • 策略梯度方差:基线、优势函数、GAE等技巧用于降低方差。
  • 模型误差累积:基于模型的方法可能因模型不准导致规划失败,需不确定性量化。
  • 离线RL:行为正则化防止分布外动作。

9.3 学习建议

  1. 从Q学习开始:在简单离散环境(如Cliff Walking)实现Q学习和SARSA,理解同/异策略区别。
  2. 实践DQN:在Atari游戏(如CartPole)上实现DQN,体验经验回放和目标网络的效果。
  3. 尝试策略梯度:用PyTorch实现REINFORCE和A2C,在连续控制环境(如Pendulum)上训练。
  4. 学习PPO:使用现有库(如Stable-Baselines3)训练PPO,理解裁剪机制。
  5. 探索基于模型的方法:在简单动力学系统(如双月)上实现PETS,比较与无模型的差异。
  6. 阅读经典论文:DQN、PPO、SAC、Dreamer等。
  7. 关注离线RL:了解CQL、IQL等前沿方法。

本章全面介绍了强化学习的主要分支,从基础到前沿。掌握这些内容将使你能够设计和实现适用于各种场景的智能决策系统。


《Probabilistic Machine Learning: Advanced Topics》第36章“Causality”详细讲解

1. 引言:从关联到因果

贯穿本书的大部分内容,我们关注的是关联性(association):给定数据,我们学习模型描述变量之间的统计依赖关系。例如,线性回归告诉我们 $X$ 和 $Y$ 的相关系数,分类器告诉我们 $P(Y|X)$。然而,在许多科学和实际应用中,我们真正关心的是因果性(causation):如果我们改变 $X$,$Y$ 会如何变化?

例如:

  • 吸烟与肺癌高度相关,但这是否意味着吸烟导致肺癌?可能存在基因混杂因素。
  • 教育程度与收入正相关,但这是教育本身的作用,还是能力等混杂因素导致的?
  • 推出新药后,患者康复率提高,但这是药物效果,还是因为患者整体健康状况改善?

因果推断(Causal Inference)正是为了回答这类问题而发展起来的学科。它结合了概率论、图模型和潜在结果框架,旨在从观测数据(有时结合实验)中识别和估计因果效应。

本章作为全书的收尾,将系统介绍因果推断的基本概念、识别策略、估计方法和前沿话题,并展示因果性与机器学习各领域的深刻联系。

下图概括了本章的知识体系:

graph TD A[因果推断] --> B[因果模型] A --> C[因果效应识别] A --> D[因果效应估计] A --> E[敏感度分析] A --> F[因果发现] A --> G[与机器学习的联系] B --> B1[结构因果模型 SCM] B --> B2[因果图] B --> B3[潜在结果框架] C --> C1[随机对照试验 RCT] C --> C2[后门调整] C --> C3[前门调整] C --> C4[工具变量 IV] C --> C5[差分差分 DiD] D --> D1["结果回归 / G计算"] D --> D2[逆概率加权 IPW] D --> D3[双重稳健估计 AIPW] D --> D4[双重机器学习 DML] D --> D5[匹配] E --> E1[敏感性分析] E --> E2[安慰剂检验] E --> E3[奥斯汀图] F --> F1[基于约束的方法] F --> F2[基于评分的方法] F --> F3[基于函数的方法] G --> G1[因果表示学习] G --> G2[反事实解释] G --> G3["稳定学习/域泛化"] G --> G4[因果强化学习]

2. 因果模型

因果推断需要形式化的语言来描述因果假设。主要有三种等价的框架:结构因果模型(SCM)、因果图(Causal Graph)和潜在结果框架(Potential Outcomes)。

2.1 结构因果模型

一个结构因果模型(Structural Causal Model, SCM)由一组结构方程组成,每个变量由其直接原因和一个外生噪声变量决定:

$$ X_i = f_i(\mathbf{PA}_i, U_i), \quad U_i \sim P_{U_i}, $$

其中 $\mathbf{PA}_i$ 是 $X_i$ 的直接原因(父节点),$U_i$ 是独立的外生噪声。SCM 隐含了数据生成机制,并且是模块化的:改变一个方程不影响其他方程。

干预(Intervention)通过替换某个变量的结构方程来实现。例如,干预 $do(X=x)$ 意味着我们将 $X$ 的方程替换为常数 $x$,同时切断所有指向 $X$ 的边。干预后的分布记作 $P(Y|do(X=x))$。

反事实(Counterfactual)考虑个体层面:给定观测事实,在相同的外生噪声下,如果当初采取了不同行动,结果会如何?这需要推断外生噪声的值,然后干预,最后预测

2.2 因果图

因果图是SCM的图形表示,每个节点对应变量,有向边表示直接因果。因果图蕴含了条件独立性关系(通过 d-分离)。同时,它也是表达干预效果的工具:干预一个节点会删除所有指向它的边。

2.3 潜在结果框架

潜在结果框架 [Rubin, 1974] 用潜在结果 $Y(a)$ 表示个体如果接受处理 $A=a$ 时的结果。因果效应定义为潜在结果之间的比较,如平均处理效应:

$$ \mathrm{ATE} = \mathbb{E}[Y(1) - Y(0)]. $$

由于每个个体只能观察到一种潜在结果,因果推断本质上是缺失数据问题。随机化保证处理分配独立于潜在结果,从而可识别ATE。

三个框架在数学上等价,各有优势:SCM便于表达干预和反事实,因果图直观展示识别策略,潜在结果框架易于推导估计方法。


3. 因果效应识别

识别(Identification)是指用观测分布的统计量来表达因果量。下面介绍几种经典识别策略。

3.1 随机对照试验(RCT)

RCT 是因果推断的黄金标准。通过随机化处理分配 $A$,我们保证 $A$ 与所有潜在结果独立,从而:

$$ \mathbb{E}[Y(1)] = \mathbb{E}[Y|A=1], \quad \mathbb{E}[Y(0)] = \mathbb{E}[Y|A=0]. $$

因此 $\mathrm{ATE} = \mathbb{E}[Y|A=1] - \mathbb{E}[Y|A=0]$。

3.2 后门调整

当存在观测到的混杂变量 $X$(同时影响 $A$ 和 $Y$)且满足后门准则时,我们可以通过调整 $X$ 来消除混杂。后门准则要求 $X$ 阻断所有从 $A$ 到 $Y$ 的“后门路径”(即含有指向 $A$ 的边的路径)。此时:

$$ P(Y|do(A=a)) = \int P(Y|A=a, X=x) P(X=x) dx. $$

ATE 对应为:

$$ \mathrm{ATE} = \mathbb{E}_X[\mathbb{E}[Y|A=1,X] - \mathbb{E}[Y|A=0,X]]. $$

3.3 前门调整

当存在中介变量 $M$ 完全介导 $A$ 对 $Y$ 的效应,且 $M$ 与 $Y$ 之间无未观测混杂时,可用前门调整:

$$ P(Y|do(A=a)) = \sum_m P(M=m|A=a) \sum_{a'} P(Y|M=m, A=a') P(A=a'). $$

3.4 工具变量

当存在未观测混杂时,若有工具变量 $Z$ 满足:

  • 相关性:$Z$ 与 $A$ 相关。
  • 排除限制:$Z$ 仅通过 $A$ 影响 $Y$。
  • 无混杂:$Z$ 与 $(Y(0),Y(1))$ 独立。

则可在一定假设下识别局部平均处理效应(LATE):

$$ \mathrm{LATE} = \frac{\mathbb{E}[Y|Z=1] - \mathbb{E}[Y|Z=0]}{\mathbb{E}[A|Z=1] - \mathbb{E}[A|Z=0]}. $$

3.5 差分差分

当有面板数据(处理前后观测)且存在平行趋势假设时,差分差分法识别处理效应:

$$ \mathrm{ATT} = (\mathbb{E}[Y_{t=1}|A=1] - \mathbb{E}[Y_{t=0}|A=1]) - (\mathbb{E}[Y_{t=1}|A=0] - \mathbb{E}[Y_{t=0}|A=0]). $$

4. 因果效应估计

识别之后,我们需要从有限样本中估计因果量。以下介绍几种常用估计方法。

4.1 结果回归(G计算)

直接拟合结果模型 $\mathbb{E}[Y|A,X]$,然后对 $X$ 的分布积分:

$$ \hat{\tau}_{\text{reg}} = \frac{1}{n} \sum_{i=1}^n \left[ \hat{\mathbb{E}}[Y|A=1,X_i] - \hat{\mathbb{E}}[Y|A=0,X_i] \right]. $$

4.2 逆概率加权(IPW)

利用倾向性评分 $e(X) = P(A=1|X)$ 对样本加权,使处理组和对照组的协变量分布平衡:

$$ \hat{\tau}_{\text{ipw}} = \frac{1}{n} \sum_{i=1}^n \frac{A_i Y_i}{e(X_i)} - \frac{1}{n} \sum_{i=1}^n \frac{(1-A_i)Y_i}{1-e(X_i)}. $$

IPW 对极端的倾向性评分敏感,可用稳定版本(Hájek估计)。

4.3 双重稳健估计(AIPW)

结合结果回归和IPW,只要其中之一正确,估计就一致:

$$ \hat{\tau}_{\text{dr}} = \frac{1}{n} \sum_{i=1}^n \left[ \hat{\mathbb{E}}[Y|A=1,X_i] - \hat{\mathbb{E}}[Y|A=0,X_i] + \frac{A_i(Y_i - \hat{\mathbb{E}}[Y|A=1,X_i])}{\hat{e}(X_i)} - \frac{(1-A_i)(Y_i - \hat{\mathbb{E}}[Y|A=0,X_i])}{1-\hat{e}(X_i)} \right]. $$

4.4 双重机器学习(DML)

当使用机器学习估计 $\mathbb{E}[Y|A,X]$ 和 $e(X)$ 时,为了获得 $\sqrt{n}$ 收敛的ATE估计,需要采用交叉拟合(cross-fitting)以避免过拟合。DML 框架 [Chernozhukov et al., 2018] 结合 Neyman 正交得分和交叉拟合,允许使用复杂机器学习模型。

4.5 匹配

将处理组每个个体与协变量相似的对照组个体匹配,然后比较结果。常用方法有最近邻匹配、倾向性评分匹配等。匹配后需检查平衡性。


5. 敏感度分析与稳健性检验

因果推断依赖于不可验证的假设(如无未观测混杂)。敏感度分析评估结论对这些假设的依赖程度。

5.1 敏感性分析

假设存在一个未观测混杂 $U$,其对处理的影响强度 $\alpha$、对结果的影响强度 $\delta$。通过设定 $(\alpha, \delta)$ 的范围,计算ATE的偏误范围。奥斯汀图 [Veitch & Zaveri, 2020] 将结果以等高线形式展示,并与观测到的协变量的影响强度对比,帮助判断未观测混杂能否解释观测效应(图36.7)。

5.2 安慰剂检验

利用一个已知无因果效应的变量(如事后变量、伪处理)重复分析,如果也发现“显著效应”,则表明原分析可能存在偏误。

5.3 虚假结果与稳健性

通过改变样本、调整变量集、使用不同估计方法,观察结果是否稳健。若结果对合理变化敏感,则需谨慎解释。


6. 因果发现

当图结构未知时,我们可以从观测数据中学习因果图。主要方法包括:

  • 基于约束的方法:如 PC 算法,通过条件独立性检验构建图。
  • 基于评分的方法:如 GES,搜索使评分函数(如BIC)最优的图。
  • 基于函数的方法:如 LiNGAM,假设线性非高斯模型,通过独立成分分析识别因果方向。
  • 基于噪声的方法:如 ANM,假设加性噪声模型,通过检验残差独立性确定方向。

因果发现通常只能得到马尔可夫等价类,而非唯一图,需要额外假设或干预实验来定向。


7. 与机器学习的联系

因果性与机器学习相互促进,形成多个交叉领域。

7.1 因果表示学习

从数据中学习可解释的、因果解耦的表示,使得表示的各维度对应于独立的因果机制。这有助于提高泛化性和可解释性。

7.2 反事实解释

在可解释AI中,反事实解释通过展示“如果改变某些特征,预测结果会如何变化”来帮助用户理解模型。这需要因果模型来保证改变是合理的。

7.3 稳定学习与域泛化

利用因果不变性,学习在不同环境下稳定的预测模型,避免依赖虚假关联。这是域泛化和分布外泛化的关键。

7.4 因果强化学习

在强化学习中,因果模型可以帮助智能体理解环境机制,进行更有效的探索和规划,并实现干预推理。


8. 与前后的联系

  • 第4章(图模型):因果图是概率图模型的扩展,但增加了因果语义。
  • 第19章(分布漂移):因果视角解释了分布漂移的类型(协变量漂移、概念漂移等)。
  • 第28章(潜因子模型):因子分析可用于发现潜在原因,但通常不涉及因果方向。
  • 第29章(状态空间模型):动态因果模型可视为状态空间模型的一种。
  • 第30章(图学习):因果发现是图结构学习在因果解释下的延伸。
  • 第33章(可解释性):反事实解释依赖于因果模型。
  • 第34章(决策):因果效应是决策的基础,例如评估治疗方案的优劣。
  • 第35章(强化学习):因果模型可提升样本效率和泛化能力。

9. 总结与重点

9.1 核心要点

  • 因果推断回答“如果改变 $X$,$Y$ 会如何”的问题,比关联分析更强。
  • 结构因果模型因果图潜在结果是三大基础框架。
  • 因果效应识别需依赖特定假设(随机化、后门准则、工具变量等)。
  • 估计方法包括结果回归、IPW、AIPW、DML、匹配等,各有优缺点。
  • 敏感度分析评估结论对未观测混杂的稳健性。
  • 因果发现从数据中学习因果结构,但只能得到等价类。
  • 因果性与机器学习交叉产生丰富的研究方向。

9.2 常见难点

  • 理解干预与条件的区别:$P(Y|do(A=a)) \neq P(Y|A=a)$,混杂导致偏差。
  • 后门准则的图形验证:需要识别所有后门路径,并判断调整集是否充分。
  • 工具变量的有效性:排除限制和无混杂假设通常不可检验,需领域知识。
  • 双重稳健估计的直觉:为何组合两个估计量能获得双重稳健性。
  • 因果发现的不可识别性:仅凭观测数据难以确定方向,需要额外假设。

9.3 学习建议

  1. 从简单例子开始:用模拟数据验证后门调整和工具变量的效果。
  2. 动手实现估计器:用 Python 实现 IPW、AIPW,并与简单回归比较。
  3. 学习因果图:用 causalnexdaggity 绘制因果图,识别后门路径。
  4. 阅读经典教材:Pearl (2009) “Causality”、Imbens & Rubin (2015) “Causal Inference”。
  5. 参与实践:在 Kaggle 竞赛或实际项目中尝试因果推断,例如评估营销活动效果。
  6. 关注前沿:了解因果表示学习、因果强化学习等领域的最新进展。

本章作为全书的收官之章,将概率机器学习与因果推断紧密联系,为读者打开了一扇通向更深入理解和更可靠决策的大门。掌握因果思维,将使你在数据科学和人工智能领域更具洞察力和创造力。