Skip to content

StepSize Class #1592

Description

@epapoutsellis

In #1586, I presented the new PGA class that implements the following

$$x_{k+1} = prox_{\gamma_{k}g}(x_{k} - \gamma_{k}D(x_{k})\nabla f(x_{k}))$$

Similar to #1588 , where a Preconditioner class is passed for D, I have implemented a new class called StepSizeMethod that changes the step size $\gamma_{k}$. Actually, it changes the Lispchitz constant L for the function f.

It is a ABC + DataClass. At the moment, there are ConstantStepSize and ArmijoStepSize children classes. The constant case returns the constant step size that the user passes or the step size from the L attribute of the function f, if it exists. The ArmijoStepSize is

Screen Shot 2023-11-23 at 12 12 48

Since StepSizeMethod works as a Callable class, it has access to self which is the actual algorithm. I have implemented the Backtracking which is for ISTA/FISTA (non-smooth) objectives , Barzilai-Borwein for deterministic or stochastic optimisation, a nice step-size method from Malitsky, Mishchenko which later extended to the non-smooth case by Patrinos et al. Also, our users can define their own step size rule, for instance

Screen Shot 2023-11-23 at 12 25 38

from Twyman et al . Also, from SklearnSGD

Screen Shot 2023-11-23 at 12 27 26

Example: using Armijo for GD and Accelerated GD = FISTA (g = 0)

Screen Shot 2023-11-23 at 12 40 28

Example: GD and GD-Armijo for MRI recon

Screen Shot 2023-11-23 at 15 46 08

from this notebook
@ckolbPTB . Atm, it is tested but not unittested.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions