KL-Divergenz
Zwei Modelle verteilen die Wahrscheinlichkeiten unterschiedlich auf dieselben Antworten. Eines setzt 90% auf A und 10% auf B, das andere gibt beiden 50%. Du möchtest messen, wie gut das zweite die Vorhersagen des ersten nachbildet.
KL Divergence vergleicht zwei Wahrscheinlichkeitsverteilungen, also Sätze von Wahrscheinlichkeiten derselben Ereignisse. Die Referenzverteilung und die Verteilung, die sie annähert, müssen angegeben werden. Der Beitrag jedes Ereignisses hängt von seiner Wahrscheinlichkeit in der Referenzverteilung und vom Verhältnis der beiden Wahrscheinlichkeiten ab.
Für diese Zahlen beträgt der Vergleich der ersten mit der zweiten etwa 0,368, der umgekehrte etwa 0,511, jeweils mit dem natürlichen Logarithmus. Die Richtung zählt: Es ist keine symmetrische Entfernung wie die Kilometerzahl zwischen Städten.
Bei Knowledge Distillation lassen sich die Vorhersagen des Lehrers und des Schülers vergleichen. Ein kleines KL bedeutet ihre Übereinstimmung, nicht die Wahrheit des Lehrers. Einem Ereignis mit positiver Wahrscheinlichkeit in der Referenzverteilung die Wahrscheinlichkeit null zuzuweisen, ergibt mathematisch eine unendliche Strafe.
Mechanismus und Details
und sind die Wahrscheinlichkeiten desselben Ereignisses , etwa eines bestimmten Tokens. Die Formel und ihre Beziehung zu Cross-entropy beschreibt die SciPy-Dokumentation: entropy. Es gilt : Von der Cross-entropy ziehen wir die Entropie der Referenzverteilung ab. Wenn konstant ist, verändert diese Differenz das Minimum bezüglich der Modellparameter, die bestimmen, nicht.
Die Vergleichsrichtung zählt
Eigenes Beispiel: Für und erhalten wir ungefähr 0,368. Vertauschen wir die Rollen der Verteilungen, beträgt das Ergebnis ungefähr 0,511. Wir verwenden den natürlichen Logarithmus; die Einheit ist daher Nat. KL-Divergenz ist kein symmetrischer Abstand. Es muss immer angegeben werden, welche Verteilung auf welcher Seite steht.
Ist , aber , ist das Ergebnis unendlich. Ein Term mit wird als null definiert. Diese Randfälle definiert SciPy: rel_entr.
Bei der Wissensdestillation kann die Lehrervorhersage als Referenzverteilung und die Schülervorhersage als Näherung dienen. Ein kleiner Wert beschreibt die Übereinstimmung dieser Verteilungen auf den bewerteten Daten, nicht den Wahrheitsgehalt der Lehrerantworten.
Bei der Implementierung muss die Argumentreihenfolge beachtet werden. PyTorch: KLDivLoss erwartet als input die logarithmischen Modellwahrscheinlichkeiten und bei log_target=False als target die Referenzverteilung. Für eine Matrix „Beispiele × Klassen“ summiert batchmean die Terme über Klassen und mittelt über Beispiele; mean mittelt alle Elemente und liefert dadurch eine andere Skala.