Función de Pérdida
Durante el entrenamiento de una red neuronal, es necesario contar con una forma de medir el desempeño del modelo. Esto se realiza mediante una función de pérdida, que cuantifica la diferencia entre las salidas predichas y los valores reales objetivo. El objetivo del entrenamiento es minimizar esta pérdida, logrando que las predicciones sean lo más cercanas posible a los valores reales.
Una de las funciones de pérdida más utilizadas para la clasificación binaria es la pérdida de entropía cruzada, que resulta eficaz con modelos que generan probabilidades como salida.
Derivación de la pérdida de entropía cruzada
Para comprender la pérdida de entropía cruzada, se parte del principio de máxima verosimilitud. En un problema de clasificación binaria, el objetivo es entrenar un modelo que estime la probabilidad y^ de que una entrada pertenezca a la clase 1. La etiqueta real y puede ser 0 o 1.
Un buen modelo debe maximizar la probabilidad de predecir correctamente todos los ejemplos de entrenamiento. Esto implica maximizar la función de verosimilitud, que representa la probabilidad de observar los datos dados los valores predichos por el modelo.
Para un solo ejemplo de entrenamiento, asumiendo independencia, la verosimilitud se puede expresar como:
P(y∣x)=y^y(1−y^)1−yEsta expresión significa simplemente:
- Si y=1, entonces P(y∣x)=y^, es decir, se busca maximizar y^ (la probabilidad asignada a la clase 1);
- Si y=0, entonces P(y∣x)=1−y^, es decir, se busca maximizar 1−y^ (la probabilidad asignada a la clase 0).
P(y∣x) significa la probabilidad de observar la etiqueta de clase real y dado los valores de entrada x.
Para facilitar la optimización, se utiliza la log-verosimilitud en lugar de la verosimilitud directamente (ya que los logaritmos convierten productos en sumas, lo que simplifica la diferenciación):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Dado que el objetivo es la maximización, se define la función de pérdida como la log-verosimilitud negativa, la cual se desea minimizar:
L=−(ylog(y^)+(1−y)log(1−y^))Esta es la función de pérdida de entropía cruzada binaria, comúnmente utilizada para problemas de clasificación.
Dado que la variable output
representa y^ para un ejemplo de entrenamiento particular, y la variable target
representa y para este ejemplo de entrenamiento, esta función de pérdida puede implementarse de la siguiente manera:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
¿Por qué esta fórmula?
La pérdida de entropía cruzada tiene una interpretación intuitiva clara:
- Si y=1, la pérdida se simplifica a −log(y^), lo que significa que la pérdida es baja cuando y^ está cerca de 1 y muy alta cuando y^ está cerca de 0;
- Si y=0, la pérdida se simplifica a −log(1−y^), lo que significa que la pérdida es baja cuando y^ está cerca de 0 y muy alta cuando está cerca de 1.
Dado que los logaritmos crecen negativamente a medida que su entrada se acerca a cero, las predicciones incorrectas son fuertemente penalizadas, lo que incentiva al modelo a realizar predicciones correctas y seguras.
Si se pasan múltiples ejemplos durante la propagación hacia adelante, la pérdida total se calcula como el promedio de la pérdida en todos los ejemplos:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))donde N es el número de muestras de entrenamiento.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain how cross-entropy loss differs from mean squared error?
Why do we use the negative log-likelihood instead of just the likelihood?
Can you show how this loss function is used during neural network training?
Awesome!
Completion rate improved to 4
Función de Pérdida
Desliza para mostrar el menú
Durante el entrenamiento de una red neuronal, es necesario contar con una forma de medir el desempeño del modelo. Esto se realiza mediante una función de pérdida, que cuantifica la diferencia entre las salidas predichas y los valores reales objetivo. El objetivo del entrenamiento es minimizar esta pérdida, logrando que las predicciones sean lo más cercanas posible a los valores reales.
Una de las funciones de pérdida más utilizadas para la clasificación binaria es la pérdida de entropía cruzada, que resulta eficaz con modelos que generan probabilidades como salida.
Derivación de la pérdida de entropía cruzada
Para comprender la pérdida de entropía cruzada, se parte del principio de máxima verosimilitud. En un problema de clasificación binaria, el objetivo es entrenar un modelo que estime la probabilidad y^ de que una entrada pertenezca a la clase 1. La etiqueta real y puede ser 0 o 1.
Un buen modelo debe maximizar la probabilidad de predecir correctamente todos los ejemplos de entrenamiento. Esto implica maximizar la función de verosimilitud, que representa la probabilidad de observar los datos dados los valores predichos por el modelo.
Para un solo ejemplo de entrenamiento, asumiendo independencia, la verosimilitud se puede expresar como:
P(y∣x)=y^y(1−y^)1−yEsta expresión significa simplemente:
- Si y=1, entonces P(y∣x)=y^, es decir, se busca maximizar y^ (la probabilidad asignada a la clase 1);
- Si y=0, entonces P(y∣x)=1−y^, es decir, se busca maximizar 1−y^ (la probabilidad asignada a la clase 0).
P(y∣x) significa la probabilidad de observar la etiqueta de clase real y dado los valores de entrada x.
Para facilitar la optimización, se utiliza la log-verosimilitud en lugar de la verosimilitud directamente (ya que los logaritmos convierten productos en sumas, lo que simplifica la diferenciación):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Dado que el objetivo es la maximización, se define la función de pérdida como la log-verosimilitud negativa, la cual se desea minimizar:
L=−(ylog(y^)+(1−y)log(1−y^))Esta es la función de pérdida de entropía cruzada binaria, comúnmente utilizada para problemas de clasificación.
Dado que la variable output
representa y^ para un ejemplo de entrenamiento particular, y la variable target
representa y para este ejemplo de entrenamiento, esta función de pérdida puede implementarse de la siguiente manera:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
¿Por qué esta fórmula?
La pérdida de entropía cruzada tiene una interpretación intuitiva clara:
- Si y=1, la pérdida se simplifica a −log(y^), lo que significa que la pérdida es baja cuando y^ está cerca de 1 y muy alta cuando y^ está cerca de 0;
- Si y=0, la pérdida se simplifica a −log(1−y^), lo que significa que la pérdida es baja cuando y^ está cerca de 0 y muy alta cuando está cerca de 1.
Dado que los logaritmos crecen negativamente a medida que su entrada se acerca a cero, las predicciones incorrectas son fuertemente penalizadas, lo que incentiva al modelo a realizar predicciones correctas y seguras.
Si se pasan múltiples ejemplos durante la propagación hacia adelante, la pérdida total se calcula como el promedio de la pérdida en todos los ejemplos:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))donde N es el número de muestras de entrenamiento.
¡Gracias por tus comentarios!