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:
Calcula la pérdida con el peso y el sesgo actuales.
Determina la dirección para mover los pesos y el sesgo que reducen la pérdida.
Mueve los valores de peso y sesgo una pequeña cantidad en la dirección que reduzca la pérdida.
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: 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 |
- El modelo comienza el entrenamiento configurando el peso y el sesgo en cero:
- Calcula la pérdida de MSE con los parámetros del modelo actual:
- Calcula la pendiente de la tangente a la función de pérdida en cada peso y el sesgo:
- 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:
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.
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.
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: 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 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 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 instantánea del modelo cerca del final del proceso de entrenamiento.
Ejercicio: Comprueba tus conocimientos
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: 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: 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: 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: 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.