Volver al archivo
#ai#llm#glossary#aigen

Divergencia KL

Dos modelos reparten de forma distinta las probabilidades entre las mismas respuestas. Uno asigna un 90% a A y un 10% a B; el otro les da un 50% a cada una. Quieres medir qué tan bien reproduce el segundo las predicciones del primero.

KL Divergence compara dos distribuciones de probabilidad, es decir, conjuntos de probabilidades de los mismos sucesos. Hay que indicar la distribución de referencia y la que la aproxima. La contribución de cada suceso depende de su probabilidad en la distribución de referencia y de la razón entre ambas probabilidades.

Para los números indicados, la comparación de la primera con la segunda es aproximadamente 0,368, y la inversa aproximadamente 0,511, con logaritmo natural. La dirección importa: no es una distancia simétrica como el número de kilómetros entre ciudades.

En Knowledge Distillation se pueden comparar las predicciones del profesor y del estudiante. Una KL pequeña significa concordancia, no que el profesor tenga razón. Asignar cero a un suceso con probabilidad positiva en la distribución de referencia produce matemáticamente una penalización infinita.

Mecanismo y detalles

DKL(q∥p)=∑iqiln⁡qipiD_{\mathrm{KL}}(q\|p)=\sum_i q_i\ln\frac{q_i}{p_i}

qiq_i y pip_i son las probabilidades del mismo suceso ii, por ejemplo, un token concreto. La documentación de SciPy: entropy presenta la fórmula y la relación con Cross-entropy. Se cumple DKL(q∥p)=H(q,p)−H(q)D_{\mathrm{KL}}(q\|p)=H(q,p)-H(q): de Cross-entropy restamos la entropía de la distribución de referencia. Cuando qq es fija, esa diferencia no cambia el mínimo respecto a los parámetros del modelo que determina pp.

La dirección de la comparación importa

Ejemplo propio: para q=[0,9;0,1]q=[0{,}9;0{,}1] y p=[0,5;0,5]p=[0{,}5;0{,}5] obtenemos aproximadamente 0,368. Al intercambiar los papeles de las distribuciones, el resultado es aproximadamente 0,511. Utilizamos el logaritmo natural, así que la unidad son los nats. La divergencia KL no es una distancia simétrica: siempre hay que decir qué distribución está a cada lado.

Si qi>0q_i>0 pero pi=0p_i=0, el resultado es infinito. El término con qi=0q_i=0 se considera cero. SciPy: rel_entr define estos casos límite.

En la destilación de conocimiento, la distribución de referencia puede ser la predicción del profesor, y la aproximación, la del estudiante. Un valor pequeño indica que las distribuciones coinciden en los datos evaluados, no que las respuestas del profesor sean verdaderas.

En la implementación hay que prestar atención al orden de los argumentos. PyTorch: KLDivLoss espera los logaritmos de las probabilidades del modelo como input, y la distribución de referencia como target con log_target=False. Para una matriz «ejemplos × clases», la reducción batchmean suma los términos por clases y promedia por ejemplos; mean promedia todos los elementos y produce otra escala.