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

PINT should have a derivative-aware MCMC method #1303

Open
aarchiba opened this issue Jun 24, 2022 · 5 comments
Open

PINT should have a derivative-aware MCMC method #1303

aarchiba opened this issue Jun 24, 2022 · 5 comments

Comments

@aarchiba
Copy link
Contributor

When derivatives of the objective function are available, MCMC methods that use them, for example Hamiltonian Monte Carlo, can be very much faster than MCMC methods that aren't. PINT has gone to great lengths to make derivatives available, so we should do this. PyMC3 includes the supposedly tuning-free "NUTS" sampler, so it could probably be used for this, although there would probably be some plumbing work. This could probably work for event_optimize as well, where faster runtimes would be extremely welcome. I'm not sure how well it parallelizes.

@aarchiba
Copy link
Contributor Author

The NUTS sampler: https://arxiv.org/abs/1111.4246

@aarchiba
Copy link
Contributor Author

Parallel tempering to get more parallelism: http://auai.org/uai2017/proceedings/papers/289.pdf

@aarchiba aarchiba changed the title PINT should hace a derivative-aware MCMC method PINT should have a derivative-aware MCMC method Jun 24, 2022
@dlakaplan
Copy link
Contributor

@abhisrkckl: this may be relevant to you

@abhisrkckl
Copy link
Contributor

I think it is better to have an API that provides lnlikelihood, lnlikelihood_gradient, lnprior, and prior_transform than to have sampling methods baked into PINT itself. This will allow users to use the sampler of their choice rather than be tied to what PINT itself has.

I am working on an interface like this. I have not implemented lnlikelihood_gradient yet but it should be straightforward to do using the design matrix.

@abhisrkckl
Copy link
Contributor

Related discussion in issue #1310

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