JuliaSmoothOptimizers / ShiftedProximalOperators.jl

Proximal operators for use with RegularizedOptimization
Other
7 stars 8 forks source link

Shifted Composite L1 Norm #123

Closed MaxenceGollier closed 4 months ago

MaxenceGollier commented 8 months ago

Implementation of the proximal operator of a composite term $||Ax+b||_1$. This is different from other operators of this library in the fact that shifts are no longer simply $\psi(x+s)$ for some non-differentiable function $\psi$. Hence, some abstract types are added in ShiftedProximalOperators.jl.

In practice, such proximal operators are useful when we want to make a model of a penalty term $x \xrightarrow{} ||c(x)||_1$. The first-order model of the penalty term is then $s \xrightarrow{} ||c(x) + J(x)s||_1$.

As mentionned above, the shift is no longer simply $\psi(x+s)$. Hence, we add a CompositeNormL1 struct which mimics the unshifted function and implements $x\xrightarrow{} ||c(x)||_1$. On shifts, this transforms to a ShiftedCompositeNormL1 struct which implements $s\xrightarrow{} ||c(x)+J(x)s||_1$.