概述
概率电路(Probabilistic Circuits,PC)是一类强大的可追踪推断(Tractable Inference)概率模型,其核心思想是将复杂概率分布表示为计算图(Computational Graph),使得边缘化、条件概率等推断操作可以在图规模的时间内完成。1
概率电路是连接传统概率图模型与深度学习的重要桥梁:
- 与贝叶斯网络相比:PC允许更灵活的结构,表达能力更强
- 与神经网络相比:PC保持概率语义,支持可解释的推断
- 与变分推断相比:PC提供精确推断,无需近似
核心优势:概率电路在保证模型表达能力的同时,实现了多项概率查询的精确计算。
从概率图模型到概率电路
传统概率图模型的局限
传统的概率图模型(如贝叶斯网络、马尔可夫网络)在处理复杂依赖关系时面临推断复杂性问题:
- 贝叶斯网络:精确推断复杂度与网络树宽呈指数关系
- 马尔可夫网络:配分函数的计算是#P完全问题
这意味着即使模型结构合理,某些看似简单的查询(如边缘概率)也可能难以精确计算。
概率电路的解决思路
概率电路通过重新结构化概率分布的表示方式,将复杂性从推断过程转移到模型结构中:
| 传统方法 | 概率电路方法 |
|---|---|
| 图结构决定推断复杂度 | 计算图结构决定推断能力 |
| 推断需要复杂的消息传递 | 推断简化为自底向上计算 |
| 近似推断是不得已的选择 | 精确推断是默认行为 |
概率电路的定义
基本构成
概率电路是一个有向无环图(DAG),由三种类型的节点构成:
输入单元(Leaves)
↓
求和单元(Sum Nodes) ↔ 乘积单元(Product Nodes)
↓
根单元(Root)
-
输入单元(Leaves):表示输入变量的概率分布
- 通常是单变量分布(如高斯分布、伯努利分布)
- 可以是任意已知的概率密度函数或质量函数
-
求和单元(Sum Nodes):实现混合物(Mixture)操作
- 权重 必须非负且归一化:
-
乘积单元(Product Nodes):实现独立分解(Independent Decomposition)
- 乘积节点的子节点必须表示相互独立的随机变量集
-
根单元(Root):电路的输出,表示整个分布
数学形式化
设 为 维随机向量,概率电路 定义的分布为:
其中:
- 是电路节点数
- 是与节点 关联的权重
- 是节点 的作用域(即涉及的变量集合)
- 是叶节点分布的基函数
示例电路
考虑一个简单的二变量分布 :
[Sum] (根)
/ \
[Prod] [Prod]
/ \ / \
[X₁] [X₂] [X₁] [X₂]
对应的概率计算:
核心性质
概率电路的可追踪推断能力依赖于两个关键性质:平滑性和一致性。2
平滑性(Smoothness)
定义:一个概率电路是平滑的,当且仅当每个求和节点的子节点作用于相同的作用域。
平滑的求和节点: 非平滑的求和节点(不合法):
[Sum] [Sum]
/ | \ / \
[X₁] [X₁] [X₂] ✗ [X₁] [X₂] ✓
意义:平滑性确保求和操作对应于有效的概率混合。
一致性(Consistency)
定义:一个概率电路是一致的,当且仅当每个乘积节点的子节点作用于不相交的作用域。
一致的乘积节点: 不一致的乘积节点(不合法):
[Prod] [Prod]
/ \ / \
[X₁] [X₂] ✓ [X₁] [X₁] ✗
意义:一致性确保乘积操作对应于独立的随机变量。
均匀性(Decomposability)
定义:每个乘积节点的输出分布可以分解为其子节点分布的乘积。
这是一致性的另一种表述,强调了输出的可分解性。
命题化(Sentential)
定义:每个求和节点的输出分布可以表示为其子节点分布的凸组合。
可追踪推断操作
概率电路的核心价值在于支持多种多项式时间的推断操作。
1. 边缘化(Marginalization)
给定联合分布 ,计算边缘分布 :
算法:自底向上遍历电路,将不涉及 的叶子节点替换为 1(求和)或边缘分布。
复杂度:,与电路规模线性相关。
2. 条件概率(Conditioning)
给定证据 ,计算后验分布:
算法:使用前向-后向风格的算法:
- 自底向上计算联合似然
- 自顶向下传递归一化因子
3. 归一化(Normalization)
确保分布的积分/求和等于 1:
其中 是电路的评估函数。
4. 最大后验概率(MAP)
算法:对于求和节点,选择权重最大的分支;对于乘积节点,组合各分支的最优解。
与相关模型的关系
与和-积网络(SPN)的关系
和-积网络(Sum-Product Network,SPN)是概率电路的一个特例:
| 特性 | SPN | 通用概率电路 |
|---|---|---|
| 节点类型 | Sum、Product、Leaf | Sum、Product、Leaf、+ |
| 约束 | Decomposable | Smooth + Consistent |
| 表达能力 | 受限 | 更广泛 |
| 推断效率 | 高 | 取决于结构 |
直觉:SPN 是”结构良好的”概率电路,要求更严格的一致性约束。
与神经网络的关系
概率电路与神经网络有深刻的联系:
- 计算图视角:两者都是 DAG 形式的计算图
- 参数学习:都可以使用反向传播和梯度下降
- 表示能力:深度电路可以表示任意概率分布
关键区别:
| 特性 | 神经网络 | 概率电路 |
|---|---|---|
| 输出语义 | 确定性预测 | 概率分布 |
| 推断目标 | 条件概率 | 多种查询 |
| 可解释性 | 黑盒 | 结构化、可追溯 |
与贝叶斯网络的关系
贝叶斯网络可以通过概率电路编译转化为概率电路形式:
贝叶斯网络 → 消除变量 → 电路结构学习 → 概率电路
优势:
- 贝叶斯网络中的链式推断变为电路的单次前向传播
- 复杂查询(如多变量边缘化)变为电路操作
电路结构类型
1. 链式结构(Chain)
最简单的一维链式电路:
[X₁] → [Sum] → [X₂] → [Sum] → [X₃] → ... → [Root]
适用于序列化数据建模(如时间序列)。
2. 树状结构(Tree)
层次化的混合模型:
[Root]
/ | \
[S₁] [S₂] [S₃]
/ \ | / \
[L₁][L₂] [L₃][L₄]
适用于聚类+组件分布的建模。
3. 网格结构(Grid)
用于建模空间依赖:
[X₁][X₂][X₃]
× × ×
[X₄][X₅][X₆]
× × ×
[X₇][X₈][X₉]
适用于图像等二维结构数据。
4. 层次化结构(Layered)
深度概率电路:
Layer 0: [Leaves] (输入分布)
Layer 1: [Product/Sum] (第一层变换)
Layer 2: [Product/Sum] (第二层变换)
...
Layer L: [Root] (输出分布)
深度结构提供更强的表达能力。
表达能力的理论基础
表达能力定理
定理(Liang et al., 2024):任何定义在离散域上的概率分布都可以用足够大的概率电路精确表示。
这意味着概率电路是通用近似器(Universal Approximator)。
与树宽的关系
概率电路的表达能力与图的树宽(Treewidth)相关:
- 低树宽:高效推断,但表达能力有限
- 高树宽:强表达能力,但推断可能变慢
设计原则:在表达能力与推断效率间寻找平衡。
连续变量的处理
概率电路也可以处理连续变量:
- 连续叶节点:使用高斯分布等连续分布
- 概率积分电路(PIC):将连续变量积分转化为离散求和
- 数值积分方法:在高维空间使用自适应积分
实践工具
SPFlow
SPFlow 是一个开源的概率电路库:
from spn.spns.PCN import PCN
from spn.algorithms.LearningWrappers import learn_pcn
# 从数据学习概率电路
pcn = learn_pcn(data, scope)
# 评估概率
log_prob = pcn.forward(data)库选择指南
| 库 | 特点 | 适用场景 |
|---|---|---|
| SPFlow | 易于使用、文档完善 | 入门、快速原型 |
| cirkit | 功能全面、支持复杂结构 | 研究、深度定制 |
| EiNet | 高效、爱因斯坦求和 | 大规模数据 |
总结
概率电路是可追踪概率推断的重要范式:
| 特性 | 说明 |
|---|---|
| 核心思想 | 将概率分布表示为计算图 |
| 关键性质 | 平滑性 + 一致性 → 可追踪推断 |
| 推断能力 | 边缘化、条件概率、MAP 等多项式时间 |
| 表达能力 | 任意离散分布的通用近似器 |
| 与NN的联系 | 深度概率电路 ↔ 神经网络 |
概率电路为需要精确概率推断的场景(如因果推理、可解释AI、科学计算)提供了强大的工具。