-
-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Implement robust U-turn check #3605
Conversation
Following the recent discussion on the Stan side: stan-dev/stan#2800 For experiment, do not merge.
Thanks to @aseyboldt's design, adding additional U turn check to pymc3 NUTS is actually pretty straightforward, because we are already saving the beginning and the end point of each tree trajectory. |
Following the recent discussion on the Stan side: stan-dev/stan#2800 For experiment, do not merge.
Looks like this needs a rebase. |
Codecov Report
@@ Coverage Diff @@
## master #3605 +/- ##
==========================================
+ Coverage 89.77% 89.79% +0.02%
==========================================
Files 134 134
Lines 20027 20047 +20
==========================================
+ Hits 17980 18002 +22
+ Misses 2047 2045 -2
|
This looks good to me, I'd be in favor of merging. |
+1 I'll also leave this here for us to keep an eye on :D |
👍 |
Summary: Pull Request resolved: #864 An issue with the U-turn condition was discovered and discussed in [this post in Stan forum](https://discourse.mc-stan.org/t/nuts-misses-u-turns-runs-in-circles-until-max-treedepth/9727) TL;DR: we can make the U-turn condition more robust by introducing two additional checks across subtrees. This can help us avoid missing U-turns for approximately iid normal models. {F619223264} Since the tree combining code are almost identical in `_build_tree` and `propose`, I also take the chance to refactor them into a common function called `_combine_tree`. If you look closely you will notice that most part of `_combine_tree` are moved from existing code as-is. The only addition is the two additional call to `_is_u_turning` Related PR that implements this change: - Stan: stan-dev/stan#2800 - PyMC3: pymc-devs/pymc#3605 - Turing.jl: TuringLang/AdvancedHMC.jl#207 - DynamicHMC.jl: tpapp/DynamicHMC.jl#145 Reviewed By: neerajprad Differential Revision: D28735950 fbshipit-source-id: ada4ebcad26a87ef5e697f422b5c5b17007afe42
Following the recent discussion on the Stan side: stan-dev/stan#2800