EllipticalSliceSampling.jl: MCMC with Gaussian priors

EllipticalSliceSampling.jl is a package for elliptical slice sampling (ESS), a simple Markov chain Monte Carlo method for models with Gaussian priors. Models can be specified with an arbitrary Julia function of the log-likelihood and a Gaussian prior that follows a simple interface (Distributions.jl works out of the box). Features such as progress logging and parallel sampling are provided automatically by AbstractMCMC.jl. Turing.jl supports ESS, also within Gibbs, through this package.


The Pluto notebook of this poster is available at https://talks.widmann.dev/2021/07/ellipticalslicesampling/

Elliptical slice sampling is a simple Markov chain Monte Carlo (MCMC) method for models with Gaussian priors. As such it is particularly interesting for models based on Gaussian processes. In this talk we
present EllipticalSliceSampling.jl, a Julia package for elliptical slice sampling.

The package offers a simple yet very general implementation of the algorithm. Users can specify models that with an arbitrary Julia function of the log-likelihood and a Gaussian prior that has to satisfy a simple interface. This interface ensures that sampling can be performed efficiently for custom types of priors. It is implemented for Gaussian distributions in Distributions.jl, and hence EllipticalSliceSampling.jl supports these distributions as priors out of the box. ArrayInterface.jl is used to optimize sampling automatically for mutable types of samples, regardless of the employed prior.

Since EllipticalSliceSampling.jl implements the AbstractMCMC.jl interface for MCMC algorithms, features such as progress logging, thinning, discarding of initial samples, and parallel sampling with multiple threads or processes are provided automatically. Due to the simple nature of the elliptical slice
sampling algorithm, EllipticalSliceSampling.jl contains a concise and minimal implementation of the interface and can serve as a reference implementation for other developers.

In general, EllipticalSliceSampling.jl integrates well with other Julia packages. For instance, it can be used to perform inference of Gaussian process models built with AbstractGPs.jl. Additionally, the Turing probabilistic programming language contains first-class support for elliptical slice sampling via
EllipticalSliceSampling.jl. It can serve as inference method for models with solely Gaussian priors and as component of a Gibbs sampler for more general classes of models that contain non-Gaussian priors as well.

References

Murray, I., Adams, R. & MacKay, D.. (2010). Elliptical slice sampling. Proceedings of Machine Learning Research, 9:541-548.