La entropía cruzada categórica es la función de pérdida que usamos cuando una red debe elegir una clase entre varias. Mide cuánto se aleja la distribución de probabilidades que predice el modelo de la respuesta correcta, y lo hace de una forma que castiga con dureza la confianza equivocada. Es la pareja natural de la softmax en la última capa de casi cualquier clasificador moderno. Esta guía recorre su fórmula, la codificación one-hot y la derivada que la vuelve tan cómoda de entrenar. La misma explicación está disponible en inglés.

Fórmula clave $L=-\sum_i y_i\log(\hat{y}_i)$

Puntos clave

  • La entropía cruzada categórica es la pérdida por defecto para clasificar en tres o más clases mutuamente excluyentes.
  • Compara dos distribuciones: la predicha $\hat{y}$ (que suma 1) y la etiqueta real $y$, escrita en formato one-hot.
  • Como solo una componente de $y$ vale 1, la pérdida se reduce a $-\log(\hat{y}_c)$, donde $c$ es la clase correcta.
  • Combinada con la softmax, su gradiente se simplifica a la resta $\hat{y}-y$, sin derivadas complicadas de por medio.
  • Está emparentada con la entropía cruzada binaria, que es el caso particular de dos clases.

¿Qué es la entropía cruzada categórica?

Un clasificador multiclase termina con un vector de probabilidades: por ejemplo, ante una foto podría decir 0,7 de que es un gato, 0,2 de que es un perro y 0,1 de que es un pájaro. Esos tres números suman 1 y forman la predicción $\hat{y}$. La etiqueta real es otra distribución, pero degenerada: toda la probabilidad se concentra en la clase verdadera.

La entropía cruzada mide la distancia entre esas dos distribuciones usando ideas de la teoría de la información de Claude Shannon. Cuanto más probabilidad asigna el modelo a la clase correcta, menor es la pérdida; cuanto más se equivoca con seguridad, más crece. Es una idea prestada de la estadística: minimizar esta pérdida equivale a la estimación por máxima verosimilitud. Como recogen Goodfellow, Bengio y Courville, «cualquier pérdida que consista en una log-verosimilitud negativa es una entropía cruzada entre la distribución empírica de los datos y la del modelo».

Softmax y cross-entropy juntas

La entropía cruzada categórica casi nunca viaja sola: recibe su entrada de una función softmax. La softmax toma las puntuaciones sin normalizar de la última capa (los llamados logits) y las convierte en probabilidades positivas que suman 1. Sobre esa distribución actúa la pérdida.

Esta pareja es tan común que las bibliotecas la fusionan en una sola operación por estabilidad numérica. En PyTorch, torch.nn.CrossEntropyLoss aplica internamente log_softmax y la pérdida a la vez, así que se le pasan los logits crudos, no las probabilidades. Fundir ambos pasos evita calcular exponenciales y logaritmos por separado, donde un valor grande podría desbordar en coma flotante.

Fórmula y codificación one-hot

La fórmula general para un ejemplo con $K$ clases es la que aparece en la portada:

$$L=-\sum_{i} y_i\log(\hat{y}_i)$$

Aquí $y_i$ es la etiqueta real de la clase $i$ y $\hat{y}_i$ la probabilidad que le asigna el modelo. La etiqueta se escribe en formato one-hot: un vector con un 1 en la posición de la clase correcta y 0 en el resto. Con tres clases, un gato sería $[1,0,0]$, un perro $[0,1,0]$ y un pájaro $[0,0,1]$.

La codificación one-hot tiene una consecuencia práctica muy útil. Como todos los términos de la suma se multiplican por 0 salvo el de la clase verdadera, la fórmula colapsa a un único término:

$$L=-\log(\hat{y}_c)$$

Es decir, la pérdida solo mira la probabilidad que el modelo dio a la respuesta correcta. Si acierta con $0{,}9$, la pérdida vale unos $0{,}105$; si titubea con $0{,}5$, sube a $0{,}693$; y si casi la descarta con $0{,}1$, se dispara a $2{,}303$. Esa curva logarítmica es la que empuja al modelo a estar seguro cuando tiene razón.

Como la softmax nunca devuelve exactamente 0, el logaritmo siempre está definido. Si el modelo asignara probabilidad 0 a la clase correcta, la pérdida se iría a infinito; por eso conviene pasar los logits crudos y dejar que la librería funda softmax y logaritmo en un solo paso estable.

