Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR] low rank HMC? #3102

Open
SteveBronder opened this issue Feb 17, 2022 · 2 comments
Open

[FR] low rank HMC? #3102

SteveBronder opened this issue Feb 17, 2022 · 2 comments

Comments

@SteveBronder
Copy link
Collaborator

SteveBronder commented Feb 17, 2022

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.

  1. low_rank_e_metric and low_rank_e_point like dense_e_metric.hpp and dense_e_point.hpp which would use the code from pathfinder for getting the inverse hessian from here

  2. low_rank_e_nuts and adapt_low_rank_e_nuts class 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

@betanalpha
Copy link
Contributor

betanalpha commented Mar 1, 2022 via email

@bob-carpenter
Copy link
Contributor

I believe Steve's suggesting the specific factor-based representation of a symmetric positive definite matrix as

Sigma = u' * v + diag(w)

where u and v are K x N matrices and w is an N-vector.

I agree with @betanalpha that this is a hornet's nest of design if we want to make it more general. I can think of at least two other basic structures that might be worth considering,

  • block-diagonal, and
  • HODLR (hier off-diag low rank).

And then we can add extra irregular sparse structure on top of this by addition. Perhaps transformed from a sparse symmetric representation using matrix exp.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants