概述

概率电路(Probabilistic Circuits, PCs)是一类能够实现可处理(tractable)概率推断的图模型。与传统的概率图模型不同,概率电路通过特殊的网络结构设计,使得边际推断、条件推断等操作可以在多项式时间内精确计算。

近年来,研究者开始探索将概率电路与深度学习融合,形成了**神经概率电路(Neural Probabilistic Circuits, NPC)**等新兴方向。这些融合方法结合了:

  • 神经网络的可组合性与表达能力
  • 概率电路的可推断性与可解释性

本专题聚焦于概率电路与深度学习融合的最新研究进展。


核心概念速查

概念定义关键性质
概率电路通过求和-乘积网络(SPN)表示概率分布精确边际推断
神经概率电路结合神经网络模块的PC框架组合性可解释
因果概率电路支持因果干预的PCdo算子、测试时修正
概率图电路图结构上的PC图上精确推断
几何感知PC引入Voronoi镶嵌的PC局部几何感知

核心公式

概率电路的边际计算:

神经概率电路的组合性:


文档导航

核心文档

文档内容概要
神经概率电路NPC框架、组合性可解释、逻辑推理集成
因果神经概率电路概念瓶颈、测试时干预、因果推断
概率图电路图生成模型、图上推断、UAI 2025
PC复杂度下界与重构 (2025)TPM逼近下界 (NeurIPS 2025 Spotlight) + 跨结构PC乘法 (AISTATS 2025 Oral)
PGC UAI 2025深度解析Papez et al. 图上的可处理概率电路、分子图生成
几何感知概率电路Voronoi镶嵌、局部几何结构

基础文档(参考)

文档内容概要
概率电路基础SPN基础、 tracts条件、 circuit结构
概率电路训练梯度训练、EM算法、结构学习
概率电路应用密度估计、分类、异常检测
神经网络的概率图视角NN的概率解释、变分推断

学习路径建议

入门路线

概率电路基础 → 神经概率电路 → 因果神经概率电路
  1. 概率电路基础 (1-2天)

    • SPN的基本结构
    • 可处理推断条件
    • 经典算法
  2. 神经概率电路 (2-3天)

    • NPC框架设计
    • 组合性机制
    • PyTorch实现
  3. 因果神经概率电路 (2-3天)

    • 概念瓶颈模型
    • 因果干预
    • 应用场景

进阶路线

几何感知PC → 概率图电路 → 前沿应用
  1. 几何感知概率电路

    • Voronoi镶嵌
    • 几何结构学习
  2. 概率图电路

    • 图生成模型
    • 图推断算法

方法对比

概率电路 vs 传统PGM vs 深度学习

维度概率电路传统PGM深度学习
推断效率✓ 精确/多项式✗ 通常NP难~ 近似
表达能力中等中等✓ 强
可解释性✓ 高✓ 高✗ 低
可组合性✓ 中等✗ 低✓ 高
可扩展性中等✓ 好✓ 很好

神经概率电路的独特优势

  1. 组合性: 神经网络模块可自由组合
  2. 可处理性: 关键概率计算可在多项式时间完成
  3. 可解释性: 推理路径透明可追踪
  4. 因果能力: 支持因果干预和反事实推理

论文推荐

必读论文

论文年份核心贡献
Neural Probabilistic Circuits (Chen et al.)2025NPC框架
Causal Neural Probabilistic Circuits2026因果干预
Probabilistic Graph Circuits (Papez et al.)2025图上推断
Geometry-Aware PCs (Sidheekh et al.)2026几何结构
Scaling PCs via Monarch Matrices2025可扩展性

进阶论文

论文年份核心贡献
Tractable Representation Learning with PCs2025表示学习
SymCircuit: Bayesian Structure Learning2026结构学习
Probabilistic Neural Circuits2024基础框架
Tractable Sharpness-aware PC2025正则化

工具与库

Python库

说明
|PyProb概率编程与PC框架
|SPN-PyTorchPyTorch实现的SPN
|PCLib概率电路库

实现参考

# 概率电路基础结构示例
import torch
import torch.nn as nn
 
class ProbabilisticCircuit(nn.Module):
    """概率电路基础框架"""
    def __init__(self, num_sum_nodes, num_product_nodes):
        super().__init__()
        self.sum_weights = nn.Parameter(torch.randn(num_sum_nodes))
        self.product_factors = nn.Parameter(torch.randn(num_product_nodes))
    
    def forward(self, x):
        # 乘积节点
        prod_out = self.compute_products(x)
        # 求和节点
        sum_out = self.compute_sums(prod_out)
        return sum_out
    
    def marginal(self, x):
        """精确边际推断"""
        return torch.exp(self.forward(x))
    
    def conditional(self, x, evidence):
        """精确条件推断"""
        joint = self.marginal(x, evidence)
        marginal_evidence = self.marginal(evidence)
        return joint / (marginal_evidence + 1e-10)

相关专题

专题关联内容
概率电路基础SPN、可处理条件
概率电路训练梯度下降、EM、结构学习
贝叶斯深度学习贝叶斯神经网络、不确定性
GNN概率推断图上的变分推断
因果推断进阶因果图、do算子、反事实

开放问题与未来方向

理论问题

  1. 表达能力界限: NPC的表达能力与标准NN相比如何?
  2. 训练复杂性: 如何高效训练大规模NPC?
  3. 因果推断: NPC如何实现更复杂的因果推理?

应用问题

  1. LLM集成: NPC如何与大语言模型结合?
  2. 多模态学习: NPC如何处理多模态数据?
  3. 强化学习: NPC在决策制定中的角色?

本专题最后更新: 2026-06-21