pyproximal.Log1#

class pyproximal.Log1(sigma, delta=1e-10)[source]#

Logarithmic penalty 2.

The logarithmic penalty (Log) is defined as

\[\mathrm{Log}_{\sigma,\delta}(\mathbf{x}) = \sigma \sum_i \log(|x_i| + \delta)\]

where \({\sigma>0}\), \({\gamma>0}\).

Parameters
sigmafloat

Multiplicative coefficient of Log norm.

deltafloat, optional

Regularization parameter. Default is 1e-10.

Notes

The logarithmic penalty gives rise to a log-thresholding that is a smooth alternative falling in between the hard and soft thresholding.

The proximal operator is defined as [1]:

\[\begin{split}\prox_{\tau \sigma log}(\mathbf{x}) = \begin{cases} 0.5 (x_i + \delta - \sqrt{(x_i-\delta)^2-2\tau \sigma}), & x_i < -x_0 \\ 0, & -x_0 \leq x_i \leq x_0 \\ 0.5 (x_i - \delta + \sqrt{(x_i+\delta)^2-2\tau \sigma}), & x_i > x_0\\ \end{cases}\end{split}\]

where \(x_0=\sqrt{2 \tau \sigma} - \delta\).

1

Malioutov, D., and Aravkin, A. “Iterative log thresholding”, Arxiv, 2013.

Methods

__init__(sigma[, delta])

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)