Dans nos articles sur Heretic et l’abliteration, un chiffre revenait sans cesse : la KL divergence, 0,16 pour l’un, 1,04 pour l’autre. Personne ne s’est arrêté pour expliquer ce que ça veut dire. C’est l’occasion ou jamais.
Bonne nouvelle : derrière le nom intimidant (« divergence de Kullback-Leibler », du nom des deux statisticiens américains Solomon Kullback et Richard Leibler, qui l’ont introduite en 1951), l’idée tient en une phrase. La KL divergence mesure à quel point deux avis probabilistes se contredisent. Rien de plus. Et on la croise partout : quand on compresse une IA pour la faire tourner chez soi, quand on la dresse avec du RLHF, quand on la « déverrouille ».
Quand un modèle de langage écrit, il ne choisit pas un mot au hasard : à chaque position, il attribue une probabilité à chaque mot possible (« canapé » 70 %, « lit » 20 %, « tapis » 10 %…), puis il en tire un. Comparer deux modèles revient donc à comparer deux répartitions de paris.
L’idée en image : deux météorologues
Imaginez deux prévisionnistes. Le premier a toujours raison : c’est notre référence. Le second est un apprenti. Chaque matin, ils annoncent des probabilités de pluie, de soleil ou de brouillard. Si l’apprenti annonce presque toujours la même chose que le maître, ils « divergent » très peu. S’il promet du soleil quand le maître annonce un orage, la divergence explose.
La KL divergence est la note qui résume cet écart sur toute une série de jours. Plus elle est petite, plus les deux se ressemblent. À zéro, ils sont identiques. Elle ne peut jamais être négative.
Les spécialistes la décrivent aussi autrement : c’est le surcoût d’« étonnement » quand on utilise le mauvais modèle. Si vous pensez que le monde obéit à la répartition B alors qu’il suit la répartition A, vous serez plus souvent surpris, et la KL divergence compte, en moyenne, combien. Elle s’exprime en « nats » ou en « bits » (des unités d’information, comme des mètres ou des kilomètres).
Un exemple chiffré qui tient sur un timbre-poste
Une pièce de monnaie équilibrée donne pile ou face à 50/50. Un modèle trop confiant, lui, parie 90 % pile et 10 % face. Voici le calcul de la divergence :
| Question posée | Calcul (en nats) | Résultat |
|---|---|---|
| Écart quand la réalité est 50/50 et que le modèle parie 90/10 | 0,5 × ln(0,5 ÷ 0,9) + 0,5 × ln(0,5 ÷ 0,1) | 0,51 |
| Écart dans l’autre sens : la réalité est 90/10 et le modèle parie 50/50 | 0,9 × ln(0,9 ÷ 0,5) + 0,1 × ln(0,1 ÷ 0,5) | 0,37 |
Remarquez : 0,51 n’est pas égal à 0,37. C’est une propriété centrale : la KL divergence est asymétrique. L’écart de A vers B n’est pas l’écart de B vers A. C’est pour cette raison qu’on ne l’appelle pas « distance », mais « divergence ». Elle punit surtout le fait d’avoir été trop sûr de soi dans un cas où l’autre ne l’était pas.
Phrase : « Le chat dort sur le ___ ». Le modèle de référence répond canapé 70 %, lit 20 %, tapis 10 %. Une version compressée répond canapé 60 %, lit 25 %, tapis 15 %. Calcul : KL ≈ 0,023 nat. Un modèle qui répondrait canapé 20 %, lit 20 %, tapis 60 % afficherait ≈ 0,70 nat : une tout autre bête. (Exemples pédagogiques de ma composition, pas des mesures sur un vrai modèle.)
À quoi ça sert concrètement dans l’IA ?
1. Juger une IA compressée (la quantification)
Pour faire tourner un modèle géant sur un ordinateur ordinaire, on le quantifie : on arrondit ses nombres pour qu’il pèse moins lourd (c’est ce que vous voyez dans les noms Q8, Q6_K ou Q4_K_M quand vous téléchargez un modèle sur Ollama ou llama.cpp). Question : combien de qualité a-t-on perdu ?
La méthode : on garde le modèle d’origine comme référence, on lui pose les mêmes textes qu’à sa version compressée, et on calcule la KL divergence moyenne entre leurs paris, mot après mot. L’outil llama.cpp sait le faire. Exemple publié dans sa documentation pour LLaMA 3 8B :
| Version | KL divergence moyenne | Taille du fichier |
|---|---|---|
| f16 (référence, pleine précision) | 0,0006 | 14,97 Gio |
| q8_0 | 0,0014 | 7,96 Gio |
| q6_K | 0,0055 | 6,14 Gio |
| q4_K_M | 0,0313 | 4,58 Gio |
Lecture : q4_K_M divise la taille par plus de trois par rapport au f16, au prix d’une divergence environ 23 fois plus grande qu’avec q8_0 (qui, lui, ne divise la taille que par deux). À vous de voir si cet écart compte pour votre usage. Un autre test sur des modèles Qwen 3.6, mené par un blogueur, donne 0,014 pour un modèle 8 bits et 0,11 pour un modèle 4 bits sur une version dense de 27 milliards de paramètres : l’échelle dépend donc du modèle, comparez toujours des versions du même modèle entre elles.
2. Dresser une IA sans la dénaturer (le RLHF)
Dans le RLHF, on récompense le modèle quand ses réponses plaisent aux humains. Danger : à force de courir après la récompense, il peut apprendre des tics absurdes, répéter une formule qui fait gagner des points, ou oublier ce qu’il savait. Solution : on ajoute à sa note un malus proportionnel à la KL divergence entre le modèle en cours d’entraînement et sa version de départ. C’est une laisse : il peut s’éloigner, mais pas trop. Les systèmes de production règlent ce coefficient autour de 0,01 à 0,1 (ordre de grandeur indicatif, il varie selon les équipes).
3. Mesurer les dégâts d’une opération : Heretic
C’est le lien avec nos articles précédents. Heretic mesure la KL divergence entre le modèle d’origine et le modèle « déverrouillé », sur des demandes inoffensives. Pourquoi ? Parce qu’on veut que le modèle continue de répondre exactement comme avant quand la question est banale. Plus la KL est basse, moins l’opération a abîmé le modèle. Sur Gemma 3 12B, le dépôt affiche 0,16 pour Heretic contre 0,45 à 1,04 pour les méthodes manuelles.
Attention, piège de lecture : on ne peut pas comparer ce 0,16 aux 0,03 de la quantification ci-dessus. Les deux mesures n’utilisent ni les mêmes textes ni forcément la même façon de moyenner. C’est une note valable pour juger des variantes entre elles, pas un thermomètre universel.
4. Et ailleurs
- Distillation : on entraîne un petit modèle « élève » à imiter les probabilités d’un grand « professeur », en minimisant leur KL divergence (principe général, très répandu).
- Détection de biais ou de dérive : des services de données l’emploient pour comparer deux populations de données.
- Auto-encodeurs variationnels et autres modèles génératifs : la KL divergence sert à garder un espace interne bien rangé.
Ce qu’il faut retenir
- KL = 0 : deux modèles prédisent exactement pareil. Plus c’est grand, plus ils divergent.
- Asymétrique : l’ordre des deux modèles change le résultat.
- Jamais universelle : comparez des versions d’un même modèle, avec le même texte de test.
- Elle ne dit pas si le modèle est bon, seulement s’il est resté lui-même.
