以下の記事の要約です。
Introducting TensorFlow Probability
2018 TensorFlow Developer Summit で TensorFlow Probability (確率的プログラミングのツールボックス) が発表されました。
TensorFlow Probability を使くべき場面:
- 生成モデルを作り潜在プロセスを推論したいとき
- 不確実性を評価したいとき
- データ点の数と比べて多数の特徴量を持つとき
- データが構造化されているとき (例:グループ、空間、グラフ、language semantics) そしてこの構造を事前知識として使いたいとき
- 逆問題を解くとき (注:Deep Learning でない)
これらを CPU, GPU, TPU どれを使っても実行できます。
TensorFlow Probability の構成要素
- Layer 0: TensorFlow
- Layer 1: Statistical Building Blocks
- Distributions
- Bijectors (変数変換するときに使う)
- Layer 2: Model Building
- Edward2 (
tfp.edward2
) - Probablistic Layers (
tfp.layers
) Neural network のレイヤー - Trainable Distributions (
tfp.trainable_distributions
)
1 つの Tensor でパラメタライズされた確率分布。これは確率分布を出力とする Neural Network を作ることを容易にします。
- Edward2 (
- Layer 3: Probablistic Inference
- MCMC
- 変分推論
- Optimizers
- Monte Carlo (注:MCMC でなく)
コード例
(注:以下の IPython Notebooks が参考になります。Python 2 系のコードなので注意)
examples/jupyter_notebooks
- Linear Mixed Effects Models (階層線形モデル)
- Gaussian Copula (ガウシアン コピュラ)
- Variational Autoencoder (変分AE)
- Bayesian neural Networks