You are here: Home

Probabilistic Programming

Probabilistic programming is a new, general-purpose means of expressing and automatically performing model-based inference. A key characteristic of many probabilistic programming systems is that models are expressed generatively via executable procedures, rather than in declarative mathematical notation. With the common additional promise of automated or programmable inference, probabilistic programming has the potential to dramatically increase the number of people who can build and understand their own models.  Richly expressive probabilistic programming languages (e.g. (non-exhaustively) Anglican, Churchprobabilistic-C, and Venture allow not only existing but also whole new classes of models to be expressed and solved.

For lay practitioners probabilistic programming means needing to code only a forward, generative data simulator; automatic inference is supplied -- there is no need to develop a mathematical or algorithmic model inversion. For statistics and inference experts, probabilistic programming means that new general-purpose inference schemes can easily be tested against a wide variety of models. This is because inference schemes are compiler and runtime system optimizations seated below the modeling language abstraction layer. This provides an objective, sweeping basis for inference methodology comparisons. For the applied machine learning expert (roboticist, engineer, etc.), a probabilistic programming system can be used to explore quickly a range of candidate models before investing significant resource in the customization of a particular inference algorithm for a particular model – greatly accelerating the exploration and selection of models for application-specific use.

Goals of workshop

The primary goals of this workshop are to introduce probabilistic programming both as a general concept and in terms of how current systems perform, to examine the historical academic context in which probabilistic programming arose, and to actively discuss some of the deeper questions currently in focus.


The highly interactive, slow-science format of this workshop is designed to give each speaker enough time to not just give an overview their own work but to dive into and expose thorny technical issues that are both fun to consider and difficult to resolve.  Speakers at the interface of the programming languages and machine learning have been invited, specifically to provide insightful perspective from outside the machine learning community.