
Bayes’ Theorem | Bayesian Inference
概述
贝叶斯公式(Bayes’ Theorem)是概率论中的基本定理,描述了如何根据新证据更新对事件概率的信念。它是贝叶斯统计学、机器学习、人工智能等领域的理论基础,提供了一种系统化的方法来处理不确定性和进行推理。
公式形式
基本形式
$$P(A|B) = \frac{P(B|A) \times P(A)}{P(B)}$$
参数估计形式
$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{P(D)}$$
或写成:
$$\text{后验概率} = \frac{\text{似然} \times \text{先验}}{\text{证据}}$$
各项含义
| 符号 | 名称 | 含义 |
|---|---|---|
| $P(\theta|D)$ | 后验概率 | 看到数据 $D$ 后,参数 $\theta$ 的概率 |
| $P(D|\theta)$ | 似然 | 给定参数 $\theta$,观测到数据 $D$ 的概率 |
| $P(\theta)$ | 先验概率 | 看到数据前,对参数 $\theta$ 的初始信念 |
| $P(D)$ | 边缘似然/证据 | 数据 $D$ 出现的总概率(归一化常数) |
边缘似然的计算
$$P(D) = \int P(D|\theta)P(\theta)d\theta$$
或离散情况:
$$P(D) = \sum_{\theta} P(D|\theta)P(\theta)$$
直观理解
贝叶斯公式回答:**”看到证据后,我应该如何更新我的信念?”**
$$\text{新信念} = \frac{\text{旧信念} \times \text{证据支持度}}{\text{归一化}}$$
核心思想:
- 从先验信念开始
- 根据观测到的证据调整信念
- 得到更新后的后验信念
实际例子
例 1:医疗诊断
场景:
- 某疾病患病率 1%(先验)
- 测试准确率:患病时阳性 95%,健康时阳性 5%
- 你测试呈阳性
问:你真的患病的概率是多少?
解答:
设:
- $A$ = 患病
- $B$ = 测试阳性
已知:
- $P(A) = 0.01$(先验)
- $P(B|A) = 0.95$(真阳性率)
- $P(B|\neg A) = 0.05$(假阳性率)
计算边缘似然:
$$P(B) = P(B|A)P(A) + P(B|\neg A)P(\neg A)$$
$$= 0.95 \times 0.01 + 0.05 \times 0.99 = 0.059$$
应用贝叶斯公式:
$$P(A|B) = \frac{P(B|A) \times P(A)}{P(B)} = \frac{0.95 \times 0.01}{0.059} \approx 0.16$$
结论:即使测试阳性,患病概率只有 **16%**!
反直觉原因:先验概率很低(1%),大部分阳性结果来自假阳性。
例 2:垃圾邮件过滤
场景:
- 邮件中 30% 是垃圾邮件
- 垃圾邮件中 80% 含”中奖”
- 正常邮件中 5% 含”中奖”
问:含”中奖”的邮件是垃圾邮件的概率?
解答:
设:
- $S$ = 垃圾邮件
- $W$ = 含”中奖”
已知:
- $P(S) = 0.3$
- $P(W|S) = 0.8$
- $P(W|\neg S) = 0.05$
计算:
$$P(W) = 0.8 \times 0.3 + 0.05 \times 0.7 = 0.275$$
$$P(S|W) = \frac{0.8 \times 0.3}{0.275} \approx 0.87$$
结论:含”中奖”的邮件有 87% 概率是垃圾邮件。
例 3:机器学习中的参数估计
场景:训练一个分类模型
目标:找到最优参数 $\theta$
$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{P(D)}$$
- **似然 $P(D|\theta)$**:模型拟合数据的好坏
- **先验 $P(\theta)$**:对参数的正则化(如 L2 正则 = 高斯先验)
- **后验 $P(\theta|D)$**:综合考虑数据和先验的最优参数
最大后验估计(MAP):
$$\theta_{MAP} = \arg\max_{\theta} P(\theta|D) = \arg\max_{\theta} P(D|\theta)P(\theta)$$
贝叶斯推断流程
1. 指定先验
根据领域知识或假设选择先验分布:
$$P(\theta)$$
常见先验:
- 无信息先验:均匀分布(表示无知)
- 共轭先验:使后验与先验同分布(计算方便)
- 正则化先验:高斯分布(L2 正则)、拉普拉斯分布(L1 正则)
2. 收集数据
观测数据 $D = {x_1, x_2, \ldots, x_N}$
3. 计算似然
根据模型计算数据的似然:
$$P(D|\theta) = \prod_{i=1}^{N} P(x_i|\theta)$$
4. 应用贝叶斯公式
计算后验分布:
$$P(\theta|D) = \frac{P(D|\theta)P(\theta)}{P(D)}$$
5. 进行推断
- 点估计:MAP 或后验均值
- 区间估计:可信区间(credible interval)
- 预测:$P(x_{new}|D) = \int P(x_{new}|\theta)P(\theta|D)d\theta$
贝叶斯 vs 频率学派
| 方面 | 贝叶斯学派 | 频率学派 |
|---|---|---|
| 参数性质 | 随机变量(有分布) | 固定未知值 |
| 概率含义 | 信念程度 | 长期频率 |
| 推断方法 | 后验分布 | 点估计 + 置信区间 |
| 先验知识 | 必须指定先验 | 不使用先验 |
| 不确定性 | 参数的概率分布 | 估计的抽样分布 |
| 小样本 | 可利用先验 | 可能不稳定 |
例子对比
问题:抛硬币 10 次,8 次正面,估计正面概率 $\theta$
频率学派:
$$\hat{\theta}_{MLE} = \frac{8}{10} = 0.8$$
贝叶斯学派(假设先验 $\theta \sim \text{Beta}(2,2)$):
$$P(\theta|D) = \text{Beta}(2+8, 2+2) = \text{Beta}(10, 4)$$
后验均值:
$$\mathbb{E}[\theta|D] = \frac{10}{10+4} \approx 0.71$$
差异:贝叶斯方法考虑了先验信念(硬币应该接近公平),结果更保守。
在机器学习中的应用
1. 朴素贝叶斯分类器
$$P(y|x_1, \ldots, x_n) = \frac{P(y) \prod_{i=1}^{n} P(x_i|y)}{P(x_1, \ldots, x_n)}$$
应用:文本分类、垃圾邮件过滤
2. 贝叶斯线性回归
$$P(w|D) = \frac{P(D|w)P(w)}{P(D)}$$
优势:提供预测的不确定性
3. 贝叶斯神经网络
对网络权重建模为分布而非点估计:
$$P(w|D) \propto P(D|w)P(w)$$
应用:不确定性量化、主动学习
4. 变分推断
当后验 $P(\theta|D)$ 难以计算时,用简单分布 $q(\theta)$ 近似:
$$\min_q D_{KL}(q(\theta)||P(\theta|D))$$
应用:VAE、主题模型(LDA)
5. 马尔可夫链蒙特卡洛(MCMC)
通过采样近似后验分布:
$$\theta^{(t+1)} \sim P(\theta|D)$$
应用:贝叶斯深度学习、概率编程
先验的选择
1. 无信息先验(Non-informative Prior)
目的:表达”无知”
例子:
- 均匀分布:$P(\theta) = \text{Uniform}(a, b)$
- Jeffreys 先验:$P(\theta) \propto \sqrt{|I(\theta)|}$(基于 Fisher 信息)
2. 共轭先验(Conjugate Prior)
定义:后验与先验同分布族
例子:
| 似然 | 共轭先验 | 后验 |
|---|---|---|
| 伯努利 | Beta | Beta |
| 正态(已知方差) | 正态 | 正态 |
| 泊松 | Gamma | Gamma |
| 多项式 | Dirichlet | Dirichlet |
优势:后验有闭式解,计算简单
3. 正则化先验
目的:防止过拟合
例子:
- 高斯先验:$P(w) = \mathcal{N}(0, \lambda^{-1}I)$ → L2 正则化
- 拉普拉斯先验:$P(w) = \text{Laplace}(0, b)$ → L1 正则化
4. 经验贝叶斯(Empirical Bayes)
从数据中估计先验的超参数:
$$\hat{\alpha} = \arg\max_{\alpha} P(D|\alpha)$$
常见问题
问题 1:先验是主观的吗?
回答:
- 是:先验反映了建模者的信念或假设
- 但:可以通过以下方式减少主观性:
- 使用无信息先验
- 使用领域知识
- 使用经验贝叶斯
- 数据足够多时,后验主要由似然决定
问题 2:贝叶斯方法计算复杂吗?
回答:
- 共轭先验:后验有闭式解,计算简单
- 非共轭情况:需要近似方法
- 变分推断(快速但近似)
- MCMC(精确但慢)
- 拉普拉斯近似(快速但粗糙)
问题 3:为什么 P(D) 叫”证据”?
回答:
- $P(D)$ 是观测数据的边缘概率
- 在模型比较中,$P(D)$ 衡量模型对数据的解释能力
- 更高的 $P(D)$ 意味着模型更好地”证明”了数据的存在
问题 4:贝叶斯公式可以连续更新吗?
回答:可以!这是贝叶斯方法的优势。
顺序更新:
$$P(\theta|D_1, D_2) = \frac{P(D_2|\theta)P(\theta|D_1)}{P(D_2|D_1)}$$
前一次的后验成为下一次的先验:
1 | 先验 → [数据1] → 后验1 → [数据2] → 后验2 → ... |
最佳实践
1. 选择合适的先验
1 | # 弱信息先验(数据主导) |
2. 检查先验的影响
1 | # 先验预测检查 |
3. 后验检查
1 | # 后验预测检查 |
4. 使用对数空间计算
1 | # 避免数值下溢 |
代码示例
PyTorch 实现贝叶斯线性回归
1 | import torch |
参考资源
- Bayesian Data Analysis - Andrew Gelman et al.
- Pattern Recognition and Machine Learning - Christopher Bishop
- Probabilistic Machine Learning: An Introduction - Kevin Murphy
- Bayesian Methods for Hackers













