xiangze's sparse blog

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

2018年12月のまとめ

年が明けてしまいましたが2018年12月のまとめです。

アドベントカレンダー

tensorflow probability(TFP)とpytorchベースの確率的プログラミングライブラリpyroに関して書きました。jupyterでlatexを書いています。

TFP

gist.github.com

tensorflowの枠組みでNMF(nonnegative matrix factorisation)のMAP推定の実装に挑戦しましたが現状うまくいっていません。
ed.を使わずにlossで使う対数尤度の式を書いた方が良いのかもしれません。
Edward1の頃からKLダイバージェンスを定義してそのメソッドで最適化するのか、対数尤度を直接書き下すのか方針が揺らいでいる印象があります。

更新式をちゃんと書いている例 非負値行列因子分解をRで(ベイズ推論による機械学習入門)2 - 廿TT
参考 Bayesian Inference for Nonnegative Matrix Factorisation Models

TFPでeight schools modelの推測をHMCで行なったサンプルがあり、それを自動変分ベイズに置き換えて実行したのですがこちらもまだうまくいっていないようです。
Eight_Schools_VI.ipynb · GitHub

pyro

gist.github.com

pyroにはNUTS, 変分ベイズが実装されており事後予測分布の評価や表示の関数もあって使いやすいです。
いくつかのサンプルコードとチュートリアルも公開されています。

pyro/examples at dev · uber/pyro · GitHub

Welcome to Pyro Examples and Tutorials! — Pyro Tutorials 0.3.0 documentation

SVGD(Stein Variational Gradient Descent)法による最適化

以前興味を持っていたカーネルを用いる確率分布関数間の最適化の手法で並列化がしやすい形になっています。
論文で説明されているコードに落とし込める程度の数式を追った結果です。
gist.github.com
少し古い研究(2016年)ですがGANバージョンも公開されています。

Tensorflowで実装できたはず です。
https://github.com/xiangze/SVGD

pyroでも実装を組み込むべきかがissueに上がっています。
Stein variational gradient descent, Stein message passing · Issue #1257 · uber/pyro · GitHub

その他所感

Bayesian Data Analysis(BDA)を読んでいますがなかなか進みません。

Bayesian Data Analysis (Chapman & Hall/CRC Texts in Statistical Science)

Bayesian Data Analysis (Chapman & Hall/CRC Texts in Statistical Science)

  • 作者: Andrew Gelman,John B. Carlin,Hal S. Stern,David B. Dunson,Aki Vehtari,Donald B. Rubin
  • 出版社/メーカー: Chapman and Hall/CRC
  • 発売日: 2013/11/05
  • メディア: ハードカバー
  • この商品を含むブログを見る