TensorFlow : Edward API : モデル (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 11/28/2018
* 本ページは、Edward サイトの API : API and Documentation – Model を翻訳した上で適宜、補足説明したものです:
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
Edward API : モデル
確率モデルはデータ \(\mathbf{x}\) と潜在変数 \(\mathbf{z}\) の同時分布 \(p(\mathbf{x},\mathbf{z})\) です。背景については、確率モデル・チュートリアル を見てください。
Edward では、確率変数の単一の言語を使用してモデルを指定します。確率変数 \(\mathbf{x}\) は tensor \(\theta^*\) によりパラメータ化されたオブジェクトで、そこでは一つのオブジェクト内の確率変数の数はそのパラメータの次元により決定されます。
from edward.models import Normal, Exponential # 単変量正規分布 Normal(loc=tf.constant(0.0), scale=tf.constant(1.0)) # 5 単変量正規分布のベクトル Normal(loc=tf.zeros(5), scale=tf.ones(5)) # Exponential の 2 x 3 行列 Exponential(rate=tf.ones([2, 3]))
多変量分布については、多変量次元はパラメータの最も内側の (右端の) 次元です。
from edward.models import Dirichlet, MultivariateNormalTriL # K-次元ディリクレ分布 Dirichlet(concentration=tf.constant([0.1] * K)) # lower triangular cov を持つ 5 K-次元多変量正規分布のベクトル MultivariateNormalTriL(loc=tf.zeros([5, K]), scale_tril=tf.ones([5, K, K])) # K-次元多変量正規分布の 2 x 5 行列 MultivariateNormalTriL(loc=tf.zeros([2, 5, K]), scale_tril=tf.ones([2, 5, K, K]))
確率変数は log_prob(), \(\log p(\mathbf{x}\mid\theta^*)\), mean(), \(\mathbb{E}_{p(\mathbf{x}\mid\theta^*)}[\mathbf{x}]\) そして sample(), \(\mathbf{x}^*\sim p(\mathbf{x}\mid\theta^*)\) のようなメソッドを備えます。更に、各確率変数は計算グラフの tensor \(\mathbf{x}^*\) と関連付けられます、これは単一のサンプル \(\mathbf{x}^*\sim p(\mathbf{x}\mid\theta^*)\) を表します。
これは、深層ニューラルネットワーク、数学演算の多様なセット、そして (TensorFlow 上で構築された) サードパーティのライブラリとの互換性によるような、複雑な決定論的構造を伴う確率変数をパラメータ化することを容易にします。このデザインはまた確率変数の合成に複雑な確率的構造を捕捉することも可能にします。それらは \(\mathbf{x}^*\) 上で作用します。
from edward.models import Normal x = Normal(loc=tf.zeros(10), scale=tf.ones(10)) y = tf.constant(5.0) x + y, x - y, x * y, x / y tf.tanh(x * y) x[2] # 3rd normal rv in the vector
compositionality page では、確率変数を組み立てることによりモデルをどのように構築するかを記述します。
以上