pyproximal.SingularValuePenalty#

class pyproximal.SingularValuePenalty(dim, penalty)[source]#

Proximal operator of a penalty acting on the singular values.

Generic regularizer \(\mathcal{R}_f\) acting on the singular values of a matrix,

\[\mathcal{R}_f(\mathbf{X}) = f(\boldsymbol\lambda)\]

where \(\mathbf{X}\) is a matrix of size \(M \times N\) and \(\boldsymbol\lambda\) is the corresponding singular value vector.

Parameters
dimtuple

Size of matrix \(\mathbf{X}\).

penaltypyproximal.ProxOperator

Function acting on the singular values.

Notes

The pyproximal implementation allows penalty to be any pyproximal.ProxOperator acting on the singular values; however, not all penalties will result in a mathematically accurate proximal operator defined this way. Given a penalty \(f\), the proximal operator is assumed to be

\[\prox_{\tau \mathcal{R}_f}(\mathbf{X}) = \mathbf{U} \diag\left( \prox_{\tau f}(\boldsymbol\lambda)\right) \mathbf{V}^H\]

where \(\mathbf{X} = \mathbf{U}\diag(\boldsymbol\lambda)\mathbf{V}^H\), is an SVD of \(\mathbf{X}\). It is the user’s responsibility to check that this is true for their particular choice of penalty.

Methods

__init__(dim, penalty)

affine_addition(v)

Affine addition

chain(g)

Chain

grad(x)

Compute gradient

postcomposition(sigma)

Postcomposition

precomposition(a, b)

Precomposition

prox(**kwargs)

proxdual(**kwargs)