Descenso de gradiente univariante en Machine Learning

Artículos pequeños sobre el aprendizaje automático

Introducción

¡Bienvenido!

Esta serie pretende compartir mi propio esfuerzo por comprender , explore y experimente sobre temas relacionados con el aprendizaje automático.

Las anotaciones matemáticas en este post en particular y en el siguiente en pendiente de gradiente multivariable estarán principalmente en línea con las utilizadas en el curso de Aprendizaje automático por Andrew Ng.

Comprender y poder jugar con las matemáticas detrás es la clave para entender el aprendizaje automático. Nos permite elegir los algoritmos más adecuados y adaptarlos de acuerdo con los problemas que queremos resolver.

Sin embargo, he encontrado muchos tutoriales y conferencias donde las ecuaciones usadas son simplemente impenetrables . Todos los símbolos parecen crípticos y parece que hay una gran brecha entre lo que se está explicando y esas ecuaciones. Simplemente no puedo conectar todos los puntos. Desafortunadamente, la mayoría de las veces, las matemáticas dificultan la comprensión cuando se supone algo de conocimiento y se saltan pasos importantes.

Por lo tanto, siempre que sea posible, expandiré las ecuaciones y evitaré los atajos, para que todos puedan seguir la ruta desde la izquierda. lado de la ecuación a la derecha.

Ok, eso es suficiente para mí.

¡Saltemos a la diversión!

¿Qué es el gradiente de pendiente?

El primer tema es gradiente descent – un algoritmo iterativo para encontrar un mínimo de una función objetivo.

Se usa a menudo en regresión lineal para encontrar una línea de mejor ajuste para los datos dados. Al hacerlo, obtenemos una mejor comprensión de la relación entre una entrada y una salida de su conjunto de datos y, lo que es más interesante, podemos predecir una salida con una nueva entrada con cierta confianza.

En este artículo, vamos a explorar:

  1. qué es la regresión lineal
  2. cómo encontrar la línea de mejor ajuste usando la función de costo
  3. por qué el descenso de gradiente es importante en la regresión lineal
  4. cómo funciona exactamente el descenso de gradiente

Regresión lineal

Uno de los modelos más comunes utilizados en el aprendizaje supervisado es regresión lineal .

El modelo de regresión lineal le permite predecir una variable dependiente y (salida) cuando se le da una variable independiente x (entrada) asumiendo que hay una relación lineal entre las dos variables.

Aquí hay algunos ejemplos de la vida real donde la regresión lineal puede ser útil para descubrir la relación entre dos variables:

Impacto de la altura en peso [19659025] Impacto del nivel educativo en la riqueza

Impacto de la cantidad de lluvia en el número de frutos producidos

Impacto del contenido de alcohol en la sangre en la coordinación física

En términos más prácticos, el objetivo de la regresión lineal es encontrar una línea ( llamó hipótesis ) de que representa mejor los puntos de datos (ajustes) .

Pero la pregunta real es: ¿cómo sabemos qué tan bueno es el ajuste de una línea? [19659012] Función de costo

De hecho, medimos la idoneidad de una hipótesis con una función de costo .

Esencialmente, una función de costo es un error cuadrado medio (MSE) – una medida colectiva de desviación entre valores reales y valores estimados derivados de la hipótesis. Cuanto más pequeña es la función de costo menor es la desviación entre la línea y los puntos de datos, por lo tanto, la entidad que la hipótesis es.

Por lo tanto, nuestro objetivo es encontrar un Hipótesis que minimiza la función de costo ya que nos da una línea de mejor ajuste.

Ahora, ¿recuerda la descripción de pendiente de gradiente?

La pendiente de gradiente es un algoritmo iterativo para encontrar el mínimo de una función.

Así es, aquí es donde el descenso del degradado entra en juego en el aprendizaje automático. Lo usamos para minimizar una función de costo en regresión lineal, para ajustar una línea a un conjunto de datos.

Algoritmo de descenso de gradiente

Habiendo dicho eso, el descenso de gradiente no es específico para resolver problemas de regresión lineal. Es un algoritmo general que se puede aplicar a cualquier función para encontrar su mínimo.

Para entender mejor la intuición, comenzaremos con el ejemplo más simple: pendiente de gradiente univariada . Es decir, pendiente de gradiente aplicada a una función con una sola variable.

Pendiente de gradiente univariable

Vamos a definir una función univariada J de theta, J () como sigue:

la función J (θ) se parece a Fig.1 cuando se representa en función de θ .

Queremos encontrar un valor de θ que minimiza J (θ) :

Lo que debemos hacer para lograr esto es probar diferentes valores de θ hasta que J () alcance su mínimo Por lo general, comenzamos con θ = 0 pero dado que esto produce el mínimo de J (θ) en este caso, digamos que comencemos con θ = 6 .

