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 及其他基於張量的運算相容。