Skip to content

Kullback-Leibler Divergence: İki Dağılım Arasındaki Mesafeyi Ölçmek

Published: at 10:00 AMSuggest an edit

Merhaba arkadaşlar! Bugün machine learning ve information theory’nin en temel konseptlerinden birini konuşacağız: Kullback-Leibler (KL) Divergence. VAE’ler, GANlar, language model’ler… Hepsinin arkasında bu konsept var. Gelin birlikte derinlere dalalım!

KL Divergence Nedir?

KL Divergence, iki probability distribution arasındaki “farkı” ölçen bir metrik. Ama dikkat - tam olarak bir mesafe değil! Daha çok “bir dağılımı diğeriyle temsil etmeye çalışırsak ne kadar bilgi kaybederiz?” sorusuna cevap veriyor.

Şöyle düşünün: Gerçek veri dağılımınız var (P) ve siz bunu daha basit bir dağılımla (Q) modellemeye çalışıyorsunuz. KL Divergence size bu yaklaşımın ne kadar “kötü” olduğunu söylüyor.

Neden “Divergence” ve Neden “Mesafe” Değil?

KL Divergence simetrik değil! Yani KL(P||Q) ≠ KL(Q||P). Bu yüzden matematiksel anlamda bir “mesafe” değil, bir “divergence”.

Gerçek hayattan örnek: İstanbul’un hava durumu dağılımını (P) Antalya’nın dağılımıyla (Q) modellemeye çalışmak vs. Antalya’yı İstanbul ile modellemeye çalışmak. İkisi farklı zorluktadır!

Information Theory Perspektifi

KL Divergence aslında “relative entropy” olarak da bilinir. Information theory’de entropy, bir dağılımdaki belirsizliği ölçer. KL Divergence ise iki dağılım arasındaki “ekstra belirsizliği” ölçer.

Başka bir bakış açısı: Eğer gerçek dağılım P iken, Q dağılımına göre tasarlanmış bir kodlama sistemi kullanırsanız, ortalamada kaç ekstra bit’e ihtiyacınız olur? İşte KL Divergence size bunu söylüyor!

Machine Learning’de KL Divergence

Variational Autoencoders (VAE): Latent space distribution’ını standard normal distribution’a yaklaştırmak için KL loss kullanır.

Language Models: Predicted word distribution ile actual word distribution arasındaki farkı ölçmek için.

Knowledge Distillation: Teacher model’in output distribution’ını student model’e transfer etmek için.

Reinforcement Learning: Policy gradient method’larda old policy ile new policy arasındaki farkı kontrol etmek için.

Basit Örnekler

import numpy as np

def kl_divergence(p, q):
    """
    Calculate KL divergence KL(P||Q)
    p, q: probability distributions (must sum to 1)
    """
    # Avoid log(0) by adding small epsilon
    epsilon = 1e-10
    p = np.clip(p, epsilon, 1)
    q = np.clip(q, epsilon, 1)

    # KL divergence formula: sum(p * log(p/q))
    return np.sum(p * np.log(p / q))

# Example: Two discrete distributions
p = np.array([0.1, 0.4, 0.5])  # True distribution
q = np.array([0.33, 0.33, 0.34])  # Uniform approximation

divergence = kl_divergence(p, q)
print(f"KL(P||Q) = {divergence:.4f}")

# Note: KL is not symmetric!
reverse_divergence = kl_divergence(q, p)
print(f"KL(Q||P) = {reverse_divergence:.4f}")

KL Divergence’ın Özellikleri

Non-negative: KL(P||Q) ≥ 0 her zaman. Sadece P = Q olduğunda 0.

Asymmetric: KL(P||Q) ≠ KL(Q||P) genel durumda.

Not a metric: Triangle inequality sağlamıyor.

Unbounded: Sonsuza gidebilir. Q’da 0 olasılık varken P’de varsa, KL sonsuzdur!

Sonuç

KL Divergence, modern machine learning’in temel taşlarından biri. VAE’lerden policy gradient’lara, knowledge distillation’dan anomaly detection’a kadar her yerde karşımıza çıkıyor.

En önemli nokta: KL Divergence bir mesafe değil, bir “bilgi kaybı” ölçüsü. Bu perspektifi kavradığınızda, neden asimetrik olduğu, nerede kullanılacağı çok daha mantıklı geliyor.



Previous Post
Text-to-Speech (TTS): Metni Sese Dönüştürme Sanatı
Next Post
Flutter Extension Methods: Var Olan Class'lara Süper Güçler Katmak