TensorFlow Probability は TensorFlow における確率的推論と統計的分析のためのライブラリです。 TensorFlow エコシステムの一部として、TensorFlow Probability は確率的手法とさまざまな手法や機能との統合を提供します。 たとえば、深層ネットワークを用いた確率的な手法、自動微分を用いた勾配に基づく推論、GPU のようなハードウェア高速化や分散処理による大きなデータセットやモデルに対するスケーラビリティなどです。
TensorFlow Probability を始めるためには、インストールガイド や Python notebook チュートリアルを参照してください。
コンポーネント
我々の確率的機械学習ツール群は以下のような構造になっています:
Layer 0: TensorFlow
数値処理—特に、LinearOperator
クラスが可能にする、効率的な演算のための特定の構造 (対角、低ランク) を開発できるようにする行列フリーな実装。
TensorFlow Probability チームによりメンテナンスされていて、TensorFlow コアの tf.linalg
の一部です。
Layer 1: 確率的なブロックの構築
- Distributions (
tfp.distributions
,tf.distributions
): バッチやブロードキャスティングの仕組みを取り入れた、多くの確率分布やそれに関連する統計量の処理 - Bijectors (
tfp.bijectors
): ランダム変数の可逆で組み立て可能な変換。 Bijectors は変換された分布の豊富なクラスを提供します。それは、古典的な 対数正規分布から masked autoregressive flows のような洗練された深層学習モデルにまで及びます。
Layer 2: モデル構築
- Edward2
(
tfp.edward2
): プログラムとして柔軟な確率的モデルを定義するための確率的プログラミング言語 - Probabilistic layers
(
tfp.layers
): TensorFlow の layers を拡張して、それらが表現する関数の不確実性を出力できるニューラルネットワーク層 - Trainable distributions
(
tfp.trainable_distributions
): 確率分布を出力するニューラルネットワークを構築することを簡単にする、1つの Tensor によるパラメータをもつ確率分布
Layer 3: 確率的推論
- Markov chain Monte Carlo
(
tfp.mcmc
): サンプリングによる積分近似のためのアルゴリズム ハミルトンモンテカルロ法、 ランダムウォークメトロポリス・ヘイスティング法、カスタム遷移カーネルを構築することができる機能を含みます。 - Variational Inference
(
tfp.vi
): 最適化による積分近似のためのアルゴリズム - Optimizers
(
tfp.optimizer
): TensorFlow Optimizers を拡張した、確率的最適化モジュール。 Stochastic Gradient Langevin Dynamics を含みます。 - Monte Carlo
(
tfp.monte_carlo
): モンテカルロ法を用いたツール群
TensorFlow Probability は開発中であるため、インタフェースは変更される可能性があります。
使用例
ナビゲーションに載っている Python notebook チュートリアル に加えて、いくつかのスクリプト例が利用できます:
- Variational Autoencoders —latent code と変分推論による表現学習
- Vector-Quantized Autoencoder —ベクトル量子化による離散表現学習
- ベイジアンニューラルネットワーク —重みの不確実性を出力するニューラルネットワーク
- ベイズロジスティック回帰 —二値分類のためのベイズ推論
issue の報告
バグ報告や機能要望は TensorFlow Probability issue tracker を使用してください。