google/edward2

A simple probabilistic programming language.

What it solves

Edward2 はシンプルな確率的プログラミング言語(PPL)で、ディープラーニングエコシステムとシームレスに統合できるよう設計されています。研究者や開発者は Python 関数(プログラム)として確率モデルを定義でき、log‑joint 確率の計算や事後予測の実行といった柔軟なトレーニング・推論のためのツールが提供されます。

How it works

このライブラリは RandomVariables を用いて確率モデルの構造を定義します。これらの変数は確率分布を保持し、標準的なテンソル演算と相互運用できます。モデルは Python 関数として表現され、関数内でこれらのランダム変数をインスタンス化して生成プロセスを表現します。

柔軟な推論を可能にするため、Edward2 は tracing と呼ばれるメカニズムを採用しています。トレーサはモデル関数内でのランダム変数のインスタンス化を捕捉し、ユーザーが事前分布を事後平均に置き換えたり、モデルを別の表現(例:生成プログラムを MCMC アルゴリズムで使用する log‑joint 確率関数に変換)に変換したりできます。

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 やその他テンソルベースの演算と連携できるよう設計。