Bayesian Layerとは
Gaussian ProcessやBayesian CNNなどのニューラルネットを含むような複数の確率的プログラミングモデルで使うためのBaysian Layerに関する情報が公開された。
論文 https://arxiv.org/abs/1812.03973
Interesting in quickly experimenting with BNNs, GPs, and flows? Check out Bayesian Layers, a simple layer API for designing and scaling up architectures. #NeurIPS2018 Bayesian Deep Learning, Happening now. pic.twitter.com/IaUyjjQbmD
— Dustin Tran (@dustinvtran) 2018年12月7日
http://dustintran.com/papers/TranDusenberryVanDerWilkHafner2018_poster.pdf
kerasのlayerとして定義されている。アルゴリズムごとにlayerが用意されていてそれを組み合わせて使うよう。
- LSTMCellReparameterization
- Conv2DReparameterization
- SparseGaussianProcess
- RealNVP
- MixofLogistic
などがありそれぞれ対応するkerasのlayerを継承して実装されている。事前分布は多変量正規分布として固定しているのだろうか。
現状のTFPと同じく変分推論の部分はneg_log_likelihood+KLの形で書かないといけないのは従来と変わらない。
ポスターでは既存のTFPでかけるVAEやGANについては書かれていないが組み合わせられるはず。
既存のDenseFlipout, Conv2DFlipoutなどとの関係は不明。
TPU並列化の力でBayesian DNNの事後分布推定が可能という話らしい。
実装の一部はtensor2tensor
github.com
で公開されている。そのうちtensorflow本体に入るかもしれない。
まだEager executionのtestも通ったらしい(?)
Gaussian Processについて
Add GaussianProcess layer. by dustinvtran · Pull Request #1224 · tensorflow/tensor2tensor · GitHub