Why this matters for ML
La loss más usada en clasificación es la cross-entropy — y este módulo te dice qué es y de dónde sale. Entropy mide incertidumbre; cross-entropy mide qué tan mal tu distribución predicha aproxima la real; la KL divergence mide la "distancia" entre distribuciones (y aparece en VAEs, difusión, regularización bayesiana). Cierra el pilar conectando probabilidad con las funciones de coste del deep learning.
Concepts covered
- Information content (self-information)
- Entropy
- Cross-entropy
- KL divergence
- Relación cross-entropy = entropy + KL
- Por qué cross-entropy es la loss de clasificación
Intuition first
🎬 StatQuest "Entropy" y "Cross Entropy"; Aurélien Géron "A Short Introduction to Entropy, Cross-Entropy and KL-Divergence" (YouTube). MML 6.5 / Goodfellow 3.13. Idea: información = "sorpresa"; eventos raros sorprenden más.
Theory & key results
Information content (sorpresa): un evento de probabilidad carga de información. Raro ( chico) → mucha sorpresa; seguro () → cero. Con se mide en bits; con en nats (lo común en ML).
Entropy: la sorpresa esperada de una distribución : Mide la incertidumbre de . Máxima cuando todo es equiprobable (uniforme); cero cuando un resultado es seguro. Una moneda justa: bit; una moneda cargada: menos.
Cross-entropy: la sorpresa esperada de usar la distribución (tu modelo) cuando la realidad es : Es mínima (e igual a ) cuando . En clasificación, es la etiqueta real (one-hot) y la predicción (softmax); minimizar empuja hacia la verdad. Para etiquetas one-hot se reduce a — exactamente la cross-entropy loss.
KL divergence: cuánta información extra gastas por usar en vez de : con igualdad solo si (desigualdad de Gibbs). No es simétrica (), así que no es una distancia formal, pero funciona como "qué tan distintas son".
La relación que lo une todo: Como (la entropía de las etiquetas reales) es constante respecto a tu modelo, minimizar la cross-entropy loss = minimizar la KL divergence entre tu predicción y la verdad = hacer lo más parecido posible a . Y minimizar cross-entropy es también MLE (Prob-07). Todo encaja.
Worked example
Moneda justa : bit. Moneda cargada : bits (menos incertidumbre).
Cross-entropy: verdad (clase 0), predicción . nats. Si predices mejor : → loss menor. Así entrena un clasificador.
Notebook exercises (by hand)
- Entropy de una distribución uniforme sobre 4 resultados (en bits).
- Entropy de .
- Cross-entropy con y ; repítela con y compara.
- Calcula para , ; y . Confirma que difieren (no simétrica).
- Verifica numéricamente en un ejemplo.
- Explica por qué, con etiquetas one-hot, la cross-entropy loss es .
Python lab
import numpy as np
def entropy(p, base=2):
p = np.asarray(p); p = p[p > 0]
return -np.sum(p * np.log(p)) / np.log(base)
def cross_entropy(p, q, base=2):
p, q = np.asarray(p), np.asarray(q)
return -np.sum(p * np.log(q)) / np.log(base)
def kl(p, q, base=2):
p, q = np.asarray(p), np.asarray(q); m = p > 0
return np.sum(p[m] * np.log(p[m]/q[m])) / np.log(base)
p = np.array([0.5, 0.5]); q = np.array([0.9, 0.1])
print("H(p):", entropy(p)) # 1.0 bit
print("H(p,q):", cross_entropy(p, q))
print("KL(p||q):", kl(p, q), " KL(q||p):", kl(q, p)) # asimétrica
print("check H(p,q)=H(p)+KL:", np.isclose(cross_entropy(p,q), entropy(p)+kl(p,q)))
# cross-entropy loss de un clasificador (one-hot)
y_true = np.array([1, 0, 0]) # clase 0
for pred in [[0.6,0.3,0.1], [0.9,0.05,0.05], [0.98,0.01,0.01]]:
print("loss:", cross_entropy(y_true, np.array(pred), base=np.e)) # baja al mejorar
Examen final 📝
Intenta cada nivel antes de abrir las soluciones.
🟡 Medio
- Entropy (en bits) de y de .
- Cross-entropy con (clase 0) y , en nats.
🟠 Medio-difícil
- Calcula y para , y confirma la asimetría.
- Verifica numéricamente la identidad con los valores del ej. 3 (usa como predicción y como verdad).
🔴 Difícil
- Demuestra que con igualdad sólo si (desigualdad de Gibbs; usa ).
- Demuestra que para etiquetas one-hot, minimizar la cross-entropy equivale a maximizar la log-likelihood del modelo (conecta Prob-07 y Prob-09), y explica por qué la entropía de las etiquetas no afecta la optimización.
✅ Soluciones
- Uniforme sobre 4: bits. : bits.
- nats.
- bits. bits. Distintos ⇒ asimétrica.
- bit; ; y ✓.
- (usando ). Luego ; igualdad sólo cuando en todo el soporte, i.e. .
- Con one-hot (clase correcta ), = la NLL de esa observación. Sumar sobre el dataset = NLL total = log-likelihood, así que minimizar CE = maximizar likelihood (MLE). Como y es constante respecto a los parámetros del modelo, minimizar CE = minimizar KL, sin que influya en el .