Loss Function
Una función de pérdida mide la diferencia entre las predicciones de un modelo y la verdad de referencia, y el entrenamiento la minimiza. Descubre las pérdidas más habituales y cuándo usar cada una.
Una función de pérdida mide la diferencia entre las predicciones de un modelo y las etiquetas de referencia de sus datos de entrenamiento, y condensa ese error en un único número cuyo valor debe ser lo más bajo posible. Entrenar una red neuronal consiste en ajustar sus pesos del modelo para minimizar ese número. «Función de coste» y «función objetivo» son sinónimos habituales, aunque algunos textos reservan «pérdida» para el error de un solo ejemplo y «coste» para la media de un lote o conjunto de datos.
Cómo impulsa el entrenamiento la pérdida#
El entrenamiento repite el mismo ciclo para cada lote de datos. El modelo genera predicciones, la función de pérdida las compara con las etiquetas y la retropropagación calcula el gradiente de la pérdida respecto a cada peso. A continuación, un optimizador, como el descenso de gradiente estocástico (SGD) o el optimizador Adam, desplaza cada peso un pequeño paso en sentido contrario a su gradiente; el ritmo de aprendizaje determina el tamaño del paso. Como este proceso depende de los gradientes, la función de pérdida debe ser diferenciable casi en todas partes. Representar la pérdida de entrenamiento y la pérdida de validación después de cada época es la forma habitual de supervisar una ejecución: si la pérdida de validación aumenta mientras la de entrenamiento sigue bajando, es la señal clásica de sobreajuste.
Funciones de pérdida habituales#
La pérdida adecuada depende de lo que prediga el modelo, y marcos como PyTorch incluyen la mayoría de las opciones estándar:
- Error cuadrático medio (MSE): Media de las diferencias al cuadrado entre los valores predichos y los reales; se usa en regresión. Al elevar las diferencias al cuadrado, los errores grandes predominan y los valores atípicos tienen mucha influencia.
- Error absoluto medio (L1) y pérdida de Huber: Pérdidas de regresión que aumentan linealmente ante errores grandes, por lo que son menos sensibles a los valores atípicos. La pérdida de Huber es cuadrática para errores pequeños y lineal por encima de un umbral.
- Entropía cruzada: Pérdida estándar para la clasificación de imágenes, calculada sobre las probabilidades softmax de clases mutuamente excluyentes.
- Entropía cruzada binaria (BCE): Puntúa cada clase como una predicción independiente de sí o no mediante una sigmoide, lo que resulta adecuado para problemas multietiqueta y puntuaciones de clase de detectores.
- Pérdida focal: Variante de la entropía cruzada que reduce el peso de los ejemplos fáciles, para que los casos difíciles y poco frecuentes impulsen el aprendizaje cuando hay un gran desequilibrio entre clases.
- Pérdidas basadas en IoU: Pérdidas de regresión de cajas basadas en la intersección sobre unión (IoU), con variantes como DIoU y CIoU que añaden penalizaciones por la distancia entre centros y, en CIoU, por la relación de aspecto.
- Pérdida Dice: Pérdida de solapamiento para la segmentación de imágenes que sigue aportando información cuando el primer plano ocupa solo una pequeña fracción de los píxeles.
- Pérdidas contrastivas: Pérdidas para el aprendizaje contrastivo que acercan los pares coincidentes en el espacio de incrustaciones y separan los que no coinciden.
La entropía cruzada usa el logaritmo negativo de la probabilidad asignada a la clase correcta, así que un error con mucha confianza cuesta mucho más que uno con poca confianza, mientras que una respuesta correcta con mucha confianza apenas cuesta nada. La CrossEntropyLoss de PyTorch muestra el efecto en dos predicciones con la misma confianza:
import torch
from torch import nn
# CrossEntropyLoss applies softmax to raw scores (logits) internally
loss_fn = nn.CrossEntropyLoss()
# Logits for 3 classes; the true class is index 0
target = torch.tensor([0])
confident_right = torch.tensor([[4.0, 0.5, -1.0]])
confident_wrong = torch.tensor([[-1.0, 4.0, 0.5]])
print(f"Confident and right: {loss_fn(confident_right, target).item():.4f}")
print(f"Confident and wrong: {loss_fn(confident_wrong, target).item():.4f}")La predicción correcta con mucha confianza tiene un coste de 0.0363, mientras que asignar esa misma confianza a la clase equivocada cuesta 5.0363, unas 139 veces más.
Pérdidas compuestas en la detección de objetos#
Los modelos de detección de objetos predicen dónde está cada objeto y qué es, así que su pérdida de entrenamiento es una suma ponderada de varios términos. YOLO26 combina una pérdida de caja CIoU, una pérdida de clasificación BCE y una pérdida L1 de distancias de caja normalizadas que sustituye a Distribution Focal Loss de modelos YOLO anteriores; las pondera con los argumentos de entrenamiento box, cls y dfl (valores predeterminados: 7.5, 0.5 y 1.5). Su pérdida progresiva también desplaza el peso de la cabeza uno a muchos hacia la cabeza uno a uno, que se utiliza para la inferencia sin NMS, a medida que avanza el entrenamiento.
Función de pérdida frente a términos relacionados#
- Métricas de evaluación: Métricas como la exactitud y la precisión media promedio (mAP) expresan el rendimiento en términos relevantes para las personas, pero la mayoría cambia en saltos discretos y no puede proporcionar gradientes. El entrenamiento minimiza una pérdida diferenciable como aproximación a estas métricas.
- Regularización: Términos de penalización que se añaden a la pérdida para evitar la complejidad. La regularización L2 añade un múltiplo de la suma de los pesos al cuadrado, lo que empuja al optimizador hacia pesos más pequeños que generalizan mejor.
- Función de recompensa: Objetivo del aprendizaje por refuerzo, en el que un agente maximiza la recompensa acumulada en lugar de minimizar una pérdida; por eso, la recompensa desempeña el papel de una pérdida negativa.










