第13章 量化不确定性(Quantifying Uncertainty)
摘要:本章系统介绍了人工智能中处理不确定性的概率推理基础框架。首先阐述了不确定性的三大来源(惰性、无知、不确定性本身),然后基于 Kolmogorov 公理建立了概率论的形式化体系,重点讲解了贝叶斯法则、链式法则等核心推理工具。在此基础上引入效用理论和最大期望效用原理(MEU),为理性智能体在不确定环境下的决策提供了数学基础。本章内容为后续贝叶斯网络、时序推理和决策理论等高级主题奠定了坚实基础。
1. 章节概述
本章是概率推理体系的起点,回答"当智能体无法确切知道世界状态时,如何理性地行动"。在现实世界中,不确定性来自三类根源:惰性(laziness)——完整描述世界状态代价过高;无知(ignorance)——即使完整描述也无法计算后果;不确定性本身(部分可观测、随机过程)。
概率论为"信念的量化"提供了唯一被证明满足理性公理(Kolmogorov 公理)的框架。本章从命题逻辑的集合论观点过渡到概率,介绍随机变量、概率分布、条件概率与贝叶斯法则(Bayes’ rule),并引入效用理论(utility theory),最终统一成最大期望效用原理(MEU, Principle of Maximum Expected Utility)——理性智能体的决策准则。整章为第14–17章的贝叶斯网络、时序推理与决策理论奠定基础。
2. 关键概念与定义
- 概率公理(Kolmogorov 公理):对样本空间 Ω\OmegaΩ 上的事件,满足 (1) 0≤P(A)≤10 \le P(A) \le 10≤P(A)≤1;(2) P(Ω)=1P(\Omega)=1P(Ω)=1;(3) 对互斥事件 AiA_iAi,P(⋃iAi)=∑iP(Ai)P(\bigcup_i A_i)=\sum_i P(A_i)P(⋃iAi)=∑iP(Ai)。
- 先验概率(prior / unconditional probability):P(A)P(A)P(A),在无其他证据时对命题的信念。
- 后验概率(posterior / conditional probability):P(A∣B)P(A|B)P(A∣B),在已知 BBB 为真的条件下 AAA 的概率。
- 条件概率:P(A∣B)=P(A∧B)P(B)P(A|B)=\frac{P(A\wedge B)}{P(B)}P(A∣B)=P(B)P(A∧B),要求 P(B)>0P(B)>0P(B)>0。
- 概率分布(probability distribution):离散随机变量的分布记为 P(X)P(X)P(X),满足 ∑xP(x)=1\sum_x P(x)=1∑xP(x)=1。
- 随机变量(random variable):将样本空间映射到取值域的函数,大写字母 XXX,取值小写 xxx。
- P(X1,…,Xn)P(X_1,\dots,X_n)P(X1,…,Xn) 完全刻画所有变量组合的概率,是概率推理的"真相表"。
- 独立性(independence):事件 AAA、BBB 独立当且仅当 P(A∧B)=P(A)P(B)P(A\wedge B)=P(A)P(B)P(A∧B)=P(A)P(B),记作 A⊥BA\perp BA⊥B。
- 条件独立性:P(X∣Y,Z)=P(X∣Z)P(X|Y,Z)=P(X|Z)P(X∣Y,Z)=P(X∣Z) 时称 XXX 在给定 ZZZ 下独立于 YYY,记作 X⊥Y∣ZX\perp Y\mid ZX⊥Y∣Z。这是压缩联合分布的关键。
- 效用(utility):结果对智能体的主观价值,记作 U(outcome)U(outcome)U(outcome),是偏好的实值度量。
- 期望效用(expected utility):EU(a)=∑iP(resulti∣a)U(resulti)EU(a)=\sum_i P(result_i|a)U(result_i)EU(a)=∑iP(resulti∣a)U(resulti)。
3. 核心理论与算法
3.1 贝叶斯法则(Bayes’ Rule)
由条件概率定义直接推出,是从证据更新信念的核心公式:
P(h∣e)=P(e∣h)P(h)P(e)P(h|e)=\frac{P(e|h)P(h)}{P(e)}P(h∣e)=P(e)P(e∣h)P(h)
对多假设(互斥且完备)情形,分子归一化:
P(hi∣e)=P(e∣hi)P(hi)∑jP(e∣hj)P(hj)P(h_i|e)=\frac{P(e|h_i)P(h_i)}{\sum_j P(e|h_j)P(h_j)}P(hi∣e)=∑jP(e∣hj)P(hj)P(e∣hi)P(hi)
其中 P(e)=∑jP(e∣hj)P(hj)P(e)=\sum_j P(e|h_j)P(h_j)P(e)=∑jP(e∣hj)P(hj) 为证据边际(归一化常数)。P(hi)P(h_i)P(hi) 为先验,P(e∣hi)P(e|h_i)P(e∣hi) 为似然(Likelihood),P(hi∣e)P(h_i|e)P(hi∣e) 为后验。
适用场景:诊断(由症状推病因)、滤波(由观测推状态)、任何"逆概率"推理。
局限性:维度灾难——联合分布大小为 ∏i∣Xi∣\prod_i |X_i|∏i∣Xi∣,朴素表示不可扩展;这正是第14章贝叶斯网络要解决的问题。
3.1.1 Python代码示例:医疗诊断中的贝叶斯推理
下面通过一个医疗诊断场景演示如何使用贝叶斯法则计算后验概率。假设有两种可能的疾病(Disease_A 和 Disease_B),患者出现某种症状(Symptom),我们需要计算在观察到症状后患每种疾病的概率。
def bayes_rule(prior_A, prior_B, likelihood_A, likelihood_B):
"""
使用贝叶斯法则计算两种互斥假设下的后验概率
参数:
prior_A: 疾病A的先验概率 P(Disease_A)
prior_B: 疾病B的先验概率 P(Disease_B)
likelihood_A: 在疾病A条件下出现症状的概率 P(Symptom|Disease_A)
likelihood_B: 在疾病B条件下出现症状的概率 P(Symptom|Disease_B)
返回:
posterior_A: 观察到症状后患疾病A的后验概率 P(Disease_A|Symptom)
posterior_B: 观察到症状后患疾病B的后验概率 P(Disease_B|Symptom)
marginal: 证据边际概率 P(Symptom),用于归一化
"""
# 步骤1: 计算证据边际概率 P(Symptom) = Σ P(Symptom|Disease_i) * P(Disease_i)
# 这是贝叶斯公式中的分母,确保后验概率之和为1
marginal = (likelihood_A * prior_A) + (likelihood_B * prior_B)
# 步骤2: 计算后验概率 P(Disease_i|Symptom) = P(Symptom|Disease_i) * P(Disease_i) / P(Symptom)
# 这是贝叶斯公式的核心:用似然更新先验,再除以边际概率归一化
posterior_A = (likelihood_A * prior_A) / marginal
posterior_B = (likelihood_B * prior_B) / marginal
return posterior_A, posterior_B, marginal
# 场景设置:医疗诊断
print("=== 医疗诊断场景:贝叶斯法则应用 ===")
print()
# 先验概率:基于流行病学数据
# 疾病A比较罕见,疾病B比较常见
P_Disease_A = 0.01 # P(Disease_A) = 1%
P_Disease_B = 0.99 # P(Disease_B) = 99%
# 似然概率:基于医学研究
# 如果患有疾病A,有90%的概率出现该症状
# 如果患有疾病B,只有5%的概率出现该症状
P_Symptom_given_A = 0.90 # P(Symptom|Disease_A) = 90%
P_Symptom_given_B = 0.05 # P(Symptom|Disease_B) = 5%
# 使用f-string优化输出格式,提高可读性
input_params = f"""【输入参数】
先验概率 P(Disease_A) = {P_Disease_A:.3f} ({P_Disease_A*100:.1f}%)
先验概率 P(Disease_B) = {P_Disease_B:.3f} ({P_Disease_B*100:.1f}%)
似然概率 P(Symptom|Disease_A) = {P_Symptom_given_A:.3f} ({P_Symptom_given_A*100:.1f}%)
似然概率 P(Symptom|Disease_B) = {P_Symptom_given_B:.3f} ({P_Symptom_given_B*100:.1f}%)"""
print(input_params)
print()
# 应用贝叶斯法则
posterior_A, posterior_B, marginal = bayes_rule(
P_Disease_A, P_Disease_B,
P_Symptom_given_A, P_Symptom_given_B
)
# 计算结果格式化输出
calc_results = f"""【计算结果】
证据边际概率 P(Symptom) = {marginal:.6f} ({marginal*100:.3f}%)
后验概率 P(Disease_A|Symptom) = {posterior_A:.6f} ({posterior_A*100:.3f}%)
后验概率 P(Disease_B|Symptom) = {posterior_B:.6f} ({posterior_B*100:.3f}%)"""
print(calc_results)
print()
# 结果分析:计算关键指标
prior_ratio = P_Disease_B / P_Disease_A # 先验优势比
likelihood_ratio = P_Symptom_given_A / P_Symptom_given_B # 似然比
posterior_ratio = posterior_A / posterior_B # 后验优势比
update_factor_A = posterior_A / P_Disease_A # 疾病A的更新倍数
update_factor_B = posterior_B / P_Disease_B # 疾病B的更新倍数
# 贝叶斯更新分析
analysis = f"""【贝叶斯更新分析】
1. 先验优势:疾病B的先验概率是疾病A的 {prior_ratio:.1f} 倍
2. 似然比:P(Symptom|A)/P(Symptom|B) = {likelihood_ratio:.1f}
(症状对疾病A的支持强度是疾病B的{likelihood_ratio:.1f}倍)
3. 后验优势:观察到症状后,疾病A的后验概率是疾病B的 {posterior_ratio:.3f} 倍
4. 更新倍数:
- 疾病A的后验/先验 = {update_factor_A:.1f}倍(从{P_Disease_A*100:.1f}%增加到{posterior_A*100:.3f}%)
- 疾病B的后验/先验 = {update_factor_B:.3f}倍(从{P_Disease_B*100:.1f}%减少到{posterior_B*100:.3f}%)"""
print(analysis)
print()
# 验证:后验概率之和应为1(互斥且完备)
# 同时验证边际概率计算是否正确
verification = f"""【验证】
1. 归一化检查:后验概率之和 = {posterior_A + posterior_B:.10f} (应为1.0,验证通过)
2. 边际概率验证:
P(Symptom) = {marginal:.10f}
= P(S|A)P(A) + P(S|B)P(B)
= {P_Symptom_given_A}×{P_Disease_A} + {P_Symptom_given_B}×{P_Disease_B}
= {P_Symptom_given_A * P_Disease_A:.6f} + {P_Symptom_given_B * P_Disease_B:.6f}
= {marginal:.6f}
3. 贝叶斯公式验证:
P(A|S) = P(S|A)P(A)/P(S) = {P_Symptom_given_A}×{P_Disease_A}/{marginal:.6f} = {posterior_A:.6f}
P(B|S) = P(S|B)P(B)/P(S) = {P_Symptom_given_B}×{P_Disease_B}/{marginal:.6f} = {posterior_B:.6f}"""
print(verification)
运行结果:
=== 医疗诊断场景:贝叶斯法则应用 ===
【输入参数】
先验概率 P(Disease_A) = 0.010 (1.0%)
先验概率 P(Disease_B) = 0.990 (99.0%)
似然概率 P(Symptom|Disease_A) = 0.900 (90.0%)
似然概率 P(Symptom|Disease_B) = 0.050 (5.0%)
【计算结果】
证据边际概率 P(Symptom) = 0.058500 (5.850%)
后验概率 P(Disease_A|Symptom) = 0.153846 (15.385%)
后验概率 P(Disease_B|Symptom) = 0.846154 (84.615%)
【贝叶斯更新分析】
1. 先验优势:疾病B的先验概率是疾病A的 99.0 倍
2. 似然比:P(Symptom|A)/P(Symptom|B) = 18.0
(症状对疾病A的支持强度是疾病B的18.0倍)
3. 后验优势:观察到症状后,疾病A的后验概率是疾病B的 0.182 倍
4. 更新倍数:
- 疾病A的后验/先验 = 15.4倍(从1.0%增加到15.385%)
- 疾病B的后验/先验 = 0.855倍(从99.0%减少到84.615%)
【验证】
1. 归一化检查:后验概率之和 = 1.0000000000 (应为1.0,验证通过)
2. 边际概率验证:
P(Symptom) = 0.0585000000
= P(S|A)P(A) + P(S|B)P(B)
= 0.9×0.01 + 0.05×0.99
= 0.009000 + 0.049500
= 0.058500
3. 贝叶斯公式验证:
P(A|S) = P(S|A)P(A)/P(S) = 0.9×0.01/0.058500 = 0.153846
P(B|S) = P(S|B)P(B)/P(S) = 0.05×0.99/0.058500 = 0.846154
代码解读与贝叶斯启示:
-
先验与似然的博弈:虽然疾病A非常罕见(先验仅1%),但其症状似然性很高(90%)。当观察到症状时,贝叶斯更新将疾病A的概率从1%提升到15.4%,增加了15倍。
-
证据强度:症状对疾病A的似然比对疾病B高18倍(0.9/0.05),这强烈支持疾病A的假设,但不足以完全克服疾病B极高的先验优势(99倍)。
-
临床意义:即使某种疾病很罕见,如果其症状特异性很高(即其他疾病很少出现该症状),一旦出现该症状,患该罕见病的概率会显著增加。这正是贝叶斯诊断的核心思想。
-
计算验证:代码验证了后验概率之和为1,符合概率公理;同时展示了边际概率 P(e)P(e)P(e) 的计算过程,即归一化常数的作用。
这个示例直观展示了贝叶斯法则如何将先验知识与新证据结合,实现信念的理性更新。在实际AI系统中,这种计算是诊断推理、垃圾邮件过滤、推荐系统等众多应用的基础。
3.2 链式法则(Chain Rule)
P(X1,…,Xn)=∏i=1nP(Xi∣X1,…,Xi−1)P(X_1,\dots,X_n)=\prod_{i=1}^n P(X_i|X_1,\dots,X_{i-1})P(X1,…,Xn)=i=1∏nP(Xi∣X1,…,Xi−1)
表明任意联合分布可分解为条件分布之积;贝叶斯网络即是对该链条施加条件独立性假设的结果。
3.3 贝叶斯网络示例
链式法则表明联合分布可分解为条件概率之积,而贝叶斯网络(Bayesian network)正是利用条件独立性假设来简化这种分解的图模型。下面通过经典的"警报-盗窃-地震"网络示例,展示如何用条件概率表(Conditional Probability Table, CPT)表示联合分布,并进行后验概率计算。
网络结构与条件概率表
考虑三个布尔变量:
- Burglary (B):盗窃发生(True/False)
- Earthquake (E):地震发生(True/False)
- Alarm (A):警报响起(True/False)
网络结构:盗窃和地震是警报的父节点,即 Burglary → Alarm ← Earthquake。这意味着在给定盗窃和地震的情况下,警报条件独立于其他变量。
先验概率:
- P(B=true)=0.001P(B=true) = 0.001P(B=true)=0.001(盗窃概率很低)
- P(E=true)=0.002P(E=true) = 0.002P(E=true)=0.002(地震概率也很低)
**条件概率表(CPT)**对于警报 AAA:
| Burglary | Earthquake | P(A=true∣B,E)P(A=true \mid B, E)P(A=true∣B,E) | P(A=false∣B,E)P(A=false \mid B, E)P(A=false∣B,E) |
|---|---|---|---|
| true | true | 0.95 | 0.05 |
| true | false | 0.94 | 0.06 |
| false | true | 0.29 | 0.71 |
| false | false | 0.001 | 0.999 |
这个 CPT 表示:
- 当盗窃和地震都发生时,警报有 95% 的概率响起
- 只有盗窃发生时,警报有 94% 的概率响起
- 只有地震发生时,警报有 29% 的概率响起(可能因为震动误触发)
- 两者都不发生时,警报只有 0.1% 的概率误报
Python代码实现
运行结果:
=== 贝叶斯网络:警报-盗窃-地震示例 ===
【网络结构】
Burglary → Alarm ← Earthquake
【先验概率】
P(Burglary=true) = 0.0010 (0.10%)
P(Earthquake=true) = 0.0020 (0.20%)
【条件概率表 P(Alarm=true | Burglary, Earthquake)】
Burglary | Earthquake | P(Alarm=true)
---------------------------------------------
true | true | 0.9500
true | false | 0.9400
false | true | 0.2900
false | false | 0.0010
【边际概率计算】
P(Alarm=true) = 0.002516 (0.2516%)
(即警报响起的无条件概率)
【后验推理:已知警报响起】
P(Burglary=true | Alarm=true) = 0.373627 (37.3627%)
P(Earthquake=true | Alarm=true) = 0.230315 (23.0315%)
【贝叶斯更新分析】
1. 警报响起的先验概率很低: 0.2516%
2. 但一旦警报响起,盗窃的后验概率从 0.1000% 增加到 37.3627%
增加了 373.63 倍
3. 地震的后验概率从 0.2000% 增加到 23.0315%
增加了 115.16 倍
4. 解释力差异:警报对盗窃的似然比(P(A|B,¬E)/P(A|¬B,¬E))更高,因此更新幅度更大
【验证:全概率公式】
P(A=true) = Σ_{B,E} P(B) * P(E) * P(A=true|B,E)
B=t,E=t: 0.0010 × 0.0020 × 0.9500 = 0.000002
B=t,E=f: 0.0010 × 0.9980 × 0.9400 = 0.000938
B=f,E=t: 0.9990 × 0.0020 × 0.2900 = 0.000579
B=f,E=f: 0.9990 × 0.9980 × 0.0010 = 0.000997
总和: 0.002516 (应与上面 P(A=true) 一致)
【误报贡献分析】
尽管 P(A|B) 很高(0.94),但 P(B) 非常低(0.001),而误报 P(A|¬B,¬E)=0.001 虽然低,
但 ¬B,¬E 的概率 (0.999×0.998≈0.997) 很大,因此误报的绝对贡献不可忽略。
误报贡献: P(¬B,¬E)×P(A|¬B,¬E) = 0.9970 × 0.0010 = 0.0010
这占 P(A=true)=0.002516 的 39.62%
代码解读与贝叶斯网络启示
-
条件独立性利用:贝叶斯网络的核心优势是通过条件独立性假设大幅减少参数数量。完整联合分布 P(B,E,A)P(B,E,A)P(B,E,A) 需要 23−1=72^3-1=723−1=7 个独立参数,而使用网络结构后只需 1+1+4=61+1+4=61+1+4=6 个参数(P(B)P(B)P(B)、P(E)P(E)P(E) 和 P(A∣B,E)P(A|B,E)P(A∣B,E) 的 CPT)。
-
后验概率计算:代码展示了如何通过贝叶斯公式计算 P(B∣A)P(B|A)P(B∣A) 和 P(E∣A)P(E|A)P(E∣A)。注意 P(B∣A)≈37.4%P(B|A) \approx 37.4\%P(B∣A)≈37.4%,虽然比先验 0.1%0.1\%0.1% 高很多,但并非接近 100%100\%100%,这是因为误报(P(A∣¬B,¬E)=0.001P(A|¬B,¬E)=0.001P(A∣¬B,¬E)=0.001)虽然概率低,但 ¬B,¬E¬B,¬E¬B,¬E 的情况非常常见。
-
解释性推理:结果展示了"警报响起"这一证据如何同时更新对盗窃和地震的信念。由于 P(A∣B,¬E)=0.94P(A|B,¬E)=0.94P(A∣B,¬E)=0.94 远高于 P(A∣¬B,E)=0.29P(A|¬B,E)=0.29P(A∣¬B,E)=0.29,警报对盗窃的支持更强,因此 P(B∣A)P(B|A)P(B∣A) 的更新倍数(374倍)高于 P(E∣A)P(E|A)P(E∣A) 的更新倍数(115倍)。
-
实际意义:这个简单网络展示了贝叶斯网络如何将领域知识(CPT)与观测证据结合进行概率推理。在更复杂的网络中,这种局部参数化使得专家可以分模块提供知识,而推理算法(如变量消元、信念传播)可以高效计算后验概率。
-
与链式法则的关系:该网络的联合分布可分解为 P(B,E,A)=P(B)P(E)P(A∣B,E)P(B,E,A)=P(B)P(E)P(A|B,E)P(B,E,A)=P(B)P(E)P(A∣B,E),这正是链式法则 P(X1,X2,X3)=P(X1)P(X2∣X1)P(X3∣X1,X2)P(X_1,X_2,X_3)=P(X_1)P(X_2|X_1)P(X_3|X_1,X_2)P(X1,X2,X3)=P(X1)P(X2∣X1)P(X3∣X1,X2) 在假设 B⊥EB⊥EB⊥E(盗窃与地震独立)下的特例。
这个示例为第14章贝叶斯网络的系统学习奠定了基础,展示了如何从链式法则出发,通过条件独立性假设构建可处理的概率图模型。
3.5 效用理论与偏好公理
理性偏好需满足六条公理(有序性、连续性、替代性、单调性、可处理性、不变性)。在这些公理下存在效用函数,使 A⪰B ⟺ EU(A)≥EU(B)A \succeq B \iff EU(A) \ge EU(B)A⪰B⟺EU(A)≥EU(B)。
3.6 最大期望效用原理(MEU)
理性智能体应选择使期望效用最大化的行动:
action∗=argmaxa∈AEU(a)=argmaxa∑sP(s∣a)U(s,a)\text{action}^*=\arg\max_{a\in A} EU(a)=\arg\max_a \sum_{s} P(s|a)U(s,a)action∗=arga∈AmaxEU(a)=argamaxs∑P(s∣a)U(s,a)
适用场景:所有不确定性下的理性决策(医疗、投资、机器人控制)。
局限性:要求准确的概率与效用建模,且计算期望常需枚举状态。
3.6.1 Python代码示例:雨天带伞决策问题
下面通过一个具体的决策问题演示最大期望效用原理(MEU)的应用。假设一个智能体需要在不确定天气的情况下决定是否带伞,目标是最大化期望效用。
问题设定:
- 天气状态:晴天(Sunny)或雨天(Rainy)
- 决策行动:带伞(Take Umbrella)或不带伞(No Umbrella)
- 先验概率:P(Rainy)=0.3P(Rainy) = 0.3P(Rainy)=0.3,P(Sunny)=0.7P(Sunny) = 0.7P(Sunny)=0.7
- 效用表(单位:效用值):
| 行动 | 天气状态 | 效用值 | 说明 |
|---|---|---|---|
| 带伞 | 雨天 | 8 | 保持干燥,略有不便 |
| 带伞 | 晴天 | 5 | 白带伞,有些麻烦 |
| 不带伞 | 雨天 | 0 | 被淋湿,很不舒服 |
| 不带伞 | 晴天 | 10 | 轻松自在,最佳体验 |
MEU 计算:
对于每个行动 aaa,计算期望效用:
EU(a)=∑s∈{Rainy,Sunny}P(s)⋅U(s,a)EU(a) = \sum_{s \in \{Rainy, Sunny\}} P(s) \cdot U(s, a)EU(a)=s∈{Rainy,Sunny}∑P(s)⋅U(s,a)
其中 U(s,a)U(s, a)U(s,a) 是状态 sss 下采取行动 aaa 的效用。
def calculate_meu(prior_rainy, utility_table):
"""
计算最大期望效用(MEU)和最优决策
参数:
prior_rainy: 下雨的先验概率 P(Rainy)
utility_table: 效用表字典,格式为 {(action, state): utility}
返回:
best_action: 最优行动
max_eu: 最大期望效用
eu_dict: 所有行动的期望效用字典
"""
prior_sunny = 1 - prior_rainy
# 计算每个行动的期望效用
eu_dict = {}
actions = set(action for action, _ in utility_table.keys())
for action in actions:
eu = 0.0
# 对雨天状态
if (action, 'Rainy') in utility_table:
eu += prior_rainy * utility_table[(action, 'Rainy')]
# 对晴天状态
if (action, 'Sunny') in utility_table:
eu += prior_sunny * utility_table[(action, 'Sunny')]
eu_dict[action] = eu
# 找到最大期望效用和对应行动
best_action = max(eu_dict, key=eu_dict.get)
max_eu = eu_dict[best_action]
return best_action, max_eu, eu_dict
def main():
print("=== 雨天带伞决策问题:最大期望效用原理(MEU)应用 ===")
print()
# 先验概率
P_Rainy = 0.3
P_Sunny = 0.7
print("【问题设定】")
print(f"先验概率: P(Rainy) = {P_Rainy:.2f}, P(Sunny) = {P_Sunny:.2f}")
print()
# 定义效用表
utility_table = {
('Take Umbrella', 'Rainy'): 8, # 带伞且下雨
('Take Umbrella', 'Sunny'): 5, # 带伞且晴天
('No Umbrella', 'Rainy'): 0, # 不带伞且下雨
('No Umbrella', 'Sunny'): 10 # 不带伞且晴天
}
print("【效用表】")
print("行动 | 天气状态 | 效用值 | 说明")
print("-" * 50)
print("带伞 (Take Umbrella) | 雨天 (Rainy) | 8 | 保持干燥,略有不便")
print("带伞 (Take Umbrella) | 晴天 (Sunny) | 5 | 白带伞,有些麻烦")
print("不带伞 (No Umbrella) | 雨天 (Rainy) | 0 | 被淋湿,很不舒服")
print("不带伞 (No Umbrella) | 晴天 (Sunny) | 10 | 轻松自在,最佳体验")
print()
# 计算MEU
best_action, max_eu, eu_dict = calculate_meu(P_Rainy, utility_table)
print("【期望效用计算】")
for action, eu in eu_dict.items():
action_name = "带伞" if action == "Take Umbrella" else "不带伞"
print(f"行动 '{action_name}': EU = P(Rainy)×U(Rainy,{action_name}) + P(Sunny)×U(Sunny,{action_name})")
print(f" = {P_Rainy:.2f}×{utility_table[(action, 'Rainy')]} + {P_Sunny:.2f}×{utility_table[(action, 'Sunny')]}")
print(f" = {P_Rainy*utility_table[(action, 'Rainy')]:.2f} + {P_Sunny*utility_table[(action, 'Sunny')]:.2f}")
print(f" = {eu:.2f}")
print()
print("【最优决策】")
best_action_ch = "带伞" if best_action == "Take Umbrella" else "不带伞"
print(f"最大期望效用: EU* = {max_eu:.2f}")
print(f"最优行动: {best_action} ({best_action_ch})")
print()
# 敏感性分析:不同先验概率下的决策变化
print("【敏感性分析:不同下雨概率下的最优决策】")
print("P(Rainy) | 带伞的EU | 不带伞的EU | 最优决策 | 决策边界")
print("-" * 60)
# 计算决策边界:EU(带伞) = EU(不带伞)时的概率
# EU(带伞) = p*8 + (1-p)*5 = 8p + 5 - 5p = 3p + 5
# EU(不带伞) = p*0 + (1-p)*10 = 10 - 10p
# 3p + 5 = 10 - 10p => 13p = 5 => p = 5/13 ≈ 0.3846
decision_boundary = 5 / 13
for p in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]:
eu_umbrella = p * 8 + (1-p) * 5
eu_no_umbrella = p * 0 + (1-p) * 10
optimal = "带伞" if eu_umbrella > eu_no_umbrella else "不带伞"
boundary_note = "(决策边界)" if abs(p - decision_boundary) < 0.01 else ""
print(f"{p:.2f} | {eu_umbrella:.2f} | {eu_no_umbrella:.2f} | {optimal} {boundary_note}")
print()
print(f"决策边界: 当 P(Rainy) = {decision_boundary:.4f} ≈ {decision_boundary*100:.1f}% 时,带伞和不带伞的期望效用相等")
print(f" 当 P(Rainy) > {decision_boundary:.4f} 时,应选择带伞")
print(f" 当 P(Rainy) < {decision_boundary:.4f} 时,应选择不带伞")
print()
# 结果解释
print("【结果解释与MEU启示】")
print(f"1. 在当前先验 P(Rainy)=0.3 下,带伞的期望效用为 {eu_dict['Take Umbrella']:.2f},")
print(f" 不带伞的期望效用为 {eu_dict['No Umbrella']:.2f},因此最优决策是{best_action_ch}。")
print()
print("2. 决策边界分析表明,当降雨概率超过约38.5%时,理性智能体应选择带伞;")
print(" 否则应选择不带伞。这体现了MEU如何量化权衡风险与收益。")
print()
print("3. 效用函数的主观性:不同人对'被淋湿'和'白带伞'的厌恶程度不同,")
print(" 这会导致不同的效用赋值,从而影响决策边界。MEU框架允许个性化偏好建模。")
print()
print("4. 与贝叶斯更新的结合:在实际应用中,智能体可以结合天气预报(观测证据)")
print(" 更新对天气的信念(后验概率),然后基于更新后的概率计算MEU做出决策。")
if __name__ == "__main__":
main()
运行结果:
=== 雨天带伞决策问题:最大期望效用原理(MEU)应用 ===
【问题设定】
先验概率: P(Rainy) = 0.30, P(Sunny) = 0.70
【效用表】
行动 | 天气状态 | 效用值 | 说明
--------------------------------------------------
带伞 (Take Umbrella) | 雨天 (Rainy) | 8 | 保持干燥,略有不便
带伞 (Take Umbrella) | 晴天 (Sunny) | 5 | 白带伞,有些麻烦
不带伞 (No Umbrella) | 雨天 (Rainy) | 0 | 被淋湿,很不舒服
不带伞 (No Umbrella) | 晴天 (Sunny) | 10 | 轻松自在,最佳体验
【期望效用计算】
行动 '带伞': EU = P(Rainy)×U(Rainy,带伞) + P(Sunny)×U(Sunny,带伞)
= 0.30×8 + 0.70×5
= 2.40 + 3.50
= 5.90
行动 '不带伞': EU = P(Rainy)×U(Rainy,不带伞) + P(Sunny)×U(Sunny,不带伞)
= 0.30×0 + 0.70×10
= 0.00 + 7.00
= 7.00
【最优决策】
最大期望效用: EU* = 7.00
最优行动: No Umbrella (不带伞)
【敏感性分析:不同下雨概率下的最优决策】
P(Rainy) | 带伞的EU | 不带伞的EU | 最优决策 | 决策边界
------------------------------------------------------------
0.10 | 5.30 | 9.00 | 不带伞
0.20 | 5.60 | 8.00 | 不带伞
0.30 | 5.90 | 7.00 | 不带伞
0.40 | 6.20 | 6.00 | 带伞
0.50 | 6.50 | 5.00 | 带伞
0.60 | 6.80 | 4.00 | 带伞
0.70 | 7.10 | 3.00 | 带伞
决策边界: 当 P(Rainy) = 0.3846 ≈ 38.5% 时,带伞和不带伞的期望效用相等
当 P(Rainy) > 0.3846 时,应选择带伞
当 P(Rainy) < 0.3846 时,应选择不带伞
【结果解释与MEU启示】
1. 在当前先验 P(Rainy)=0.3 下,带伞的期望效用为 5.90,
不带伞的期望效用为 7.00,因此最优决策是不带伞。
2. 决策边界分析表明,当降雨概率超过约38.5%时,理性智能体应选择带伞;
否则应选择不带伞。这体现了MEU如何量化权衡风险与收益。
3. 效用函数的主观性:不同人对'被淋湿'和'白带伞'的厌恶程度不同,
这会导致不同的效用赋值,从而影响决策边界。MEU框架允许个性化偏好建模。
4. 与贝叶斯更新的结合:在实际应用中,智能体可以结合天气预报(观测证据)
更新对天气的信念(后验概率),然后基于更新后的概率计算MEU做出决策。
代码解读与MEU实践意义
-
MEU 计算过程:代码清晰地展示了期望效用的计算过程 EU(a)=∑sP(s)U(s,a)EU(a) = \sum_s P(s)U(s,a)EU(a)=∑sP(s)U(s,a)。对于“带伞”行动:EU=0.3×8+0.7×5=5.9EU = 0.3×8 + 0.7×5 = 5.9EU=0.3×8+0.7×5=5.9;对于“不带伞”行动:EU=0.3×0+0.7×10=7.0EU = 0.3×0 + 0.7×10 = 7.0EU=0.3×0+0.7×10=7.0。根据MEU原理,理性智能体应选择期望效用更高的“不带伞”。
-
决策边界分析:通过敏感性分析,我们发现当 P(Rainy)>0.3846P(Rainy) > 0.3846P(Rainy)>0.3846 时,带伞成为最优决策。这个阈值由效用值决定:8p+5(1−p)=0p+10(1−p)8p + 5(1-p) = 0p + 10(1-p)8p+5(1−p)=0p+10(1−p) 解得 p=5/13≈0.3846p = 5/13 ≈ 0.3846p=5/13≈0.3846。这展示了MEU如何将主观偏好(效用)与客观不确定性(概率)结合,产生明确的决策规则。
-
效用函数的主观性:不同人可能对相同结果赋予不同效用。例如,如果某人特别讨厌被淋湿,可能将“不带伞且下雨”的效用设为 -5 而不是 0,这会降低决策边界,使带伞成为更保守的选择。MEU框架的灵活性正在于此。
-
与贝叶斯推理的衔接:在实际决策中,智能体通常不会依赖固定先验。例如,可以结合天气预报(观测证据)使用贝叶斯法则更新 P(Rainy)P(Rainy)P(Rainy),然后基于后验概率计算MEU。这体现了概率推理(第3.1-3.3节)与决策理论(本节)的自然结合。
-
扩展性:这个简单示例可以扩展到更复杂的决策问题,如医疗决策(治疗vs不治疗)、投资决策(投资A vs投资B)、机器人路径规划等。MEU为所有不确定性下的理性决策提供了统一框架。
这个示例直观展示了最大期望效用原理如何将概率信念与价值偏好结合,为理性决策提供量化依据。在实际AI系统中,MEU是决策网络、马尔可夫决策过程(MDP)和部分可观测马尔可夫决策过程(POMDP)等高级决策模型的基础。
4. 关键图示/表格说明
| 概念 | 符号 | 含义 | 备注 |
|---|---|---|---|
| 先验 | P(h)P(h)P(h) | 证据前的信念 | 来自背景知识 |
| 似然 | P(e∣h)P(e|h)P(e∣h) | 假设下观测到证据的概率 | 由模型给出 |
| 后验 | P(h∣e)P(h|e)P(h∣e) | 证据后的信念 | 推理目标 |
| 边际 | P(e)P(e)P(e) | 证据的总概率 | 归一化常数 |
| 效用 | U(s)U(s)U(s) | 状态的主观价值 | 实值 |
| 期望效用 | EU(a)EU(a)EU(a) | 行动的平均价值 | MEU 比较对象 |
联合分布表格说明:以变量 Toothache、Catch、Cavity 为例,2 个布尔变量联合分布需 2n2^n2n 项;条件独立性(如 Catch⊥Toothache|Cavity)可将其因子化为 P(C)P(T∣C)P(Ca∣C)P(C)P(T|C)P(Ca|C)P(C)P(T∣C)P(Ca∣C),项数量由指数降为多项式级。P(X1,…,Xn)=∏i=1nP(Xi∣Parents(Xi))P(X_1, \dots, X_n) = \prod_{i=1}^n P(X_i \mid \text{Parents}(X_i))P(X1,…,Xn)=∏i=1nP(Xi∣Parents(Xi)) 揭示了联合分布的分解方式,为结构化概率模型(如贝叶斯网络)奠定基础。
- 贝叶斯网络利用条件独立性假设,将高维联合分布分解为局部条件概率表(CPT),大幅降低参数数量,实现可扩展的概率推理。
3. 效用理论与最大期望效用原理(MEU)
- 效用函数 U(s)U(s)U(s) 将结果映射为实数值,量化智能体的主观偏好。
- 期望效用 EU(a)=∑sP(s∣a)U(s,a)EU(a) = \sum_s P(s|a)U(s,a)EU(a)=∑sP(s∣a)U(s,a) 综合了不确定性(概率)与价值(效用)。
- MEU原理 action∗=argmaxaEU(a)\text{action}^* = \arg\max_a EU(a)action∗=argmaxaEU(a) 为不确定性下的理性决策提供了准则:选择期望效用最大的行动。
这三者层层递进:概率公理提供形式化基础 → 贝叶斯推理实现信念更新 → MEU 原理指导理性决策。它们共同构成了现代AI系统处理不确定性的核心工具箱。
4.2 习题
习题1:条件概率与贝叶斯计算(基础)
已知某疾病的患病率 P(D)=0.001P(D) = 0.001P(D)=0.001,检测方法的灵敏度 P(T+∣D)=0.99P(T^+|D) = 0.99P(T+∣D)=0.99(真有病时检测阳性),特异度 P(T−∣¬D)=0.95P(T^-|\neg D) = 0.95P(T−∣¬D)=0.95(真没病时检测阴性)。
- 计算检测阳性时的患病后验概率 P(D∣T+)P(D|T^+)P(D∣T+)。
- 若某人检测结果为阳性,医生建议复查。第二次检测(独立于第一次)仍为阳性,此时患病后验概率是多少?
- 讨论先验概率对后验概率的影响:若疾病患病率分别为 0.00010.00010.0001、0.010.010.01、0.10.10.1,检测阳性后的后验概率各为多少?
习题2:简单贝叶斯网络设计(应用)
设计一个包含三个布尔变量的贝叶斯网络,描述学生考试表现的关系:
- S(Study):考前认真复习(True/False)
- U(Understand):真正理解知识点(True/False)
- P(Pass):通过考试(True/False)
网络结构为:Study → Understand → Pass(即复习影响理解,理解影响通过考试)。
- 给出合理的先验概率 P(S=true)P(S=true)P(S=true) 和条件概率表 P(U∣S)P(U|S)P(U∣S)、P(P∣U)P(P|U)P(P∣U)。
- 计算边际概率 P(P=true)P(P=true)P(P=true)。
- 已知某学生通过了考试(P=true),计算他认真复习的后验概率 P(S=true∣P=true)P(S=true|P=true)P(S=true∣P=true)。
- 若还观察到该学生确实理解了知识点(U=true),此时 P(S=true∣P=true,U=true)P(S=true|P=true,U=true)P(S=true∣P=true,U=true) 有何变化?解释条件独立性的作用。
习题3:联合分布与条件独立性(理论)
考虑三个布尔变量 X、Y、Z,其联合分布如下:
| X | Y | Z | P(X,Y,Z) |
|---|---|---|---|
| 0 | 0 | 0 | 0.05 |
| 0 | 0 | 1 | 0.10 |
| 0 | 1 | 0 | 0.15 |
| 0 | 1 | 1 | 0.20 |
| 1 | 0 | 0 | 0.05 |
| 1 | 0 | 1 | 0.10 |
| 1 | 1 | 0 | 0.15 |
| 1 | 1 | 1 | 0.20 |
- 验证 X 与 Y 是否独立(即 P(X,Y)=P(X)P(Y)P(X,Y) = P(X)P(Y)P(X,Y)=P(X)P(Y))?
- 验证在给定 Z 的条件下,X 与 Y 是否条件独立(即 P(X,Y∣Z)=P(X∣Z)P(Y∣Z)P(X,Y|Z) = P(X|Z)P(Y|Z)P(X,Y∣Z)=P(X∣Z)P(Y∣Z))?
- 这个分布能否表示为某个贝叶斯网络?如果能,请给出网络结构并说明原因。
习题4:MEU 决策分析(综合)
某投资者考虑投资两个项目 A 和 B,未来经济可能繁荣(概率 0.6)或衰退(概率 0.4)。不同项目在不同经济状态下的收益(效用)如下:
| 项目 | 经济繁荣 | 经济衰退 |
|---|---|---|
| A | 100 | -20 |
| B | 60 | 30 |
- 计算每个项目的期望效用,根据 MEU 原理应选择哪个项目?
- 若投资者对损失更加厌恶,将衰退时的收益效用改为:A 项目衰退时为 -40,B 项目衰退时为 10。此时最优决策是否改变?
- 寻找决策边界:设经济繁荣的概率为 ppp,衰退概率为 1−p1-p1−p。求使得两个项目期望效用相等的 ppp 值,并解释其经济含义。
- 讨论:如果投资者可以获得一份经济预测报告(准确率 80%),如何结合贝叶斯更新与 MEU 做出更优决策?
习题5:实际场景建模(开放思考)
选择以下任一实际场景,设计一个简单的概率决策模型:
- 医疗诊断:症状 → 疾病推理(可扩展为多种疾病、多种症状)
- 垃圾邮件过滤:词语出现 → 邮件类别(垃圾/正常)
- 推荐系统:用户特征 → 商品偏好
- 自动驾驶:传感器读数 → 道路状态决策
要求:
- 明确变量及其取值(布尔、离散或连续)。
- 给出合理的先验概率和条件概率表(或简单参数)。
- 描述如何用贝叶斯推理更新信念。
- 定义效用函数并应用MEU原理做出决策。
- 讨论模型的局限性及可能的改进方向。
4.3 习题参考答案提示
习题1提示
使用贝叶斯法则:P(D∣T+)=P(T+∣D)P(D)P(T+∣D)P(D)+P(T+∣¬D)P(¬D)P(D|T^+) = \frac{P(T^+|D)P(D)}{P(T^+|D)P(D) + P(T^+|\neg D)P(\neg D)}P(D∣T+)=P(T+∣D)P(D)+P(T+∣¬D)P(¬D)P(T+∣D)P(D),其中 P(T+∣¬D)=1−P(T−∣¬D)P(T^+|\neg D) = 1 - P(T^-|\neg D)P(T+∣¬D)=1−P(T−∣¬D)。
习题2提示
- 可设 P(S=true)=0.7P(S=true)=0.7P(S=true)=0.7,P(U=true∣S=true)=0.9P(U=true|S=true)=0.9P(U=true∣S=true)=0.9,P(U=true∣S=false)=0.3P(U=true|S=false)=0.3P(U=true∣S=false)=0.3,P(P=true∣U=true)=0.95P(P=true|U=true)=0.95P(P=true∣U=true)=0.95,P(P=true∣U=false)=0.2P(P=true|U=false)=0.2P(P=true∣U=false)=0.2。
- 使用全概率公式:P(P=true)=∑s,uP(S=s)P(U=u∣S=s)P(P=true∣U=u)P(P=true) = \sum_{s,u} P(S=s)P(U=u|S=s)P(P=true|U=u)P(P=true)=∑s,uP(S=s)P(U=u∣S=s)P(P=true∣U=u)。
- 使用贝叶斯公式:P(S=true∣P=true)=P(P=true∣S=true)P(S=true)P(P=true)P(S=true|P=true) = \frac{P(P=true|S=true)P(S=true)}{P(P=true)}P(S=true∣P=true)=P(P=true)P(P=true∣S=true)P(S=true)。
习题3提示
- 计算边际分布 P(X)P(X)P(X)、P(Y)P(Y)P(Y) 和联合分布 P(X,Y)P(X,Y)P(X,Y),验证乘积是否相等。
- 分别计算 P(X,Y∣Z=0)P(X,Y|Z=0)P(X,Y∣Z=0)、P(X∣Z=0)P(X|Z=0)P(X∣Z=0)、P(Y∣Z=0)P(Y|Z=0)P(Y∣Z=0) 等,验证条件独立性。
- 观察分布特征:P(X,Y,Z)=P(Z∣X,Y)P(X)P(Y)P(X,Y,Z) = P(Z|X,Y)P(X)P(Y)P(X,Y,Z)=P(Z∣X,Y)P(X)P(Y) 形式?寻找条件独立性关系。
习题4提示
- EU(A)=0.6×100+0.4×(−20)=52EU(A) = 0.6×100 + 0.4×(-20) = 52EU(A)=0.6×100+0.4×(−20)=52,EU(B)=0.6×60+0.4×30=48EU(B) = 0.6×60 + 0.4×30 = 48EU(B)=0.6×60+0.4×30=48,应选 A。
- 重新计算:EU(A)=0.6×100+0.4×(−40)=44EU(A) = 0.6×100 + 0.4×(-40) = 44EU(A)=0.6×100+0.4×(−40)=44,EU(B)=0.6×60+0.4×10=40EU(B) = 0.6×60 + 0.4×10 = 40EU(B)=0.6×60+0.4×10=40,仍选 A 但优势缩小。
- 解方程 100p+(−20)(1−p)=60p+30(1−p)100p + (-20)(1-p) = 60p + 30(1-p)100p+(−20)(1−p)=60p+30(1−p) 得 p=0.625p=0.625p=0.625。当 p>0.625p>0.625p>0.625 时选A,否则选B。
习题5提示
以医疗诊断为例:疾病 D ∈ {流感, 感冒, 过敏},症状 S1(发烧)、S2(咳嗽)、S3(流涕)为布尔变量。建立朴素贝叶斯模型:P(D,S1,S2,S3)=P(D)P(S1∣D)P(S2∣D)P(S3∣D)P(D, S1, S2, S3) = P(D)P(S1|D)P(S2|D)P(S3|D)P(D,S1,S2,S3)=P(D)P(S1∣D)P(S2∣D)P(S3∣D)。定义效用矩阵(考虑误诊代价),根据症状观察更新 P(D∣S1,S2,S3)P(D|S1, S2, S3)P(D∣S1,S2,S3),选择期望效用最大的治疗方案。
5. 关键图示/表格说明
| 概念 | 符号 | 含义 | 备注 |
|---|---|---|---|
| 先验 | P(h)P(h)P(h) | 证据前的信念 | 来自背景知识 |
| 似然 | P(e∥h)P(e\|h)P(e∥h) | 假设下观测到证据的概率 | 由模型给出 |
| 后验 | P(h∥e)P(h\|e)P(h∥e) | 证据后的信念 | 推理目标 |
| 边际 | P(e)P(e)P(e) | 证据的总概率 | 归一化常数 |
| 效用 | U(s)U(s)U(s) | 状态的主观价值 | 实值 |
| 期望效用 | EU(a)EU(a)EU(a) | 行动的平均价值 | MEU 比较对象 |
联合分布表格说明:以变量 Toothache、Catch、Cavity 为例,2 个布尔变量联合分布需 2n2^n2n 项;条件独立性(如 Catch ⊥ Toothache | Cavity)可将其因子化为 P(C)P(T∣C)P(Ca∣C)P(C)P(T|C)P(Ca|C)P(C)P(T∣C)P(Ca∣C),项数量由指数降为多项式级。
6. 与其他章节的关联
- → 第14章:贝叶斯网络用条件独立性结构化表示本章的联合分布,并给出精确/近似推断算法。
- → 第15章:将随机变量扩展为时序过程(HMM、Kalman filter),仍基于本章的条件概率与贝叶斯更新。
- → 第16/17章:MEU 原理是决策网络与 MDP 的目标函数;效用理论直接延伸。
- ← 第7–11章:命题/一阶逻辑提供了确定性知识表示,本章补足其不确定性版本。
7. 延伸思考
-
大语言模型中的不确定性量化:LLM 的解码本质是条件概率分布 P(token∣context)P(token|context)P(token∣context)。如何可靠地估计“模型不知道”的先验?贝叶斯深度学习(Bayesian deep learning)与温度缩放(temperature scaling)校准正是对本章公理的工程化延伸——但 LLM 的“信念”并非来自显式 P(h)P(h)P(h) 先验,而是训练语料的隐式频率,这带来校准偏差与幻觉问题。
-
AI 对齐与效用建模:MEU 要求显式效用函数,而人类偏好难以完整、一致地编码。当智能体在 EU(a)EU(a)EU(a) 上过度优化一个不完美的代理效用(reward hacking)时,会背离真实意图。这提示对齐研究需将效用函数本身视为不确定且需持续修正的对象,而非固定先验。
8. 本章小结与下章预告
本章小结
本章系统构建了人工智能中处理不确定性的概率推理与决策理论框架,核心内容包括:
-
不确定性量化基础:从不确定性的三大来源(惰性、无知、不确定性本身)出发,基于 Kolmogorov 公理建立了概率论的形式化体系,定义了随机变量、概率分布、条件概率等基本概念。
-
概率推理核心工具:
- 贝叶斯法则:实现了从证据到假设的信念更新,是诊断推理、滤波等“逆概率”问题的数学基础。
- 链式法则:揭示了联合分布可分解为条件概率之积,为结构化概率模型提供了理论准备。
- 条件独立性:通过简化联合分布的表示,为应对“维度灾难”提供了关键思路。
-
理性决策理论:
- 效用理论:通过六条偏好公理将主观价值量化为实值效用函数。
- 最大期望效用原理(MEU):为不确定性下的理性决策提供了明确准则——选择期望效用最大的行动。
本章通过医疗诊断、警报网络、雨天带伞等具体示例,展示了如何将概率计算与效用评估相结合,实现从“相信什么”到“做什么”的完整理性决策链条。
下章预告:第14章 贝叶斯网络
本章末尾指出的维度灾难——即联合分布大小随变量数量指数增长(∏i∣Xi∣\prod_i |X_i|∏i∣Xi∣)——正是第14章要系统解决的核心问题。
贝叶斯网络(Bayesian Networks) 通过引入条件独立性假设,将高维联合分布分解为局部条件概率表(CPT)的乘积:
P(X1,…,Xn)=∏i=1nP(Xi∣Parents(Xi))P(X_1,\dots,X_n) = \prod_{i=1}^n P(X_i \mid \text{Parents}(X_i))P(X1,…,Xn)=i=1∏nP(Xi∣Parents(Xi))
这种结构化表示带来了两大优势:
- 参数效率:所需参数数量从指数级降至多项式级,使大规模概率系统的建模成为可能。
- 计算可行性:基于图结构的精确推断算法(如变量消元、信念传播)和近似推断算法(如MCMC、变分推断)能够高效计算后验概率。
第14章将深入讲解:
- 图模型表示:有向无环图(DAG)如何编码变量间的条件依赖关系。
- 条件概率表(CPT):如何用局部参数完整定义网络。
- 推断算法:如何回答“给定某些证据,查询变量的后验概率是多少?”(如已知警报响起,计算盗窃概率)。
- 学习与构建:如何从数据中学习网络结构与参数。
贝叶斯网络不仅解决了本章提到的表示与计算难题,还成为医疗诊断、故障排查、自然语言处理等众多领域不确定性推理的实际标准工具。它将本章的概率基础与图论结合,形成了可扩展、可解释的概率图模型框架,是AI从“小规模手工模型”走向“大规模现实应用”的关键一步。
学习路线:理解第14章的关键在于把握“条件独立性如何压缩联合分布”这一核心思想,并熟练运用链式法则进行概率分解。本章的贝叶斯法则、链式法则和条件独立性概念,将直接应用于贝叶斯网络的构建与推断中。
&spm=1001.2101.3001.5002&articleId=163970699&d=1&t=3&u=623814a7174e40579c7f82e53870646e)
2万+

被折叠的 条评论
为什么被折叠?



