TensorFlow Probability : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 10/23/2018
* 本ページは、TensorFlow の本家サイトの TensorFlow Probability – Overview を翻訳した上で
適宜、補足説明したものです:
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
TensorFlow Probability 概要
TensorFlow Probability は TensorFlow における確率的推論と統計解析のためのライブラリです。TensorFlow エコシステムの一部として、TensorFlow Probability は自動微分を使用した深層ネットワーク・勾配ベースの推論と確率的方法の統合、巨大なデータセットへのスケーラビリティ、ハードウェア・アクセラレーション (GPU) を伴うモデルそして分散計算を提供します。
コンポーネント
私達の確率的機械学習ツールは次のように構造化されています :
層 0: TensorFlow
数値演算 — 特に、LinearOperator クラス — は効率的な計算のための特定の構造 (対角, 低ランク, etc.) を開発できる行列-free な実装を可能にします。それは TensorFlow Probability チームにより構築されて維持されてコア TensorFlow の tf.linalg の一部です。
層 1: 統計的ビルディング・ブロック
- Distributions (tfp.distributions, tf.distributions): 確率分布とバッチとブロードキャスティング・セマンティクスを持つ関連する統計の巨大なコレクション。
- Bijectors (tfp.bijectors): 確率変数のリバーシブルで構成可能な変換。Bijectors は対数正規分布のような古典的な例から masked autoregressive flows のような洗練された深層学習モデルまで、変換された分布のリッチなクラスを提供します、
層 2: モデル構築
- Edward2 (tfp.edward2): 柔軟な確率的モデルをプログラムとして指定するための確率的プログラミング言語。
- 確率的層 (= Probabilistic layers) (tfp.layers): それらが表わす関数に渡る不確かさを持つニューラルネットワーク層で、TensorFlow 層を拡張しています。
- 訓練可能な分布 (tfp.trainable_distributions): 単一の tensor でパラメータ化された確率分布で、確率分布を出力するニューラルネットを構築することを容易にします。
層 3: 確率的推論
- マルコフ連鎖モンテカルロ (tfp.mcmc): サンプリングを通して積分を近似するためのアルゴリズム。ハミルトニアンモンテカルロ、ランダム・ウォーク・メトロポリス・ヘイスティングス、そしてカスタム推移カーネルを構築するための機能を含みます。
- 変分推論 (tfp.vi): 最適化を通して積分を近似するためのアルゴリズム。
- オプティマイザ (tfp.optimizer): TensorFlow Optimizers を拡張した確率的最適化メソッド。確率的勾配 Langevin Dynamics を含みます。
- モンテカルロ (tfp.monte_carlo): モンテカルロ期待値を計算するためのツール。
サンプル
ナビゲーションでリストされている Python notebook チュートリアルに加えて、利用可能な幾つかのサンプル・スクリプトがあります :
- 変分オートエンコーダ — 潜在コードと変分推論による表現学習。
- ベクトル量子化・オートエンコーダ — ベクトル量子化による離散表現学習。
- ベイジアン・ニューラルネットワーク — それらの重みに渡る不確かさを持つニューラルネットワーク。
- ベイジアン・ロジスティック回帰 — 二値分類のためのベイジアン推論。
以上