google/edward2
A simple probabilistic programming language.
What it solves
Edward2 是一种简单的概率编程语言(PPL),旨在与深度学习生态系统无缝集成。它让研究人员和开发者能够以 Python 函数(程序)的形式定义概率模型,并提供工具来操作这些模型,以实现灵活的训练和推理,例如计算 log‑joint 概率或进行后验预测。
How it works
库使用 RandomVariables 来定义概率模型的结构。这些变量携带概率分布,并且可以与标准张量操作互操作。模型以 Python 函数的形式表达,该函数实例化这些随机变量以表示生成过程。
为了支持灵活的推理,Edward2 采用一种称为 tracing 的机制。Tracer 可以拦截模型函数内部随机变量的实例化,允许用户将先验替换为后验均值,或将模型转换为其他表示(例如将生成程序转换为 log‑joint 概率函数,以供 MCMC 算法使用)。
Who it’s for
它主要面向需要在深度学习框架中使用概率模型和不确定性建模的 AI 研究者和实践者。
Highlights
- Multi-backend support: 支持 TensorFlow(默认)、JAX 和 NumPy。
- Tracing mechanism: 允许在不更改模型代码的情况下动态操作模型计算。
- Program transformations: 包含内置工具如
make_log_joint_fn,可将生成模型转换为概率函数。 - Deep learning integration: 设计上与 TensorFlow Distributions 以及其他基于张量的操作兼容。