#mcmc #statistics #particle-filtering #importance-sampling #ppl

modppl

一个用于 Rust 中概率编程的实验性库

1 个不稳定版本

0.3.0 2024年7月25日

#217科学

Download history 95/week @ 2024-07-20 36/week @ 2024-07-27

131 每月下载量

MIT 许可证

75KB
1.5K SLoC

modppl

github crates.io docs.rs status

⚠️ 这是一款正在发展的软件。API 可能会更改。

什么是 modppl?

modppl 是用 Rust 语言原生编写的概率编程。通过将建模和推理分离的特质接口(称为 GenFn)赋予模块化。

推理

  • 重要性采样和重采样
  • 基于提议和再生 Metropolis-Hastings
  • 粒子滤波

动态建模

  • 动态类型 DynGenFn 和基于效果的 DynGenFnHandler
  • dyngen! 建模语言(用 %= 样本,用 /= 追踪)
  • 动态展开内核
  • 查看一些 示例

使用

python -m venv venv && source venv/bin/activate && pip install matplotlib
cargo test --release && python visualization/visualizer.py

灵感

modppl 受 Gen.jl 白皮书中所描述的生成函数接口(GFI)的启发。

Gen: 一个具有可编程推理的通用概率编程系统。Cusumano-Towner, M. F.; Saad, F. A.; Lew, A.; and Mansinghka, V. K. 在第 40 届 ACM SIGPLAN 编程语言设计实施会议(PLDI ‘19)论文集。(pdf)(bibtex)。

modppl 并不完全实现 GFI。更确切地说,它不支持 retdiff选择梯度

依赖项

~9MB
~171K SLoC