Saber si una red neuronal está prediciendo correctamente es tan importante como la predicción misma. La función de pérdida (loss function) es la herramienta que permite medir qué tan alejadas están las predicciones del modelo respecto a los valores reales, y es justamente ese número el que guía todo el proceso de aprendizaje.
¿Qué es una función de pérdida y por qué es fundamental?
Cuando una red neuronal genera una predicción, ya sea de clasificación o de regresión, necesita una forma objetiva de evaluar su desempeño. La función de pérdida toma los valores reales, los compara con la predicción y produce un score numérico [0:28]. Si ese valor es alto, significa que la predicción está muy desviada. Si es bajo, la predicción se acerca mucho a la realidad.
Este mecanismo es el que le indica a la red si debe ajustar sus pesos para mejorar. Sin una función de pérdida definida, el modelo no tendría retroalimentación sobre su rendimiento.
¿Cómo funciona el error cuadrático medio o MSE?
El mean squared error (MSE) es una función de pérdida diseñada para problemas de regresión, como predecir el valor de una casa [1:16]. Su funcionamiento es directo:
- Calcula la distancia entre el valor predicho y el valor real.
- Eleva al cuadrado esa distancia para castigar las desviaciones grandes.
- Obtiene la media de todos esos errores cuadráticos.
Al elevar al cuadrado, los errores más grandes reciben un peso mucho mayor, lo que obliga al modelo a enfocarse en reducir esas desviaciones pronunciadas [1:30].
¿Qué es Cross Entropy y cuándo se utiliza?
Para problemas de clasificación, se utiliza Cross Entropy [1:52]. Esta función mide la distancia entre la distribución de probabilidad real y la que predice el modelo.
Por ejemplo, si se quiere clasificar una figura como círculo, cuadrado o triángulo, el valor real en formato one-hot encoding sería [1, 0, 0] para un círculo. Si la red predice [0.5, 0.3, 0.2], Cross Entropy evalúa qué tan lejos está esa distribución de la correcta [2:10]. Al igual que con MSE, un valor alto indica predicciones pobres y uno bajo indica precisión.
Este fue precisamente el tipo de función que se utilizó al compilar la red neuronal con el dataset de MNIST: Categorical Cross Entropy [0:14].
¿Cómo implementar MSE en Python paso a paso?
La implementación del error cuadrático medio en Python es bastante directa [2:52]:
python
import numpy as np
def MSE(Y, Y_hat, derivate=False):
if derivate:
return Y_hat - Y
return np.mean((Y_hat - Y) ** 2)
Cada parte de la función refleja la fórmula matemática:
Y_hat - Y: calcula el error entre predicción y valor real.
** 2: eleva al cuadrado para penalizar desviaciones grandes.
np.mean(): obtiene la media de todos los errores.
Para probarla, se crean un vector de valores reales y otro de predicciones [3:30]:
python
real = np.array([0, 0, 1, 1])
prediction = np.array([0.9, 0.5, 0.2, 0.0])
print(MSE(real, prediction)) # Resultado: 0.67
El resultado de 0.67 indica un error considerable, ya que los valores de predicción fueron colocados al azar y están bastante alejados de los reales [4:08].
¿Por qué la función incluye una derivada?
Un detalle clave es el parámetro derivate en la función [4:25]. Cuando se activa, retorna Y_hat - Y, que es la derivada de MSE. Las funciones matemáticas, tanto de activación como de pérdida, pueden derivarse, y al hacerlo se logra optimizarlas.
Esta derivada es esencial para el proceso conocido como descenso del gradiente, el mecanismo mediante el cual la red neuronal actualiza sus pesos basándose en la derivada de la función de pérdida [4:55]. Si las predicciones están muy desviadas, los pesos se ajustan en una dirección; si son precisas, se ajustan de forma diferente.
Entender las funciones de pérdida es un paso fundamental para comprender cómo aprenden las redes. ¿Qué función de pérdida crees que sería más adecuada para un problema que combina clasificación y regresión? Comparte tu opinión.