核心结构:有向无环图 (DAG)
- 有向 (Directed): 边有箭头,表示影响的方向,通常可以理解为“因果”关系。例如,\(A \rightarrow B\) 表示 A 是 B 的“原因”或“父节点”。
- 无环 (Acyclic): 从任何一个节点出发,沿着箭头的方向走,你永远无法回到起点。这保证了模型不会出现“自己是自己原因”的逻辑悖论。
DAG 示例:合法的 vs. 非法的
案例引入:一个简化的学生模型
让我们用图结构来构建一个关于学生表现的简化模型。
解读图的语言:家族关系
在有向图中,我们使用家族关系来描述节点间的关系:
- 父节点 (Parents): 一个节点的父节点是指所有直接指向该节点的节点集合。
parents(X3)
是 {X1, X2}
。
parents(X6)
是 {X4, X5}
。
- 子节点 (Children): 一个节点的子节点是指所有被该节点直接指向的节点集合。
- 一个没有父节点的节点(如
X1
, X2
)代表了系统中的“根源”或“外生变量”。
贝叶斯网络的基石:局部马尔可夫性质
DAG的结构直接定义了一个核心的条件独立假设: 局部马尔可夫性质:
一个节点在给定其父节点的情况下,条件独立于其所有的非后代节点。
案例分析:从图中读取条件独立性
让我们再次审视图 Figure 1:
- 节点
X3
:
- 父节点:
{X1, X2}
- 后代:
{X4, X6}
- 非后代:
{X5}
(注意X1
,X2
是它的祖先,也算非后代)
- 应用性质: 根据局部马尔可夫性质,我们可以断言:在给定
X1
和 X2
的条件下,X3
与 X5
是条件独立的。
- 数学表达: \(P(X_3 | X_1, X_2, X_5) = P(X_3 | X_1, X_2)\)。
联合概率的因子分解:BN的魔力所在
基于局部马尔可夫性质,任何一个符合DAG的联合概率分布都可以被分解为所有节点关于其父节点的条件概率的乘积。
\[ \large{P(x_1, \dots, x_d) = \prod_{i=1}^d P(x_i | \text{parents}(x_i))}
\qquad(1)\]
这个公式是整个贝叶斯网络的核心。它将一个庞大、复杂的联合概率分布,分解成了一系列小规模、易于处理的 局部概率模型 (也称作条件概率分布, CPD)。
案例计算:分解图9.1的联合概率
应用 Equation 1 公式到 Figure 1 的图结构上:
\[
\large{
\begin{aligned}
& P(X_1, X_2, X_3, X_4, X_5, X_6) \\
& = P(X_1) \cdot P(X_2) \cdot P(X_3|X_1, X_2) \cdot P(X_4|X_3) \\
& \quad \cdot P(X_5|X_1) \cdot P(X_6|X_4, X_5)
\end{aligned}
}
\]
- 对比: 如果使用标准的链式法则,最后一项会是 \(P(X_6|X_1, X_2, X_3, X_4, X_5)\),计算它需要巨大的参数空间。
- 优势: 因子分解大大减少了我们需要估计的参数数量,使模型学习成为可能。
参数化:用条件概率表(CPT)填充模型
现在我们有了结构,还需要为每个局部概率模型提供具体的参数。对于离散变量,这通常通过 条件概率表 (Conditional Probability Table, CPT) 来完成。
- 一个CPT列出了在一个节点的所有父节点取值的每一种组合下,该节点取不同值的概率。
- 对于根节点 (如 \(X_1\)),CPT就是一个简单的先验概率分布 \(P(X_1)\)。
- 对于有父节点的节点 (如 \(X_3\)),CPT就是 \(P(X_3 | X_1, X_2)\)。
9.2.2 有向分离 (D-Separation)
我们为何需要一套通用规则?
局部马尔可夫性质告诉我们一个节点与其“非后代”的独立性。但我们经常需要回答更一般性的问题:
任意两个不相干的节点集合 A
和 B
,在给定第三个集合 E
的条件下,是否独立?
D-分离 (Directed Separation) 就是一套完整的、通用的规则,让我们能从图结构中直接“读取”任意条件独立性。
D-分离的核心思想
D-分离的核心思想是检查两组节点之间的所有路径是否被“阻断 (blocked)”。
D-分离的三种基本结构
任何复杂的DAG中的路径都可以被分解为三种基本连接结构。理解这三种结构是掌握D-分离的关键。
结构1: Tail-to-Tail (共同原因)
b <- a -> c
- 路径:
b
和 c
通过它们的共同父节点 a
连接。
- 规则: 当
a
被观测到 (给定) 时,从 b
到 c
的路径被 阻断。
- 例子:
冰淇淋销量
\(\leftarrow\) 天气炎热
\(\rightarrow\) 中暑人数
- 解释: 如果我们已经知道了今天天气炎热,那么观察到冰淇淋销量很高并不会让我们对中暑人数的判断产生任何新的改变。天气信息已经“解释”了两者之间的关联。反之,如果天气未知,那么冰淇淋销量高确实会增加我们对中暑人数多的判断。
结构2: Head-to-Tail (链式结构)
b -> a -> c
- 路径:
b
通过中间节点 a
影响 c
。
- 规则: 当
a
被观测到 (给定) 时,从 b
到 c
的路径被 阻断。
- 例子:
美联储政策
\(\rightarrow\) 市场利率
\(\rightarrow\) 房地产价格
- 解释: 一旦我们直接观测到了市场利率,那么美联储的具体政策是如何导致这个利率的就不再重要了。市场利率本身已经包含了所有预测房地产价格所需的信息。
结构3: Head-to-Head (V型结构)
b -> a <- c
- 路径:
b
和 c
都是 a
的父节点。a
是它们的共同效应。
- 规则 (注意! 这是反的!):
- 当
a
(或a
的任何后代) 未被观测到 时,路径是 阻断 的。
- 当
a
(或a
的任何后代) 被观测到 时,路径被 打通!
- 例子:
学术才华
\(\rightarrow\) 获得终身教职
\(\leftarrow\) 学术政治手腕
- 解释: 这个现象被称为 “解释得通 (explaining away)”。知道一个教授有才华并不能告诉我们任何关于他政治手腕的信息(两者先验独立)。但是,如果我们知道他获得了终身教职,然后又发现他其实没什么才华,这就强烈暗示他一定非常有政治手腕。
9.2.3 案例研究:一个更完整的学生模型
现在,我们把这些概念应用到教材第8页的经典“学生”贝叶斯网络中。这个网络模拟了影响学生最终获得推荐信(Letter)的各个因素。
- 变量:
- D (Difficulty): 课程难度 (0=低, 1=高)
- I (Intelligence): 学生智商 (0=不高, 1=高)
- G (Grade): 学生成绩 (0=C, 1=B, 2=A)
- S (SAT): SAT分数 (0=低, 1=高)
- L (Letter): 推荐信质量 (0=差, 1=好)
学生模型之图结构
这个图的结构编码了我们关于学生表现的先验信念。
学生模型之因子分解
根据上页的图结构和 Equation 1,我们可以立即写出联合概率的分解形式:
\[ \large{P(I, D, G, S, L) = P(I) \cdot P(D) \cdot P(S|I) \cdot P(G|I, D) \cdot P(L|G)} \]
请注意,我们大大简化了问题!例如,我们只需要 \(P(L|G)\),而不是 \(P(L|I, D, G, S)\)。
学生模型之参数化 (CPTs)
现在我们需要为每个因子填充CPT。这些概率通常从领域专家或历史数据中估计得到。
1. 根节点 (先验概率)
- \(P(I)\): P(I=0) = 0.7, P(I=1) = 0.3
- \(P(D)\): P(D=0) = 0.6, P(D=1) = 0.4
2. 条件概率
- \(P(S|I)\): 智商如何影响SAT分数
- \(P(G|I,D)\): 智商和课程难度如何共同影响成绩
- \(P(L|G)\): 成绩如何影响推荐信质量
CPT 示例: P(G | I, D)
这张表展示了在不同智商和课程难度组合下,学生取得A/B/C三种成绩的概率。
0 (不高) |
0 (低) |
0.30 |
0.40 |
0.30 |
0 (不高) |
1 (高) |
0.05 |
0.25 |
0.70 |
1 (高) |
0 (低) |
0.90 |
0.08 |
0.02 |
1 (高) |
1 (高) |
0.50 |
0.30 |
0.20 |
贝叶斯网络推理:回答“What if”问题
拥有一个完整的贝叶斯网络后,我们就可以进行 推理(Inference)。这意味着,在观测到某些变量(证据, Evidence)后,我们可以计算其他未观测变量的后验概率分布。
核心问题: 计算 \(P(\text{查询变量} | \text{证据变量})\)
推理问题示例
- 一个学生拿到了一封很好的推荐信(L=1),那么他很聪明的概率是多少?
- 一个很聪明的学生(I=1)在一门很难的课(D=1)上,他拿到A的概率是多少?
- \(P(G=A | I=1, D=1) = ?\) (这个可以直接查CPT)
- 一个学生SAT成绩很高(S=1),但他成绩很差(G=C),那么课程很难的概率是多少?
- \(P(D=1 | S=1, G=C) = ?\)
pgmpy
实战:构建并验证模型
首先,我们用一个完整的代码块来构建学生模型。
# 导入所需的库
from pgmpy.models import DiscreteBayesianNetwork
from pgmpy.factors.discrete import TabularCPD
# 1. 定义模型结构 (边)
student_model = DiscreteBayesianNetwork([('D', 'G'), ('I', 'G'), ('I', 'S'), ('G', 'L')])
# 2. 定义CPDs
# 根节点
cpd_d = TabularCPD('D', 2, [[0.6], [0.4]])
cpd_i = TabularCPD('I', 2, [[0.7], [0.3]])
# 条件节点
cpd_s = TabularCPD('S', 2,
values=[[0.95, 0.2], [0.05, 0.8]],
evidence=['I'], evidence_card=[2])
# 注意: evidence列的顺序是 (D=0,I=0), (D=1,I=0), (D=0,I=1), (D=1,I=1)
cpd_g = TabularCPD('G', 3,
values=[[0.30, 0.05, 0.90, 0.50], # G=A (g_0)
[0.40, 0.25, 0.08, 0.30], # G=B (g_1)
[0.30, 0.70, 0.02, 0.20]], # G=C (g_2)
evidence=['D', 'I'], evidence_card=[2, 2])
# 注意:pgmpy的CPT中,变量状态默认从0开始。
# G=A (g_0), G=B (g_1), G=C (g_2)
cpd_l = TabularCPD('L', 2,
values=[[0.9, 0.4, 0.01], [0.1, 0.6, 0.99]], # L=0, L=1
evidence=['G'], evidence_card=[3])
# 3. 添加CPDs到模型中
student_model.add_cpds(cpd_d, cpd_i, cpd_s, cpd_g, cpd_l)
# 4. 验证模型是否有效
assert student_model.check_model()
print('模型构建成功并通过验证!')
pgmpy
实战:创建推理引擎并查询
最激动人心的部分来了!我们创建一个推理引擎(这里使用变量消除法),然后提出我们的问题。
问题: 假设我们观察到一个学生智商很高 (I=1
),并且拿到了一封很好的推荐信 (L=1
)。那么,这门课程很难 (D=1
) 的概率是多少?即计算 \(P(D=1 | I=1, L=1)\)。
# 这是一个完整的、可运行的代码块 (接上页)
from pgmpy.inference import VariableElimination
# (模型构建代码已在上页运行,这里不再重复)
# 5. 创建推理引擎
inference = VariableElimination(student_model)
# 6. 进行查询
query_result = inference.query(variables=['D'], evidence={'I': 1, 'L': 1})
print(query_result)
+------+----------+
| D | phi(D) |
+======+==========+
| D(0) | 0.7482 |
+------+----------+
| D(1) | 0.2518 |
+------+----------+
结果解读与经济直觉
查询结果显示 \(P(D=1 | I=1, L=1) \approx 0.39\)。
- 先验概率: 在没有任何信息的情况下,课程很难的概率是 \(P(D=1)=0.4\)。
- 后验概率: 当我们得知这个聪明的学生拿到了一封好信,我们对课程很难的信念轻微下降了,从40%降到了39%。
- 直觉: 为什么?因为一个聪明的学生,即使在难的课上也有可能取得好成绩(进而拿到好信)。但是,他在简单的课上更容易取得好成绩。所以“好信”这个证据,略微增加了我们对“课程简单”的相信程度。这就是贝叶斯推理的力量:它以一种符合逻辑的方式,量化地更新我们的信念。
9.2.4 动态贝叶斯网络:当BN遇到时间
如果我们将贝叶斯网络在时间维度上“展开”,就得到了 动态贝叶斯网络 (Dynamic Bayesian Network, DBN)。
最简单也最著名的DBN就是 隐马尔可夫模型 (Hidden Markov Model, HMM)。
HMM的直观理解:洞穴中的天气预报
想象你被困在一个洞穴里,无法看到外面的天气。但洞穴里每天都会渗水。
- 你的观测 (可见): 今天洞穴里是 “干燥”、“潮湿” 还是 “滴水”。
- 真实状态 (隐): 外面的天气是 “晴天”、“多云” 还是 “雨天”。
你的任务是,根据连续几天的渗水情况,推断出外面最可能的天气变化序列。
HMM的核心应用
对时间序列数据建模,其中系统的真实状态是不可见的 (隐),我们只能通过一些可见的观测来推断它。
- 经济学应用:
- 真实状态 (隐): 经济处于“扩张期”还是“衰退期”。
- 观测 (可见): 每季度的GDP增长率、失业率数据。
假设1:马尔可夫假设 (状态转移)
当前的真实状态 \(z_t\) 只取决于前一个时刻的真实状态 \(z_{t-1}\)。
\[ \large{P(z_t | z_{t-1}, z_{t-2}, \dots, z_1) = P(z_t | z_{t-1})} \]
- 经济学解释: 经济是处于衰退还是扩张,主要取决于上一个季度是衰退还是扩张,而与更早之前的历史无关(在一阶模型中)。
假设2:观测独立性假设 (发射概率)
当前的观测值 \(x_t\) 只取决于当前的真实状态 \(z_t\)。
\[ \large{P(x_t | z_t, x_{t-1}, z_{t-1}, \dots) = P(x_t | z_t)} \]
- 经济学解释: 本季度的GDP增长率,只取决于本季度经济是处于衰退还是扩张,而与之前的状态和观测都无关。
HMM 的图结构
这两个假设共同定义了一个非常简洁的链式图结构。
经济学案例:用HMM识别商业周期
让我们用一个简化的模型来识别经济是处于 扩张(Expansion) 还是 衰退(Recession)。
- 隐状态 Z: {0: 扩张, 1: 衰退}
- 观测 X: 我们观察每个季度的GDP增长率,并将其简化为三个等级:{0: 负增长, 1: 低增长(0-2%), 2: 高增长(>2%)}
我们的任务是: 根据观测到的GDP增长序列,推断出最可能的经济状态(扩张/衰退)序列。
HMM 参数设置: 转移矩阵 A
矩阵 A 代表了经济周期的“惯性”。
\[
\large{A = \begin{pmatrix} P(\text{扩}|\text{扩}) & P(\text{衰}|\text{扩}) \\ P(\text{扩}|\text{衰}) & P(\text{衰}|\text{衰}) \end{pmatrix} = \begin{pmatrix} 0.9 & 0.1 \\ 0.3 & 0.7 \end{pmatrix}}
\]
- 解读:
- 如果本季度是扩张,那么下个季度有90%的概率继续扩张。
- 如果本季度是衰退,那么下个季度有70%的概率继续衰退(衰退比扩张更“不稳定”)。
HMM 参数设置: 发射矩阵 B
矩阵 B 代表了不同经济状态下的典型产出表现。
\[
\large{B = \begin{pmatrix} P(\text{负增}|\text{扩}) & P(\text{低增}|\text{扩}) & P(\text{高增}|\text{扩}) \\ P(\text{负增}|\text{衰}) & P(\text{低增}|\text{衰}) & P(\text{高增}|\text{衰}) \end{pmatrix} = \begin{pmatrix} 0.05 & 0.45 & 0.50 \\ 0.60 & 0.35 & 0.05 \end{pmatrix}}
\]
- 解读:
- 在扩张期,最可能出现高增长(50%);在衰退期,最可能出现负增长(60%)。
HMM 参数设置: 初始分布 \(\pi\)
\(\pi\) 代表我们对 t=1 时刻经济状态的先验信念。
\[ \large{\pi = \begin{pmatrix} P(z_1=\text{扩}) \\ P(z_1=\text{衰}) \end{pmatrix} = \begin{pmatrix} 0.8 \\ 0.2 \end{pmatrix}} \]
- 解读: 我们认为在序列开始时,经济有80%的可能处于扩张期。
HMM 要解决的三个核心问题
有了模型 \(\lambda = (A, B, \pi)\) 后,HMM理论主要解决三个问题。
HMM 总结
- HMM是分析时间序列的强大工具,是DBN的一个重要特例。
- 它通过区分“隐状态”和“观测”来对复杂系统建模。
- 其核心是三个参数 \((A, B, \pi)\) 和解决三个核心问题(评估、解码、学习)的经典算法。
- 在经济学中,它被广泛用于识别商业周期、金融市场状态切换(牛市/熊市)等。
从“因果”到“相关”:为何需要无向图?
贝叶斯网络中的有向边非常适合表示因果关系 (\(A \rightarrow B\))。但在很多场景下,变量之间的关系是对称的、相互的,没有明确的因果方向。
- 社交网络: 我是你的朋友,你也是我的朋友。
- 图像像素: 一个像素的颜色和它周围的像素颜色高度相关,但谁也不是谁的“原因”。
- 空间经济学: 一个地区的房价与邻近地区的房价相互影响。
无向图中的条件独立性:简单得多!
与D-分离的复杂规则不同,无向图中的条件独立性非常直观:
如果从节点集合 A 到节点集合 B 的所有路径都必须经过节点集合 C,那么 A 和 B 在给定 C 的条件下是条件独立的。
换句话说,C 分隔 (separates) 了 A 和 B。
案例:从无向图中读取独立性
联合概率的分解:团 (Clique) 与势函数
无向图的联合概率如何分解?答案是通过 团 (Clique)。
- 团 (Clique): 图中的一个节点子集,其中任意两个节点之间都有一条边。它们是图中的“全连接”子图。
- 极大团 (Maximal Clique): 一个团,如果再加入任何一个节点,它就不再是团了。
MRF的联合概率分布可以被分解为定义在 极大团 上的势函数的乘积。
案例:识别极大团
势函数 (Potential Function)
- 对于图中的每个极大团 \(C\),我们定义一个 势函数 \(\psi_C(\mathbf{x}_C)\)。
- 这个函数输入该团中所有变量的一种特定取值组合 \(\mathbf{x}_C\),输出一个 非负的实数。
- 直观意义: 这个数值代表了该团内的变量处于这种特定状态的“相容性”或“偏好度”。数值越大,意味着这种状态组合越“和谐”,其出现的概率也越高。
- 重要: 它不是概率!它只是一个分数。
Hammersley-Clifford 定理
这个重要的定理建立了MRF的联合概率分布与势函数之间的桥梁:
对于一个严格为正的概率分布 \(P(\mathbf{x}) > 0\),如果它满足一个无向图 \(G\) 的条件独立性,那么它的联合概率可以被分解为图 \(G\) 中所有 极大团 \(C\) 上的势函数 \(\psi_C\) 的乘积形式:
\[
\large{P(\mathbf{x}) = \frac{1}{Z} \prod_{C \in \mathcal{C}} \psi_C(\mathbf{x}_C)}
\]
其中 \(\mathcal{C}\) 是所有极大团的集合。
归一化常数 (Partition Function) Z
公式中的 \(Z\) 被称为 配分函数 (Partition Function) 或归一化常数。
\[
\large{Z = \sum_{\mathbf{x}} \prod_{C \in \mathcal{C}} \psi_C(\mathbf{x}_C)}
\]
- 它的作用: 保证所有可能状态的概率之和为1。因为势函数的乘积本身不保证这一点,所以需要除以所有可能状态的势函数乘积之和,进行归一化。
- 计算的挑战: 计算 \(Z\) 通常是MRF中最困难的部分。因为它需要对所有变量的所有可能取值组合进行求和,这是一个指数级的计算量。这是MRF推理和学习的主要障碍。
BN vs. MRF 总结
图结构 |
有向无环图 (DAG) |
无向图 |
核心思想 |
条件概率因子分解 |
势函数/能量函数因子分解 |
参数化 |
条件概率分布 (CPDs) |
极大团上的势函数 |
归一化 |
自动满足 (局部归一化) |
需要全局的配分函数 Z |
适用场景 |
因果关系, 生成模型 |
对称关系, 判别模型 |
可解释性 |
强,易于理解 |
较弱,势函数不直观 |
生成模型 vs. 判别模型
- 生成模型 (Generative): 对联合概率 \(P(X, Z)\) 建模。它学习数据是如何“生成”的。
- 例子: HMM, 贝叶斯网络。
- 能力: 可以用来生成新的样本数据。
- 判别模型 (Discriminative): 直接对我们更关心的条件概率 \(P(Z|X)\) 建模。它学习如何“区分”不同的Z。
- 例子: 逻辑回归, CRF。
- 能力: 通常在分类和预测任务上表现更好。
CRF 的核心优势
条件随机场 (Conditional Random Field, CRF) 是一种特殊的MRF,它是一个判别模型。
- 与HMM的比较: CRF可以放宽HMM的观测独立性假设。在CRF中,当前状态 \(z_t\) 的概率可以依赖于整个观测序列 \(X\) 中的任何特征,这使得模型更加强大和灵活。
线性链CRF (Linear-Chain CRF)
最常见的CRF是线性链CRF,专门用于处理序列数据。
它的条件概率 \(P(Z|X)\) 的形式为:
\[
\large{P(Z|X) = \frac{1}{Z(X)} \exp\left( \sum_{t,k} \lambda_k f_k(z_{t-1}, z_t, X, t) \right)}
\]
- \(f_k\) 称为 特征函数,它可以是关于状态和观测的任何函数 (例如,“如果当前词是’银行’,且前一个词是’国家’”)。
- \(\lambda_k\) 是每个特征的权重,需要从数据中学习。
- \(Z(X)\) 是依赖于观测序列 \(X\) 的配分函数。
为何需要一个统一的框架?
我们已经学习了有向图和无向图,它们都表示了联合概率的因子分解,但方式不同。
- 有向图: \(P(\mathbf{x}) = \prod_i P(x_i | \text{parents}(x_i))\)
- 无向图: \(P(\mathbf{x}) = \frac{1}{Z} \prod_C \psi_C(\mathbf{x}_C)\)
有没有一种更通用的表示法,能够统一这两种模型,并为通用推理算法提供基础?
答案是 因子图 (Factor Graph)。
案例:将贝叶斯网络转换为因子图
回顾学生BN的分解:\(P(\cdot) = P(I) P(D) P(S|I) P(G|I,D) P(L|G)\)
案例:将马尔可夫网络转换为因子图
回顾MRF的分解:\(P(\mathbf{x}) \propto \psi_1(A,B,E) \psi_2(B,C) \psi_3(E,D)\)
因子图的优势
- 消除歧义: 不同的图(有向或无向)可能对应相同的因子分解,而因子图是唯一的。
- 通用算法: 许多重要的推理算法,如 置信传播,在因子图上定义最为清晰和通用。
通用推理算法:置信传播 (Belief Propagation)
置信传播 (Belief Propagation, BP),也称为 和积算法 (Sum-Product Algorithm),是一种在图模型上进行高效精确推理的通用算法。
- 目标: 计算每个单变量的 边际概率 (Marginal Probability) \(P(x_i)\)。
- 核心思想: 算法通过在因子图的边上传递“消息 (messages)”来工作。这可以看作是节点之间相互“告知”它们对变量状态的“信念”。
- 收敛: 在没有环的图(即树结构)上,该算法传递有限次消息后会收敛,并得到精确的边际概率。在有环的图上(Loopy BP),算法不保证收敛或得到精确解,但常常在实践中效果很好。
和积算法的直觉:分配律的应用
为什么这个算法高效?因为它巧妙地利用了分配律来避免重复计算。
考虑计算边际概率 \(P(x_1) = \sum_{x_2, x_3, x_4} P(x_1,x_2,x_3,x_4)\) 假设 \(P(\mathbf{x}) \propto f_1(x_1,x_2) f_2(x_2,x_3) f_3(x_3,x_4)\)。
暴力计算: 对每个 \(x_1\) 的取值,遍历所有 \(x_2, x_3, x_4\) 的组合。
和积算法 (智能计算):
\[
\large{P(x_1) \propto \sum_{x_2} f_1(x_1, x_2) \left( \sum_{x_3} f_2(x_2, x_3) \left( \sum_{x_4} f_3(x_3, x_4) \right) \right)}
\]
我们把求和符号尽可能地向内推,先对最里面的变量求和,然后将结果作为一个“消息”传递出去。这正是和积算法消息传递的数学本质。
课程总结
- 维度灾难 促使我们寻找简化联合概率分布的方法。
- 概率图模型 利用 条件独立性 将复杂分布分解为局部函数的乘积,用图来表示独立性假设。
- 贝叶斯网络 (有向图) 使用条件概率,适合建模因果关系,其联合概率通过链式法则的简化形式给出。
- 马尔可夫网络 (无向图) 使用势函数,适合建模对称关系,其联合概率由极大团上的势函数乘积给出(Hammersley-Clifford定理)。
- 因子图 为两种模型提供了统一的、更精细的表示,是通用推理算法的基础。
- 置信传播 (和积算法) 是在图模型上进行高效推理的核心算法,其本质是利用分配律避免重复计算。