Lensa ML

Cara Kerja KL Divergence

Langkah 1 dari 6: Dua Distribusi

Bandingkan P dan Q secara visual

A40%25%B30%25%C20%25%D10%25%P (asli)Q (perkiraan)
Distribusi P
A40%
B30%
C20%
D10%
Distribusi Q
A25%
B25%
C25%
D25%
Entropy P, H(P)
1.846 bit
Entropy Q, H(Q)
2.000 bit

P dan Q sama-sama hampir seragam, jadi keduanya dekat dengan maksimum 2 bit.

Geser delapan slider untuk membentuk P (biru) dan Q (oranye), lalu klik kartu entropy untuk melihat penjumlahan suku demi sukunya. Nilai slider adalah bobot, dinormalisasi sehingga setiap distribusi berjumlah 100%. Dengan pengaturan bawaan, P = 40/30/20/10 punya entropy 1,846 bit dan Q yang seragam punya 2 bit, nilai maksimum untuk empat hasil. Dalam ML, P biasanya distribusi data dan Q modelnya. Entropy menilai tiap distribusi secara terpisah, jadi tidak bisa mengatakan seberapa baik Q memodelkan P. Untuk itu dibutuhkan perbandingan per hasil, dan itulah yang diberikan KL divergence.

Langkah 2 dari 6: Rumus KL

Selisih informasi, suku demi suku

KL(P‖Q) = Σ P(x) · ln( P(x)/Q(x) )
0.347A0.000B-0.077C-0.092DKontribusi KL per kelas: P(x)·ln(P(x)/Q(x))
Distribusi P
A50%
B25%
C15%
D10%
Distribusi Q
A25%
B25%
C25%
D25%
KL(P‖Q) = jumlah suku
0.1783 nat
Suku A
0.347
+ Suku B
0.000
+ Suku C
-0.077
+ Suku D
-0.092

Ada selisih sedang antara P dan Q. Batang terbesar menunjukkan dari mana sebagian besar selisih itu berasal.

Geser slider dan klik kartu Suku mana saja untuk melihat hitungannya. Dengan P bawaan 50/25/15/10 terhadap Q yang seragam, suku A adalah 0.5 × ln 2 ≈ 0.347, suku B tepat 0 karena P(B) = Q(B), dan suku C dan D negatif. Suku tunggal bisa turun di bawah nol, tetapi totalnya tidak pernah (ketidaksamaan Gibbs). Di sini totalnya 0,178 nat. Memakai log₂ sebagai ganti ln menghasilkan bit. Jika Q(x) = 0 di mana pun P(x) > 0, divergence-nya tak hingga, dan ini salah satu alasan model berbasis hitungan memakai smoothing.

Langkah 3 dari 6: Asimetri

KL(P‖Q) ≠ KL(Q‖P)

ABCDP (acuan)Q (perkiraan)
Distribusi P (acuan)
A60%
B20%
C15%
D5%
Distribusi Q (perkiraan)
A20%
B30%
C30%
D20%
KL(P‖Q)
0.4048
KL(Q‖P)
0.3871
|Selisih|
0.0177

Kedua arah hampir sama di sini, tetapi itu hanya kebetulan dari pengaturan ini.

Tekan tombol tukar untuk beralih antara KL(P‖Q) dan KL(Q‖P). Dengan pengaturan bawaan, P = 60/20/15/5 dan Q = 20/30/30/20, kedua arah menghasilkan 0,405 dan 0,387 nat. KL juga tidak memenuhi ketidaksamaan segitiga, jadi disebut divergence, bukan jarak. Untuk skor yang simetris, Jensen-Shannon divergence merata-ratakan KL dari tiap distribusi ke titik tengahnya (P + Q)/2. Nilainya selalu berhingga, dan akar kuadratnya adalah metrik sejati. Fungsi tujuan GAN yang asli berkaitan dengannya: dengan discriminator optimal, generator meminimalkan JS divergence.

Langkah 4 dari 6: KL = Cross-Entropy − Entropy

Menguraikan divergence

