Divergencia KL (Kullback–Leibler)

Midiendo la diferencia entre dos distribuciones

La divergencia KL mide cuánto se diferencia una distribución de probabilidad QQQ de otra distribución de referencia PPP.

👉 Es una herramienta fundamental para comparar distribuciones en machine learning, inferencia y modelos probabilísticos.


Definición corta

La divergencia KL cuantifica cuánta información se pierde al usar QQQ para aproximar PPP.


📐 Definición matemática

DKL(PQ)=xP(x)logP(x)Q(x)D_{KL}(P\parallel Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}


Para variables continuas:DKL(PQ)=P(x)logP(x)Q(x)dxD_{KL}(P \parallel Q)=\int P(x)\log\frac{P(x)}{Q(x)}\,dx


🧠 Intuición

La divergencia KL responde:

👉 “¿Cuánto peor es usar QQQ en lugar de PPP?”


Distribución real (P) ↓ Distribución aproximada (Q) ↓ Diferencia → KL

📊 Interpretación

  • DKL=0D_{KL} = 0DKL​=0 → distribuciones iguales
  • DKL>0D_{KL} > 0DKL​>0 → diferencia creciente

👉 nunca es negativa.


⚠️ Importante: no es simétrica

DKL(PQ)DKL(QP)D_{KL}(P \parallel Q) \neq D_{KL}(Q \parallel P)DKL​(P∥Q)=DKL​(Q∥P)


👉 el orden importa.


📊 Ejemplo conceptual

P → distribución real Q → modelo ↓ KL mide error

🧠 Interpretación en términos de información

logP(x)Q(x)\log\frac{P(x)}{Q(x)}


👉 mide la “sorpresa” al usar QQQ.


📊 Ejemplo conceptual

Evento probable en P ↓ Improbable en Q ↓ Alta penalización

🧠 Uso en machine learning

La divergencia KL se usa en:

  • modelos generativos
  • variational inference
  • VAEs
  • regularización
  • comparación de distribuciones

📊 Ejemplo conceptual

Datos reales ↓ Modelo ↓ Distribución estimada ↓ KL → diferencia

🧠 Relación con entropía

DKL(PQ)=H(P,Q)H(P)D_{KL}(P \parallel Q) = H(P, Q) – H(P)


👉 conecta con entropía y cross-entropy.


🧠 Relación con pérdida

Minimizar KL ≈ mejorar el modelo.


Modelo mejor ↓ KL más pequeño

📊 Ejemplo en Python

import numpy as np
P = np.array([0.6, 0.4])
Q = np.array([0.5, 0.5])
kl = np.sum(P * np.log(P / Q))
print(kl)

Ejemplo en PyTorch

import torch
import torch.nn.functional as F
P = torch.tensor([0.6, 0.4])
Q = torch.tensor([0.5, 0.5])
kl = torch.sum(P * torch.log(P / Q))
print(kl)

🧠 Qué muestra este ejemplo

  • comparación de distribuciones
  • cálculo directo
  • diferencia cuantificada

⚠️ Errores comunes

Pensar que es distancia

No es métrica (no simétrica).


Ignorar ceros en Q

Puede causar infinito.


Confundir con error simple

Es una medida informacional.


📊 Ejemplo conceptual en ML

Distribución real ↓ Distribución modelo ↓ KL divergence ↓ Optimización

🧠 Interpretación profunda

La divergencia KL refleja un principio clave:

👉 Aprender es aproximar distribuciones

Permite:

  • medir calidad de modelos
  • optimizar probabilidades
  • entender información

Conclusión

La divergencia KL mide la diferencia entre distribuciones y es fundamental para entrenamiento y evaluación de modelos probabilísticos.

👉 Es una de las métricas más importantes en machine learning moderno.


Related Concepts

  • Entropía
  • Cross-entropy
  • Distribución de probabilidad
  • Inferencia
  • VAEs