Compiling Markov chain Monte Carlo algorithms for probabilistic modeling

The problem of probabilistic modeling and inference, at a high-level, can be viewed as constructing a (model, query, inference) tuple, where an inference algorithm implements a query on a model. Notably, the derivation of inference algorithms can be a difficult and error-prone task. Hence, researchers have explored how ideas from probabilistic programming can be applied. In the context of constructing these tuples, probabilistic programming can be seen as taking a language-based approach to probabilistic modeling and inference. For instance, by using (1) appropriate languages for expressing models and queries and (2) devising inference techniques that operate on encodings of models (and queries) as program expressions, the task of inference can be automated. In this paper, we describe a compiler that transforms a probabilistic model written in a restricted modeling language and a query for posterior samples given observed data into a Markov Chain Monte Carlo (MCMC) inference algorithm that implements the query. The compiler uses a sequence of intermediate languages (ILs) that guide it in gradually and successively refining a declarative specification of a probabilistic model and the query into an executable MCMC inference algorithm. The compilation strategy produces composable MCMC algorithms for execution on a CPU or GPU.

[1]  Frank D. Wood,et al.  A Compilation Target for Probabilistic Programming Languages , 2014, ICML.

[2]  Joseph Tassarotti,et al.  Augur: Data-Parallel Probabilistic Modeling , 2014, NIPS.

[3]  Yura N. Perov,et al.  Venture: a higher-order probabilistic programming platform with programmable inference , 2014, ArXiv.

[4]  Richard E. Neapolitan,et al.  Learning Bayesian networks , 2007, KDD '07.

[5]  David Van Horn,et al.  Running Probabilistic Programs Backwards , 2015, ESOP.

[6]  L. Tierney Markov Chains for Exploring Posterior Distributions , 1994 .

[7]  Yuan Yu,et al.  TensorFlow: A system for large-scale machine learning , 2016, OSDI.

[8]  Keith Bonawitz,et al.  Composable probabilistic inference with BLAISE , 2008 .

[9]  Frank D. Wood,et al.  A New Approach to Probabilistic Programming Inference , 2014, AISTATS.

[10]  Chung-Kil Hur,et al.  R2: An Efficient MCMC Sampler for Probabilistic Programs , 2014, AAAI.

[11]  Lei Li,et al.  Swift: Compiled Inference for Probabilistic Programming Languages , 2016, IJCAI.

[12]  Andrew McCallum,et al.  FACTORIE: Probabilistic Programming via Imperatively Defined Factor Graphs , 2009, NIPS.

[13]  Timon Gehr,et al.  PSI: Exact Symbolic Inference for Probabilistic Programs , 2016, CAV.

[14]  Andrew D. Gordon,et al.  Measure Transformer Semantics for Bayesian Machine Learning , 2011, ESOP.

[15]  Dustin Tran,et al.  Deep Probabilistic Programming , 2017, ICLR.

[16]  Jacques Carette,et al.  Probabilistic Inference by Program Transformation in Hakaru (System Description) , 2016, FLOPS.

[17]  L. Dixon,et al.  Automatic differentiation of algorithms , 2000 .

[18]  Radford M. Neal Pattern Recognition and Machine Learning , 2007, Technometrics.

[19]  J. Gregory Morrisett,et al.  An Application of Computable Distributions to the Semantics of Probabilistic Programming Languages , 2016, ESOP.

[20]  Ryan P. Adams,et al.  Elliptical slice sampling , 2009, AISTATS.

[21]  Claudio V. Russo,et al.  Deriving Probability Density Functions from Probabilistic Functional Programs , 2017, Log. Methods Comput. Sci..

[22]  Joshua B. Tenenbaum,et al.  Church: a language for generative models , 2008, UAI.