Cross-Entropy Loss
La pérdida de entropía cruzada compara las probabilidades de clase predichas con las etiquetas objetivo, y guía a los modelos de clasificación y segmentación durante el entrenamiento.
La pérdida de entropía cruzada mide hasta qué punto coinciden las probabilidades de clase predichas por un modelo con sus etiquetas objetivo. Asigna una penalización pequeña cuando la clase correcta recibe una probabilidad alta y una penalización grande cuando esa probabilidad es baja. Como función de pérdida para el aprendizaje supervisado, proporciona un objetivo que minimizar durante el entrenamiento.
La A Mathematical Theory of Communication de Claude Shannon, publicada en 1948, sentó las bases de la entropía. D. F. Kerridge introdujo la medida de entropía cruzada como «inexactitud» en su artículo de 1961 Inaccuracy and Inference. En clasificación, pérdida logarítmica es un sinónimo; tanto la regresión logística como los clasificadores neuronales la utilizan.
Cómo funciona la pérdida de entropía cruzada#
Para un ejemplo con una clase correcta, la entropía cruzada sin ponderar es loss = -ln(p_correct). Una probabilidad de 0,9 para la clase correcta produce una pérdida de aproximadamente 0,105; una de 0,1, de aproximadamente 2,303. Los logaritmos naturales expresan el resultado en unidades llamadas nats. Durante el entrenamiento, estas penalizaciones suelen promediarse en un lote.
En términos más generales, la entropía cruzada multiplica cada probabilidad objetivo por el logaritmo negativo de su probabilidad predicha y suma los resultados entre clases. Un objetivo one-hot asigna un 1 a la clase correcta y un 0 al resto, por lo que solo queda el término de la clase correcta. Para objetivos one-hot sin ponderar, minimizar la entropía cruzada equivale a maximizar la verosimilitud de las etiquetas observadas. La retropropagación calcula los gradientes, y el descenso del gradiente actualiza los parámetros del modelo.
Entropía cruzada binaria, categórica y dispersa#
La forma adecuada depende de las etiquetas:
- Entropía cruzada binaria con sigmoid: Para un objetivo
yde 0 o 1 y una probabilidad predichapde que la clase sea 1, la pérdida es-[y * ln(p) + (1 - y) * ln(1 - p)]. La clasificación multietiqueta la aplica de forma independiente a las etiquetas que pueden darse simultáneamente. - Entropía cruzada categórica con softmax: Evalúa clases mutuamente excluyentes cuyas probabilidades suman 1. Softmax convierte las puntuaciones brutas del modelo, llamadas logits, en esa distribución.
- Entropía cruzada categórica dispersa: Utiliza un índice de clase entero en lugar de un vector one-hot. Calcula la misma pérdida; «dispersa» describe la codificación del objetivo.
Los objetivos blandos distribuyen la probabilidad entre varias clases. Se utilizan en el suavizado de etiquetas y la destilación de conocimiento, donde un modelo estudiante aprende de la distribución de probabilidad de un modelo profesor.
Cálculo de la entropía cruzada en PyTorch#
PyTorch acepta logits sin procesar en CrossEntropyLoss. Para objetivos con índices de clase, su cálculo equivale a aplicar log-softmax y, después, la log-verosimilitud negativa. Aplicar softmax antes hace que la función trate las probabilidades como logits, lo que modifica la pérdida y los gradientes. Los objetivos enteros utilizan torch.long; los objetivos de probabilidad usan valores de coma flotante y tienen la misma forma que los logits.
import torch
from torch import nn
# Both predictions select class 0; the second is more confident.
logits = torch.tensor([[2.0, 0.0, 0.0], [4.0, 0.0, 0.0]])
targets = torch.tensor([0, 0], dtype=torch.long)
loss_fn = nn.CrossEntropyLoss(reduction="none")
losses = loss_fn(logits, targets)
print(f"Lower confidence loss: {losses[0].item():.4f}")
print(f"Higher confidence loss: {losses[1].item():.4f}")Las pérdidas disminuyen de 0,2395 a 0,0360 mientras ambas predicciones siguen siendo correctas. La precisión registra las decisiones de clase; la entropía cruzada también tiene en cuenta las probabilidades asignadas. Para logits binarios o multietiqueta, BCEWithLogitsLoss combina sigmoid y la entropía cruzada binaria.
Aplicaciones en visión artificial#
La clasificación de imágenes de una sola etiqueta utiliza la entropía cruzada para aprender una clase por imagen. El entrenamiento de clasificación de YOLO26 de Ultralytics utiliza la entropía cruzada media sobre los logits de clase para actualizar el clasificador hacia la categoría etiquetada.
En la segmentación de imágenes médicas, la U-Net original se entrenó con imágenes de microscopía biomédica mediante softmax por píxel y entropía cruzada ponderada. Su mapa de pesos aumentaba las penalizaciones en los límites entre células contiguas, lo que ayudaba a separar las células vecinas. Este método aplica la clasificación a cada píxel en la segmentación semántica.
Interpretación de los valores de pérdida#
La entropía cruzada discreta con distribuciones objetivo válidas y pesos no negativos no puede ser negativa. Para un objetivo discreto sin ponderar, alcanza cero cuando la clase correcta recibe una probabilidad de 1 y crece sin límite cuando esa probabilidad se acerca a cero. Los valores negativos indican un error en los datos de entrada o en la implementación, como entradas o pesos objetivo negativos.
La entropía mide la incertidumbre dentro de una distribución; la entropía cruzada compara los objetivos con las predicciones. La entropía cruzada equivale a la entropía objetivo más la divergencia de Kullback–Leibler, que constituye la penalización adicional por discrepancia. Por tanto, los objetivos blandos tienen un mínimo positivo cuando su entropía es positiva.
La ponderación de clases aumenta la contribución de las clases seleccionadas. La pérdida focal reduce la contribución de los ejemplos fáciles para abordar el desequilibrio entre el primer plano y el fondo en la detección de objetos. Para una predicción uniforme, la pérdida logarítmica sin ponderar equivale a ln(number_of_classes): aproximadamente 0,693 para dos clases y 2,303 para diez.










