Básicamente, para cualquier Norma Schatten el algoritmo es bastante sencillo.
Si utilizamos la letra mayúscula $ A $ para Matriz y Letra minúscula para Vector que:
$$ {\operatorname*{Prox}}_{\lambda \left\| \cdot \right\|_{p}} \left( A \right) = \arg \min_{X} \frac{1}{2} \left\| X - A \right\|_{F}^{2} + \lambda \left\| X \right\|_{p} $$
Dónde $ \left\| X \right\|_{p} $ es el $ p $ Norma Schatten de $ X $ .
Definición de $ \boldsymbol{\sigma} \left( X \right) $ como un vector de los Valores Singulares de $ X $ (Véase el Descomposición de valores singulares ).
Entonces el cálculo del operador proximal es el siguiente:
- Aplicar la SVD en $ A $ : $ A \rightarrow U \operatorname*{diag} \left( \boldsymbol{\sigma} \left( A \right) \right) {V}^{T} $ .
- Extraer el vector de Valores Singulares $ \boldsymbol{\sigma} \left( A \right) $ .
- Calcular el Operador Proximal del vector extraído utilizando la Norma Vectorial $ p $ : $ \hat{\boldsymbol{\sigma}} \left( A \right) = {\operatorname*{Prox}}_{\lambda \left\| \cdot \right\|_{p}} \left( \boldsymbol{\sigma} \left( A \right) \right) = \arg \min_{x} \frac{1}{2} \left\| x - \boldsymbol{\sigma} \left( A \right) \right\|_{2}^{2} + \lambda \left\| x \right\|_{p} $ .
- Devuelve el Proximal de la Norma de la Matriz: $ \hat{A} = {\operatorname*{Prox}}_{\lambda \left\| \cdot \right\|_{p}} \left( A \right) = U \operatorname*{diag} \left( \hat{\boldsymbol{\sigma}} \left( A \right) \right) {V}^{T} $ .
El mapeo de Norma de la matriz en Norma Schatten :
- Norma de Frobenius - Dada por $ p = 2 $ en Norma Schatten .
- Norma nuclear - Dada por $ p = 1 $ en Norma Schatten .
- Norma espectral (El $ {L}_{2} $ Norma inducida de una matriz) - Dada por $ p = \infty $ en Norma Schatten .
Así que en tu caso utiliza el Norma Schatten donde $ p = 1 $ .
El operador proximal de la norma vectorial para $ {L}_{1} $ La norma es el Operador de umbralización suave .