概述
概率电路(Probabilistic Circuits,PC)是一类通过电路结构表示概率分布的可追踪模型。与传统概率图模型不同,概率电路在设计上保证了对某些查询(如边缘概率、条件概率)的精确高效计算,避免了近似推断的精度损失。1
概率电路可以看作是对和积网络(Sum-Product Networks, SPN)的形式化扩展,其核心思想是将复杂概率分布分解为可追踪的模块化组件。
形式化定义
电路结构
概率电路是一个有向无环图(DAG),具有以下结构:
其中:
- 是节点集合,分为三类:
- 和节点(Sum nodes):
- 积节点(Product nodes):
- 叶节点(Leaf nodes):
- 是有向边集合
- 是和节点的权重参数
- 是叶节点的分布参数
节点定义
叶节点(Leaf Nodes)
叶节点表示基础概率分布,常见类型包括:
| 类型 | 定义 | 示例 |
|---|---|---|
| 指示器 | 离散变量的取值指示 | |
| 高斯 | 连续变量的高斯分布 | |
| 混合 | 混合分布 |
积节点(Product Nodes)
积节点的输出是子节点输出的乘积,实现变量分解。
和节点(Sum Nodes)
其中权重 且 。和节点实现选择性混合。
三大核心性质
概率电路的表达能力由三个关键性质决定:可分解性、均匀性和平滑性。2
可分解性(Decomposability)
定义:对于每个积节点 ,其子节点 必须作用于不相交的变量集。
意义:保证积节点可以分解为独立因子的乘积,实现高效的乘积计算。
示例:
*
/ \
* * ← 积节点
/ \ / \
a b c d ← 叶节点(变量互不相交)
这里 。
均匀性(Homogeneity)
定义:对于每个和节点 ,其所有子节点的作用域完全相同。
意义:保证和节点输出的加权平均有意义,实现一致的概率分布。
对比:
均匀: 非均匀(非法):
+ +
/|\ /|\
/ | \ / | \
p p p a b c ← 作用域不同
(same scope) (different scopes)
平滑性(Smoothness)
定义:对于每个和节点 ,其所有子节点的作用域完全相同(与均匀性等价表述)。
实际上,平滑性 = 均匀性,这一性质确保了概率电路输出的归一性。
三大性质的表达能力影响
| 性质组合 | 表达能力 | 可追踪查询 |
|---|---|---|
| 仅可分解 | 中等 | 联合概率 |
| 可分解 + 均匀 | 强 | 边缘概率 |
| 全部三条 | 最强 | 条件概率、归一化常数 |
为什么这三条性质如此重要?
- 可分解性 积节点可并行计算
- 均匀性 和节点可正确加权
- 平滑性 电路输出是有效概率分布
常见概率电路类型
和积网络(SPN)
SPN是最早的概率电路形式,由Poon和Domingos (2011)提出。3
定义:满足可分解性和平滑性的有根有向无环图。
表达能力:可以表示任意在变量上分解的联合分布。
示例结构:
# 简化的SPN结构示例
class SumNode:
def __init__(self, children, weights):
self.children = children
self.weights = weights # 归一化权重
def forward(self, x):
return sum(w * child(x) for w, child in zip(self.weights, self.children))
class ProductNode:
def __init__(self, children):
self.children = children
def forward(self, x):
return prod(child(x) for child in self.children)概率句子决策图(PSDD)
PSDD(Probabilistic Sentential Decision Diagram)由Kisa et al. (2014)提出。4
特点:
- 基于有序二元决策图(OBDD)构建
- 每个子电路对应一个逻辑公式
- 自然地嵌入领域知识
结构:
S (根节点)
/|\
/ | \
* + * ← 交替的积/和节点
/ \/ \ / \
a b c d e ← 指示器叶节点
RAT-SPN(Rectified Affine Transform SPN)
RAT-SPN由Peharz et al. (2020)提出,引入更灵活的线性变换。5
创新点:
- 使用线性变换替代简单的和-积结构
- 支持连续变量建模
- 更强的表达能力
电路评估(Evaluation)
精确概率计算
给定输入 ,电路评估通过自底向上的消息传递计算:
def evaluate(node, x):
if isinstance(node, LeafNode):
return node.prob(x[node.scope])
elif isinstance(node, ProductNode):
return prod(evaluate(child, x) for child in node.children)
elif isinstance(node, SumNode):
return sum(w * evaluate(child, x)
for w, child in zip(node.weights, node.children))时间复杂度
对于满足三大性质的概率电路:
| 操作 | 时间复杂度 | 说明 |
|---|---|---|
| 边缘概率 | $O( | V |
| 条件概率 | $O( | V |
| 归一化常数 | $O( | V |
与概率图模型的对比
| 特性 | 概率电路 | 贝叶斯网络 | 马尔可夫网络 |
|---|---|---|---|
| 精确推断 | ✓ (结构保证) | 部分 (树结构) | 困难 |
| 表示能力 | 受限 | 完整 | 完整 |
| 学习难度 | 中等 | 简单 | 困难 |
| 可解释性 | 高 | 中 | 低 |
| 参数效率 | 高 | 中 | 低 |
概率电路的优势
- 确定性可追踪性:结构决定可追踪查询的类型
- 模块化:易于组合和分解
- 端到端可训练:可微分设计支持梯度学习
- 编译友好:可以从其他模型编译得到
应用场景
1. 变分推断的统一框架
概率电路提供了一种统一视角来理解各种变分推断方法:
- VAE:将编码器和解码器视为概率电路
- 归一化流:特殊结构的概率电路
- 自回归模型:链式结构的概率电路
2. 生成建模
输入x → 概率电路 → 生成样本
利用电路的条件独立性进行高效采样。
3. 推理加速
将复杂模型的推理过程编译为概率电路,实现毫秒级推理。
4. 可解释AI
电路的模块化结构提供了天然的因果解释路径。
电路表示能力边界
可表示的分布
概率电路可以高效表示:
- 所有树结构的贝叶斯网络
- 所有隐树模型
- 任何可分解为层次结构的分布
不能高效表示的分布
- 完全连接的马尔可夫网络(需要指数大小电路)
- 具有复杂循环依赖的模型
- 某些长程依赖的分布
数学框架总结
概率电路的数学核心是层次分解:
其中 是第 层第 个因子的作用域。
参考
相关主题
- probabilistic-circuits-learning-algorithms - 概率电路学习算法
- probabilistic-circuits-applications - 概率电路应用
- variational-inference-advanced - 变分推断进阶
- bayesian-neural-networks-advanced-inference - 贝叶斯神经网络高级推断
- neural-tangent-kernel-theory-deep-dive - 神经切向核理论
Footnotes
-
Choi et al. (2020). “Learning and Inference with Tractable Probabilistic Models”. ↩
-
Peharz et al. (2015). “On the Latent Variable Interpretation in Sum-Product Networks”. ↩
-
Poon & Domingos (2011). “Sum-Product Networks: A New Class of Tractable Models”. UAI 2011. ↩
-
Kisa et al. (2014). “Probabilistic Sentential Decision Diagrams”. KR 2014. ↩
-
Peharz et al. (2020). “Randomized Sum-Product Networks”. AISTATS 2020. ↩