xiangze's sparse blog

機械学習、ベイズ統計、コンピュータビジョンと関連する数学について

Edwardで一部の変数だけ確率変数にして変分推測する仕組み

VAEやGANなどに組み込まれたニューラルネットでは重み行列やバイアスは確率変数としては定義されていません*1が、
Edwardでは使って確率変数とそうでない変数を同時に推測(学習)させることが可能です。
それはどのようにして実装されているのでしょうか。

続きを読む

Veriflowについて

github.com

ネタです。
一応動きます。

Input,Reg,Wireと演算でグラフを作り、Session内のrunメソッドのfeed_dictでInputに(tensorflowのplaceholderにするよう)に値を渡します。
Sessionを抜けると回路モジュール(modtest.sv)とテストモジュール(test.sv)が作成されます。test.svにはrunで書いたInputへの値の設定が反映されます。
そしてverilatorかiverilogがインストールされている場合には実行され、Outputの値が出力されます。

現状1モジュールにのみ対応。計算グラフは木である必要があります。また名前に反してvector,行列の四則演算には対応していません。。。

本家の本気

XLA (Accelerated Linear Algebra) is a domain-specific compiler for linear algebra that optimizes TensorFlow computations.

BayesFlowについて

kerasのようにTensorflowの中にEdwardを取り込むという話もありましたが、BayesFlowという名前でtf.contribの中に取り込まれています。
https://www.tensorflow.org/api_docs/python/tf/contrib/bayesflow

今の所klpq(csiszar_divergence内のkl_forward), hmc, metropolis_hastings などがEdward由来のものらしいですが、そうでない物もあり興味深いです。が使用例はまだほとんどないようです。

続きを読む

Edwardを試してみた(3)敵対的生成ネットワーク(GAN)

Edward2.0が発表され、criticismが廃止されたり、インターフェースが変わったりと大きな変化があるようですが、ここでは引き続きEdwardの例を実行してみます。

続きを読む