Introducción
Imaginemos que tenemos una función y nos gustaría encontrar su mínimo. Qué harías ?
Sencillo ¿verdad? Sólo necesitamos resolver la siguiente ecuación:
La cuestión es que encontrar la fórmula de no siempre es fácil, ya que tienden a ser extremadamente complicadas, especialmente en el aprendizaje profundo donde tratamos con funciones complejas. Entonces necesitamos encontrar otro método que pueda proporcionarnos el mínimo de una función sin la necesidad de encontrar la fórmula de la derivada .
Construyamos algo de intuición
Supongamos que tenemos una función f con la gráfica correspondiente:
Comencemos con un punto aleatorio . El objetivo es mover este punto y acercarlo cada vez más a de modo que x*. Entonces el problema se puede dividir en dos partes:
-
¿En qué dirección debemos mover el punto ? Izquierda o derecha ?
-
¿Cuánto debemos moverlo?
La dirección
Construyamos algo de intuición para responder la primera pregunta. Fíjate en el siguiente punto:
Tenga en cuenta que:
-
cuando el punto está a la derecha del punto óptimo su recta tangente sube.
-
cuando el punto está a la derecha del punto óptimo su recta tangente desciende.
La dirección de una recta está determinada por el signo de su pendiente:
-
Una recta sube que la pendiente es positiva.
-
Una recta desciende que la pendiente es negativa.
Tenga en cuenta que: \
La pendiente de la recta tangente de una función en un determinado punto no es más que la derivada en ese punto :
Entonces, como respuesta a la pregunta "¿Dónde deberíamos mover ?":
-
a la derecha de Necesitamos mover hacia la izquierda.
-
a la izquierda de Necesitamos mover hacia la derecha.
Los pasos
Ahora, para la segunda pregunta, ¿Cuánto deberíamos mover ?
Eche un vistazo a los siguientes ejemplos:
Podemos concluir que:
-
está cerca de => La pendiente de la tangente es pequeña => es pequeña.
-
está distante de => La pendiente de la tangente es grande => es grande.
Al responder ambas preguntas, llegamos a la conclusión de que solo el conocimiento de la derivada en el punto puede darnos mucha información sobre la dirección y la distancia del punto óptimo .
Descenso de gradiente
El descenso de gradiente es la formulación de las respuestas de las dos preguntas anteriores. Es un algoritmo iterativo de optimización que se aproxima al mínimo de la función a partir de un punto inicial aleatorio . El algoritmo se establece de la siguiente manera:
dónde:
-
no es más que la derivada de en el punto .
-
es una constante positiva que determina qué tan grandes serán los pasos.
Darse cuenta de:
-
está a la derecha de => => => se mueve hacia la izquierda.
-
está a la izquierda de => => => se mueve hacia la derecha.
-
cerca de => cerca de => Pequeña actualización a .
Prueba
-
¿Cuándo deja de iterarse el descenso de gradiente?
-
Cuando es lo suficientemente pequeño.
-
Cuando está cerca de .
-
Cuando . XXX
-
¿Cómo elegimos :
-
Lo elegimos al azar. XXX
-
Lo tomamos en el entorno de .
-
Depende del problema.
-
¿Por qué necesitamos el descenso de gradiente?
-
Porque los ordenadores no son lo suficientemente potentes para calcular derivadas.
-
Porque es extremadamente difícil encontrar fórmulas derivadas de modelos de aprendizaje profundo. XXX
-
Porque las funciones tienen más de un mínimo local.