probcomp/Gen.jl

A general-purpose probabilistic programming system with programmable inference

What it solves

Gen.jl 提供了一个通用的概率编程系统,允许用户定义生成模型并进行复杂的贝叶斯推断。它通过将推断算法“可编程化”来简化实现高级推断算法的过程,这意味着用户可以在不需要手动为每个新模型推导数学公式的情况下,自定义底层数学和逻辑。

How it works

Gen.jl 嵌入在 Julia 语言中,允许用户使用具有表现力的建模语言来编写概率程序。它支持广泛的贝叶斯推断方法,包括序列蒙特卡罗 (SMC)、变分推断 (variational inference) 和马尔可夫链蒙特卡罗 (MCMC)。它还通过参数优化和 wake-sleep learning 实现生成模型的梯度下降式训练,以及通过 involutive MCMC 和 SMCP³ 实现贝叶斯结构学习。

Who it's for

该工具是为从事概率模型、贝叶斯统计和生成式 AI 的研究人员和开发人员设计的,特别是那些需要灵活性来定制化推断算法或实现复杂生成模型的用户。

Highlights

  • Programmable Inference: 可编程推断:能够编写自定义的 proposals、variational families 和 MCMC kernels。
  • Multi-paradigm Support: 多范式支持:包括 SMC、variational inference 和 MCMC。
  • Gradient-based Training: 梯度下降式训练:支持生成模型的参数优化和 wake-sleep learning。
  • Incremental Computation: 增量计算:专门的建模构建块来加速推断。
  • Extensible API: 可扩展的 API:具有定义良好的 API 用于创建自定义的生成模型、分布、梯度。