🧮 Computational Mathematics

Inicio · Parte 13 — Teoría de la información, señales y series

263 — Entropía cruzada

avanzado clase 3 de 20 4 horas demostración cross_entropy

Minimizar entropía cruzada es exactamente maximizar la verosimilitud.

Fórmulas

H(p,q) = −Σ p(x)·log q(x)
H(p,q) = H(p) + KL(p‖q) ≥ H(p)
con p one-hot: H(p,q) = −log q(clase correcta)

Desarrollo

La entropía cruzada mide el coste medio de codificar mensajes que vienen de p usando un código diseñado para q. Si q = p el coste es el óptimo H(p); si q se aleja, el coste sube. Nunca puede bajar del óptimo, y esa desigualdad es la que garantiza que minimizarla lleve en la dirección correcta.

Su descomposición H(p,q) = H(p) + KL(p‖q) es la clave para entender qué se está optimizando. La entropía H(p) es una propiedad de los datos y no depende del modelo, así que minimizar entropía cruzada es minimizar la divergencia KL entre la distribución real y la predicha. Son el mismo problema.

En clasificación, la distribución real es one-hot —toda la masa en la clase correcta— y la fórmula colapsa a −log q(clase correcta). La pérdida solo depende de la probabilidad asignada a la respuesta correcta, y crece sin límite cuando esa probabilidad tiende a cero. De ahí que un modelo muy seguro y equivocado reciba un castigo enorme.

La consecuencia teórica es que la pérdida de casi todo clasificador no se elige: se deduce. Suponer un modelo categórico y maximizar verosimilitud da entropía cruzada; suponer ruido gaussiano da error cuadrático medio. Y la consecuencia práctica es el epsilon: sin él un log(0) produce infinito y destruye el entrenamiento en un paso.

Ejemplo trabajado

Pérdida de tres predicciones ante la misma etiqueta real.

etiqueta real: [1, 0, 0]        H(p) = 0

predicción              pérdida
[0,90 ; 0,05 ; 0,05]    0,105361     muy buena
[0,50 ; 0,30 ; 0,20]    0,693147     mediocre
[0,05 ; 0,60 ; 0,35]    2,995732     mala y segura

predicción perfecta [1,0,0]: pérdida = 0,0

Como H(p) = 0, aquí la entropía cruzada ES la KL.

Sin epsilon:
  predicción 0,0 para la clase correcta → log(0) = −∞
  el gradiente se vuelve NaN y el entrenamiento muere.

Qué calcula el laboratorio

Entropía cruzada: el coste de codificar p con un código para q.

python classes/part-13-teoria-de-la-informacion-senales-y-series/263-entropia-cruzada/lab.py
compmath run 263

Salidas del laboratorio (7)

Muestra de la ejecución real

{
  "etiqueta_real": [
    1.0,
    0.0,
    0.0
  ],
  "perdidas": {
    "muy_bueno": 0.105361,
    "mediocre": 0.693147,
    "malo": 2.995732
  },
  "prediccion_perfecta": -0.0,
  "H(p)": -0.0,
  "CE = H(p) + KL(p||q)": true,
  "por_que_hace_falta_epsilon": "log(0) es -infinito y rompe el entrenamiento"
}

Errores comunes

Dónde se usa

Pérdida de clasificación en cualquier red, modelos de lenguaje, calibración de probabilidades y evaluación de modelos probabilísticos.

Idea rectora de la parte

KL no es simétrica ni es una distancia; JS sí es simétrica.

Error a evitar

Muestrear por debajo de Nyquist y culpar al modelo del ruido resultante.

Conexión con IA

La función de pérdida de casi todo clasificador es entropía cruzada; el VAE optimiza un ELBO con un término KL; las CNN son convoluciones aprendidas.

Bibliografía de la clase

Archivos de la clase