An Introduction to Probabilistic Programming

09/27/2018
by   Jan-Willem van de Meent, et al.
2

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/09/2014

Learning Probabilistic Programs

We develop a technique for generalising from data in which models are sa...
research
03/15/2019

Applying Probabilistic Programming to Affective Computing

Affective Computing is a rapidly growing field spurred by advancements i...
research
03/23/2020

Julia Language in Machine Learning: Algorithms, Applications, and Open Issues

Machine learning is driving development across many fields in science an...
research
12/31/2019

Introduction to Rank-polymorphic Programming in Remora (Draft)

Remora is a higher-order, rank-polymorphic array-processing programming ...
research
09/10/2019

Static Analysis for Probabilistic Programs

Probabilistic programming is a powerful abstraction for statistical mach...
research
09/26/2021

Statically Bounded-Memory Delayed Sampling for Probabilistic Streams

Probabilistic programming languages aid developers performing Bayesian i...
research
05/17/2018

Efficient compilation of array probabilistic programs

Probabilistic programming languages are valuable because they allow us t...

Please sign up or login with your details

Forgot password? Click here to reset