跳转至

贝叶斯派 (Bayesians)

派系简介

贝叶斯派(Bayesians)认为:学习的本质是在不确定性下进行概率推断。所有可被学习的对象——参数、隐变量、模型结构、未来观测——都被视为随机变量;学习的目标是给定观测数据 \(D\) 之后,得到关于未知量 \(H\) 的后验分布 \(P(H \mid D)\),而不是某个单点估计。

Pedro Domingos 在《主算法》(The Master Algorithm) 中将贝叶斯派列为机器学习五大派系之一,并指出贝叶斯派的"主算法"就是 贝叶斯定理本身

\[ P(H \mid D) \;=\; \frac{P(D \mid H)\,P(H)}{P(D)} \]

这个看似朴素的公式,提供了一个统一的归纳推理框架:

  • 先验 \(P(H)\) 编码学习之前关于假设的信念;
  • 似然 \(P(D \mid H)\) 描述假设如何生成数据;
  • 证据 \(P(D) = \int P(D\mid H)P(H)\,dH\) 是边缘化常数;
  • 后验 \(P(H \mid D)\) 是学习的输出。

贝叶斯派的核心承诺:先验 + 似然 = 一切。从朴素贝叶斯到 LDA,从卡尔曼滤波到贝叶斯神经网络,所有方法都可以被解读为对贝叶斯定理在不同模型族、不同推断算法下的具体化。

与频率派的根本分歧:频率派把参数视为固定但未知的量,把概率解释为长程频率;贝叶斯派把参数视为随机变量,把概率解释为信念度。这一分歧决定了两者在置信区间、假设检验、模型选择上的不同形式。


派系画像

维度 内容
本体论 世界由概率分布构成,不确定性是知识的本质属性
主算法 贝叶斯定理 \(P(H\mid D) \propto P(D\mid H)P(H)\)
评价标准 后验概率、边缘似然 (marginal likelihood)、预测对数似然
优化器 MCMC (Metropolis-Hastings, Gibbs, HMC, NUTS)、变分推断 (VI)、EM、拉普拉斯近似
代表方法 朴素贝叶斯、贝叶斯网络、隐马尔可夫模型 (HMM)、LDA、高斯过程、卡尔曼滤波、贝叶斯神经网络
现代分支 概率编程 (PyMC/Stan/NumPyro)、贝叶斯深度学习 (BNN/MC Dropout/Laplace)、贝叶斯优化 (BO)、变分自编码器 (VAE)
典型损失 负对数后验、ELBO(变分下界)、KL 散度
应对过拟合 先验正则化、贝叶斯模型平均 (BMA)

算法谱系

flowchart TD
    A["贝叶斯定理<br/>P(H|D) ∝ P(D|H)P(H)"] --> B["朴素贝叶斯<br/>(条件独立假设)"]
    A --> C["贝叶斯网络 / 有向图模型"]
    A --> D["马尔可夫随机场 / 无向图模型"]
    C --> E["隐马尔可夫模型 HMM"]
    C --> F["主题模型 LDA"]
    C --> G["卡尔曼滤波<br/>(线性高斯版本)"]
    A --> H["精确推断<br/>变量消元 / 信念传播"]
    A --> I["近似推断"]
    I --> J["MCMC<br/>MH / Gibbs / HMC / NUTS"]
    I --> K["变分推断 VI<br/>ELBO 优化"]
    I --> L["拉普拉斯近似"]
    A --> M["现代贝叶斯深度学习"]
    M --> N["Bayes by Backprop"]
    M --> O["MC Dropout"]
    M --> P["Deep Ensembles"]
    M --> Q["SWAG / Laplace Redux"]
    A --> R["概率编程<br/>PyMC / Stan / NumPyro"]
    A --> S["贝叶斯优化 BO<br/>(GP + 采集函数)"]

整个谱系的演化可以概括为三个阶段:

  1. 经典阶段(1763 起):贝叶斯定理 → 朴素贝叶斯 → Pearl 的贝叶斯网络(1988)→ HMM(1960s-70s)
  2. 算法成熟阶段(1990s-2000s):MCMC 普及(Geman-Geman 1984、Gelfand-Smith 1990)→ LDA(Blei 2003)→ 变分推断标准化
  3. 深度学习时代(2015-):变分自编码器 VAE(Kingma 2014)→ Bayes by Backprop(Blundell 2015)→ MC Dropout(Gal 2016)→ Laplace Redux(Daxberger 2021)

频率派 vs 贝叶斯派

维度 频率派 (Frequentist) 贝叶斯派 (Bayesian)
概率的解释 长程相对频率 主观信念度
参数 \(\theta\) 固定但未知 随机变量
核心估计 最大似然 \(\hat\theta_{\text{MLE}}\) 后验分布 \(P(\theta\mid D)\)
置信区间 95% CI:随机区间覆盖真值的频率 95% Credible Interval:参数落在区间的后验概率
假设检验 \(p\)-value、Neyman-Pearson 贝叶斯因子 (Bayes Factor)
预测 插入式 (plug-in) \(p(y\mid \hat\theta)\) 后验预测 \(\int p(y\mid\theta)p(\theta\mid D)d\theta\)
模型选择 AIC/BIC、交叉验证 边缘似然、WAIC、LOO-CV
正则化 L1/L2 显式加项 先验隐式实现(Laplace/Gauss 先验 ↔ L1/L2)
小样本 不稳定,需 bootstrap 先验起约束作用,自然 shrinkage
大样本 与贝叶斯派趋同(Bernstein-von Mises 定理) 后验集中于 MLE 附近
代表人物 Fisher、Neyman、Pearson Laplace、Jeffreys、de Finetti、Jaynes

务实立场:现代机器学习实践中,两派早已交融。L2 正则化等价于高斯先验下的 MAP;交叉验证可视为对边缘似然的近似;深度网络训练中的 dropout 可解释为变分推断。派系是哲学,方法是工具


与站内既有页的分工

本节笔记本是 派系视角的入口,重点放在:

  • 把贝叶斯方法放到《主算法》五派系框架下,与符号派、联结派、进化派、类比派对照;
  • 工程实战与现代分支(概率编程、BDL、BO);
  • 为每个分支建立标准引用与扩展阅读。

数学细节(贝叶斯定理推导、共轭先验、MAP/MLE 关系等基础内容)见 ../../03_Machine_Learning/贝叶斯学习.md; 通用概率模型与图模型基础见 ../../03_Machine_Learning/probabilistic_models.md

两套页面并存的原因:派系页强调"为什么这是一个统一的研究纲领",而 ML 基础页强调"在监督/无监督学习中如何具体使用"。


子页导航

本节包含三篇深度笔记:

  1. 图模型与隐马尔可夫 — 概率图模型基础、HMM 三大问题(前向后向、Viterbi、Baum-Welch)、卡尔曼滤波、粒子滤波、LDA 主题模型。
  2. 概率编程与贝叶斯统计实战 — PyMC/Stan/NumPyro 对比、分层模型、MCMC 诊断、贝叶斯 A/B 测试、贝叶斯优化、模型比较 (WAIC/LOO)。
  3. 贝叶斯深度学习与不确定性 — BNN、MC Dropout、Deep Ensembles、SWAG、Laplace 近似、校准 (ECE)、OOD 检测、与 VAE/扩散模型的关系。

学习路径建议

flowchart LR
    A[贝叶斯定理 + 共轭先验] --> B[朴素贝叶斯<br/>判别 vs 生成]
    B --> C[图模型基础<br/>d-分离/I-Map]
    C --> D[HMM / 卡尔曼<br/>时序推断]
    C --> E[LDA / 主题模型]
    D --> F[MCMC / VI]
    E --> F
    F --> G[概率编程<br/>PyMC/Stan]
    G --> H[贝叶斯优化]
    G --> I[贝叶斯深度学习]
    I --> J[VAE / 扩散模型]
  • 入门:先看《PRML》第 1、2、8 章;动手用 PyMC 实现 Beta-Binomial、贝叶斯线性回归。
  • 进阶:HMM 三大算法手推;理解 ELBO 与 EM 的统一视角;用 NUTS 跑分层模型并做 R-hat / ESS 诊断。
  • 前沿:BNN 几大近似方法(Bayes by Backprop / MC Dropout / Laplace)的工程权衡;BO 在超参搜索中的实际使用。

