# pyproximal.Geman#

class pyproximal.Geman(sigma, gamma=1.3)[source]#

Geman penalty.

The Geman penalty (named after its inventor) is a non-convex penalty . The pyproximal implementation considers a generalized model where

$\mathrm{Geman}_{\sigma,\gamma}(\mathbf{x}) = \sum_i \frac{\sigma |x_i|}{|x_i| + \gamma}$

where $${\sigma\geq 0}$$, $${\gamma>0}$$.

Parameters
sigmafloat

Regularization parameter.

gammafloat, optional

Regularization parameter. Default is 1.3.

Notes

In order to compute the proximal operator of the Geman penalty one must find the roots of a cubic polynomial. Consider the one-dimensional problem

$\prox_{\tau \mathrm{Geman}(\cdot)}(x) = \argmin_{z} \mathrm{Geman}(z) + \frac{1}{2\tau}(x - z)^2$

and assume $${x\geq 0}$$. Either the minimum is obtained when $$z=0$$ or when

$\tau\sigma\gamma + (z-x)(z+\gamma)^2 = 0 .$

The pyproximal implementation uses the closed-form solution for a cubic equation, and discards infeasible roots, to find the minimum.

1

Geman and Yang “Nonlinear image recovery with half-quadratic regularization”, IEEE Transactions on Image Processing, 4(7):932 – 946, 1995.

Methods

 __init__(sigma[, gamma]) affine_addition(v) Affine addition chain(g) Chain elementwise(x) grad(x) Compute gradient postcomposition(sigma) Postcomposition precomposition(a, b) Precomposition prox(**kwargs) proxdual(**kwargs)

## Examples using pyproximal.Geman# Concave penalties

Concave penalties