Summary: | We present a new approach to the design and implementation of probabilistic programming languages (PPLs),
based on the idea of stochastically estimating the probability density ratios necessary for probabilistic inference.
By relaxing the usual PPL design constraint that these densities be computed exactly, we are able to eliminate
many common restrictions in current PPLs, to deliver a language that, for the first time, simultaneously
supports first-class constructs for marginalization and nested inference, unrestricted stochastic control flow,
continuous and discrete sampling, and programmable inference with custom proposals. At the heart of our
approach is a new technique for compiling these expressive probabilistic programs into randomized algorithms
for unbiasedly estimating their densities and density reciprocals. We employ these stochastic probability
estimators within modified Monte Carlo inference algorithms that are guaranteed to be sound despite their
reliance on inexact estimates of density ratios. We establish the correctness of our compiler using logical
relations over the semantics of ������ , a new core calculus for modeling and inference with stochastic probabilities.
We also implement our approach in an open-source extension to Gen, called GenSP, and evaluate it on six
challenging inference problems adapted from the modeling and inference literature. We find that: (1) GenSP can
automate fast density estimators for programs with very expensive exact densities; (2) convergence of inference
is mostly unaffected by the noise from these estimators; and (3) our sound-by-construction estimators are
competitive with hand-coded density estimators, incurring only a small constant-factor overhead.
|