参考文献

  1. Domingos, P. (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books.
  2. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.(PRML,贝叶斯视角的标准教材)
  3. Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.
  4. Murphy, K. P. (2022/2023). Probabilistic Machine Learning: An Introduction / Advanced Topics. MIT Press.(PRML 之后最完整的现代贝叶斯 ML 教材)
  5. Gelman, A., Carlin, J., Stern, H., Dunson, D., Vehtari, A., Rubin, D. (2013). Bayesian Data Analysis (3rd ed.). CRC Press.(BDA3,应用贝叶斯统计圣经)
  6. Pearl, J. (1988). Probabilistic Reasoning in Intelligent Systems. Morgan Kaufmann.
  7. Jaynes, E. T. (2003). Probability Theory: The Logic of Science. Cambridge University Press.
  8. MacKay, D. J. C. (2003). Information Theory, Inference, and Learning Algorithms. Cambridge University Press.
  9. McElreath, R. (2020). Statistical Rethinking (2nd ed.). CRC Press.(贝叶斯入门首选)

图模型与隐马尔可夫

本笔记覆盖贝叶斯派最具代表性的结构化模型:概率图模型(PGM)、隐马尔可夫模型(HMM)、卡尔曼/粒子滤波、以及主题模型 LDA。它们共同的特征是:用图结构编码条件独立性,把高维联合分布分解为局部因子的乘积,从而让推断和学习变得可处理


1. 概率图模型综述

1.1 为什么要图

任意 \(d\) 维离散随机向量的联合分布需要 \(O(K^d)\) 个参数(\(K\) 为每维取值数),高维下不可处理。图模型借助条件独立性把联合分布因子分解:

\[ P(X_1, \dots, X_d) \;=\; \prod_{i=1}^{d} P(X_i \mid \text{Pa}(X_i)) \]

如果每个节点的父节点最多 \(k\) 个,参数量从 \(O(K^d)\) 降到 \(O(d K^{k+1})\),呈指数级下降。

1.2 贝叶斯网(有向图模型)

定义:有向无环图(DAG)\(G=(V,E)\),每个节点关联一个条件概率分布(CPD)\(P(X_i \mid \text{Pa}(X_i))\),联合分布为

\[ P(X_{1:d}) = \prod_i P(X_i \mid \text{Pa}(X_i)) \]

条件独立判定 (d-分离):路径上的每条三元结构有三类——

  • 链 (chain) \(A \to B \to C\):观测 \(B\) 阻断 \(A,C\)
  • 叉 (fork) \(A \leftarrow B \to C\):观测 \(B\) 阻断 \(A,C\)
  • 对撞 (collider/v-structure) \(A \to B \leftarrow C\):观测 \(B\)\(B\) 的后代 打开 \(A,C\)("explaining away")。

\(X,Y\) 之间所有路径在给定 \(Z\) 时都被阻断,则 \(X \perp\!\!\!\perp Y \mid Z\)

I-Map:图 \(G\) 是分布 \(P\) 的 I-Map 当且仅当 \(G\) 编码的所有独立性都在 \(P\) 中成立。最小 I-Map(perfect map)并非总存在。

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

无向图把联合分布写成团(clique)势能(potential)的乘积:

\[ P(X) \;=\; \frac{1}{Z}\prod_{c \in \mathcal{C}} \psi_c(X_c), \quad Z = \sum_X \prod_c \psi_c(X_c) \]

\(Z\) 称为配分函数(partition function),是 MRF 学习困难的主要来源。

条件独立的全局/局部/成对马尔可夫性 在正分布(everywhere positive)下三者等价(Hammersley-Clifford 定理)。

维度 贝叶斯网 (BN) 马尔可夫网 (MRF)
图结构 有向无环 无向
因子化 局部 CPD(自归一化) 团势能(需配分函数 \(Z\)
独立性判定 d-分离 图分离
因果解释 自然支持 不直接支持
经典应用 诊断网络、HMM、LDA 图像分割、CRF、Ising 模型
学习难点 CPD 拟合较容易 计算 \(Z\) 通常 #P-hard

2. 精确推断

精确推断回答:给定证据 \(e\),计算后验 \(P(Q \mid E=e)\) 或边缘 \(P(Q)\)

2.1 变量消元 (Variable Elimination, VE)

按某个消元序 \(\pi\) 逐一对非查询、非证据变量求和。每次消元产生一个中间因子。复杂度由 消元宽度 决定(图的 induced width / treewidth);最优消元序问题本身是 NP-hard。

输入:因子集合 Φ,消元序 π
对每个变量 X_π(i):
    收集所有含 X_π(i) 的因子 → Φ_i
    新因子 g_i = Σ_{X_π(i)} ∏ Φ_i
    Φ ← (Φ \ Φ_i) ∪ {g_i}
返回 ∏ Φ

2.2 信念传播 (Belief Propagation, BP)

也称 sum-product 算法。在树形图(含多叉树)上做两遍消息传递即可得到精确边缘:

\[ m_{i \to j}(x_j) \;=\; \sum_{x_i} \psi_{ij}(x_i, x_j)\,\phi_i(x_i)\!\!\prod_{k \in N(i)\setminus j}\!\! m_{k \to i}(x_i) \]

最终边缘:\(\;P(x_i) \propto \phi_i(x_i)\prod_{k \in N(i)} m_{k\to i}(x_i)\)

在带环图上称为 loopy BP,是近似算法(可能不收敛)。

2.3 连接树算法 (Junction Tree)

将原图三角化(triangulate)后构造连接树(junction tree / clique tree),在树上做精确 BP。是最一般的精确推断算法,复杂度仍受 treewidth 控制。


3. 隐马尔可夫模型 (HMM)

3.1 模型定义

HMM 是一类时序贝叶斯网,包含:

  • 隐状态序列 \(z_{1:T}\)\(z_t \in \{1,\dots,K\}\)
  • 观测序列 \(x_{1:T}\)
  • 初始分布 \(\pi_k = P(z_1 = k)\)
  • 转移矩阵 \(A_{ij} = P(z_{t+1}=j \mid z_t = i)\)
  • 发射概率 \(B_k(x) = P(x_t = x \mid z_t = k)\)

参数 \(\lambda = (\pi, A, B)\)。联合分布:

\[ P(z_{1:T}, x_{1:T}) = P(z_1)\prod_{t=2}^{T} P(z_t \mid z_{t-1}) \prod_{t=1}^{T} P(x_t \mid z_t) \]
flowchart LR
    Z1((z_1)) --> Z2((z_2)) --> Z3((z_3)) --> Zd((... z_T))
    Z1 --> X1[x_1]
    Z2 --> X2[x_2]
    Z3 --> X3[x_3]
    Zd --> XT[x_T]

3.2 三大问题

问题 输入 输出 算法
评估 \(\lambda, x_{1:T}\) \(P(x_{1:T} \mid \lambda)\) 前向算法
解码 \(\lambda, x_{1:T}\) \(\arg\max_{z_{1:T}} P(z_{1:T} \mid x_{1:T})\) Viterbi
学习 \(x_{1:T}\)(无 \(\lambda\) \(\hat\lambda\) Baum-Welch (EM)

3.3 前向算法

定义 前向变量 \(\alpha_t(i) = P(x_{1:t}, z_t = i \mid \lambda)\)

初始化\(\alpha_1(i) = \pi_i B_i(x_1)\) 递推

\[ \alpha_{t+1}(j) \;=\; \Big[\sum_{i=1}^{K}\alpha_t(i)A_{ij}\Big]\,B_j(x_{t+1}) \]

终止\(\;P(x_{1:T} \mid \lambda) = \sum_{i=1}^{K}\alpha_T(i)\)

复杂度 \(O(K^2 T)\)

3.4 后向算法

定义 后向变量 \(\beta_t(i) = P(x_{t+1:T} \mid z_t = i, \lambda)\)

初始化\(\beta_T(i) = 1\) 递推

\[ \beta_t(i) \;=\; \sum_{j=1}^{K} A_{ij} B_j(x_{t+1}) \beta_{t+1}(j) \]

后向变量与前向变量结合可得任意时刻的 平滑后验

\[ \gamma_t(i) = P(z_t = i \mid x_{1:T}) = \frac{\alpha_t(i)\beta_t(i)}{\sum_j \alpha_t(j)\beta_t(j)} \]

以及相邻时刻的联合后验:

\[ \xi_t(i,j) = P(z_t = i, z_{t+1} = j \mid x_{1:T}) = \frac{\alpha_t(i)A_{ij}B_j(x_{t+1})\beta_{t+1}(j)}{P(x_{1:T} \mid \lambda)} \]

3.5 Viterbi 解码

求最优状态序列 \(z^*_{1:T} = \arg\max_{z_{1:T}} P(z_{1:T}, x_{1:T} \mid \lambda)\)

定义 \(\delta_t(i) = \max_{z_{1:t-1}} P(z_{1:t-1}, z_t = i, x_{1:t} \mid \lambda)\)

初始化\(\delta_1(i) = \pi_i B_i(x_1)\)\(\psi_1(i) = 0\) 递推

\[ \delta_{t}(j) = \max_i \big[\delta_{t-1}(i) A_{ij}\big] B_j(x_t), \quad \psi_t(j) = \arg\max_i \big[\delta_{t-1}(i) A_{ij}\big] \]

终止\(z^*_T = \arg\max_i \delta_T(i)\) 回溯\(z^*_{t} = \psi_{t+1}(z^*_{t+1})\)

复杂度同样 \(O(K^2 T)\),是动态规划的经典范例。

def viterbi(pi, A, B, x):
    T, K = len(x), len(pi)
    delta = np.zeros((T, K))
    psi = np.zeros((T, K), dtype=int)
    delta[0] = pi * B[:, x[0]]
    for t in range(1, T):
        for j in range(K):
            scores = delta[t-1] * A[:, j]
            psi[t, j] = np.argmax(scores)
            delta[t, j] = scores[psi[t, j]] * B[j, x[t]]
    z = np.zeros(T, dtype=int)
    z[-1] = np.argmax(delta[-1])
    for t in range(T-2, -1, -1):
        z[t] = psi[t+1, z[t+1]]
    return z

数值稳定:实际实现使用 log 概率,把乘法换成加法。前向后向同样要做归一化(scaling factor)或 logsumexp,否则 \(T\) 较大时会下溢。

3.6 Baum-Welch / EM 训练

无监督学习场景下(只有 \(x_{1:T}\)),用 EM 迭代估计 \(\lambda\)

E 步:用当前参数 \(\lambda^{(s)}\) 跑前向后向,得到 \(\gamma_t(i), \xi_t(i,j)\)M 步

\[ \hat\pi_i = \gamma_1(i),\quad \hat A_{ij} = \frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)},\quad \hat B_j(v) = \frac{\sum_{t: x_t = v}\gamma_t(j)}{\sum_t \gamma_t(j)} \]

EM 保证 \(P(x_{1:T} \mid \lambda^{(s+1)}) \ge P(x_{1:T}\mid\lambda^{(s)})\),但只能收敛到局部最优;初始化敏感,常用多重启动或 K-means 初始化发射均值。

3.7 HMM 的扩展

扩展 改动
GMM-HMM 发射换成高斯混合,连续观测
Autoregressive HMM 发射依赖 \(x_{t-1}\)
Input-output HMM 转移和发射依赖外部输入 \(u_t\)
Hierarchical HMM 状态本身是 HMM,结构嵌套
Infinite HMM (HDP-HMM) 状态数无限,非参数贝叶斯
Linear-Chain CRF 判别式版本,建模 \(P(z\mid x)\) 而非 \(P(z,x)\)

4. 时序贝叶斯:卡尔曼滤波与粒子滤波

4.1 状态空间模型

\[ z_t = f(z_{t-1}) + \epsilon_t, \quad x_t = g(z_t) + \nu_t \]

HMM 是离散状态情况;连续状态最重要的两种:线性高斯 → 卡尔曼滤波;非线性 / 非高斯 → 粒子滤波

4.2 卡尔曼滤波(线性高斯)

设:

\[ z_t = A z_{t-1} + B u_t + \epsilon_t,\;\; \epsilon_t \sim \mathcal{N}(0, Q) $$ $$ x_t = H z_t + \nu_t,\;\; \nu_t \sim \mathcal{N}(0, R) \]

\(\hat z_{t\mid s} = \mathbb{E}[z_t \mid x_{1:s}]\)\(P_{t\mid s} = \mathrm{Cov}[z_t \mid x_{1:s}]\)

预测步

\[ \hat z_{t\mid t-1} = A\hat z_{t-1\mid t-1} + B u_t $$ $$ P_{t\mid t-1} = A P_{t-1\mid t-1} A^\top + Q \]

更新步:先算 创新 (innovation) 和 创新协方差

\[ y_t = x_t - H \hat z_{t\mid t-1},\quad S_t = H P_{t\mid t-1} H^\top + R \]

卡尔曼增益

\[ K_t = P_{t\mid t-1} H^\top S_t^{-1} \]

后验更新

\[ \hat z_{t\mid t} = \hat z_{t\mid t-1} + K_t y_t $$ $$ P_{t\mid t} = (I - K_t H) P_{t\mid t-1} \]

直觉\(K_t\) 把"测量比预测更可信的程度"编码进去——\(R\) 大(测量噪声大)则 \(K_t\) 小,更相信预测;反之则更相信观测。

非线性扩展:扩展卡尔曼 (EKF)、无迹卡尔曼 (UKF)。

4.3 粒子滤波 (Sequential Monte Carlo)

对非线性、非高斯模型,用 \(N\) 个加权样本 \(\{(z_t^{(i)}, w_t^{(i)})\}_{i=1}^N\) 近似 \(P(z_t \mid x_{1:t})\)

SIS (Sequential Importance Sampling)

  1. 从提议分布 \(q(z_t \mid z_{t-1}^{(i)}, x_t)\) 采样 \(z_t^{(i)}\)
  2. 更新权重
\[ w_t^{(i)} \propto w_{t-1}^{(i)} \cdot \frac{p(x_t \mid z_t^{(i)}) p(z_t^{(i)} \mid z_{t-1}^{(i)})}{q(z_t^{(i)} \mid z_{t-1}^{(i)}, x_t)} \]
  1. 归一化 \(\sum_i w_t^{(i)} = 1\)

SIR (Sampling Importance Resampling):在权重退化(少数粒子占据几乎全部权重)时,按权重重采样得到新的等权粒子集。判定准则常用有效样本量 \(\hat N_{\text{eff}} = 1/\sum_i (w_t^{(i)})^2\),低于阈值(如 \(N/2\))就重采样。

Bootstrap filter:取 \(q = p(z_t \mid z_{t-1})\),权重退化为 \(w_t^{(i)} \propto w_{t-1}^{(i)} p(x_t \mid z_t^{(i)})\)

应用:机器人 SLAM、目标跟踪、金融时序、流行病学。


5. 主题模型:LDA

5.1 生成过程

LDA (Latent Dirichlet Allocation, Blei et al. 2003) 假设每篇文档是若干主题的混合,每个主题是词表上的分布。

超参数\(\alpha\)(文档-主题先验),\(\beta\)(主题-词先验),主题数 \(K\)

graph LR
    subgraph Plate_K["主题板:K"]
      betak["φ_k ~ Dir(β)"]
    end
    subgraph Plate_M["文档板:M"]
      thetad["θ_d ~ Dir(α)"]
      subgraph Plate_N["词板:N_d"]
        zdn["z_{d,n} ~ Cat(θ_d)"]
        wdn["w_{d,n} ~ Cat(φ_{z_{d,n}})"]
      end
    end
    thetad --> zdn
    zdn --> wdn
    betak --> wdn

生成过程:

  1. 对每个主题 \(k = 1, \dots, K\):抽 \(\varphi_k \sim \mathrm{Dir}(\beta)\)
  2. 对每篇文档 \(d = 1, \dots, M\)
    • 抽主题分布 \(\theta_d \sim \mathrm{Dir}(\alpha)\)
    • 对每个词位置 \(n = 1, \dots, N_d\)
      • 抽主题 \(z_{d,n} \sim \mathrm{Cat}(\theta_d)\)
      • 抽词 \(w_{d,n} \sim \mathrm{Cat}(\varphi_{z_{d,n}})\)

联合分布:

\[ p(\theta, \varphi, z, w \mid \alpha, \beta) = \prod_k p(\varphi_k\mid\beta) \prod_d p(\theta_d \mid \alpha)\prod_n p(z_{d,n}\mid\theta_d) p(w_{d,n}\mid\varphi_{z_{d,n}}) \]

5.2 Collapsed Gibbs Sampling

利用 Dirichlet-Multinomial 共轭,把 \(\theta, \varphi\) 解析积分掉,只对 \(z\) 采样:

\[ P(z_{d,n} = k \mid z_{-(d,n)}, w, \alpha, \beta) \;\propto\; \frac{n_{d,k}^{-(d,n)} + \alpha_k}{\sum_{k'}\!(n_{d,k'}^{-(d,n)} + \alpha_{k'})}\cdot\frac{n_{k,w_{d,n}}^{-(d,n)} + \beta_{w_{d,n}}}{\sum_v (n_{k,v}^{-(d,n)} + \beta_v)} \]

其中 \(n_{d,k}\) 为文档 \(d\) 中分配到主题 \(k\) 的词数,\(n_{k,v}\) 为主题 \(k\) 下词 \(v\) 的出现数,上标 \(-(d,n)\) 表示扣除当前位置。

每个 token 一次更新 \(O(K)\),整体 \(O(K \sum_d N_d)\) per sweep。变体:变分推断 (Blei 原文)、在线 LDA (Hoffman 2010)、SVI。

5.3 模型评估

  • 困惑度 (perplexity)\(\exp(-\frac{1}{N}\sum \log p(w))\),越低越好;
  • 主题一致性 (coherence)\(C_v\)、UMass、NPMI;
  • 下游任务:用主题向量做分类/聚类。

6. 应用案例

6.1 词性标注(HMM)

  • 隐状态 = POS tag(NN, VB, JJ, ...),观测 = 词;
  • \(A\) 编码语法转移规律(DT 之后大概率是 NN);
  • \(B\) 编码词-词性关联;
  • Viterbi 解码出最可能的标注序列。
  • 现代基线:CRF、BiLSTM-CRF、Transformer。HMM 仍是教学和低资源场景基线。

6.2 语音识别 GMM-HMM

经典声学模型:每个音素(phone)对应一个 HMM(通常 3 状态左到右),发射概率用 GMM 建模 MFCC 特征。整句解码用大型 WFST 把声学 HMM、词典、语言模型组合起来做 Viterbi beam search。在 DNN-HMM 出现前是 SOTA(Kaldi 工具链至今仍广泛使用)。

6.3 生物序列对齐(profile HMM)

  • 隐状态:match / insert / delete;
  • 用于多序列对齐 (MSA)、远距离同源检测;
  • HMMER 是代表实现,是生物信息学标准工具。

6.4 LDA 实战

  • 大规模新闻文档主题发现;
  • 推荐系统中作为用户兴趣的低维表示(主题分布是稠密向量);
  • 与 word2vec / BERT topic 等现代方法相比,LDA 仍在可解释性强的场景中保有价值。

7. 交叉引用


参考文献

  1. Bishop, C. M. (2006). Pattern Recognition and Machine Learning, Ch. 8 (Graphical Models), Ch. 13 (Sequential Data). Springer.
  2. Rabiner, L. R. (1989). "A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition". Proceedings of the IEEE, 77(2): 257-286.
  3. Blei, D. M., Ng, A. Y., Jordan, M. I. (2003). "Latent Dirichlet Allocation". JMLR, 3: 993-1022.
  4. Koller, D., Friedman, N. (2009). Probabilistic Graphical Models: Principles and Techniques. MIT Press.
  5. Murphy, K. P. (2023). Probabilistic Machine Learning: Advanced Topics, Ch. 8-10. MIT Press.
  6. Doucet, A., de Freitas, N., Gordon, N. (eds.) (2001). Sequential Monte Carlo Methods in Practice. Springer.
  7. Griffiths, T. L., Steyvers, M. (2004). "Finding Scientific Topics". PNAS, 101(suppl 1): 5228-5235.(LDA 的 collapsed Gibbs)
  8. Welch, G., Bishop, G. (2006). An Introduction to the Kalman Filter. UNC-Chapel Hill TR.

概率编程与贝叶斯统计实战

本节聚焦把贝叶斯思想落实成代码与实践。核心问题是:如何用一种可声明的方式描述生成模型,让推断算法自动跑起来——这就是概率编程语言(PPL)。


1. 概率编程范式

1.1 模型即程序

传统贝叶斯建模流程是"写公式 → 推导后验 → 实现采样器",每换一个似然或先验就要重写。概率编程把它统一为:

随机变量 = 编程语言中的一等公民
模型     = 一段把先验、似然写出来的程序
推断     = 由 PPL 运行时自动完成

只要写出生成过程,推断算法(HMC/NUTS、SVI、SMC)由编译器/运行时自动生成。这把建模与推断解耦,让贝叶斯方法在工程中可规模化。

1.2 三类 PPL

类别 代表 特点
静态图、强类型 Stan 自定义 DSL,C++ 后端,最稳定的 NUTS 实现
基于 Python,动态图 PyMC、NumPyro、Pyro 直接复用深度学习自动微分(Theano/Aesara/PyTensor、JAX、PyTorch)
通用 PPL(图灵完备) Turing.jl、Pyro、Gen 支持随机控制流、open-universe 模型

2. 主流库对比

宿主语言 后端 默认采样器 VI 支持 适用场景
PyMC Python PyTensor (前 Aesara/Theano) NUTS ADVI、normalizing flow VI 统计建模、回归、分层模型
Stan DSL(C++ 编译) C++ NUTS(金标准) ADVI、Pathfinder 学术统计、可重复研究
NumPyro Python JAX NUTS(GPU/TPU 友好) SVI(Pyro 兼容) 大规模数据、需要硬件加速
Pyro Python PyTorch HMC、NUTS SVI(核心) 深度生成模型、VAE 类
Edward2 Python TensorFlow Probability HMC、NUTS VI TFP 生态、研究原型
Turing.jl Julia Julia HMC、NUTS、PG ADVI Julia 生态、自定义采样器

选择原则: - 中等规模、表格数据、统计风格 → PyMCStan(Stan 的 NUTS 仍是诊断最稳定的实现); - 大规模、需要 GPU、与 JAX 模型耦合 → NumPyro; - 深度概率模型、VAE/变分流 → Pyro; - 图灵完备 / open-universe → Turing.jlGen


3. 分层贝叶斯模型

3.1 Pooling 谱

考虑多组数据 \(\{(x_{ij}, y_{ij})\}\)\(j\) 为组,\(i\) 为组内观测):

策略 模型 偏差-方差
Complete pooling 所有组共享一个 \(\theta\) 偏差大、方差小
No pooling 每组独立估计 \(\theta_j\) 偏差小、方差大
Partial pooling(分层) \(\theta_j \sim \mathcal{N}(\mu, \tau^2)\)\(\mu, \tau\) 为超参(带超先验) 折中,按"组内信息量"自适应

分层模型的关键是 收缩 (shrinkage):组内样本少 → 估计被拉向群体均值;样本多 → 估计接近自身 MLE。

3.2 经典例子:8 schools

Gelman 8 schools:8 所学校的 SAT 教学效果估计 \(y_j\),标准误 \(\sigma_j\)

\[ y_j \sim \mathcal{N}(\theta_j, \sigma_j^2),\quad \theta_j \sim \mathcal{N}(\mu, \tau^2),\quad \mu \sim \mathcal{N}(0, 10^2),\quad \tau \sim \mathrm{HalfCauchy}(5) \]

Non-centered parameterization(避免 funnel 几何):

\[ \tilde\theta_j \sim \mathcal{N}(0,1),\quad \theta_j = \mu + \tau\,\tilde\theta_j \]
import pymc as pm
import numpy as np

y = np.array([28, 8, -3, 7, -1, 1, 18, 12])
sigma = np.array([15, 10, 16, 11, 9, 11, 10, 18])

with pm.Model() as eight_schools:
    mu = pm.Normal("mu", 0, 10)
    tau = pm.HalfCauchy("tau", 5)
    theta_tilde = pm.Normal("theta_tilde", 0, 1, shape=8)
    theta = pm.Deterministic("theta", mu + tau * theta_tilde)
    obs = pm.Normal("obs", mu=theta, sigma=sigma, observed=y)
    idata = pm.sample(2000, tune=1000, target_accept=0.95)

4. MCMC 实战

4.1 采样器谱系

采样器 核心机制 优势 劣势
Metropolis-Hastings 提议 + 接受率 \(\alpha = \min(1, \frac{p(\theta') q(\theta\mid\theta')}{p(\theta) q(\theta'\mid\theta)})\) 通用 高维下混合慢
Gibbs 逐维条件采样 \(p(\theta_i \mid \theta_{-i})\) 共轭模型下高效 强相关参数下慢
HMC 引入动量,模拟哈密顿动力学 高维高效 需调步长 \(\epsilon\) 和步数 \(L\)
NUTS HMC 自动调节 \(L\)(U-turn 准则) 几乎免调参 实现复杂
SMC 退火序列 可估边缘似然 计算重
Riemannian HMC 用 Fisher 信息当度量 病态几何下更稳 计算更重

4.2 HMC 哈密顿动力学

引入动量 \(r \sim \mathcal{N}(0, M)\),定义哈密顿量

\[ H(\theta, r) = \underbrace{-\log p(\theta \mid D)}_{U(\theta)} + \underbrace{\tfrac{1}{2} r^\top M^{-1} r}_{K(r)} \]

哈密顿方程:

\[ \dot\theta = \frac{\partial H}{\partial r} = M^{-1} r,\quad \dot r = -\frac{\partial H}{\partial \theta} = -\nabla U(\theta) \]

用 leapfrog 积分器(半步动量、整步位置、半步动量)模拟 \(L\) 步,得到提议 \((\theta', r')\)。Metropolis 接受率:

\[ \alpha = \min\!\big(1,\; \exp(H(\theta, r) - H(\theta', r'))\big) \]

理想哈密顿系统能量守恒 → 接受率 \(\approx 1\);leapfrog 积分误差 \(O(\epsilon^2)\) 导致少量拒绝。NUTS 在每步动态延伸轨迹,用"两端轨迹是否开始 U-turn"作为停止准则,免去对 \(L\) 的手调。

4.3 诊断指标

  • Trace plot:四条以上链叠加,应像"毛毛虫"般充分混合;
  • R-hat (\(\hat R\)):链间方差 / 链内方差。\(\hat R < 1.01\) 视为收敛;
  • ESS (effective sample size):考虑自相关后的有效样本数。bulk-ESS 评估均值的精度,tail-ESS 评估分位数的精度,建议 \(\ge 400\) 每参数;
  • Divergent transitions:HMC 的 leapfrog 在 funnel/狭谷处发散。出现就要提高 target_accept、用 non-centered 重参化,或缩小步长;
  • BFMI:能量分布的混合度,\(<0.3\) 表示动量混合不足;
  • Posterior predictive checks (PPC):从后验抽样生成新数据,与观测对比。

5. 贝叶斯线性回归

模型:\(y = X\beta + \epsilon\)\(\epsilon \sim \mathcal{N}(0, \sigma^2 I)\),先验 \(\beta \sim \mathcal{N}(0, \tau^2 I)\)

后验封闭形式:

\[ \beta \mid y \sim \mathcal{N}(\mu_n, \Sigma_n),\quad \Sigma_n = \big(\tfrac{1}{\sigma^2}X^\top X + \tfrac{1}{\tau^2}I\big)^{-1},\quad \mu_n = \tfrac{1}{\sigma^2}\Sigma_n X^\top y \]

与岭回归的关系:MAP 估计 \(\hat\beta_{\text{MAP}} = \mu_n\),等价于 ridge 解 \(\hat\beta_{\text{ridge}} = (X^\top X + \lambda I)^{-1} X^\top y\),其中 \(\lambda = \sigma^2 / \tau^2\)

后验预测

\[ y^* \mid x^*, D \sim \mathcal{N}\big(x^{*\top}\mu_n,\; \sigma^2 + x^{*\top}\Sigma_n x^*\big) \]

预测方差自动包含 不可约噪声 + 参数不确定性——这是贝叶斯方法相对点估计 + 正则化的根本优势。


6. 贝叶斯 A/B 测试

业务场景:A、B 两个版本的转化率比较。

6.1 Beta-Binomial 模型

每个版本:

\[ \theta_v \sim \mathrm{Beta}(\alpha, \beta),\quad y_v \mid \theta_v \sim \mathrm{Binomial}(n_v, \theta_v) \]

后验(共轭):

\[ \theta_v \mid y_v \sim \mathrm{Beta}(\alpha + y_v,\; \beta + n_v - y_v) \]

直接得出 \(P(\theta_B > \theta_A \mid D)\)、提升比 \(\frac{\theta_B - \theta_A}{\theta_A}\)、最小可检测提升等可解释量——比 \(p\)-value 更贴近业务决策。

import pymc as pm
import numpy as np

obs = {"A": (120, 1000), "B": (135, 1000)}  # (conversions, trials)

with pm.Model() as ab:
    theta_A = pm.Beta("theta_A", 1, 1)
    theta_B = pm.Beta("theta_B", 1, 1)
    pm.Binomial("yA", n=obs["A"][1], p=theta_A, observed=obs["A"][0])
    pm.Binomial("yB", n=obs["B"][1], p=theta_B, observed=obs["B"][0])
    diff = pm.Deterministic("diff", theta_B - theta_A)
    lift = pm.Deterministic("lift", (theta_B - theta_A) / theta_A)
    idata = pm.sample(2000, tune=1000)

prob_B_better = (idata.posterior["diff"] > 0).mean().item()
print(f"P(B > A | D) = {prob_B_better:.3f}")

6.2 序贯监测

频率派需要预先确定样本量,提前看会导致"窥视" inflation;贝叶斯框架可以随时计算 \(P(\theta_B > \theta_A)\),配合预设的损失函数(停止规则)做序贯决策。

6.3 多臂老虎机

把 A/B 推广为多臂:Thompson Sampling 直接从后验抽 \(\theta\) 选最大者,是天然的探索-利用平衡(regret 接近最优)。


7. 贝叶斯优化 (BO)

7.1 框架

目标:黑盒昂贵函数 \(f: \mathcal{X} \to \mathbb{R}\)\(x^* = \arg\max f(x)\),每次评估代价高(如训练一个深度网络的超参组合)。

迭代:

  1. 用已观测点 \(\{(x_i, y_i)\}\) 拟合一个 代理模型(surrogate),通常是高斯过程 (GP)。
  2. 构造 采集函数 (acquisition function) \(a(x)\),平衡探索与利用。
  3. \(x_{n+1} = \arg\max_x a(x)\) 评估,加入数据集。

7.2 GP 代理模型

\[ f \sim \mathcal{GP}(m(x), k(x, x')) \]

后验在新点 \(x_*\)

\[ \mu_n(x_*) = k_*^\top (K + \sigma^2 I)^{-1} y,\quad \sigma^2_n(x_*) = k(x_*, x_*) - k_*^\top (K + \sigma^2 I)^{-1} k_* \]

7.3 三种主流采集函数

\(\mu(x), \sigma(x)\) 为 GP 后验均值与标准差,\(f^+ = \max y_i\)

Probability of Improvement (PI)

\[ \mathrm{PI}(x) = \Phi\!\left(\frac{\mu(x) - f^+ - \xi}{\sigma(x)}\right) \]

Expected Improvement (EI)

\[ \mathrm{EI}(x) = (\mu(x) - f^+ - \xi)\,\Phi(z) + \sigma(x)\,\phi(z),\quad z = \frac{\mu(x) - f^+ - \xi}{\sigma(x)} \]

EI 平衡了"提升幅度的期望"和"是否能够提升的概率",是最常用的采集函数。

Upper Confidence Bound (UCB)

\[ \mathrm{UCB}(x) = \mu(x) + \kappa\,\sigma(x) \]

\(\kappa\) 控制探索程度。Srinivas 2010 给出了 GP-UCB 的 sublinear regret 理论保证。

7.4 应用场景

  • 深度学习超参搜索(学习率、层宽、正则强度);
  • 实验设计(材料、化学反应条件);
  • 机器人控制策略调优;
  • A/B 测试场景下的连续参数优化。

工具:BoTorch(PyTorch 后端)、GPyOpt、Ax、scikit-optimize。


8. 工程注意事项

8.1 先验敏感性分析

汇报结果时必须做先验扰动:把 \(\tau \sim \mathrm{HalfCauchy}(5)\) 换成 \(\mathrm{HalfNormal}(2)\) 重跑,看后验是否稳定。如果敏感,要么数据信息量不足、要么先验设得太强。

弱信息先验 (weakly informative prior):Gelman 推荐的实践——既不用 flat prior(数值不稳,且对参数变换不不变),也不用过紧的先验。常用 \(\mathcal{N}(0, 5)\) 量级,HalfNormal/HalfCauchy 用于尺度参数。

8.2 模型比较

准则 公式 说明
DIC \(-2\log p(y\mid\hat\theta) + 2 p_D\) 旧式,不再推荐
WAIC \(-2\sum_i \log\!\big(\frac{1}{S}\sum_s p(y_i\mid\theta^{(s)})\big) + 2 p_W\) 完全贝叶斯,pointwise
PSIS-LOO 重要性加权 LOO 似然 Vehtari 2017 推荐
Bayes Factor \(\frac{p(D\mid M_1)}{p(D\mid M_2)}\) 严格但对先验高度敏感
后验预测检查 视觉/统计量对比 必做

PyMC 中:pm.compare({"m1": idata1, "m2": idata2}, ic="loo")

8.3 可重复性清单

  • 固定随机种子;
  • 记录链数、warmup、target_accept、采样器;
  • 报告 \(\hat R\)、ESS、divergence 数;
  • 提交模型代码(不只是结果);
  • 数据预处理流水线纳入版本控制;
  • 后验摘要要给出区间(如 89% HDI)而不仅是均值。

8.4 何时不要用贝叶斯

  • 数据极多、先验影响可忽略 → MLE/MAP 已足够,跑 NUTS 是浪费;
  • 实时推断、毫秒级延迟 → 后验采样太慢,用 VI 或退到 MAP;
  • 模型本身先验难以指定(如黑箱深度网络的全部权重) → 考虑 BDL 中的近似方案(见 贝叶斯深度学习)。

9. 交叉引用

  • 派系视角与谱系图:本页 §1(派系入口)
  • HMM、卡尔曼、LDA 的图模型基础:图模型与隐马尔可夫
  • 贝叶斯思想在深度网络中的延伸:贝叶斯深度学习与不确定性
  • 数学基础与共轭先验:../../03_Machine_Learning/贝叶斯学习.md

参考文献

  1. Salvatier, J., Wiecki, T. V., Fonnesbeck, C. (2016). "Probabilistic programming in Python using PyMC3". PeerJ Computer Science, 2:e55.
  2. Carpenter, B., Gelman, A., Hoffman, M. D., et al. (2017). "Stan: A Probabilistic Programming Language". Journal of Statistical Software, 76(1).
  3. Phan, D., Pradhan, N., Jankowiak, M. (2019). "Composable Effects for Flexible and Accelerated Probabilistic Programming in NumPyro". arXiv:1912.11554.
  4. Bingham, E., Chen, J. P., Jankowiak, M., et al. (2019). "Pyro: Deep Universal Probabilistic Programming". JMLR, 20(28).
  5. Hoffman, M. D., Gelman, A. (2014). "The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo". JMLR, 15: 1593-1623.
  6. Neal, R. M. (2011). "MCMC Using Hamiltonian Dynamics". In Handbook of Markov Chain Monte Carlo. CRC Press.
  7. Gelman, A., Carlin, J., Stern, H., Dunson, D., Vehtari, A., Rubin, D. (2013). Bayesian Data Analysis (3rd ed.). CRC Press.
  8. Vehtari, A., Gelman, A., Gabry, J. (2017). "Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC". Statistics and Computing, 27: 1413-1432.
  9. Frazier, P. I. (2018). "A Tutorial on Bayesian Optimization". arXiv:1807.02811.
  10. Snoek, J., Larochelle, H., Adams, R. P. (2012). "Practical Bayesian Optimization of Machine Learning Algorithms". NeurIPS.
  11. Srinivas, N., Krause, A., Kakade, S. M., Seeger, M. (2010). "Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design". ICML.
  12. McElreath, R. (2020). Statistical Rethinking (2nd ed.). CRC Press.

贝叶斯深度学习与不确定性

深度网络在 i.i.d. 测试集上的精度已经够高,但在 分布外 (OOD) 数据上常常给出高置信度的错误预测,对安全关键应用(自动驾驶、医疗诊断、金融风控)构成根本风险。贝叶斯深度学习(Bayesian Deep Learning, BDL)的目标是为深度网络配备一套校准良好的不确定性估计。


1. 为什么深度网络需要贝叶斯

1.1 三个症状

  • 过自信 (overconfidence):现代 ResNet、Transformer 在错误样本上 softmax 输出经常 \(>0.99\);Guo 2017 的实证表明 ECE 远高于早期浅层网络。
  • OOD 失效:把训练在 CIFAR-10 上的网络拿去预测 SVHN,分类置信度仍然很高——网络无法识别"这个我没见过"。
  • 灾难性误差:标准训练的 MLE/MAP 网络给出点估计,没有方差;下游决策(拒识、人机交接)缺乏依据。

1.2 贝叶斯框架给出的承诺

\[ p(y^* \mid x^*, D) = \int p(y^* \mid x^*, w)\, p(w \mid D)\, dw \]

后验预测自动整合权重不确定性,再被边缘化为输出分布——理论上能给出校准良好的概率。问题是 \(p(w\mid D)\) 在百万级参数下难以处理,BDL 的全部技术都在 如何近似这个后验


2. 不确定性的两类

类型 来源 是否能通过更多数据降低 例子
Aleatoric(偶然/数据噪声) 数据本身的随机性、测量噪声、标注歧义 模糊图像、骰子点数
Epistemic(认知/模型无知) 模型对未见区域的无知、有限训练数据 OOD 输入、训练分布稀疏区域

数学上:

\[ \underbrace{\mathrm{Var}[y^*\mid x^*, D]}_{\text{total}} = \underbrace{\mathbb{E}_{p(w\mid D)}\big[\mathrm{Var}[y^*\mid x^*, w]\big]}_{\text{aleatoric}} + \underbrace{\mathrm{Var}_{p(w\mid D)}\big[\mathbb{E}[y^*\mid x^*, w]\big]}_{\text{epistemic}}\]

应用含义:epistemic 高 → 触发"拒识"或主动学习采样;aleatoric 高 → 提供"概率性输出"或寻求额外传感器。

回归任务下,aleatoric 可建模为 \(y = f_w(x) + \epsilon(x)\),让网络输出 \((\mu, \sigma^2)\) 同时学习异方差噪声(heteroscedastic regression)。


3. 贝叶斯神经网络 (BNN)

把每个权重 \(w_i\) 视作随机变量,赋予先验 \(p(w)\)(常用 \(\mathcal{N}(0, \sigma_p^2)\)),用观测数据更新成后验 \(p(w \mid D)\)

理想做法:HMC 直接采样后验。Neal 1995 在浅层网络上实践成功,但深层网络下 HMC 的 leapfrog 计算量与混合困难都极高,仅在最近几年(Izmailov 2021)才出现大规模实验。实际工程中用以下近似。


4. Bayes by Backprop(Blundell 2015)

4.1 变分推断 (VI) 框架

引入参数化的近似后验 \(q_\phi(w)\),最大化 ELBO:

\[ \mathcal{L}(\phi) = \mathbb{E}_{q_\phi(w)}[\log p(D \mid w)] - \mathrm{KL}\big(q_\phi(w)\,\|\,p(w)\big) \]

KL 散度等价于:

\[ \log p(D) = \mathcal{L}(\phi) + \mathrm{KL}\big(q_\phi(w)\,\|\,p(w\mid D)\big) \ge \mathcal{L}(\phi) \]

最大化 ELBO ⇔ 最小化 KL ⇔ 让 \(q\) 逼近真后验。

4.2 mean-field 高斯近似

每个权重独立、各自高斯:\(q_\phi(w_i) = \mathcal{N}(\mu_i, \sigma_i^2)\)。参数量翻倍(每个权重 \(\mu, \rho\),其中 \(\sigma = \log(1+e^\rho)\) 保正)。

4.3 重参数化技巧

为了让 \(\nabla_\phi \mathbb{E}_{q_\phi}[\cdot]\) 可微,把采样从 \(q\) 中"挤"到无参数分布:

\[ w = \mu + \sigma \odot \epsilon,\quad \epsilon \sim \mathcal{N}(0, I) \]

然后

\[ \nabla_\phi \mathbb{E}_{q_\phi(w)}[f(w)] = \mathbb{E}_{p(\epsilon)}\big[\nabla_\phi f(\mu + \sigma\odot\epsilon)\big] \]

可以用一次前向 + 反向计算梯度。

4.4 训练

每个 mini-batch 抽一组 \(\epsilon\) → 计算 \(w\) → 前向 → 损失 = 负似然 + KL 正则项 → 反向更新 \(\mu, \rho\)。预测时多次抽样 \(w\) 求平均,得到后验预测。

优点:原理直接、与 SGD 兼容。 缺点:mean-field 忽略权重相关性,常常显著低估方差;参数量翻倍。


5. MC Dropout(Gal & Ghahramani 2016)

5.1 核心论断

对带 dropout 的神经网络,训练时使用 dropout,推断时仍保持 dropout 开启并多次前向,得到的预测分布等价于一种近似变分推断的后验预测。

5.2 推导要点

考虑 \(L\) 层网络,权重 \(W_l\)。把 dropout mask \(z_l \in \{0,1\}^{K_l}\)(独立 Bernoulli(\(p\)))的网络等价表示为权重的"采样":

\[ \hat W_l = W_l \cdot \mathrm{diag}(z_l) \]

定义近似后验:

\[ q(W_l) = M_l \cdot \mathrm{diag}\big(\mathrm{Bernoulli}(p_l)\big) \]

即权重要么取列上的 \(M_l\) 值要么置零。这是一族非常受限的变分分布。

ELBO 损失:

\[ \mathcal{L} = -\sum_n \mathbb{E}_{q(W)}[\log p(y_n \mid x_n, W)] + \mathrm{KL}\big(q(W)\,\|\,p(W)\big) \]

第一项:对每个样本采 \(T\) 个 dropout mask 求平均(实际 \(T = 1\) 即标准 SGD with dropout)。 KL 项:对高斯先验,KL 解析展开后等于 L2 正则 + 与 \(p\) 有关的常数——也就是说 dropout + L2 ≈ 变分推断

5.3 推断

测试时不关 dropout,而是做 \(T\) 次随机前向:

\[ \hat\mu(x^*) = \frac{1}{T}\sum_{t=1}^{T} f_{\hat W^{(t)}}(x^*) \]
\[ \hat\Sigma(x^*) = \frac{1}{T}\sum_{t=1}^{T} f_{\hat W^{(t)}}(x^*) f_{\hat W^{(t)}}(x^*)^\top - \hat\mu \hat\mu^\top + \tau^{-1} I \]

其中 \(\tau\) 是模型精度(与权重衰减、dropout 率、数据规模相关)。

# 极简伪码
model.train()  # 关键:保持 dropout 开启
preds = torch.stack([model(x) for _ in range(T)])  # T 次前向
mean = preds.mean(0)
var = preds.var(0)  # epistemic 部分

优点:零额外参数、与已有训练流水线兼容、几乎无成本。 缺点:dropout 率 \(p\) 是固定先验、近似偏差不可控;后续工作(Concrete Dropout)让 \(p\) 可学。


6. Deep Ensembles(Lakshminarayanan 2017)

6.1 方法

独立训练 \(M\) 个网络(不同随机初始化、不同 mini-batch 顺序),预测时取平均:

\[ p(y \mid x) = \frac{1}{M}\sum_{m=1}^{M} p_{w_m}(y \mid x) \]

6.2 与贝叶斯的关系

虽然没有显式后验,Deep Ensembles 在实证中常常优于 BNN-VI 和 MC Dropout(精度、校准、OOD 检测)。Wilson & Izmailov 2020 论证:神经网络损失 landscape 有大量等效的局部模式 (mode),每次训练落入不同 mode;多次训练 ≈ 在多模态后验上做不严格的"采样"。可以视为 MultiSWAG 的特例。

6.3 工程权衡

  • 训练成本 \(\times M\)(典型 \(M=5\));
  • 推断成本 \(\times M\)
  • 但每个成员可独立并行;
  • 在 OOD 检测、长尾分类的对比基准里通常很难被超越。

7. SWAG / SWA

7.1 SWA (Stochastic Weight Averaging, Izmailov 2018)

训练后期在恒定/循环学习率下,对每若干 epoch 的权重做平均:

\[ \bar w = \frac{1}{T}\sum_{t} w_t \]

得到比单个 SGD 终点更平坦的解,泛化好。

7.2 SWAG (Maddox 2019)

把 SWA 升级为对权重的高斯近似:

\[ p(w) \approx \mathcal{N}\big(\bar w,\; \tfrac{1}{2}(\Sigma_{\text{diag}} + \Sigma_{\text{lowrank}})\big) \]

低秩协方差用 SGD 轨迹的偏差矩阵 \(D = [w_{t_1} - \bar w, \dots, w_{t_K} - \bar w]\) 估计:\(\Sigma_{\text{lowrank}} = \frac{1}{K-1} D D^\top\)

预测时从该高斯抽样 \(w\) 做后验预测,效果接近 Deep Ensembles 但训练成本接近单模型。


8. Laplace 近似 / Laplace Redux

8.1 二阶展开

在 MAP 解 \(w^*\) 处对负对数后验做二阶 Taylor 展开:

\[ -\log p(w \mid D) \approx -\log p(w^* \mid D) + \tfrac{1}{2}(w - w^*)^\top H (w - w^*) \]

其中 \(H = -\nabla^2 \log p(w \mid D)\big|_{w^*}\) 为 Hessian。这等价于把后验近似为高斯:

\[ p(w \mid D) \approx \mathcal{N}(w^*, H^{-1}) \]

8.2 Laplace Redux(Daxberger 2021)

直接对深度网络存全 Hessian 不可行(\(O(P^2)\))。常用近似:

  • Last-layer Laplace:只对最后线性层做 Laplace,其余层固定为 MAP;
  • Diagonal Hessian:忽略非对角;
  • KFAC (Kronecker-factored):把 Hessian 近似为各层 Kronecker 乘积;
  • GGN (Generalized Gauss-Newton):用 Fisher 信息矩阵代替 Hessian,半正定且可批量计算。

laplace-torch 库(Daxberger 2021)封装好了这些选项,对已经训练好的模型 后验式 (post-hoc) 套上 Laplace,几乎不影响精度但显著改善校准与 OOD。

8.3 后验预测的概率近似

对分类,\(p(y\mid x^*) = \int \mathrm{softmax}(f_w(x^*)) p(w\mid D) dw\) 没有解析解。常用:

  • MC:从高斯采权重做平均;
  • Probit 近似:把 softmax 用 probit 替代,得到闭式(适合 last-layer)。

9. 校准 (Calibration)

9.1 ECE 指标

把预测置信度 \(\hat p\) 分到 \(M\) 个 bins \(B_m\)

\[ \mathrm{ECE} = \sum_{m=1}^{M} \frac{|B_m|}{n}\Big|\,\mathrm{acc}(B_m) - \mathrm{conf}(B_m)\,\Big| \]

理想 ECE = 0。MCE 是各 bin 偏差的最大值。

9.2 温度缩放 (Temperature Scaling)

最简单也最常用的事后校准:在验证集上拟合标量 \(T\)

\[ \hat p_i = \mathrm{softmax}(z_i / T) \]

最小化 NLL 关于 \(T\)\(T > 1\) → 平滑;\(T < 1\) → 锐化。Guo 2017 表明 \(T\) 单一标量就能让现代 CNN 的 ECE 从 5%-10% 降到 1% 以下。

9.3 Platt Scaling

二分类版本:用逻辑回归把 logits \(z\) 映射到校准后概率:

\[ \hat p = \sigma(a z + b) \]

9.4 Isotonic Regression

非参数单调映射,比 Platt 更灵活但需要更多数据。

注意:温度缩放等事后方法只校准 in-distribution;在 OOD 上仍会过自信。BDL 的卖点是在 OOD 上能给出更高的不确定性,与温度缩放是互补的。


10. OOD 检测

10.1 基线方法

  • Max softmax probability (Hendrycks 2017):取 \(\max_k \hat p_k\) 作为分数;OOD 应当较低。
  • Energy score (Liu 2020)\(E(x) = -T \log \sum_k e^{f_k(x)/T}\);理论上比 MSP 更好。
  • Mahalanobis 距离 (Lee 2018):在每类高斯下计算 \(D_M(x) = (\phi(x) - \mu_c)^\top \Sigma^{-1}(\phi(x) - \mu_c)\),OOD 距离大。

10.2 贝叶斯方法

  • MC Dropout / BNN 的 epistemic 方差:直接作为 OOD 分数;
  • Deep Ensembles 的预测熵差异\(\mathcal{H}[\bar p] - \frac{1}{M}\sum_m \mathcal{H}[p_m]\) 即 BALD 互信息,专门捕捉 epistemic;
  • Gaussian Process 的 \(\sigma_n(x)\):远离训练点处自然增大。

10.3 数据集与基准

CIFAR-10 vs SVHN、CIFAR-10 vs CIFAR-100、ImageNet-O、OpenOOD benchmark。指标:AUROC、AUPR、FPR@95%TPR。


11. BDL 方法谱系

flowchart TD
    A[贝叶斯神经网络<br/>BNN] --> B[精确 MCMC<br/>HMC, Neal 1995]
    A --> C[变分推断 VI]
    A --> D[Laplace 近似]
    A --> E[蒙特卡罗采样近似]

    C --> C1[Bayes by Backprop<br/>Blundell 2015]
    C --> C2[MC Dropout<br/>Gal 2016]
    C --> C3[Concrete Dropout]
    C --> C4[Functional VI / FVB]

    D --> D1[Last-layer Laplace]
    D --> D2[KFAC Laplace]
    D --> D3[Laplace Redux 2021]

    E --> E1[Deep Ensembles<br/>Lakshminarayanan 2017]
    E --> E2[SWA / SWAG<br/>Izmailov 2018, Maddox 2019]
    E --> E3[MultiSWAG]

    A --> F[贝叶斯生成模型]
    F --> F1[VAE<br/>Kingma 2014]
    F --> F2[扩散模型<br/>Sohl-Dickstein 2015, Ho 2020]
    F --> F3[Normalizing Flows]

12. 与 VAE / 扩散模型的关系

12.1 VAE:摊销变分推断

VAE 是经典的隐变量贝叶斯生成模型:

\[ p_\theta(x, z) = p(z)\, p_\theta(x \mid z) \]

引入识别网络 \(q_\phi(z\mid x)\) 摊销 (amortize) 后验推断,最大化 ELBO:

\[ \mathcal{L}(\theta, \phi; x) = \mathbb{E}_{q_\phi(z\mid x)}[\log p_\theta(x\mid z)] - \mathrm{KL}(q_\phi(z\mid x)\,\|\,p(z)) \]

重参数化(\(z = \mu_\phi(x) + \sigma_\phi(x)\odot\epsilon\))让梯度对 \(\phi\) 可传。VAE 是 BDL 与生成模型的交集,具体见 VAE 笔记

12.2 扩散模型:分层变分推断

DDPM (Ho 2020) 的训练目标可写成 ELBO:

\[ \mathcal{L} = \mathbb{E}_q\Big[\log p_\theta(x_0 \mid x_1) - \!\!\sum_{t \ge 2} \mathrm{KL}\big(q(x_{t-1}\mid x_t, x_0) \,\|\, p_\theta(x_{t-1}\mid x_t)\big) - \mathrm{KL}\big(q(x_T\mid x_0)\,\|\,p(x_T)\big)\Big] \]

每一步去噪都是一次条件高斯的 KL 项。从这个角度,扩散模型是带 \(T\) 步隐变量的层次 VAE,与贝叶斯派的链路完全闭合。

12.3 Bayesian Flow Networks 等新近发展

近期有若干工作(Bayesian Flow Networks, Graves 2023;Diffusion Schrödinger Bridge)显式把贝叶斯推断与扩散过程结合,处于活跃研究前沿。


13. 实战清单

任务 推荐方法
已训练好模型,要快速加不确定性 Last-layer Laplace 或 MC Dropout 接入成本最低
重新训练,预算充足 Deep Ensembles (\(M=5\)) 通常最强基线
训练预算受限但想要后验感 SWAG 单模型成本
安全关键 + 可重训 Deep Ensembles + 温度缩放 校准 + 鲁棒
大模型 (LLM) Last-layer Laplace、LoRA-BNN、ensemble of LoRAs 全 BNN 不可行
OOD 检测 Energy score 或 Mahalanobis + ensembles 强基线

14. 交叉引用

  • 派系视角与算法谱系:本页 §1(派系入口)
  • 概率编程与贝叶斯统计基础:概率编程与贝叶斯统计实战
  • 图模型与时序贝叶斯:图模型与隐马尔可夫
  • VAE 详细推导:../../../1_DeepLearning/Generative_Models/VAE.md

参考文献

  1. Blundell, C., Cornebise, J., Kavukcuoglu, K., Wierstra, D. (2015). "Weight Uncertainty in Neural Networks". ICML.(Bayes by Backprop)
  2. Gal, Y., Ghahramani, Z. (2016). "Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning". ICML.
  3. Lakshminarayanan, B., Pritzel, A., Blundell, C. (2017). "Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles". NeurIPS.
  4. Daxberger, E., Kristiadi, A., Immer, A., Eschenhagen, R., Bauer, M., Hennig, P. (2021). "Laplace Redux — Effortless Bayesian Deep Learning". NeurIPS.
  5. Guo, C., Pleiss, G., Sun, Y., Weinberger, K. Q. (2017). "On Calibration of Modern Neural Networks". ICML.
  6. Maddox, W. J., Izmailov, P., Garipov, T., Vetrov, D. P., Wilson, A. G. (2019). "A Simple Baseline for Bayesian Uncertainty in Deep Learning". NeurIPS.(SWAG)
  7. Izmailov, P., Vikram, S., Hoffman, M. D., Wilson, A. G. (2021). "What Are Bayesian Neural Network Posteriors Really Like?". ICML.
  8. Wilson, A. G., Izmailov, P. (2020). "Bayesian Deep Learning and a Probabilistic Perspective of Generalization". NeurIPS.
  9. Kingma, D. P., Welling, M. (2014). "Auto-Encoding Variational Bayes". ICLR.
  10. Ho, J., Jain, A., Abbeel, P. (2020). "Denoising Diffusion Probabilistic Models". NeurIPS.
  11. Hendrycks, D., Gimpel, K. (2017). "A Baseline for Detecting Misclassified and Out-of-Distribution Examples in Neural Networks". ICLR.
  12. Liu, W., Wang, X., Owens, J., Li, Y. (2020). "Energy-based Out-of-distribution Detection". NeurIPS.
  13. Lee, K., Lee, K., Lee, H., Shin, J. (2018). "A Simple Unified Framework for Detecting Out-of-Distribution Samples and Adversarial Attacks". NeurIPS.
  14. Neal, R. M. (1996). Bayesian Learning for Neural Networks. Springer.(最早系统讨论 BNN)

评论 #