proximal_convex_conj_l1

odl.solvers.nonsmooth.proximal_operators.proximal_convex_conj_l1(space, lam=1, g=None)[source]

Proximal operator factory of the L1 norm/distance convex conjugate.

Implements the proximal operator of the convex conjugate of the functional

F(x) = lam ||x - g||_1

with x and g elements in space, and scaling factor lam.

Parameters:
spaceLinearSpace or ProductSpace of LinearSpace spaces

Domain of the functional F

lampositive float, optional

Scaling factor or regularization parameter.

gspace element, optional

Element to which the L1 distance is taken. Default: space.zero.

Returns:
prox_factoryfunction

Factory for the proximal operator to be initialized.

See also

proximal_convex_conj_l1_l2

isotropic variant for vector-valued functions

proximal_l1

proximal without convex conjugate

Notes

The convex conjugate F^* of the functional

F(x) = \lambda \|x - g\|_1.

is in the case of scalar-valued functions given by

F^*(y) = \iota_{B_\infty} \big( \lambda^{-1}\, y \big) +
\left\langle \lambda^{-1}\, y,\: g \right\rangle,

where \iota_{B_\infty} is the indicator function of the unit ball with respect to \|\cdot\|_\infty. For vector-valued functions, the convex conjugate is

F^*(y) = \sum_{k=1}^d F^*(y_k)

due to separability of the (non-isotropic) 1-norm.

For a step size \sigma, the proximal operator of \sigma F^* is given by

\mathrm{prox}_{\sigma F^*}(y) = \frac{\lambda (y - \sigma g)}{
\max(\lambda, |y - \sigma g|)}

Here, all operations are to be read pointwise.

For vector-valued x and g, the (non-isotropic) proximal operator is the component-wise scalar proximal:

\mathrm{prox}_{\sigma F^*}(x) = \left(
    \mathrm{prox}_{\sigma F^*}(x_1), \dots,
    \mathrm{prox}_{\sigma F^*}(x_d)
    \right),

where d is the number of components of x.