H(P,Q) = H(P) + KL(P‖Q)
cross-entropy = entropy + divergence
H(P)1.235H(P)+KLKL=0.151H(P,Q)1.386
Distribusi P
A45%
B30%
C15%
D10%
Distribusi Q
A25%
B25%
C25%
D25%
H(P)
1.235 nat
KL(P‖Q)
0.151 nat
H(P,Q)
1.386 nat

Cross-entropy selalu ≥ entropy. Biaya tambahannya tepat sebesar KL divergence: harga dari memakai Q sebagai pengganti P.

Geser slider dan bandingkan ketiga batang, semuanya dalam nat. Dengan P bawaan 45/30/15/10 dan Q seragam, H(P) = 1.235, KL = 0.151, dan H(P, Q) = 1.386. Nilai terakhir itu adalah ln 4, cross-entropy dari P apa pun terhadap Q seragam atas empat hasil. Saat training, P adalah distribusi data dan tetap, jadi H(P) adalah konstanta. Karena itu, meminimalkan cross-entropy dan meminimalkan KL(P‖Q) menghasilkan model yang sama. Framework menghitung cross-entropy karena hanya butuh log-probabilitas model pada sampel teramati, sedangkan H(P) tidak diketahui untuk data sungguhan.

Langkah 5 dari 6: Mode-Seeking vs Mode-Covering

Arah KL mengubah cara Q menyesuaikan diri

Modus 1Modus 2terlewatterlewatP (bimodal)Q (hasil fit)
Pusat Q
Sebaran Q
KL(P‖Q)
1.836 nat
Modus tercakup
0/2

Mode-covering: KL(P‖Q) memberi penalti pada Q jika melewatkan tempat mana pun yang punya massa P. Naikkan sebaran untuk menutupi kedua puncak.

Geser Pusat Q dan Sebaran Q, lalu tekan tombolnya untuk berganti arah. P adalah campuran dua Gaussian di −2 dan +2, masing-masing dengan σ = 0.7, dan Q adalah satu Gaussian, jadi tidak ada pengaturan Q yang persis cocok dengan P. Arah yang kamu minimalkan menentukan kompromi. Maximum likelihood meminimalkan forward KL(P‖Q), dan itulah sebabnya model yang dilatih dengan likelihood cenderung menyebarkan probabilitas secara luas. Variational inference meminimalkan reverse KL(Q‖P), karena arah ini hanya butuh ekspektasi di bawah Q. Itulah sebabnya variational posterior sering meremehkan ketidakpastian.

Langkah 6 dari 6: Cross-Entropy Loss

Cara classifier belajar dari KL

Loss = −log(P(kelas benar)) = −log(0.188) = 1.669
cross-entropy loss = seberapa terkejut model oleh jawaban yang benar
118.8%Kucing ✓071.5%Anjing09.7%BurungLabel benarPrediksi model
Kelas benar
Keyakinan model (logit)
Kucing18.8%
Anjing71.5%
Burung9.7%
Cross-entropy loss
1.669
P(Kucing)
18.8%

Model memberi Kucing kurang dari 40%, jadi kelas lain memegang sebagian besar probabilitas. Loss-nya tinggi dan pembaruan dari gradient akan kuat.

Klik Kucing, Anjing, atau Burung untuk menetapkan kelas benar, lalu geser slider logit. Logit melewati softmax (dibagi 15 di sini), dan targetnya vector one-hot. P one-hot punya entropy nol, jadi cross-entropy, KL(P‖Q), dan −ln Q(kelas benar) adalah angka yang sama. Dengan pengaturan bawaan dan Kucing sebagai kelas benar, Q(Kucing) sekitar 18,8% dan loss-nya 1,669 nat. Label smoothing memakai target seperti 0,9 / 0,05 / 0,05, sehingga H(P) tidak lagi 0 dan logit tidak terdorong untuk tumbuh tanpa batas.

Apa itu KL divergence?

KL divergence (Kullback-Leibler divergence) mengukur seberapa jauh distribusi probabilitas Q berbeda dari distribusi acuan P. Definisinya KL(P‖Q) = Σ P(x) log(P(x)/Q(x)), yaitu rata-rata informasi tambahan yang dibutuhkan untuk menyandikan sampel dari P dengan kode yang dibuat untuk Q. Nilainya nol tepat ketika P dan Q identik, positif untuk kasus lain, dan tidak simetris.

KL divergence muncul di banyak bagian machine learning. Melatih classifier dengan cross-entropy loss berarti meminimalkan KL divergence dari distribusi label ke prediksi model. VAE menambahkan suku KL yang menjaga distribusi latent dari encoder tetap dekat dengan prior, knowledge distillation melatih model kecil agar cocok dengan distribusi output model besar, dan RLHF memberi penalti pada model bahasa hasil fine-tuning yang, dalam ukuran KL, menjauh terlalu jauh dari model acuannya.

Ide utama

  • KL(P‖Q) = Σ P(x) log(P(x)/Q(x)) adalah ekspektasi rasio log P terhadap Q di bawah P.
  • KL divergence tidak pernah negatif, dan bernilai nol hanya ketika P = Q.
  • KL(P‖Q) dan KL(Q‖P) biasanya berbeda, jadi KL bukan metrik jarak.
  • Cross-entropy sama dengan entropy ditambah KL divergence: H(P, Q) = H(P) + KL(P‖Q).
  • Forward KL(P‖Q) bersifat mode-covering, dan reverse KL(Q‖P) bersifat mode-seeking.
  • Dengan label one-hot, cross-entropy loss dan KL divergence adalah angka yang sama.

Pertanyaan umum

Siapa yang memperkenalkan KL divergence?

Solomon Kullback dan Richard Leibler mendefinisikannya dalam makalah 1951 mereka, "On Information and Sufficiency", berdasarkan teori informasi Shannon. Mereka menyebutnya rata-rata informasi untuk membedakan dua hipotesis. Dalam statistik, besaran ini juga dikenal sebagai relative entropy.

Berapa KL divergence antara dua Gaussian?

Untuk distribusi normal satu dimensi, ada bentuk tertutupnya: KL(N(μ₁, σ₁²) ‖ N(μ₂, σ₂²)) = ln(σ₂/σ₁) + (σ₁² + (μ₁ − μ₂)²) / (2σ₂²) − 1/2. Nilainya naik seiring kuadrat jarak antar rata-rata dan seiring ketidakcocokan sebaran. Gaussian multivariat punya rumus serupa yang melibatkan matriks kovarians.

Bagaimana KL divergence dipakai pada VAE?

Loss VAE adalah suku rekonstruksi ditambah KL(q(z|x) ‖ p(z)), dengan q adalah Gaussian dari encoder atas latent code dan p(z) adalah prior normal standar. Untuk prior normal standar, suku KL menyusut menjadi 1/2 (μ² + σ² − 1 − ln σ²) per dimensi latent. Suku ini menjaga latent space tetap halus, sehingga mengambil sampel z dari prior menghasilkan output yang masuk akal.

Kenapa RLHF memakai penalti KL?

Selama RLHF, policy diberi reward oleh reward model hasil pembelajaran, yang bisa dieksploitasi dengan menghasilkan teks aneh yang skornya bagus. Mengurangkan β × KL(policy ‖ model acuan) dari reward menjaga model hasil fine-tuning tetap dekat dengan aslinya. Koefisien β menyeimbangkan reward dengan kedekatan ke model asli.

Penjelasan terkait

  • Entropy dan Cross-Entropy · Mengukur kejutan, ketidakpastian, dan kualitas prediksi
  • Probabilitas dan Distribusi · Lemparan koin, kurva lonceng, dan matematika ketidakpastian
  • Loss Function · Cara network mengukur kesalahannya
  • Autoencoder & VAE · Dari kompresi ke generasi: autoencoder standar dan variational
  • RLHF · Menyelaraskan model bahasa dengan preferensi manusia lewat reward model dan policy optimization
  • GAN · Dua network bersaing untuk mencipta

Referensi

  1. Kullback & Leibler (1951), "On Information and Sufficiency", Annals of Mathematical Statistics
  2. Kingma & Welling (2013), "Auto-Encoding Variational Bayes"
  3. Ouyang et al. (2022), "Training language models to follow instructions with human feedback"
  4. Szegedy et al. (2016), "Rethinking the Inception Architecture for Computer Vision" (label smoothing)
  5. Bishop (2006), "Pattern Recognition and Machine Learning", sections 1.6 and 10.1

Terakhir diperbarui