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
y son las probabilidades del mismo suceso , por ejemplo, un token concreto. La documentación de SciPy: entropy presenta la fórmula y la relación con Cross-entropy. Se cumple : de Cross-entropy restamos la entropía de la distribución de referencia. Cuando es fija, esa diferencia no cambia el mínimo respecto a los parámetros del modelo que determina .
La dirección de la comparación importa
Ejemplo propio: para y 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 pero , el resultado es infinito. El término con 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.