6.885/9.S917 Probabilistic Programming and Artificial Intelligence


Graduate Level
Units: 3-0-9
Prereqs: Familiarity with programming and probability theory, plus permission of instructors
Instructors: Vikash Mansinghka, Josh Tenenbaum, and Martin Rinard
Schedule: TR3-4:30, room 34-302
This subject qualifies as a Computer Systems concentration subject for PhD students. It is an AAGS for MEng students (fulfilling either the computer systems or AI concentrations), and can be used as an AUS2 or an EECS elective for undergrads in 6-1, 6-2, and 6-3.
Project-based introduction to probabilistic programming, an emerging field at the intersection of programming languages, probability theory, and artificial intelligence. Shows how to use probabilistic programs to implement and integrate models and inference algorithms from multiple paradigms. Modeling approaches include generative models, neural networks, symbolic programs, hierarchical Bayesian models, causal Bayesian networks, graphics engines, and physics simulators. Inference approaches include Markov chain and sequential Monte Carlo methods, optimization, variational inference, and deep learning. Hands-on projects, supported via a flipped classroom, teach students the fundamentals of probabilistic programming, as well as how to use probabilistic programming to solve problems in data analysis and computer vision, such as forecasting time series, exploring and cleaning multivariate data, and real-time visual SLAM using depth cameras. Also shows how to write probabilistic programs that learn the structure and parameters of probabilistic programs from data, and introduces new probabilistic programming-based AI architectures for expert systems that help people analyze and curate data and for common-sense scene understanding.