Files
Notes/机器学习/统计学习要素-ESL-v1/17 第十七章 无向图模型.md
2026-05-16 17:16:51 +08:00

207 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 17 第十七章 无向图模型
draft: false
tags:
- ESL
---
### [逻辑架构图]
- **基础协议层(图结构与马尔科夫性)**:定义了变量间条件独立性的拓扑语义,等同于系统设计中的“依赖解耦协议”。
- **连续数据流(高斯图模型 GGM**:处理连续变量,核心任务是将表象的协方差矩阵 $S$ 转化为本质的精度矩阵 $\Theta$(稀疏化反演),以识别直接的控制链路。
- **离散状态机(马尔科夫随机场 MRF**:处理组合状态,通过势函数和吉布斯分布评估系统“能量”,但陷入了配分函数 $Z$ 带来的 $NP-hard$ 计算泥潭。
- **工程化重构BM 与 RBM**:为了解决离散图模型的算力瓶颈,模型演化出全连接的波尔兹曼机(试图逼近热平衡)和切断层内连接的受限波尔兹曼机(通过拓扑阉割换取极致的硬件并行亲和度)。
---
### [深度整理正文]
#### 一、 概率图模型的基础:三个“马尔科夫”与图的数学性质
这三个概念虽然都带有“马尔科夫”的名字但它们在概率图模型PGM和强化学习中扮演的角色各不相同。我们可以从基础的图结构演进到动态决策过程。
**1. 概念辨析:无向图、马尔科夫链与 MDP**
- **无向图模型 (Undirected Graphical Model / MRF)**:关注变量间的空间相关性。没有因果或先后之分。其联合概率分布是通过最大团 (Max-cliques) 来定义的:
$$P(x) = \frac{1}{Z} \prod_{C \in \mathcal{C}} \phi_C(x_C)$$
其中 $\phi_C$ 是非负势函数,$Z$ 是配分函数(归一化因子)。
- **马尔科夫链 (Markov Chain)**:描述状态序列的随机模型。核心是无记忆性 (Memorylessness)
$$P(X_{t+1} | X_t, X_{t-1}, \dots, X_0) = P(X_{t+1} | X_t)$$
- **马尔科夫决策过程 (MDP)**:引入智能体的决策。定义为五元组 $(S, A, P, R, \gamma)$,在动态环境下寻找最优策略 $\pi(a|s)$,使得长期累积奖励的期望值最大。
|**概念**|**核心关注点**|**是否有方向**|**是否有动作/奖励**|
|---|---|---|---|
|无向图 (MRF)|变量间的空间相关性|无|否|
|马尔科夫链|状态随时间演变的规律|有|否|
|MDP|在动态环境下的最优行为选择|有|是|
**2. 马尔科夫图 (Markov Graphs) 及其性质**
在无向图 $G=(V, E)$ 中,马尔科夫性定义了变量间的条件独立性:
- **全局马尔科夫性**:如果集合 $C$ 分隔了 $A$ 和 $B$,则给定 $X_C$ 时,$X_A \perp X_B \mid X_C$。
- **局部马尔科夫性**:给定一个节点 $u$ 的所有邻居 $ne(u)$,该节点独立于图中所有其他节点。
- **成对马尔科夫性**:任意两个不相邻的节点 $u, v$,给定其余所有节点时独立。
- **Hammersley-Clifford 定理**:一个正概率分布 $P(x) > 0$ 满足上述马尔科夫性质,当且仅当它可以被分解为图中最大团上的势函数乘积。
{ **[深度扩充:计算解耦与内存局部性]**
从 CSAPP 的视角来看,马尔科夫性本质上是数据依赖的“隔离屏障”。在多线程并发或分布式计算中,$X_A \perp X_B \mid X_C$ 意味着一旦节点 $C$ 的状态被固化(缓存在 L1 Cache 或被 Read-Lock对 $A$ 和 $B$ 的计算可以毫无数据竞争Data Race地在不同的 CPU 核心上并行执行。H-C 定理则为大规模联合概率的计算提供了理论基础:把全局的 $O(|V|!)$ 复杂度,拆解为多个最大团内部的局部计算。这使得我们可以将大图切分成适配 CPU Cache Line 尺寸的子块Chunking极大提升了指令吞吐量。 }
**3. 图结构的实际意义:复杂关系的化简器**
如果系统里有 100 个变量,两两组合是爆炸性的。图结构告诉我们哪些联系是本质的:
1. **识别直接原因(去噪)**:剔除虚假相关。例如给定“气温”,则“冰激凌销量”与“溺水事故”条件独立。
2. **极大地降低计算复杂度(推断优化)**20 个二值变量本需要 $2^{20}$ 的巨大状态表。利用稀疏图的因子分解,只需处理局部表格。它是现代 AI 能够实时运行的基础。
3. **实现自动推理**:定义信息流动的路径。观测值沿着边传播,自动更新其他节点的概率。
4. **揭示系统拓扑特性**例如寻找基因调控网络中的枢纽Hub或构建推荐系统中物品兴趣节点的网状结构。
---
#### 二、 连续变量的无向图模型:高斯图模型 (GGM) 与核方法
**1. 核心定义与公式推导:从 $\Sigma$ 到 $\Sigma^{-1}$**
假设变量服从多元正态分布 $\mathbf{x} \sim N(\mu, \Sigma)$,其概率密度函数为:
$$f(x) = \frac{1}{(2\pi)^{p/2} |\Sigma|^{1/2}} \exp \left( -\frac{1}{2} (x-\mu)^T \Sigma^{-1} (x-\mu) \right)$$
设均值 $\mu = 0$,将指数项内部展开(这里精度矩阵 $\Theta = \Sigma^{-1}$
$$-\frac{1}{2} x^T \Theta x = -\frac{1}{2} \left( \sum_{i} \theta_{ii} x_i^2 + \sum_{i \neq j} \theta_{ij} x_i x_j \right)$$
_结论_:如果 $\theta_{ij} = 0$,概率密度函数中 $x_i$ 和 $x_j$ 之间没有乘积项,即 $X_i \perp X_j \mid X_{\setminus \{i,j\}}$。
_协方差 $\Sigma$ 是表象(包含了因为第三方中转产生的虚假相关),精度矩阵 $\Theta$ 是本质(剔除虚假关联后的直接相互作用)。_
**2. 图结构与参数估计Graphical Lasso 算法**
给定 $n$ 个样本的经验协方差矩阵 $S = \frac{1}{n-1} X^T X$。
- **目标函数**:如果特征数 $p > n$$S$ 不可逆。为了寻找稀疏的图结构GLasso 在极大似然中引入 $L_1$ 正则化,强行将微弱的偏相关系数压缩为 0
$$\hat{\Theta} = \arg\max_{\Theta \succ 0} \left( \log \det \Theta - \text{tr}(S\Theta) - \lambda \|\Theta\|_1 \right)$$
- **计算机制**:采用逐列更新(坐标下降法),固定其他列,用 Lasso 回归解法更新当前列。本质上是用其他所有变量作为自变量,去回归当前变量。
- **独立性哲学**:没有边 $\neq$ 彻底没关系。没有边 $=$ 没有直连(影响必须通过中转站传递)。
{ **[深度扩充ESL 统计视角与数值线性代数]**
在《The Elements of Statistical Learning》中$L_1$ 惩罚项由于其梯度的非平滑性在零点不可导能够产生绝对的稀疏解Sparse Solutions而 $L_2$ 只能产生小数值但非零的解。
从系统底层来看GLasso 的输出 $\hat{\Theta}$ 是一个极其稀疏的矩阵。这意味着在后续的图推断系统中,我们完全不需要分配 $O(p^2)$ 的连续内存。我们可以直接使用 CSRCompressed Sparse Row数据结构。由于消除了大量的零元素乘法稀疏矩阵向量乘SpMV可以完美契合现代 CPU 的 AVX 指令集和 GPU 的 Tensor Cores将内存带宽利用率从不到 10% 提升至理论上限。 }
**3. 对偶性延伸:协方差矩阵与核矩阵 (Kernel Matrix)**
协方差矩阵 $S$ 和核矩阵 $K$ 在数学上都是半正定矩阵。
- 协方差矩阵 $S = \frac{1}{n} X^T X$(大小 $p \times p$):关注特征空间的耦合。
- 核矩阵 $K = X X^T$(大小 $n \times n$):关注样本空间的接近。
传统 PCA 求解 $S v = \lambda v \implies \frac{1}{n} X^T X v = \lambda v$。当我们引入非线性映射 $\phi(x)$ 到高维空间时,通过核技巧 $K_{ij} = \langle \phi(x_i), \phi(x_j) \rangle$ 隐式计算。如果你有协方差,说明关注线性相关;如果使用核方法,说明怀疑存在非线性的深层相关。
---
#### 三、 离散变量的无向图:马尔科夫随机场 (MRF)
离散图模型不像连续变量能通过矩阵求逆解决,它涉及组合数学中的海量求和。
**1. 吉布斯分布与伊辛模型 (Ising Model)**
离散无向图的联合概率分布定义为:
$$P(X_1, X_2, \dots, X_p) = \frac{1}{Z} \prod_{C \in \mathcal{C}} \psi_C(X_C) = \frac{1}{Z} \exp\left( -\sum_{C \in \mathcal{C}} E_C(X_C) \right)$$
其中 $\psi_C$ 是势函数,$E_C$ 是能量。以二值变量的伊辛模型为例,总能量函数为:
$$E(X) = -\sum_{i,j \text{ 有边}} w_{ij} X_i X_j - \sum_i h_i X_i$$
参数 $w_{ij}$ 的正负和大小,直接决定了节点间是“同向吸引”还是“异向吸引”。系统概率最高的状态,就是所有人相互妥协后总能量最低的状态。
**2. 配分函数 $Z$ 的计算灾难**
$$Z = \sum_{X} \exp(-E(X))$$
如果 $p$ 个变量各有 $k$ 个取值,求和项有 $k^p$ 个(典型的 NP-hard 问题)。在参数学习阶段,最大似然估计的梯度里包含对 $Z$ 的导数,意味着每次迭代都要做一次全局推断。
{ **[深度扩充:状态爆炸与 MCMC 寻址抖动]**
从 CSAPP 视角看,$Z$ 的计算不仅是 CPU 算力不足的问题,更是灾难性的内存访问模式问题。$k^p$ 的状态空间在物理内存中呈现出离散的、毫无规律可言的分布。当 MCMC如 Gibbs Sampling试图在这些状态中进行转移采样时每一次采样几乎都会导致 Cache Miss 和深度的 TLB Miss页表未命中。因为下一状态的地址是随机计算出来的现代 CPU 的硬件预取器Hardware Prefetcher彻底失效流水线被迫停顿等待内存响应。这也是为什么离散图模型的原生精确解法在工程上几乎被判了死刑。 }
---
#### 四、 工程化突围:普通波尔兹曼机 (BM) 与受限波尔兹曼机 (RBM)
为了在真实的神经网络中应用离散图模型,必须解决复杂的环路推断问题。
**1. 普通波尔兹曼机 (BM):纯粹但暴力的全连接系统**
BM 没有任何结构限制,变量状态 $s_i \in \{0, 1\}$,能量函数为:
$$E(s) = -\sum_{i < j} w_{ij} s_i s_j - \sum_i \theta_i s_i$$
其联合概率为 $P(s) = \frac{e^{-E(s)}}{Z}$。
由于存在层内连接,单个节点的激活概率深度耦合于所有其他节点:
$$P(s_i=1 | s_{-i}) = \sigma \left( \sum_{j \neq i} w_{ij} s_j + \theta_i \right)$$
- **梯度求导准则**$\frac{\partial \log L}{\partial w_{ij}} = \langle s_i s_j \rangle_{data} - \langle s_i s_j \rangle_{model}$
梯度由正相(数据观测共现)和负相(模型幻想共现)决定。计算模型自发共现需要将系统模拟至热平衡,计算极其缓慢。
**2. 受限玻尔兹曼机 (RBM):阉割拓扑换取效率**
RBM 强制将结构变为二分图Bipartite Graph可见层 $v$ 和隐藏层 $h$ 之间全连接,但**层内绝对无连接**。
能量函数变为:
$$E(v, h) = -\sum_{i} a_i v_i - \sum_{j} b_j h_j - \sum_{i,j} v_i w_{ij} h_j$$
- **致命优势:条件独立性**:当固定可见层 $v$ 时,隐藏层各节点互不干扰,概率可以分解:$P(h|v) = \prod_{j} P(h_j|v)$。
推导出的激活概率变成了极其友好的前向计算:
$$P(h_j=1|v) = \sigma\left(b_j + \sum_{i} v_i w_{ij}\right)$$
- **CD算法 (Contrastive Divergence)**:利用一轮正向步($P(h|v)$ 采样)和一轮反向重建步($P(v|h)$ 采样)代替漫长的热平衡,迅速更新权重。
{ **[深度扩充:数据依赖图的剪枝与 SIMD 向量化并行]**
BM 为什么慢因为环形的数据依赖图Data Dependency Graph引发了经典的 Read-After-Write (RAW) 数据冒险Data Hazard。在计算节点 $i$ 时必须等待节点 $j$ 的结果,导致 CPU/GPU 只能串行化执行指令。
Hinton 发明 RBM 的伟大之处,不仅在数学上,更在计算机体系结构上:**“层内无连接”在硬件层面上等价于“彻底消除了同一循环层内的 RAW 冒险”**。计算 $P(h_j=1|v)$ 变成了一个纯粹的密集矩阵向量乘法操作。成千上万个 $h_j$ 的计算可以完美映射到 GPU 的数千个流处理器CUDA Cores利用 SIMD单指令多数据流并行完成期间无需任何线程间同步Thread Barrier或锁机制。这直接铺平了大规模深度学习模型落地的物理基础。 }
---
### [边界知识联动]
1. **OS 调度机制与能量函数**MRF 中通过博弈寻找最低能量状态最高概率与操作系统中通过“优先级反转Priority Inheritance”和“动态时间片分配”算法让 CPU 调度系统达到最优吞吐量(全局能量最低点)有着极强的同构性。
2. **网络路由协议OSPF与图推断**在已知图结构中计算边际概率的信念传播Belief Propagation算法其底层信息交互逻辑与计算机网络中基于链路状态的 OSPF 路由协议几乎完全一致——节点不断向邻居广播自己的“信念”,直到全网状态收敛。
3. **编译器常量折叠与条件独立**:在静态分析中,如果编译器确定变量 A 和 B 在中间路径上被某常量赋值(屏障节点 C所截断编译器就会独立优化 A 和 B 的后续指令路线。这与无向图中的马尔科夫屏障 $X_A \perp X_B \mid X_C$ 在逻辑图理上是一模一样的。