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

Add L-BFGS to Turing #421

Closed
yebai opened this issue Feb 1, 2018 · 10 comments
Closed

Add L-BFGS to Turing #421

yebai opened this issue Feb 1, 2018 · 10 comments

Comments

@yebai
Copy link
Member

yebai commented Feb 1, 2018

The Optim.jl package provides an implementation of BFGS, perhaps we can integrate it with Turing?

@xukai92
Copy link
Member

xukai92 commented Feb 19, 2018

Note: link for LBFGS in Optim.jl - http://julianlsolvers.github.io/Optim.jl/stable/algo/lbfgs/

@emilemathieu
Copy link
Collaborator

In what context shall L-BFGS (a memory efficient quasi-Newton method) be added to Turing ? Is Turing now supporting some sort of optimisation paradigm ?

@yebai
Copy link
Member Author

yebai commented Jul 24, 2018

The Flux.jl package has implementations for several popular optimisation algorithms in ML. Perhaps we can consider to re-use them in Turing:

http://fluxml.ai/Flux.jl/stable/training/optimisers.html

@xukai92 @ChrisRackauckas

@ChrisRackauckas
Copy link
Collaborator

I believe it just added some higher order methods too @MikeInnes

@willtebbutt
Copy link
Member

I completely agree with @yebai that we should try to make use of Flux's optimisers. This is perhaps a useful conversation to have at JuliaCon. It's not clear to me whether making this work would simply be a case of using a Turing.jl VarInfo to construct a Flux.jl param, and then adding a couple of methods to make stuff work with the new optimiser interface, or whether it will be a bit trickier for some reason.

@xukai92
Copy link
Member

xukai92 commented Jul 26, 2018

The new interface seems to be compatible with what Turing.jl's internals can provide. Though until they adapt a generic AD I would assume their grad may have problem with Distributions?

@MikeInnes
Copy link

We don't currently have any gradient definitions for Distributions, but they are easy to add and we'd be very happy to have them in Flux. Let me know if you have any trouble getting that set up; I'll also be around at JuliaCon and would be happy to meet up over this stuff.

@willtebbutt
Copy link
Member

I'll also be around at JuliaCon and would be happy to meet up over this stuff.

This would be very helpful.

@yebai
Copy link
Member Author

yebai commented Jul 30, 2018

We don't currently have any gradient definitions for Distributions, but they are easy to add and we'd be very happy to have them in Flux. Let me know if you have any trouble getting that set up; I'll also be around at JuliaCon and would be happy to meet up over this stuff.

I agree with @willtebbutt and @MikeInnes that we should talk at JuliaCon. Turing and Flux together can offer a much stronger support for ML: while Flux focuses more on Neural Networks (NN) models and optimisation based learning, Turing focuses more on Probabilistic Machine Learning (PML) and Bayesian inference.

In particular, I think it would be nice if Turing and Flux can

  • share AD and optimisation procedures
  • share GPU and parallel computing libraries
  • have compatible syntax for model and inference compositions
  • have example models that combine NN/DL and Bayesian Inference

@yebai
Copy link
Member Author

yebai commented Mar 20, 2019

Closed in favour of #605

@yebai yebai closed this as completed Mar 20, 2019
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

6 participants