67 votos

¿Cuál es la diferencia entre el descenso por gradiente proyectado y el descenso por gradiente ordinario?

Acabo de leer sobre el descenso de gradiente proyectado pero no vi la intuición para usar el proyectado en lugar del descenso de gradiente normal. ¿Podrías decirme la razón y las situaciones preferibles del descenso de gradiente proyectado? ¿Qué aporta esa proyección?

119voto

p.s. Puntos 2897

A un nivel básico, el descenso de gradiente proyectado no es más que un método más general para resolver un problema más general.

El descenso gradiente minimiza una función moviéndose en la dirección negativa del gradiente en cada paso. No existe ninguna restricción sobre la variable. $$ \text{Problem 1:} \min_x f(x) $$ $$ x_{k+1} = x_k - t_k \nabla f(x_k) $$

Por otro lado, el descenso de gradiente proyectado minimiza una función sujeta a una restricción. En cada paso nos movemos en la dirección del gradiente negativo, y luego "proyectamos" sobre el conjunto factible.

$$ \text{Problem 2:} \min_x f(x) \text{ subject to } x \in C $$

$$ y_{k+1} = x_k - t_k \nabla f(x_k)\\ x_{k+1} = \text{arg} \min_{x \in C} \|y_{k+1}-x\| $$

12voto

wwehner Puntos 41

He encontrado dos enfoques para el algoritmo.

Enfoque 1:

  1. $d_k = Pr(x_k-\nabla f(x_k)) - x_k$ dirección de búsqueda proyectada sobre el conjunto factible
  2. $x_{k+1} = x_k + t_k d_k$

Enfoque 2: (Igual que la respuesta de p.s.)

  1. $y_k = x_k - t_k \nabla f(x_k)$
  2. $x_{k+1} = Pr(y_k)$ : Proyecto $y_k$ en un conjunto factible

donde $Pr$ es el operador de proyección.

He comprobado que el método 1 funciona de forma más fiable. El enfoque 2 no converge si el minimizador está en el borde del conjunto factible y ese borde es perpendicular al gradiente del objetivo. Por ejemplo, las direcciones de búsqueda rebotan alrededor del minimizador en el algoritmo 2.
Figure

Vea aquí la implementación en matlab https://github.com/wwehner/projgrad

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X