Loss y accuracy
En el entrenamiento de redes neuronales, loss (pérdida) y accuracy (precisión) son dos métricas importantes que nos ayudan a entender cómo de bien o mal está funcionando el modelo.
1. Loss (Pérdida)
La pérdida es una métrica que evalúa qué tan bien está ajustando el modelo los datos de entrenamiento en cada época (pasada de entrenamiento). Cuanto menor sea la pérdida, mejor estará el modelo en ajustar los datos de entrada a las salidas esperadas.
- Concepto: La pérdida mide la diferencia entre las predicciones del modelo y los valores reales (etiquetas).
- Función de pérdida: En problemas de clasificación, se suele usar la entropía cruzada (cross-entropy). En problemas de regresión, se usa el error cuadrático medio (mean squared error).
Ejemplo intuitivo
Supón que tienes una red que predice el precio de una casa y te da un precio de $210,000 cuando el precio real es $200,000. La función de pérdida calcula una diferencia de $10,000, que se interpreta como qué tan “lejos” está el modelo de la verdad. La idea es reducir esta pérdida en cada ciclo de entrenamiento ajustando los pesos internos de la red neuronal.
Ejemplo en código
from tensorflow.keras import models, layers
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# Cargar y preprocesar datos de ejemplo (MNIST)
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28 * 28)).astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28)).astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
# Definir un modelo sencillo
model = models.Sequential([
layers.Dense(512, activation='relu', input_shape=(28 * 28,)),
layers.Dense(10, activation='softmax')
])
# Compilar el modelo con función de pérdida y métrica de precisión
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
# Entrenar el modelo
history = model.fit(train_images, train_labels, epochs=5, batch_size=128)
En cada época, el modelo reportará la pérdida y la precisión. La pérdida se calcula con la entropía cruzada categórica en este ejemplo.
2. Accuracy (Precisión)
La precisión es una métrica que mide el porcentaje de predicciones correctas que realiza el modelo, es decir, cuántas veces el modelo acertó en la clasificación de una instancia.
- Concepto: La precisión indica cuántas de las predicciones del modelo fueron correctas en relación con el total de predicciones.
- Fórmula: Se calcula como
(número de predicciones correctas) / (total de predicciones)
.
Ejemplo intuitivo
Imagina que tienes una red que clasifica imágenes de perros y gatos. Si el modelo clasifica correctamente 80 de 100 imágenes de gatos, entonces la precisión en ese lote es del 80%.
Ejemplo en código
En el código anterior, el modelo también calcula la precisión durante el entrenamiento. La salida podría parecerse a algo así:
Epoch 1/5
469/469 [==============================] - 2s 3ms/step - loss: 0.2654 - accuracy: 0.9245
Epoch 2/5
469/469 [==============================] - 1s 3ms/step - loss: 0.1113 - accuracy: 0.9661
Epoch 3/5
469/469 [==============================] - 1s 3ms/step - loss: 0.0746 - accuracy: 0.9766
Epoch 4/5
469/469 [==============================] - 1s 3ms/step - loss: 0.0538 - accuracy: 0.9831
Epoch 5/5
469/469 [==============================] - 1s 3ms/step - loss: 0.0406 - accuracy: 0.9873
Interpretación del Ejemplo
- Loss: Comienza en 0.2654 en la primera época y disminuye en cada época, lo que indica que el modelo está mejorando en el ajuste a los datos de entrenamiento.
- Accuracy: Comienza en 92.45% y sube a 98.73%, indicando que el modelo cada vez clasifica más correctamente los ejemplos.
Resumen
- Loss es una medida de error: queremos que sea lo más bajo posible.
- Accuracy es una medida de desempeño: queremos que sea lo más alto posible, especialmente en la última época de entrenamiento.
Ambas métricas juntas ayudan a evaluar el modelo en cada etapa de entrenamiento y muestran qué tan bien está aprendiendo.