An Introduction to Probabilistic Programming
By Jan-Willem van de Meent, Brooks Paige, Hongseok Yang, Frank D. Wood. 2018
223 citations recorded by the source corpus.
This document is designed to be a first-year graduate-level introduction to probabilistic programming. It not only provides a thorough background for anyone wishing to use a probabilistic programming system, but also introduces the techniques needed to design and build these systems. It is aimed at people who have an undergraduate-level understanding of either or, ideally, both probabilistic machine learning and programming languages. We start with a discussion of model-based reasoning and explain why conditioning as a foundational computation is central to the fields of probabilistic machine learning and artificial intelligence. We then introduce a simple first-order probabilistic programming language (PPL) whose programs define static-computation-graph, finite-variable-cardinality models. In the context of this restricted PPL we introduce fundamental inference algorithms and describe how they can be implemented in the context of models denoted by probabilistic programs. In the second part of this document, we introduce a higher-order probabilistic programming language, with a functionality analogous to that of established programming languages. This affords the opportunity to define models with dynamic computation graphs, at the cost of requiring inference methods that generate samples by repeatedly executing the program. Foundational inference algorithms for this kind of probabilistic programming language are explained in the context of an interface between program executions and an inference controller. This document closes with a chapter on advanced topics which we believe to be, at the time of writing, interesting directions for probabilistic programming research; directions that point towards a tight integration with deep neural network research and the development of systems for next-generation artificial intelligence applications.
Subfields: Probabilistic & Bayesian Methods
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Probabilistic & Bayesian Methods
- Frank D. Wood
- Hongseok Yang
- Yura N. Perov
- Gilles Louppe
- Kyle Cranmer
- Atilim Gunes Baydin
- Vikash K. Mansinghka
- Adam Scibior
Citations in the corpus
- Language Model Cascades (2022, neutral): “For more details, see van de Meent et al. (2018).”
- Foundation Posteriors for Approximate Probabilistic Inference (2022, neutral): “The primary goal of probabilistic programming is to enable practitioners from any domain to easily reason about random variables of interest [29, 61].”
- Composable Effects for Flexible and Accelerated Probabilistic Programming in NumPyro (2019, background): “Many probabilistic programming languages (PPLs) [1] are embedded as a DSL within a host language.”
- Compiling Stan to generative probabilistic languages and extension to deep probabilistic programming (2021, background): “Generative PPLs are general-purpose languages extended with two probabilistic constructs [14, 30, 34]: sample(D) generates a sample from a distribution D and factor(v) assigns a score v to the current execution trace.”
- Probabilistic Symmetries and Invariant Neural Networks (2020, background): “…which predicts a distribution over labels; in implicit models like Generative Adversarial Networks (Goodfellow et al., 2014) or simulation-based models without a likelihood (e.g., Gutmann and Corander, 2016), and in many probabilistic programming languages (e.g., van de Meent et al., 2018), PY”
- Gen: a general-purpose probabilistic programming system with programmable inference (2019, background): “Many recent systems [18, 23, 68] follow the sample/observe paradigm [63], in which probabilistic model code makes calls to sample and observe functions and is compiled to continuation-passing form.”
- Deep Probabilistic Surrogate Networks for Universal Simulator Approximation (2019, methodology): “This definition blurs the line between stochastic simulators and probabilistic models and is arguably a key point of probabilistic programming (van de Meent et al., 2018).”
- Etalumis: Bringing Probabilistic Programming to Scientific Simulators at Scale (2019, unknown): “Probabilistic programming [71] is an emerging paradigm within machine learning that uses general-purpose programming languages to express probabilistic models.”
- MultiVerse: Causal Reasoning using Importance Sampling in Probabilistic Programming (2019, background): “Probabilistic programming systems (Gordon et al., 2014; Perov, 2016; van de Meent et al., 2018) allow a user to: (a) write and iterate over generative probabilistic models as programs easily, (b) set arbitrary evidence for observed variables, and (c) use out-of-the-box, mostly approximate,…”
- Meta-Learning an Inference Algorithm for Probabilistic Programs (2021, background): “For example, van de Meent et al. (2018) explain a language called FOPPL (Section 2), which has for loops and branches, and the translation of FOPPL into graphical models (Section 3).”
- Efficient Probabilistic Inference in the Quest for Physics Beyond the Standard Model (2018, methodology): “Probabilistic programming languages (PPLs) extend general-purpose programming languages with constructs to do sampling and conditioning of random variables [86].”