Regresión lineal: descenso de gradientes

El descenso de gradientes es una técnica matemática que encuentra de forma iterativa los pesos y sesgos que producen el modelo con la pérdida más baja. El descenso por gradiente encuentra el mejor peso y sesgo repitiendo el siguiente proceso para una serie de iteraciones definidas por el usuario.

El modelo comienza a entrenarse con ponderaciones y sesgos aleatorios cercanos a cero y, luego, repite los siguientes pasos:

  1. Calcula la pérdida con el peso y el sesgo actuales.

  2. Determina la dirección para mover los pesos y el sesgo que reducen la pérdida.

  3. Mueve los valores de peso y sesgo una pequeña cantidad en la dirección que reduzca la pérdida.

  4. Regresa al paso uno y repite el proceso hasta que el modelo no pueda reducir la pérdida más.

En el siguiente diagrama, se describen los pasos iterativos que realiza el descenso de gradientes para encontrar los pesos y el sesgo que producen el modelo con la pérdida más baja.

Figura 12. Ilustración del proceso de descenso de gradientes.

Figura 12: El descenso de gradientes es un proceso iterativo que encuentra los pesos y sesgos que producen el modelo con la pérdida más baja.

Haz clic en el ícono de signo más para obtener más información sobre las matemáticas detrás del descenso del gradiente.

A un nivel concreto, podemos analizar los pasos del descenso del gradiente con un conjunto de datos pequeño con siete ejemplos para el peso de un automóvil en libras y su clasificación de millas por galón:

Libras en miles (función) Millas por galón (etiqueta)
3.5 18
3.69 15
3,44 18
3,43 16
4.34 15
4,42 14
2.37 24
  1. El modelo comienza el entrenamiento configurando el peso y el sesgo en cero:
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. Calcula la pérdida de MSE con los parámetros del modelo actual:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. Calcula la pendiente de la tangente a la función de pérdida en cada peso y el sesgo:
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    Haz clic en el ícono de signo más para obtener información sobre cómo calcular la pendiente.

    Para obtener la pendiente de las líneas tangentes al peso y al sesgo, tomamos la derivada de la función de pérdida con respecto al peso y al sesgo, y luego resolvemos las ecuaciones.

    Escribiremos la ecuación para realizar una predicción de la siguiente manera:
    $ f_{w,b}(x) = (w*x)+b $.

    Escribiremos el valor real como: $ y $.

    Calcularemos el ECM con lo siguiente:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    donde $i$ representa el ejemplo de entrenamiento $ith$ y $M$ representa la cantidad de ejemplos.

    Derivada del peso

    La derivada de la función de pérdida con respecto al peso se escribe de la siguiente manera:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    y se evalúa como:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

    Primero, sumamos cada valor previsto menos el valor real y, luego, lo multiplicamos por dos veces el valor del atributo. Luego, dividimos la suma por la cantidad de ejemplos. El resultado es la pendiente de la línea tangente al valor del peso.

    Si resolvemos esta ecuación con un peso y un sesgo iguales a cero, obtenemos -119.7 para la pendiente de la línea.

    Derivada del sesgo

    La derivada de la función de pérdida con respecto al sesgo se escribe de la siguiente manera:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    y se evalúa como:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

    Primero, sumamos cada valor previsto menos el valor real y, luego, lo multiplicamos por dos. Luego, dividimos la suma por el número de ejemplos. El resultado es la pendiente de la línea tangente al valor de la compensación.

    Si resolvemos esta ecuación con un peso y un sesgo iguales a cero, obtenemos -34.3 para la pendiente de la línea.

  7. Mueve una pequeña cantidad en la dirección de la pendiente negativa para obtener el siguiente peso y sesgo. Por ahora, definiremos de manera arbitraria la “cantidad pequeña” como 0.01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

Usa el nuevo peso y sesgo para calcular la pérdida y repetir. Si completamos el proceso durante seis iteraciones, obtendríamos los siguientes pesos, sesgos y pérdidas:

Iteración Peso Sesgo Pérdida (ECM)
1 0 0 303.71
2 1.2 0.34 USD 170.67
3 USD 2.75 0.59 67.3
4 3.17 0.72 50.63
5 3.47 0.82 42,1
6 3,68 0.9 37.74

Puedes ver que la pérdida disminuye con cada peso y sesgo actualizados. En este ejemplo, nos detuvimos después de seis iteraciones. En la práctica, un modelo se entrena hasta que converge. Cuando un modelo converge, las iteraciones adicionales no reducen la pérdida más porque el descenso de gradientes encontró los pesos y el sesgo que casi minimizan la pérdida.

Si el modelo continúa entrenando después de la convergencia, la pérdida comienza a fluctuar en pequeñas cantidades a medida que el modelo actualiza continuamente los parámetros alrededor de sus valores más bajos. Esto puede dificultar la verificación de que el modelo realmente convergió. Para confirmar que el modelo convergió, debes continuar con el entrenamiento hasta que la pérdida se estabilice.

Curvas de pérdida y convergencia del modelo

Cuando entrenas un modelo, a menudo observas una curva de pérdida para determinar si el modelo converge. La curva de pérdida muestra cómo cambia la pérdida a medida que se entrena el modelo. A continuación, se muestra cómo se ve una curva de pérdida típica. La pérdida está en el eje y y las iteraciones están en el eje x:

Figura 13. Gráfico de la curva de pérdida que muestra una disminución abrupta y, luego, una disminución moderada.

Figura 13: Curva de pérdida que muestra el modelo que converge alrededor de la marca de la iteración 1,000.

