贝叶斯定理 -- 用新证据更新你的判断
贝叶斯定理是概率推理的基石。先验信念 + 新证据 → 更新后的信念。
概念解析
先验 P(H)
看到证据前的信念
×
似然 P(E|H)
证据的可信度
→
后验 P(H|E)
更新后的信念
P(E) 是归一化因子:\( P(E) = P(E|H)P(H) + P(E|\text{not }H)P(\text{not }H) \)。
核心思想:用新数据不断更新我们的判断。这是所有贝叶斯方法的基本模式。
生活例子
疾病检测的假阳性陷阱
某种病患病率 0.1%,检测准确率 99%。你检测出阳性——实际患病的概率只有约 9%。
为什么?因为疾病极其罕见,假阳性(1% 的健康人被误诊)的绝对数量远超真阳性。
贝叶斯定理揭示了这一反直觉结论:先验概率极低时,即使检测很准,阳性结果也大概率是误报。
Python 动手实践
实例
# 疾病检测贝叶斯分析
P_H = 0.001 # 先验:患病率 0.1%
P_E_given_H = 0.99 # 灵敏度 99%
P_E_given_notH = 0.01 # 假阳性率 1%
P_E = P_E_given_H * P_H + P_E_given_notH * (1 - P_H)
P_H_given_E = P_E_given_H * P_H / P_E
print("=== RUNOOB 疾病检测 ===")
print(f"先验患病率: {P_H:.1%}")
print(f"检测阳性后,实际患病概率: {P_H_given_E:.1%}")
print(f"结论:极低基础概率下,假阳性远超真阳性")
P_H = 0.001 # 先验:患病率 0.1%
P_E_given_H = 0.99 # 灵敏度 99%
P_E_given_notH = 0.01 # 假阳性率 1%
P_E = P_E_given_H * P_H + P_E_given_notH * (1 - P_H)
P_H_given_E = P_E_given_H * P_H / P_E
print("=== RUNOOB 疾病检测 ===")
print(f"先验患病率: {P_H:.1%}")
print(f"检测阳性后,实际患病概率: {P_H_given_E:.1%}")
print(f"结论:极低基础概率下,假阳性远超真阳性")
输出:
=== RUNOOB 疾病检测 === 先验患病率: 0.1% 检测阳性后,实际患病概率: 9.0% 结论:极低基础概率下,假阳性远超真阳性
AI 中的应用场景
朴素贝叶斯分类器
假设特征之间条件独立,用贝叶斯定理计算后验概率 P(类别|特征),选后验最大的类别。在文本分类(垃圾邮件过滤、情感分析)中效果出奇地好——虽然「朴素」的独立性假设在实践中经常不成立,但分类精度仍然很高。
贝叶斯优化用于超参数调优
选择学习率、层数等超参数时,每次训练都很耗时。贝叶斯优化用高斯过程作为先验,根据已评估的超参数组合(证据)更新后验分布,智能地选择下一组最有希望的超参数。比网格搜索和随机搜索高效得多。
变分自编码器(VAE)
VAE 的编码器输出潜在分布的均值 μ 和方差 σ²,然后用 KL 散度约束这个分布接近标准正态先验 N(0,1)。这里的「先验 → 后验」框架就是贝叶斯定理——先验是 N(0,1),似然来自解码器的重构误差,后验是编码器输出的分布。
