贝叶斯派 (Bayesians)
派系简介
贝叶斯派(Bayesians)认为:学习的本质是在不确定性下进行概率推断。所有可被学习的对象——参数、隐变量、模型结构、未来观测——都被视为随机变量;学习的目标是给定观测数据 \(D\) 之后,得到关于未知量 \(H\) 的后验分布 \(P(H \mid D)\),而不是某个单点估计。
Pedro Domingos 在《主算法》(The Master Algorithm) 中将贝叶斯派列为机器学习五大派系之一,并指出贝叶斯派的"主算法"就是 贝叶斯定理本身:
这个看似朴素的公式,提供了一个统一的归纳推理框架:
- 先验 \(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 + 采集函数)"]
整个谱系的演化可以概括为三个阶段:
- 经典阶段(1763 起):贝叶斯定理 → 朴素贝叶斯 → Pearl 的贝叶斯网络(1988)→ HMM(1960s-70s)
- 算法成熟阶段(1990s-2000s):MCMC 普及(Geman-Geman 1984、Gelfand-Smith 1990)→ LDA(Blei 2003)→ 变分推断标准化
- 深度学习时代(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 基础页强调"在监督/无监督学习中如何具体使用"。
子页导航
本节包含三篇深度笔记:
- 图模型与隐马尔可夫 — 概率图模型基础、HMM 三大问题(前向后向、Viterbi、Baum-Welch)、卡尔曼滤波、粒子滤波、LDA 主题模型。
- 概率编程与贝叶斯统计实战 — PyMC/Stan/NumPyro 对比、分层模型、MCMC 诊断、贝叶斯 A/B 测试、贝叶斯优化、模型比较 (WAIC/LOO)。
- 贝叶斯深度学习与不确定性 — 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 在超参搜索中的实际使用。
参考文献
- Domingos, P. (2015). The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books.
- Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.(PRML,贝叶斯视角的标准教材)
- Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.
- Murphy, K. P. (2022/2023). Probabilistic Machine Learning: An Introduction / Advanced Topics. MIT Press.(PRML 之后最完整的现代贝叶斯 ML 教材)
- Gelman, A., Carlin, J., Stern, H., Dunson, D., Vehtari, A., Rubin, D. (2013). Bayesian Data Analysis (3rd ed.). CRC Press.(BDA3,应用贝叶斯统计圣经)
- Pearl, J. (1988). Probabilistic Reasoning in Intelligent Systems. Morgan Kaufmann.
- Jaynes, E. T. (2003). Probability Theory: The Logic of Science. Cambridge University Press.
- MacKay, D. J. C. (2003). Information Theory, Inference, and Learning Algorithms. Cambridge University Press.
- McElreath, R. (2020). Statistical Rethinking (2nd ed.). CRC Press.(贝叶斯入门首选)
图模型与隐马尔可夫
本笔记覆盖贝叶斯派最具代表性的结构化模型:概率图模型(PGM)、隐马尔可夫模型(HMM)、卡尔曼/粒子滤波、以及主题模型 LDA。它们共同的特征是:用图结构编码条件独立性,把高维联合分布分解为局部因子的乘积,从而让推断和学习变得可处理。
1. 概率图模型综述
1.1 为什么要图
任意 \(d\) 维离散随机向量的联合分布需要 \(O(K^d)\) 个参数(\(K\) 为每维取值数),高维下不可处理。图模型借助条件独立性把联合分布因子分解:
如果每个节点的父节点最多 \(k\) 个,参数量从 \(O(K^d)\) 降到 \(O(d K^{k+1})\),呈指数级下降。
1.2 贝叶斯网(有向图模型)
定义:有向无环图(DAG)\(G=(V,E)\),每个节点关联一个条件概率分布(CPD)\(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)的乘积:
\(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 算法。在树形图(含多叉树)上做两遍消息传递即可得到精确边缘:
最终边缘:\(\;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)\)。联合分布:
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)\) 递推:
终止:\(\;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\) 递推:
后向变量与前向变量结合可得任意时刻的 平滑后验:
以及相邻时刻的联合后验:
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\) 递推:
终止:\(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 步:
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 状态空间模型
HMM 是离散状态情况;连续状态最重要的两种:线性高斯 → 卡尔曼滤波;非线性 / 非高斯 → 粒子滤波。
4.2 卡尔曼滤波(线性高斯)
设:
记 \(\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}]\)。
预测步:
更新步:先算 创新 (innovation) 和 创新协方差:
卡尔曼增益:
后验更新:
直觉:\(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):
- 从提议分布 \(q(z_t \mid z_{t-1}^{(i)}, x_t)\) 采样 \(z_t^{(i)}\);
- 更新权重
- 归一化 \(\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
生成过程:
- 对每个主题 \(k = 1, \dots, K\):抽 \(\varphi_k \sim \mathrm{Dir}(\beta)\)。
- 对每篇文档 \(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}})\)。
联合分布:
5.2 Collapsed Gibbs Sampling
利用 Dirichlet-Multinomial 共轭,把 \(\theta, \varphi\) 解析积分掉,只对 \(z\) 采样:
其中 \(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. 交叉引用
- 基础数学与共轭先验:见 ../../03_Machine_Learning/贝叶斯学习.md。
- 概率模型在监督学习中的位置:见 ../../03_Machine_Learning/probabilistic_models.md。
- 本节其他笔记:概率编程实战、贝叶斯深度学习。
参考文献
- Bishop, C. M. (2006). Pattern Recognition and Machine Learning, Ch. 8 (Graphical Models), Ch. 13 (Sequential Data). Springer.
- Rabiner, L. R. (1989). "A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition". Proceedings of the IEEE, 77(2): 257-286.
- Blei, D. M., Ng, A. Y., Jordan, M. I. (2003). "Latent Dirichlet Allocation". JMLR, 3: 993-1022.
- Koller, D., Friedman, N. (2009). Probabilistic Graphical Models: Principles and Techniques. MIT Press.
- Murphy, K. P. (2023). Probabilistic Machine Learning: Advanced Topics, Ch. 8-10. MIT Press.
- Doucet, A., de Freitas, N., Gordon, N. (eds.) (2001). Sequential Monte Carlo Methods in Practice. Springer.
- Griffiths, T. L., Steyvers, M. (2004). "Finding Scientific Topics". PNAS, 101(suppl 1): 5228-5235.(LDA 的 collapsed Gibbs)
- 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 生态、自定义采样器 |
选择原则: - 中等规模、表格数据、统计风格 → PyMC 或 Stan(Stan 的 NUTS 仍是诊断最稳定的实现); - 大规模、需要 GPU、与 JAX 模型耦合 → NumPyro; - 深度概率模型、VAE/变分流 → Pyro; - 图灵完备 / open-universe → Turing.jl 或 Gen。
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\)。
Non-centered parameterization(避免 funnel 几何):
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)\),定义哈密顿量
哈密顿方程:
用 leapfrog 积分器(半步动量、整步位置、半步动量)模拟 \(L\) 步,得到提议 \((\theta', r')\)。Metropolis 接受率:
理想哈密顿系统能量守恒 → 接受率 \(\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)\)。
后验封闭形式:
与岭回归的关系: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\)。
后验预测:
预测方差自动包含 不可约噪声 + 参数不确定性——这是贝叶斯方法相对点估计 + 正则化的根本优势。
6. 贝叶斯 A/B 测试
业务场景:A、B 两个版本的转化率比较。
6.1 Beta-Binomial 模型
每个版本:
后验(共轭):
直接得出 \(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)\),每次评估代价高(如训练一个深度网络的超参组合)。
迭代:
- 用已观测点 \(\{(x_i, y_i)\}\) 拟合一个 代理模型(surrogate),通常是高斯过程 (GP)。
- 构造 采集函数 (acquisition function) \(a(x)\),平衡探索与利用。
- 取 \(x_{n+1} = \arg\max_x a(x)\) 评估,加入数据集。
7.2 GP 代理模型
后验在新点 \(x_*\):
7.3 三种主流采集函数
记 \(\mu(x), \sigma(x)\) 为 GP 后验均值与标准差,\(f^+ = \max y_i\)。
Probability of Improvement (PI):
Expected Improvement (EI):
EI 平衡了"提升幅度的期望"和"是否能够提升的概率",是最常用的采集函数。
Upper Confidence Bound (UCB):
\(\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
参考文献
- Salvatier, J., Wiecki, T. V., Fonnesbeck, C. (2016). "Probabilistic programming in Python using PyMC3". PeerJ Computer Science, 2:e55.
- Carpenter, B., Gelman, A., Hoffman, M. D., et al. (2017). "Stan: A Probabilistic Programming Language". Journal of Statistical Software, 76(1).
- Phan, D., Pradhan, N., Jankowiak, M. (2019). "Composable Effects for Flexible and Accelerated Probabilistic Programming in NumPyro". arXiv:1912.11554.
- Bingham, E., Chen, J. P., Jankowiak, M., et al. (2019). "Pyro: Deep Universal Probabilistic Programming". JMLR, 20(28).
- Hoffman, M. D., Gelman, A. (2014). "The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo". JMLR, 15: 1593-1623.
- Neal, R. M. (2011). "MCMC Using Hamiltonian Dynamics". In Handbook of Markov Chain Monte Carlo. CRC Press.
- Gelman, A., Carlin, J., Stern, H., Dunson, D., Vehtari, A., Rubin, D. (2013). Bayesian Data Analysis (3rd ed.). CRC Press.
- 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.
- Frazier, P. I. (2018). "A Tutorial on Bayesian Optimization". arXiv:1807.02811.
- Snoek, J., Larochelle, H., Adams, R. P. (2012). "Practical Bayesian Optimization of Machine Learning Algorithms". NeurIPS.
- Srinivas, N., Krause, A., Kakade, S. M., Seeger, M. (2010). "Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design". ICML.
- 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(w\mid D)\) 在百万级参数下难以处理,BDL 的全部技术都在 如何近似这个后验。
2. 不确定性的两类
| 类型 | 来源 | 是否能通过更多数据降低 | 例子 |
|---|---|---|---|
| Aleatoric(偶然/数据噪声) | 数据本身的随机性、测量噪声、标注歧义 | 否 | 模糊图像、骰子点数 |
| Epistemic(认知/模型无知) | 模型对未见区域的无知、有限训练数据 | 是 | OOD 输入、训练分布稀疏区域 |
数学上:
应用含义: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:
KL 散度等价于:
最大化 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\) 中"挤"到无参数分布:
然后
可以用一次前向 + 反向计算梯度。
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\)))的网络等价表示为权重的"采样":
定义近似后验:
即权重要么取列上的 \(M_l\) 值要么置零。这是一族非常受限的变分分布。
ELBO 损失:
第一项:对每个样本采 \(T\) 个 dropout mask 求平均(实际 \(T = 1\) 即标准 SGD with dropout)。 KL 项:对高斯先验,KL 解析展开后等于 L2 正则 + 与 \(p\) 有关的常数——也就是说 dropout + L2 ≈ 变分推断。
5.3 推断
测试时不关 dropout,而是做 \(T\) 次随机前向:
其中 \(\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 顺序),预测时取平均:
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 的权重做平均:
得到比单个 SGD 终点更平坦的解,泛化好。
7.2 SWAG (Maddox 2019)
把 SWA 升级为对权重的高斯近似:
低秩协方差用 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 展开:
其中 \(H = -\nabla^2 \log p(w \mid D)\big|_{w^*}\) 为 Hessian。这等价于把后验近似为高斯:
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\):
理想 ECE = 0。MCE 是各 bin 偏差的最大值。
9.2 温度缩放 (Temperature Scaling)
最简单也最常用的事后校准:在验证集上拟合标量 \(T\):
最小化 NLL 关于 \(T\)。\(T > 1\) → 平滑;\(T < 1\) → 锐化。Guo 2017 表明 \(T\) 单一标量就能让现代 CNN 的 ECE 从 5%-10% 降到 1% 以下。
9.3 Platt Scaling
二分类版本:用逻辑回归把 logits \(z\) 映射到校准后概率:
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 是经典的隐变量贝叶斯生成模型:
引入识别网络 \(q_\phi(z\mid x)\) 摊销 (amortize) 后验推断,最大化 ELBO:
重参数化(\(z = \mu_\phi(x) + \sigma_\phi(x)\odot\epsilon\))让梯度对 \(\phi\) 可传。VAE 是 BDL 与生成模型的交集,具体见 VAE 笔记。
12.2 扩散模型:分层变分推断
DDPM (Ho 2020) 的训练目标可写成 ELBO:
每一步去噪都是一次条件高斯的 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
参考文献
- Blundell, C., Cornebise, J., Kavukcuoglu, K., Wierstra, D. (2015). "Weight Uncertainty in Neural Networks". ICML.(Bayes by Backprop)
- Gal, Y., Ghahramani, Z. (2016). "Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning". ICML.
- Lakshminarayanan, B., Pritzel, A., Blundell, C. (2017). "Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles". NeurIPS.
- Daxberger, E., Kristiadi, A., Immer, A., Eschenhagen, R., Bauer, M., Hennig, P. (2021). "Laplace Redux — Effortless Bayesian Deep Learning". NeurIPS.
- Guo, C., Pleiss, G., Sun, Y., Weinberger, K. Q. (2017). "On Calibration of Modern Neural Networks". ICML.
- 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)
- Izmailov, P., Vikram, S., Hoffman, M. D., Wilson, A. G. (2021). "What Are Bayesian Neural Network Posteriors Really Like?". ICML.
- Wilson, A. G., Izmailov, P. (2020). "Bayesian Deep Learning and a Probabilistic Perspective of Generalization". NeurIPS.
- Kingma, D. P., Welling, M. (2014). "Auto-Encoding Variational Bayes". ICLR.
- Ho, J., Jain, A., Abbeel, P. (2020). "Denoising Diffusion Probabilistic Models". NeurIPS.
- Hendrycks, D., Gimpel, K. (2017). "A Baseline for Detecting Misclassified and Out-of-Distribution Examples in Neural Networks". ICLR.
- Liu, W., Wang, X., Owens, J., Li, Y. (2020). "Energy-based Out-of-distribution Detection". NeurIPS.
- Lee, K., Lee, K., Lee, H., Shin, J. (2018). "A Simple Unified Framework for Detecting Out-of-Distribution Samples and Adversarial Attacks". NeurIPS.
- Neal, R. M. (1996). Bayesian Learning for Neural Networks. Springer.(最早系统讨论 BNN)