Probabilistic programming languages provide a concise and abstract way to specify probabilistic models, while hiding away the underlying inference algorithm. However, those languages are often either not efficient enough to use in practice, or restrict the range of supported models and require understanding of how the compiled program is executed. Stan is one such probabilistic programming language, which is increasingly used for real-world scalable projects in statistics and data science, but sacrifices some of its usability and flexibility to make efficient automatic inference possible.
We present SlicStan — a probabilistic programming language that compiles to Stan and uses information flow analysis to allow for more abstract and flexible models. SlicStan is novel in two ways: (1) it allows variable declarations and statements to be automatically shredded into different components needed for efficient Hamiltonian Monte Carlo inference, and (2) it introduces more flexible user-defined functions that allow for new model parameters to be declared as local variables. This work demonstrates that efficient automatic inference can be the result of the machine learning and programming languages communities joint efforts.
A more detailed introduction to Stan and SlicStan, as well as examples, can be found in the SlicStan MSc(R) Dissertation.
Authors: Maria I. Gorinova, Andrew D. Gordon, Charles Sutton