C3: Lightweight Incrementalized MCMC for Probabilistic Programs Using Continuations and Callsite Caching
Abstract
Lightweight, source-to-source transformation approaches to implementing MCMC for probabilistic programming languages are popular for their simplicity, support of existing deterministic code, and ability to execute on existing fast runtimes. However, they are also slow, requiring a complete re-execution of the program on every Metropolis Hastings proposal. We present a new extension to the lightweight approach, C3, which enables efficient, incrementalized re-execution of MH proposals. C3 is based on two core ideas: transforming probabilistic programs into continuation passing style (CPS), and caching the results of function calls. We show that on several common models, C3 reduces proposal runtime by 20-100x, in some cases reducing runtime complexity from linear in model size to constant. We also demonstrate nearly an order of magnitude speedup on a complex inverse procedural modeling application.
Cite
Text
Ritchie et al. "C3: Lightweight Incrementalized MCMC for Probabilistic Programs Using Continuations and Callsite Caching." International Conference on Artificial Intelligence and Statistics, 2016.Markdown
[Ritchie et al. "C3: Lightweight Incrementalized MCMC for Probabilistic Programs Using Continuations and Callsite Caching." International Conference on Artificial Intelligence and Statistics, 2016.](https://mlanthology.org/aistats/2016/ritchie2016aistats-c/)BibTeX
@inproceedings{ritchie2016aistats-c,
title = {{C3: Lightweight Incrementalized MCMC for Probabilistic Programs Using Continuations and Callsite Caching}},
author = {Ritchie, Daniel and Stuhlmüller, Andreas and Goodman, Noah D.},
booktitle = {International Conference on Artificial Intelligence and Statistics},
year = {2016},
pages = {28-37},
url = {https://mlanthology.org/aistats/2016/ritchie2016aistats-c/}
}