Comprendre Divergence de Kullback-Leibler
Supposez qu’une source émette selon p et que vous construisiez le code le plus court pour une distribution q différente. Chaque symbole coûte alors log2(1/q) bits au lieu de log2(1/p), et la facture moyenne est l’entropie croisée. La divergence de Kullback-Leibler est la part de cette facture que vous n’aviez pas à payer : l’écart entre votre dépense et l’entropie de la source.
La décomposition est exacte, et c’est toute la raison pour laquelle l’entropie croisée est la perte standard. Pour une source de probabilités 0,6 ; 0,25 ; 0,1 et 0,05, l’entropie vaut 1,4905 bit. La coder avec un schéma construit pour la distribution uniforme coûte exactement 2,0000 bits par symbole, et le supplément est 0,5095. Le premier nombre est fixé par le monde ; le second est la seule part qu’un modèle peut améliorer, si bien qu’entraîner sur l’entropie croisée revient à entraîner sur la divergence à la vérité.
Ce n’est pas une distance, et l’asymétrie n’est pas un détail technique. Pour une source qui émet un symbole 98 % du temps, la divergence de cette source vers la distribution uniforme vaut 1,4235 bit, tandis que dans l’autre sens elle vaut 2,8540, un peu plus du double. KL(p||q) est dominée par les issues que p produit et que q juge improbables : elle punit un modèle qui ne couvre pas ce qui arrive. La direction inverse punit un modèle qui répartit de la masse là où rien ne se produit. La direction minimisée décide si une méthode nuance ou s’engage.
La pénalité d’une erreur confiante croît sans borne. Donner à la vérité une probabilité de 0,5 coûte 1 bit, 0,1 coûte 3,32, 0,01 coûte 6,64 et 0,001 coûte 9,97. C’est exactement pourquoi l’entropie croisée est sensible à la calibration là où la justesse ne l’est pas, et pourquoi une poignée d’exemples confidemment faux peut dominer un gradient.
Comment calculer
KL(p||q) = Σ p(x) log2( p(x) / q(x) ) and H(p,q) = H(p) + KL(p||q)
où
- p
- la distribution qui engendre réellement les données
- q
- le modèle : la distribution dont vous utilisez le code
- H(p,q)
- l’entropie croisée, le coût moyen de coder p avec q
- KL(p||q) ≥ 0
- nulle exactement quand p et q coïncident partout
Exemple : Divergence de Kullback-Leibler
Source (0,6 ; 0,25 ; 0,1 ; 0,05) contre un modèle uniforme : entropie 1,4905 bit, entropie croisée 2,0000 bits, divergence 0,5095 bit par symbole.
Une source qui est à 98 % un seul symbole : KL(source||uniforme) = 1,4235 bit, KL(uniforme||source) = 2,8540 bits. Mêmes distributions, coût double dans un sens.
Perte par exemple quand le modèle donne à la vraie étiquette 0,5 ; 0,1 ; 0,01 et 0,001 : 1,00 ; 3,32 ; 6,64 et 9,97 bits.
Questions fréquentes
Pourquoi ne pas utiliser une mesure symétrique ?
Des variantes symétriques existent et servent quand on veut vraiment comparer deux distributions comme objets. Mais la version asymétrique est celle qui répond à « combien ce modèle me coûte-t-il », qui est la question à laquelle une fonction de perte doit répondre.
Que se passe-t-il si le modèle attribue zéro à un événement qui survient ?
La divergence est infinie, et ce n’est pas un accident numérique : le code n’a pas de mot pour ce symbole. En pratique c’est pourquoi l’on lisse ou tronque les probabilités, et pourquoi un zéro dans un modèle doit toujours être une affirmation délibérée plutôt qu’un artefact d’un petit échantillon.
Minimiser l’entropie croisée revient-il au maximum de vraisemblance ?
Oui, à une constante et à un changement d’unités près. La log-vraisemblance négative moyenne des données sous le modèle est l’entropie croisée empirique : les deux procédures sélectionnent le même modèle et ne diffèrent que par la façon de rapporter le nombre.
En résumé
La divergence est le prix de se tromper sur la distribution, mesuré en bits et payable par observation. Elle scinde l’entropie croisée en une part que vous ne pouvez pas changer et une part qui est entièrement votre modèle, ce qui en fait la quantité naturelle à minimiser, à condition de se rappeler dans quelle direction on minimise.