Programación lineal y proximal · Definición

Método de gradiente proximal

optimización continuaprogramación lineal y proximal

Antes de empezar necesitas conocer

Cuando una parte del objetivo es suave y otra no lo es, conviene tratar cada una por separado. Este método combina ambas ideas en una sola iteración.

Definición

El gradiente proximal minimiza \( f(x)+g(x) \), con \( f \) convexa y suave y \( g \) convexa posiblemente no diferenciable, alternando un paso de gradiente en \( f \) y un paso proximal en \( g \).

\[x_{k+1}=\operatorname{prox}_{t_k g}\left(x_k-t_k\nabla f(x_k)\right)\]

Si \( f \) tiene gradiente \( L \)-Lipschitz y \( g \) es convexa y cerrada, con paso \( t \in (0, 1/L] \) la sucesión generada cumple \( F(x_k)-F^* \le \frac{\|x_0-x^*\|^2}{2tk} \), donde \( F=f+g \). Cuando \( g=0 \) el método se reduce al descenso de gradiente clásico, y cuando \( f=0 \) se reduce al algoritmo del punto proximal.

Consideremos minimizar \( \tfrac12\|Ax-b\|^2+\lambda\|x\|_1 \). Aquí \( f(x)=\tfrac12\|Ax-b\|^2 \) tiene gradiente \( A^\top(Ax-b) \), y \( g(x)=\lambda\|x\|_1 \) tiene prox dado por el umbral suave componente a componente. Cada iteración hace un paso de gradiente en \( f \) y luego aplica el umbral, produciendo soluciones dispersas.

Un error típico es aplicar el paso de gradiente también sobre \( g \), es decir, derivar \( \|x\|_1 \) donde no existe. Esto impide usar el método cuando \( g \) tiene puntos angulosos. La regla correcta es evaluar el gradiente solo en \( f \) y dejar \( g \) para el operador proximal.

Para pensar

¿Por qué no se puede tomar el gradiente de \( g \) en \( x=0 \) cuando \( g(x)=|x| \)?

Porque \( |x| \) no es diferenciable en \( 0 \), así que no existe gradiente y por eso \( g \) se trata con el operador proximal.

Ejercicios 10

Referencias

  • Stephen Boyd, Lieven Vandenberghe, Convex Optimization, 1st edition, Cambridge University Press, 2004.
  • Jorge Nocedal, Stephen J. Wright, Numerical Optimization, 2nd edition, Springer, 2006.