Antes de analizar el algoritmo en detalle, aquí hay dos preguntas críticas:

  1. ¿Cómo determinamos cuándo J (θ) alcanza su mínimo?
  2. Si J ( θ) no está en su mínimo, ¿cómo podemos saber qué valor de θ para probar a continuación?

Esas preguntas pueden responderse tomando un derivado de J ( θ) – en otras palabras, calcular la pendiente de una línea tangente que toca la J (θ) en θ . Si la pendiente es positiva, significa que el valor de θ debe disminuir en la siguiente iteración para acercarse al mínimo, mientras que θ debe aumentar si la pendiente es negativa. 19659005] Considerar Fig.2 . Dado que la pendiente de una línea tangente en θ = 6 es positiva (12) sabemos que θ debe disminuir para acercarse al valor que minimiza J (θ) (θ = 0) . Por otro lado, la pendiente de una línea tangente en θ = -2 es negativa (- 4) por lo que sabemos que debemos aumentar el valor de θ en la siguiente iteración.

Y también de manera importante, la pendiente se convierte en 0 cuando alcanzamos el mínimo de J (θ) . Así es como sabemos cuándo converge el descenso del gradiente, es decir, el valor de J () se acerca a lo suficientemente cerca de a su mínimo. En la práctica, declaramos la convergencia si J (θ) disminuye menos de 10 ^ (- 3) (= 0.001) en una iteración .

Actualización de la regla

Ahora, necesitamos un sistema y eficiencia forma de actualizar θ mientras buscamos un valor de θ que minimiza J ().

En el descenso del gradiente, se realiza automáticamente aplicando la regla de actualización después de cada iteración, para que θ se acerque cada vez más al valor al que aspiramos.

La regla de actualización para la función univariada es la siguiente:

Aquí, α se denomina tasa de aprendizaje y dJ (θ) / dθ es el derivado derivado de J (θ) – es decir, la pendiente de una línea tangente.

La velocidad de aprendizaje determina qué tan rápido o lento θ se mueve. Elegir una buena tasa de aprendizaje es crucial, ya que si es demasiado grande, podemos perder el valor óptimo al saltearlo y es posible que ni siquiera converjan. Por otro lado, si es demasiado pequeño, se requerirán demasiadas iteraciones para que el algoritmo converja. Explicaré más sobre esto un poco más tarde, con algunas ayudas visuales.

Para J () = θ² el derivado de de J () es calculado de la siguiente manera, ya que se contrae hacia cero:

A partir de esto, la regla de actualización para J (θ) = θ² se puede simplificar como θ: = (1 –2α) θ

Descenso del gradiente en acción

Finalmente veamos el descenso del gradiente en acción.

Vamos a realizar el descenso del gradiente para J (θ) = θ² con α = 0.3 y un valor inicial de θ = 6 ( Fig.3 ).

Después de la primera iteración, θ se actualiza como θ: = (1–2α) θ = 0.4 * 6 = 2.4
Después de la segunda iteración: θ: = (1–2α) θ = 0.4 * 2.4 = 0.96
Después de tercera iteración: θ: = (1–2α) θ = 0.4 * 0.96 = 0.384

Y así sucesivamente …

Fig.3a – Pasos de pendiente de gradiente cuando se aproxima al mínimo de J ( θ). Fig.3b – Un gráfico de J ( θ) contra el número de iteración, útil para monitorear visualmente la convergencia.

Finalmente, de la sexta a la séptima iteración , J () disminuye en 0.0005 que es menor que el umbral de 10 ^ (- 3) momento en el que podemos declarar una convergencia.

Modificando la tasa de aprendizaje

Como se prometió, aquí hay algunos ejemplos donde la tasa de aprendizaje es demasiado grande o demasiado pequeña, lo que debería ayudarlo a comprender visualmente por qué es fundamental elegir la tasa de aprendizaje correcta.

Fig.4 es cuando la velocidad de aprendizaje es demasiado grande . El valor de θ oscila hacia adelante y hacia atrás saltando el mínimo, en lugar de acercarse gradualmente. Incluso después de la décima iteración, θ aún está muy lejos de cero, y esperamos muchos más zigzags innecesarios para θ para finalmente acercarse al mínimo de J ( θ) . De hecho, se requieren 23 iteraciones para que alcance la convergencia en este caso.

Contrario, fig.5 muestra cómo una velocidad de aprendizaje demasiado pequeña puede ralentizar significativamente la convergencia. En este ejemplo extremo, incluso después de 100 iteraciones, todavía está lejos de la convergencia.

Esperemos que esto demuestre la importancia de monitorear la convergencia y ajustar la velocidad de aprendizaje en consecuencia.

Resumen

Bien, entonces cubrimos la aplicación básica del descenso de degradado, utilizando una función univariada como función objetivo. La próxima vez, hablaremos sobre su aplicación en función multivariable y regresión lineal.

Por favor, publique cualquier comentario, pregunta o solicitud de temas. También apreciaría 👏 si te gusta el post, para que otros también puedan encontrar este artículo.

¡Gracias!

Dejá un comentario