Abstract: Probabilistic programming is sometimes referred to as “modeling for hackers”, and has recently been picking up steam with a flurry of releases including Stan, PyMC3, Edward, Pyro, and Tensorflow Probability
As these and similar systems have improved in performance and usability, they have unfortunately also become more complex and difficult to contribute to. This is related to a more general phenomenon of the “two language problem”, in which performance-critical domain like scientific computing involve both a high-level language for users and a high-performance language for developers to implement algorithms. This establishes a kind of wall between the two groups, and has a harmful effect on performance, productivity, and pedagogy.
In probabilistic programming, this effect is even stronger, and it’s increasingly common to see three languages: one for writing models, a second for data manipulation, model assessment, etc, and a third for implementation of inference algorithms.
In this workshop, we’ll see how the Julia programming language can help to solve this problem, and we’ll explore the basic ideas in Soss, a new probabilistic programming language written entirely in Julia. Soss allows a high-level representation of the kinds of models often written in PyMC3 or Stan, and offers a way to programmatically specify and apply model transformations like approximations or reparameterizations.
Bio: Dr. Chad Scherrer has been actively developing and using probabilistic programming systems since 2010, and served as technical lead for the language evaluation team in DARPA's Probabilistic Programming for Advancing Machine Learning (""PPAML"") program. Much of his blog is devoted to describing Bayesian concepts using PyMC3, while his current Soss.jl project aims to improve execution performance by directly manipulating source code for models expressed in the Julia Programming Language.
Chad is a Senior Data Scientist at Metis Seattle, where he teaches the Data Science Bootcamp.