pyproximal.Geman#
- class pyproximal.Geman(sigma, gamma=1.3)[source]#
Geman penalty.
The Geman penalty (named after its inventor) is a non-convex penalty [1]. 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
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)