2018年12月のまとめ
年が明けてしまいましたが2018年12月のまとめです。
続きを読むEdwardで一部の変数だけ確率変数にして変分推測する仕組み
VAEやGANなどに組み込まれたニューラルネットでは重み行列やバイアスは確率変数としては定義されていません*1が、
Edwardでは使って確率変数とそうでない変数を同時に推測(学習)させることが可能です。
それはどのようにして実装されているのでしょうか。
*1:一方でdropoutを含めて確率変数として定式化する方法もあります https://pdfs.semanticscholar.org/cfe8/59be0a5339e4f02a4b04c72b92f9ffb3ae90.pdf [1506.02142] Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning 。
Veriflowについて
ネタです。
一応動きます。
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の例を実行してみます。
続きを読む