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
Hessian-vector products #356
Comments
@dpo and @abelsiqueira have been working on this, not sure if the code is public. |
Well, my initial reaction would be: sure. I'm still very happy about the "old" trust region (I've been using it in my personal projects), and you're doing a good job keeping it up to date. That last part is relevant, because even if we have more active people on here than earlier, new solvers is kind of a... tricky issue. On one had we might be tempted to say "let's implement everything", on the other hand we need someone to maintain all that code. So if you're willing to make a prototype, test, and maintain it, I'm all for it. |
Sounds good, I think I'm up for it. What kind of interface do you suggest? Would we add a field named something like If the user doesn't specify an Also, any plans to use @jrevels's |
Hello, thanks for the mention, Miles. We have implemented a Matrix-Free Trust-Region Newton Method for unconstrained minimization, i.e., using Hessian-Vector products. We haven't made a released yet, but it is usable: https://github.com/JuliaSmoothOptimizers/Optimize.jl/blob/master/src/solver/trunk.jl. Both me and Dominique are a little swamped at the moment, but implementing competitive Matrix-Free methods for Large Scale problems is one of our goals. |
I was hoping to take a look at ReverseDiff AD at some point |
@jeff-regier we've got basic ReverseDiff support now if you dare try master. Do note, that there are quite a few breaking changes, soo... |
That's good. I've got an implementation of Hessian-free trust-region optimization now over at Celeste.jl, on the https://github.com/jeff-regier/Celeste.jl/blob/jr/cg2/src/cg_trust_region.jl We're still testing it. The code is solid but I'd like to build in support for preconditioning still. |
Are you aware of our preconditioning code in optim ? |
I wasn't, but now I see |
Great, it's the work of @cortner who's also been using it in his work, but of course suggestions and improvements are still welcome. |
Maybe this is obvious to you: in the TR context, the preconditioner doesn't just give you a PCG method, but also specifies the TR topology. Then, when you git the TR boundary you start solving a generalised eval problem instead of the standard eval problem. |
Have you all considered adding optimization methods that make use of Hessian-vector products, but that don't explicitly form Hessians? I've been thinking about writing a version of
newton_trust_region
that does that, essentially using conjugate gradient iterations to multiply the gradient by the inverse Hessian. Is that something you'd be interested in including in Optim.jl?jeff-regier/Celeste.jl#380
The text was updated successfully, but these errors were encountered: