Back to archive
#ai#llm#glossary#aigen

KL Divergence

Dwa modele inaczej rozdzielają szanse między te same odpowiedzi. Jeden stawia 90% na A i 10% na B, drugi daje im po 50%. Chcesz zmierzyć, jak dobrze drugi odtwarza przewidywania pierwszego.

KL Divergence porównuje dwa rozkłady prawdopodobieństwa, czyli zestawy szans tych samych zdarzeń. Trzeba wskazać rozkład odniesienia i ten, który go przybliża. Wkład każdego zdarzenia zależy od jego szansy w rozkładzie odniesienia i stosunku obu szans.

Dla podanych liczb porównanie pierwszego do drugiego wynosi około 0,368, a odwrotne około 0,511, przy logarytmie naturalnym. Kierunek ma znaczenie: nie jest to symetryczna odległość jak liczba kilometrów między miastami.

W Knowledge Distillation można porównywać przewidywania nauczyciela i studenta. Małe KL oznacza ich zgodność, a nie prawdziwość nauczyciela. Przypisanie zera zdarzeniu mającemu dodatnią szansę w rozkładzie odniesienia daje matematycznie nieskończoną karę.

Mechanizm i szczegóły

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

qiq_i oraz pip_i są prawdopodobieństwami tego samego zdarzenia ii, np. konkretnego tokena. Wzór i związek z Cross-entropy podaje dokumentacja SciPy: entropy. Zachodzi DKL(q∥p)=H(q,p)−H(q)D_{\mathrm{KL}}(q\|p)=H(q,p)-H(q): od Cross-entropy odejmujemy entropię rozkładu odniesienia. Gdy qq jest stałe, ta różnica nie zmienia minimum względem parametrów modelu wyznaczającego pp.

Kierunek porównania ma znaczenie

Własny przykład: dla q=[0,9;0,1]q=[0{,}9;0{,}1] i p=[0,5;0,5]p=[0{,}5;0{,}5] otrzymujemy około 0,368. Po zamianie ról rozkładów wynik wynosi około 0,511. Używamy logarytmu naturalnego, więc jednostką są nats. KL Divergence nie jest symetryczną odległością: zawsze trzeba powiedzieć, który rozkład stoi po której stronie.

Jeśli qi>0q_i>0, lecz pi=0p_i=0, wynik jest nieskończony. Składnik z qi=0q_i=0 przyjmuje się jako zero. Takie przypadki brzegowe definiuje SciPy: rel_entr.

W Knowledge Distillation rozkładem odniesienia może być przewidywanie nauczyciela, a przybliżeniem — przewidywanie studenta. Mała wartość mówi o zgodności tych rozkładów na ocenianych danych, nie o prawdziwości odpowiedzi nauczyciela.

Przy implementacji trzeba uważać na kolejność argumentów. PyTorch: KLDivLoss oczekuje jako input logarytmów prawdopodobieństw modelu, a jako target rozkładu odniesienia przy log_target=False. Dla macierzy „przykłady × klasy” redukcja batchmean sumuje składniki po klasach i uśrednia po przykładach; mean uśrednia wszystkie elementy, dając inną skalę.