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

Allow the GradientJumps to be adaptive in cov_cf #12

Open
vhaasteren opened this issue Apr 1, 2016 · 0 comments
Open

Allow the GradientJumps to be adaptive in cov_cf #12

vhaasteren opened this issue Apr 1, 2016 · 0 comments
Assignees

Comments

@vhaasteren
Copy link
Member

Currently, the GradientJumps do not modify cov_cf during the run. This is because the NUTSJump tunes epsilon (the stepsize) during the burn-in. In tests, I found that tuning epsilon while modifying cov_cf gave problems. However, that was with a buggy coordinate transform. So, in actuality, I have not tested it.

Note, however, that updating cov_cf makes the chain non-markovian.

Extra notes that may be of use about the implementation:

  • update_cf (not used currently) contains code to keep the determinant of cov_cf the same. This was originally to allow simultaneous tuning with epsilon. Completely untested.
  • Perhaps it is better to not do cov_cf and espilon simultaneously. Re-tune epsilon after cov_cf is updated, and after the (new) burn-in start saving samples.
  • GradientJumps contain their own counter self.iter. All GradientJump derivatives should call super(XXXJump, self).call so that self.iter is updated. This value is used by NUTSJump to tune epsilon. If one decides to re-tune epsilon, make sure to reset self.iter to zero! Note that self.t0 will always offset the iterator with '10'.
  • The tuning of epsilon only depends on the values alpha and nalpha returned by the function build_tree. The value alpha/nalpha represents the average acceptance rate over the current binary tree. By default, this is tuned to be equal to self.delta, which defaults to 60%.
  • Note that the NUTS accepts such steps by itself, so the PTMCMC sampler will always accept the step. The total number of likelihood evaluations of in the tree (nalpha) is always a power of two.
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

2 participants