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: 可編程推斷:能夠寫出定制的 proposal 函數、變分族 (variational families) 和 MCMC kernels。
  • Multi-paradigm Support: 多範式支持:包括 SMC、variational inference 和 MCMC。
  • Gradient-based Training: 梯度下降式訓練:支持生成模型的參數優化和 wake-sleep learning。
  • Incremental Computation: 增量計算:專門的建模構件來加速推斷。
  • Extensible API: 可擴展的 API:具有定義良好的 API 用於創建定制的生成模型、分佈和梯度。