PosteriorDB Implementations for Turing.jl
- Mentors
- Tor Erlend Fjelde
- Organization
- The Julia Language
- Technologies
- julia, Turing, Stan
- Topics
- machine learning, statistics, Bayesian Inference
Benchmarking sampler implementations for Bayesian inference is hard — the algorithms are inherently stochastic, and often produce only Monte Carlo samples of some distribution of interest. As a result, Bayesian inference lags other areas of machine learning in the availability of common benchmarks. To help solve this, the Stan team put together posteriordb, described as:
"a set of posteriors, i.e. Bayesian statistical models and data sets, reference implementations in probabilistic programming languages, and reference posterior inferences." (posteriordb Github readme).
This proposal would add Turing implementations for most of these models, facilitating easier sampler benchmarking in Turing. This database would also serve as a set of examples of Turing best practices. The project will result in a database of 120+ varied Bayesian models written in Turing, representing translations of a database of corresponding Stan models.
Regarding deliverables, the proposal pdf contains a detailed and complete schedule, directly blocking out time for 130+ of the posteriors, with some additional stretch goals included. As a summary,
(1) Initial weeks are spent getting familiar with Turing best practices while building out 50+ of the simplest models (mostly, variants of Bayesian regression).
(2) Weeks leading up to the midterm assessment are blocked off for GLMMs and Bayesian ODEs.
(3) Weeks following the midterm assessment are dedicated to two types of discrete models — first, models with a discrete structure amenable to simply summing out the discrete components (e.g. mixture models). Second, I'll implement HMMs, which require some specific algorithms to match the Stan posteriors.
(4) Chip away at remaining models that don't neatly fit into a specific category, for example, neural networks, splines, and gaussian processes.
If a week ends with models incomplete, I'll move on to the next week, ensuring a varied selection of models make it into the database.