La derivada simplificada (ŷ − y)

El motivo de fondo por el que softmax y entropía cruzada van siempre de la mano es su derivada. Al entrenar necesitamos el gradiente de la pérdida respecto a los logits z de la última capa. Si se derivan por separado, la softmax produce una matriz jacobiana incómoda. Pero al componer las dos funciones, casi todo se cancela y queda una expresión de una sencillez notable:

$$\frac{\partial L}{\partial z_i}=\hat{y}_i-y_i$$

El gradiente es simplemente la predicción menos la etiqueta real. Si el modelo predice $0{,}7$ para la clase correcta cuando debería predecir 1, el gradiente en esa componente es $0{,}7-1=-0{,}3$, una señal directa de cuánto y en qué dirección corregir. Esta forma tan limpia hace que la retropropagación desde la capa de salida sea barata y estable, y explica por qué esta combinación domina la clasificación.

Ver la derivación

Con la softmax $\hat{y}_i=\dfrac{e^{z_i}}{\sum_k e^{z_k}}$ y la pérdida $L=-\sum_k y_k\log\hat{y}_k$, la regla de la cadena da $\dfrac{\partial L}{\partial z_i}=\sum_k y_k(\hat{y}_i-\mathbf{1}[k=i])=\hat{y}_i\sum_k y_k-y_i$. Como la etiqueta one-hot cumple $\sum_k y_k=1$, todo se reduce a $\dfrac{\partial L}{\partial z_i}=\hat{y}_i-y_i$.

Ejemplo multiclase

Tomemos un clasificador de tres clases (gato, perro, pájaro) y una imagen cuya etiqueta real es «gato», es decir $y=[1,0,0]$. Supongamos que la softmax devuelve $\hat{y}=[0{,}7,\,0{,}2,\,0{,}1]$.

La pérdida es $-(1\cdot\log 0{,}7+0\cdot\log 0{,}2+0\cdot\log 0{,}1)=-\log 0{,}7\approx0{,}357$. Solo cuenta el término del gato. Si en la siguiente iteración el modelo mejora y predice $[0{,}9,\,0{,}05,\,0{,}05]$, la pérdida baja a $-\log 0{,}9\approx0{,}105$. Y el gradiente respecto a los logits en el primer caso es $\hat{y}-y=[0{,}7-1,\,0{,}2,\,0{,}1]=[-0{,}3,\,0{,}2,\,0{,}1]$: baja el logit de la clase correcta menos de lo que hay que subirlo y empuja hacia abajo los de las otras dos. Con esta pérdida como brújula, el descenso de gradiente ajusta los pesos iteración tras iteración.

Preguntas frecuentes

¿En qué se diferencia de la entropía cruzada binaria?

La binaria es el caso de dos clases y usa una sola salida sigmoide. La categórica generaliza a $K$ clases mutuamente excluyentes con una softmax y un vector one-hot. Si solo hay dos categorías, ambas fórmulas dan el mismo resultado.

¿Debo pasarle probabilidades o logits?

Depende de la biblioteca. En PyTorch, CrossEntropyLoss espera los logits crudos porque aplica la softmax por dentro; pasarle probabilidades ya normalizadas la aplicaría dos veces. Conviene leer la documentación de la función concreta antes de conectarla.

¿Por qué se usa el logaritmo natural?

Porque enlaza la pérdida con la máxima verosimilitud y da la derivada limpia $\hat{y}-y$. El logaritmo convierte un producto de probabilidades en una suma manejable y penaliza de forma creciente los errores muy confiados.

Conclusión

La entropía cruzada categórica es la forma estándar de decirle a un clasificador cuánto se equivoca. Su fórmula parece densa, pero con etiquetas one-hot se reduce a mirar la probabilidad de la clase correcta, y junto a la softmax regala el gradiente más limpio posible, la resta $\hat{y}-y$. El siguiente paso natural es repasar cómo encaja en el mapa completo de las matemáticas de las redes neuronales.

Fuentes

  1. Deep Learning (Goodfellow, Bengio y Courville)
  2. Cross-entropy (Wikipedia)
  3. torch.nn.CrossEntropyLoss (PyTorch)

Ruta: Funciones de pérdida en redes neuronales