Gen: a general-purpose probabilistic programming system with programmable inference built on Julia
2019-07-25 , Room 349

This talk introduces a new flexible and extensible probabilistic programming system called Gen, that is built on top of Julia. Gen's extensible set of modeling DSLs can express probabilistic models that combine Bayesian networks, black box simulators, deep learning, structure learning, and Bayesian nonparametrics; and Gen's inference library supports custom algorithms that combine Markov chain Monte Carlo, particle filtering, variational inference, and numerical optimization.


Probabilistic modeling and inference are central to many fields. Probabilistic programming systems aim to make probabilistic modeling and inference techniques accessible to a broader audience, and to make it easier for experts in these techniques to develop more complex applications. A key challenge for wider adoption of probabilistic programming languages is designing systems that are both flexible and performant. This talk introduces Gen, a new probabilistic programming system, built on top of Julia, that includes novel language constructs for modeling and for end-user customization and optimization of inference. Gen makes it practical to write probabilistic programs that solve problems from multiple fields. Gen programs can combine generative models written in Julia, neural networks written in TensorFlow, and custom inference algorithms based on an extensible library of Monte Carlo and numerical optimization techniques. The talk will also present techniques that enable Gen’s combination of flexibility and performance: (i) the generative function interface, an abstraction for encapsulating probabilistic and/or differentiable computations; (ii) domain-specific languages with custom compilers that strike different flexibility/performance tradeoffs; (iii) combinators that encode common patterns of conditional independence and repeated computation, enabling speedups from caching; and (iv) a standard inference library that supports custom proposal distributions also written as programs in Gen. This talk shows that Gen outperforms state-of-the-art probabilistic programming systems, sometimes by multiple orders of magnitude, on problems such as nonlinear state-space modeling, structure learning for real-world time series data, robust regression, and 3D body pose estimation from depth images.

See also: None (1.1 MB)

Marco is a fourth-year Ph.D. student in electrical engineering and computer science at MIT, working with Vikash Mansinghka in the MIT Probabilistic Computing Project, and Josh Tenenbaum in the MIT Department of Brain and Cognitive Sciences.

Previously, Marco completed his Master's degree at Stanford University, where his research focused applied machine learning for computational biology. Marco has spent time in industry developing computational infrastructure and algorithms for genetic testing from high-throughput DNA sequencing data. During his undergraduate studies in at UC Berkeley, Marco worked with Professor Pieter Abbeel on probabilistic and optimization techniques for household robotics.

Marco is interested in developing programming languages, software systems, user interfaces, algorithms, and theory that make it easier to construct, reason about, and use probabilistic modeling and inference.