Skip to content

Compare NUTS HMC vs CRHMC

Vissarion Fisikopoulos edited this page Mar 3, 2023 · 4 revisions

Background

This project is about sampling from high dimensional log-concave distributions with (i) No-U-Turn Hamiltonian Monte Carlo (HMC) and (ii) Constrained Riemannian Hamiltonian Monte Carlo Samplers.

The contributor will have to tune and perform benchmarks for those two methods in various metabolic networks. Python interfaces should be implemented wherever needed.
Uniform sampling should be treated as a special case (a good place to start also) where HMC becomes Billiard walk.

Useful links

https://github.com/GeomScale/volesti/pulls?q=is%3Apr+author%3Aiakoviid+is%3Aclosed

https://github.com/GeomScale/volesti/pull/216

Mentors

Contributors, please contact both mentors below after completing at least one of the tests below.

  • Vissarion Fisikopoulos <vissarion.fisikopoulos at gmail.com> is an expert in mathematical software, computational geometry and optimization, and has previous GSOC mentoring experience with Boost C++ libraries (2016-2020) and the R-project (2017-2020).

  • Elias Tsigaridas <elias.tsigaridas at inria.fr> is an expert in computational nonlinear algebra and geometry with experience in mathematical software. He has contributed to the implementation, in C and C++, of several solving algorithms for various open-source computer algebra libraries and has previous GSOC mentoring experience with the R-project (2019) and Geomscale (2020).

Tests

Contributors, please do one or more of the following tests before contacting the mentors above.

  • Easy: Download, compile and run a simple sampling example with both C++ and R interfaces of volesti. For example, you can sample points from a 100-dimensional cube using the C++ HMC algorithm implemented in volesti for various distributions.

  • Medium: Add counters in C++ code of volesti to count the average number of reflections per HMC step. For different (a) integration time, (b) step length in ODE solver, (c) dimension, compute the PSRF/run-time and Effective Sample Size (ESS)/run-time for a large number of samples and report.

  • Hard: Implement in C++ an approximate and an exact oracle for the gradient of the Spherical Gaussian distribution with unit variance and repeat the experiments requested by the Medium test. Compare the performances of two cases and report.