Puedes ver que la pérdida disminuye de forma drástica durante las primeras iteraciones y, luego, disminuye gradualmente antes de aplanarse alrededor de la marca de la iteración 1,000. Después de 1,000 iteraciones, podemos estar casi seguros de que el modelo convergió.

En las siguientes figuras, dibujamos el modelo en tres puntos durante el proceso de entrenamiento: el principio, el medio y el final. Visualizar el estado del modelo en las instantáneas durante el proceso de entrenamiento solidifica el vínculo entre la actualización de los pesos y el sesgo, la reducción de la pérdida y la convergencia del modelo.

En las figuras, usamos los pesos y sesgos derivados en una iteración en particular para representar el modelo. En el gráfico con los datos y el resumen del modelo, las líneas de pérdida azules del modelo a los datos muestran la cantidad de pérdida. Cuanto más largas sean las líneas, mayor será la pérdida.

En la siguiente figura, podemos ver que, alrededor de la segunda iteración, el modelo no sería bueno para hacer predicciones debido a la gran cantidad de pérdidas.

Figura 14. Curva de pérdida y gráfico correspondiente del modelo, que se inclina hacia afuera de los puntos de datos.

Figura 14. Curva de pérdida y instantánea del modelo al comienzo del proceso de entrenamiento.

Alrededor de la iteración 400, podemos ver que el descenso por gradiente encontró el peso y el sesgo que producen un mejor modelo.

Figura 15: Curva de pérdida y gráfico correspondiente del modelo, que corta los datos, pero no en el ángulo óptimo.

Figura 15. Curva de pérdida y captura del modelo a mitad del entrenamiento.

Y alrededor de la 1,000ª iteración, podemos ver que el modelo convergió, lo que genera un modelo con la pérdida más baja posible.

Figura 16. Curva de pérdida y gráfico correspondiente del modelo, que se ajusta bien a los datos

Figura 16: Curva de pérdida y instantánea del modelo cerca del final del proceso de entrenamiento.

Ejercicio: Comprueba tus conocimientos

¿Cuál es el rol del descenso del gradiente en la regresión lineal?
El descenso de gradientes es un proceso iterativo que encuentra los mejores pesos y sesgos que minimizan la pérdida.
El descenso de gradientes ayuda a determinar qué tipo de pérdida usar cuando se entrena un modelo, por ejemplo, L1 o L2.
El descenso por gradiente no participa en la selección de una función de pérdida para el entrenamiento del modelo.
El descenso de gradientes quita los valores atípicos del conjunto de datos para ayudar al modelo a realizar mejores predicciones.
El descenso por gradiente no cambia el conjunto de datos.

Convergencia y funciones convexas

Las funciones de pérdida de los modelos lineales siempre producen una superficie convexa. Como resultado de esta propiedad, cuando un modelo de regresión lineal converge, sabemos que encontró los pesos y el sesgo que producen la pérdida más baja.

Si graficamos la superficie de pérdida de un modelo con una función, podemos ver su forma convexa. A continuación, se muestra la superficie de pérdida del conjunto de datos de millas por galón que se usó en los ejemplos anteriores. El peso está en el eje x, el sesgo está en el eje y y la pérdida está en el eje z:

Figura 17. Gráfico en 3D de la superficie de pérdida.

Figura 17: Superficie de pérdida que muestra su forma convexa.

En este ejemplo, un peso de -5.44 y un sesgo de 35.94 producen la pérdida más baja en 5.54:

Figura 18. Gráfico en 3D de la superficie de pérdida, con (-5.44, 35.94, 5.54) en la parte inferior.

Figura 18: Superficie de pérdida que muestra los valores de peso y sesgo que producen la pérdida más baja.

Un modelo lineal converge cuando se encuentra la pérdida mínima. Por lo tanto, las iteraciones adicionales solo hacen que el descenso de gradientes mueva los valores de peso y sesgo en cantidades muy pequeñas alrededor del mínimo. Si graficamos los pesos y los puntos de sesgo durante el descenso de gradientes, los puntos se verían como una bola que roda por una colina y, al final, se detiene en el punto en el que ya no hay una pendiente descendente.

Figura 19. Superficie de pérdida convexa en 3D con puntos de descenso de gradientes que se mueven al punto más bajo.

Figura 19: Gráfico de pérdida que muestra los puntos de descenso del gradiente que se detienen en el punto más bajo del gráfico.

Observa que los puntos de pérdida negros crean la forma exacta de la curva de pérdida: una disminución pronunciada antes de descender gradualmente hasta alcanzar el punto más bajo de la superficie de pérdida.

Es importante tener en cuenta que el modelo casi nunca encuentra el mínimo exacto para cada peso y sesgo, sino que encuentra un valor muy cercano a él. También es importante tener en cuenta que el mínimo de las ponderaciones y el sesgo no corresponde a una pérdida cero, sino solo a un valor que produce la pérdida más baja para ese parámetro.

Con los valores de peso y sesgo que producen la pérdida más baja (en este caso, un peso de -5.44 y un sesgo de 35.94), podemos graficar el modelo para ver qué tan bien se ajusta a los datos:

Figura 20. Gráfico de libras en 1,000 en comparación con millas por galón, con el modelo ajustado a los datos.

Figura 20: Modelo graficado con los valores de peso y sesgo que producen la pérdida más baja.

Este sería el mejor modelo para este conjunto de datos, ya que ningún otro valor de peso y sesgo produce un modelo con una pérdida menor.