Método del Gradiente.


La mayoría de los algoritmos de aprendizaje profundo implican la optimización de algún tipo. La optimización se refiere a la tarea de minimizar o maximizar alguna función f (x) alterando x. Usualmente formulamos la mayoría de los problemas de optimización en términos de minimizar f (x). La maximización se puede lograr mediante un algoritmo de minimización minimizando -f (x).

La derivada es útil para minimizar una función porque nos dice cómo cambiar x para hacer una pequeña mejora en y. Por ejemplo, nosotros sabemos que f (x - ε sign(f ‘ (x))) es menor que f (x) para un ε suficientemente pequeño. Podemos por lo tanto reducir f (x) moviendo x en pequeños pasos con el signo opuesto de la derivada. Esta es la técnica llamada gradiente descendente. (Cauchy, 1847).

Cuando f '(x) = 0, la derivada no proporciona información sobre en qué dirección moverse. Los puntos donde f '(x) = 0 se conocen como puntos críticos o puntos estacionarios. Un mínimo local es un punto donde f (x) es más bajo que en todos los puntos vecinos, por lo que ya no es posible disminuir f (x) realizando pasos infinitesimales. Un máximo local es un punto donde f (x) es más alto que en todos los puntos vecinos, por lo que no es posible aumentar f (x) haciendo pasos infinitesimales. Algunos puntos críticos no son ni máximos ni mínimos. Estos se conocen como puntos de silla de montar.


En el contexto del deep learning, optimizamos funciones que pueden tener muchos mínimos locales que no son óptimos, y muchos puntos de silla rodeados por regiones muy planas. Todo esto hace que la optimización sea muy difícil, especialmente cuando la entrada a la función es multidimensional. Por lo tanto, generalmente nos conformamos con encontrar un valor de f que sea muy bajo, pero no necesariamente mínimo en ningún sentido formal.




Para funciones con entradas múltiples, debemos hacer uso del concepto de derivadas parciales. La derivada parcial ∂i f(x) mide cómo cambia f cuando solo la variable xi aumenta en el punto x. El gradiente generaliza la noción de derivada al caso donde la derivada es con respecto a un vector: el gradiente de f es el vector que contiene todas las derivadas parciales, denotado ∇x f (x). El elemento i del gradiente es la derivada parcial de f con respecto a xi. En dimensiones múltiples, los puntos críticos son puntos donde cada elemento del gradiente es igual a cero.

La derivada direccional en la dirección u (un vector unitario) es la pendiente de la función f en la dirección u. En otras palabras, la derivada direccional es la derivada de la función f (x + αu) con respecto a α, evaluada en α = 0. Usando la regla de la cadena podes ver que:

α  f ( x   +  αu )   = ( u 1 , u 2 , u 3 )  .   α f ( x 1 + α u 1 , x 2   +   α u 2 , x 3   +   α u 3 )

c o n   y i   =   x i   +   α u i

α f   =   y 1 f ( y 1 )   +   y 2 ( y 2 ) +   y 3  f ( y 3 )   =   y  f ( y )

Cambiando de variable y por x, y tendiendo en cuenta que  ( u 1 ,   u 2 ,   u 3 )   =   u T

α f ( x   +  αu )   =   u T x  f ( x )

Para minimizar f, nos gustaría encontrar la dirección en la que f disminuye más rápido. Podemos hacer esto usando la derivada direccional:

m i n u    u T x  f ( x )   =   m i n u    u 2   x  f ( x ) 2   cos θ

donde θ es el ángulo entre u y el gradiente. Sustituyendo en || u || 2 = 1 e ignorando factores que no dependen de u, simplificamos a “min cos θ”. Esto se minimiza cuando θ = 180°, osea cuando u apunta en la dirección opuesta al gradiente, así que podemos disminuir f moviéndonos en la dirección del gradiente negativo. Esto se conoce como el método de descenso más inclinado o gradiente.

Con cada paso, tenemos un nuevo punto:

x '   =  x  - ε x  f ( x )  

donde ε es la tasa de aprendizaje, un escalar positivo que determina el tamaño del paso. Podemos elegir ε de diferentes maneras. Un enfoque popular es establecer ε en una pequeña constante. A veces, podemos resolver el tamaño del paso que hace desaparecer la derivada direccional. Otro enfoque es evaluar f (x - ε ∇ x f (x)) para varios valores de ε y elegir el que dé como resultado el valor más pequeño de la función objetivo. Esta última estrategia se llama búsqueda de línea.

Cuando se realiza una implementación computacional de este método, es necesario establecer un criterio de parada para cada iteración del algoritmo. Para esto, se puede definir un umbral η > 0 y detener el algoritmo cuando los errores relativos en los valores de f(x) cumplan:

  f ( x ' )   -  f ( x )   m a x   { 1 ,   f ( x ' )   }  < η


Bibliografía

  • Cauchy, A. (1847). Méthode générale pour la résolution de systèmes d’équations simul- tanées. In Compte rendu des séances de l’académie des sciences, pages 536–538. 83 , 224

Comentarios

Entradas populares de este blog

Fundamentos de Git

Undeflow y Overfolw