-
Notifications
You must be signed in to change notification settings - Fork 30
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
Reimplement Nuisance to sample in an unconstrained space #1007
Comments
I was more thinking that the attribute table would contain a special list I don't think it's sufficient to have a subclass of
That's actually the necessary behavior. If a Nuisance is being optimized using a scoring function in which it never appears, this is equivalent to including a uniform restraint on the untransformed parameter. But if the transformed parameter is being optimized, the corresponding restraint would not be uniform due to the Jacobian correction. i.e. to maintain the default behavior that an unrestrained untransformed parameter is uniform, the Jacobian correction to the score is needed even if the parameter is not restrained with a prior. |
Here's a better alternative: Implement a child of The only complicated thing here is what I mentioned in the last post. The log Jacobian score adjustment should be invariant to re-weighting. Right now optimizers like |
This is primarily used when an unintuitive transformation of a constrained parameter exists in an unconstrained space. To sample in the unconstrained space but represent the parameter in the constrained space requires an adjustment to the score and gradient, handled by JacobianScoreAdjuster. Relates #1007
All the pieces are there for uni- and multi-variate adjustment of score and gradients. Without modifying |
Because tempering divides score and its gradient by the temperature, the Jacobian ajustment must be multiplied by the temperature so that it is unaffected by tempering. Relates #1007
Drawing from some of the tricks used in probabilistic programming packages, I'm proposing a reimplementation to
IMP.isd.Nuisance
in IMP that should enable better sampling. The beginnings of an implementation can be found here. How this changes things is detailed in the bullet points in the below exchanges with @benmwebb:@sdaxen:
@benmwebb:
@sdaxen:
@benmwebb:
The text was updated successfully, but these errors were encountered: