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 la polarización 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 de la siguiente manera: $ y $.

    Calcularemos la MSE con la siguiente fórmula:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    donde $i$ representa el ejemplo de entrenamiento $i$ 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 la cantidad de ejemplos. El resultado es la pendiente de la línea tangente al valor del sesgo.

    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 170.67
3 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 más la pérdida 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 verificar que el modelo realmente haya convergido. Para confirmar que el modelo convergió, debes continuar 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 pronunciada y, luego, una disminución leve.

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 comienzo, el medio y el final. Visualizar el estado del modelo en 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 resumen del modelo a la 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 tu comprensión

¿Cuál es el papel 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 por gradiente 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 característica, 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 del gradiente 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 la descenso por gradiente, los puntos se verían como una bola que rueda por una colina y, finalmente, se detienen en el punto donde no hay más 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.