[FR] low rank HMC?
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.8k
- Forks
- 388
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 15
Description
Summary:
It would be nice to have versions of HMC/NUTS that support a low-rank plus diagonal metric a la L-BFGS.
This will require the following.
-
low_rank_e_metricandlow_rank_e_pointlike dense_e_metric.hpp and dense_e_point.hpp which would use the code from pathfinder for getting the inverse hessian from here -
low_rank_e_nutsandadapt_low_rank_e_nutsclass like diag_e_nuts.hpp and adapt_diag_e_nuts.hpp
There's more information about this in @bbbales2 thesis, and refined in a joint arXiv paper with @pourzanj and @avehtari:
Current Version:
v2.29.0
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading dense_e_metric.hpp, dense_e_point.hpp, diag_e_nuts.hpp, and adapt_diag_e_nuts.hpp to understand the existing metric and NUTS class structure. Then inspect the inverse-Hessian code linked in services/pathfinder/single.hpp and the referenced paper; done means implementing the requested low-rank metric and NUTS variants with adaptation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100