El descenso del gradiente es un concepto que estoy utilizando ahora mismo y de manera muy amplia en el estudio de Redes Neuronales; de hecho en general en la carrera de Data Science. Se me dificultó incluso ya habiendo tomado el curso de cálculo multivariable. Por eso quisiera en este tutorial dar luces sobre cómo funciona y compartir lo que he aprendido sobre éste hasta el momento. Cualquier duda, aporte, corrección es bienvenido en los comentarios. Gracias de antemano.
Repasemos una vez más de la clase, la definición del gradiente.
Aquí tenemos que el gradiente es un vector que surge de derivar parcialmente las componentes x e y (cuando estamos en R^3). Por tanto tenemos:
Y la generalización para R^n sería:
Es decir que tienes tantas componentes como tu dominio tiene.
Así pues podemos asumir que su interpretación geométrica está dada por un vector en el dominio. Veámos un ejemplo usando la función que el profe Devars usó en la clase del descenso del gradiente.
Su vector gradiente es:
Ahora bien, este vector nos está mostrando que dentro tiene en realidad dos funciones. Esto se traduce en que al tomar puntos arbitrarios del dominio, por ejemplo el punto (x = 1, y = 1), tendrás un vector específico en el dominio (plano xy). Si reemplazamos con este punto de ejemplo, al que llamaré P1=(1, 1), el vector que le corresponde es el vector en negro que está en el ‘piso’ de nuestra gráfica:
Tabulemos nuestra función:
Al pasar de P1 a P2, z tuvo un incremento de 2 a 18, ¡Un crecimiento significativo!
Esto tiene sentido porque es una función cuadrática y se puede decir que crece más o menos rápido.
Ahora bien, en cuanto al descenso, si el gradiente nos dice hacia dónde tomar camino para obtener el mayor crecimiento, el opuesto al gradiente es decir el gradiente negativo nos dice hacia dónde tomar camino para obtener el mínimo crecimiento o el valor más negativo. Si lo graficamos en el mismo punto tendremos el vector rosa:
Como vemos esta dirección nos conduce a los puntos del dominio que van a hacer z más pequeño (o más negativo). Sin embargo sin andamos hasta el punto que nos indica, es decir P3 = (-1,-1) ó incluso sin andamos mucho más en esa misma dirección los puntos que encontraremos volverán a incrementar z. Para solucionar esto tendremos que avanzar en la dirección del vector rosa pero sólo un poco.
Esto se logra multiplicando el vector rosa por un coeficiente menor a 1 (una fracción). Esto conecta con lo que en la clase de Descenso del Gradiente se llamó Learning Rate. Un learning rate adecuado te llevará al mínimo de la función eventualmente, que sabemos visualmente está en (0,0). La fórmula es el punto P menos el gradiente por su Learning rate:
Tenemos la siguiente ecuación para el próximo punto W1:
De manera similar a lo analizado en el gradiente positivo, vamos a tabular. Habiendo hecho el paso anterior para W2, se tiene:
Cómo vemos hallamos el único punto mínimo de este paraboloide, el punto del dominio (0,0) que corresponde en R^3 a (0, 0, 0) o x=0, y=0, z=0. Esto claramente es un ejemplo de una función bonita; sin embargo, ten presente -en especial en los sets de datos- que habrá funciones más, digámoslo 🧟♂️.
Espero que te haya ayudado un poco este análisis, y muchas gracias por llegar hasta acá. ☺️