Neden Çapraz Entropi? MSE ile Karşılaştırma
MSE (Ortalama Karesel Hata) regresyon için uygun ama sınıflandırmada zayıf kalır. Model 'kedi' için %90 olasılık önerirken yanlış yönde ilerlese, MSE gradyanı çok küçüktür — düzeltme sinyali yetersiz. Çapraz entropi log(ŷ) kullanır: model yanlış sınıfa yüksek olasılık verdiğinde kayıp logaritmik olarak patlar ve büyük gradyan öğrenmeyi zorlar. İkili sınıflandırma: L = −[y·log(ŷ) + (1−y)·log(1−ŷ)]. Doğru sınıf için ŷ→1 yaptıkça L→0; yanlış sınıf için ŷ→1 yaptıkça L→∞.
Softmax ile Doğal Eşleşme
Çok sınıflı görevlerde softmax çıktı katmanı her sınıf için [0,1] aralığında ve toplamı 1 olan olasılıklar üretir. Kategorik çapraz entropi bu dağılımı alır ve yalnızca gerçek sınıfın tahmin olasılığını değerlendirir: L = −log(ŷ_doğru). PyTorch'ta nn.CrossEntropyLoss() softmax + log + NLL'yi tek seferde ve sayısal kararlı biçimde (log-sum-exp trick) hesaplar. Bu nedenle modelin son katmanına ayrıca softmax EKLEMEYİN — CrossEntropyLoss bunu içerir.
Sayısal Kararlılık ve Pratik Uygulama
log(0) matematiksel olarak tanımsızdır; model sıfır olasılık tahmin ederse kayıp patlar. Kütüphaneler bunu log-sum-exp numarası ile çözer. PyTorch: criterion = nn.CrossEntropyLoss(); loss = criterion(logits, labels) — logits softmax öncesi ham çıktılar. TensorFlow/Keras: tf.keras.losses.CategoricalCrossentropy(from_logits=True). İkili sınıflandırma: nn.BCEWithLogitsLoss() (sigmoid + BCE birleşik). Ağırlıklı çapraz entropi: sınıf dengesizliğinde nadir sınıflara daha yüksek ağırlık atanır.
Label Smoothing ve Varyantlar
Label smoothing: gerçek etiketi 1.0 yerine 1-ε (ör. 0.9), diğer sınıfları 0 yerine ε/(K-1) yapar. Model aşırı güvenli (overconfident) olduğunda genelleme düşer; yumuşatma bunu önler. ε=0.1 standart; Transformer eğitiminde yaygın. Focal Loss: yanlış sınıflanan zor örneklere ek ağırlık verir, dengesiz veri setleri için güçlü (nesne tespitinde standart). KL Divergence: çapraz entropi ile entropi arasındaki fark; dağılım karşılaştırmada genelleştirilmiş form.
Çapraz Entropi Varyantları
Label Smoothing
Kesin 0/1 etiketler yerine ε dağılımıyla yumuşatılmış hedefler; aşırı güven ve ezber sorununu azaltır, ImageNet'te +0.5% doğruluk rapor edildi.
Focal Loss
Kolay örneklerin kaybını azaltarak zor örneklere odaklanır; sınıf dengesizliğinde nesne tespiti için geliştirildi (RetinaNet).
Binary Cross-Entropy
İki sınıflı veya çok etiketli sınıflandırma için; her sınıf bağımsız sigmoid ile değerlendirilir, softmax normalleştirme gerekmez.
KL Divergence
Çapraz entropinin genelleştirilmesi; bilgi damıtma ve VAE ELBO kaybında çıktı dağılımları arasındaki farkı ölçer.
Sık Sorulan Sorular
- check_circle Çapraz entropi ile MSE arasındaki temel fark nedir? MSE karesi alınmış fark ölçer, sınıflandırma için zayıf gradyan üretir. Çapraz entropi log olasılık ölçer; yanlış sınıfa yüksek olasılık verildiğinde logaritmik olarak cezalandırır — bu büyük gradyanlar öğrenmeyi hızlandırır.
- check_circle PyTorch'ta CrossEntropyLoss nasıl kullanılır? criterion = nn.CrossEntropyLoss(); loss = criterion(logits, labels). logits ham tahminler (softmax uygulanmamış), labels sınıf indeksleri (LongTensor). Son katmana softmax eklemeyin — loss içinde zaten var.
- check_circle İkili sınıflandırma için hangi kayıp fonksiyonu seçilmeli? BCEWithLogitsLoss — sigmoid + binary cross-entropy birleşik ve sayısal kararlı. Çıkış boyutu (batch_size,) veya (batch_size, 1), etiket float [0.0, 1.0].
- check_circle Label smoothing ne zaman kullanılmalı? Model çok kesin (overconfident) tahminler yapıyorsa ve test genellemesi düşükse label smoothing deneyin. ε=0.1 iyi başlangıç. Transformer ve büyük sınıflandırma modellerinde standarttır; küçük veri setlerinde aşırı regularizasyon riski var.
- check_circle Çok sınıflı ile çok etiketli fark nedir? Çok sınıflı (mutually exclusive): softmax + categoricalCE, her örnek 1 sınıfa ait. Çok etiketli (multi-label): sigmoid + BCEWithLogitsLoss, her örnek birden fazla sınıfa ait olabilir.
- check_circle Kayıp çok yüksek başlıyor ama düşmüyor — ne yapmalıyım? Son katmana softmax koymuşsanız ve CrossEntropyLoss kullanıyorsanız çift softmax problemi var — son katmandan softmax kaldırın. Öğrenme hızı çok yüksek veya düşük olabilir. Gradyan patlaması için gradient clipping deneyin.