patrick-kidger / patrick-kidger/optimistix
Proximal gradient and L-BFGS
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 623
- Forks
- 54
- PR merge metrics
- No merged PRs in 30d
Description
Hi! Thank you for making Optimistix!
We're currently relying on JAXopt in NeMoS, but we're looking to transition to Optimistix (+ Optax).
For this, we would need implementations of proximal gradient descent and L-BFGS. We saw that there are plans to implement L-BFGS and some discussion about constrained optimization.
Are these currently in development by any chance? In case you're interested, we'd be happy to contribute.
We're still getting familiar with the libraries and would appreciate guidance on how best to approach this. Some initial thoughts:
- Proximal gradient: I made a toy implementation for Lasso and Ridge that chains
optax.sgdand a step imitating Optax's projections which seems to work withoptimistix.minimise. Do you think this makes sense, or should the proximal operator be handled inside Optimistix instead? - L-BFGS: In my experiments, wrapping
optax.lbfgswithoptimistix.OptaxMinimiserruns without Optax’s line search but fails when it’s enabled.- Would it make sense and be feasible to turn
OptaxMinimiserinto a descent object, then combine it with Optimistix’s searches? - Maybe modify the wrapper to support Optax’s line search transformations?
- Or drop Optax and write the required descent step in Optimistix?
- Would it make sense and be feasible to turn
@BalzaniEdoardo, @billbrod, @sjvenditto, @gviejo
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the linked plans for L-BFGS and constrained optimization, then inspect Optimistix’s minimise entry point and OptaxMinimiser behavior with optax.sgd and optax.lbfgs. Clarify the intended proximal-operator and line-search boundaries with maintainers; done should include agreed implementations for both methods and tests covering their stated behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100