Kayıp Fonksiyonu
Loss Function
Modelin tahmininin gerçek değerden ne kadar saptığını sayısallaştıran fonksiyon — eğitim, bu fonksiyonun değerini minimize edecek parametreleri arar.
Eğitim sırasında modelin "ne kadar iyi öğrendiğini" tek bir sayı olarak ifade eden mekanizma kayıp fonksiyonudur. Model bir tahmin üretir, gerçek etiketle kıyaslanır, aralarındaki sapma bir sayıya çevrilir. Eğitim algoritması (genelde gradient descent) bu sayıyı azaltacak yönde modelin parametrelerini günceller.
Kayıp fonksiyonu problem türüne göre seçilir, modelin nasıl öğreneceğini belirler. Bazı standart seçimler:
- MSE (Mean Squared Error): regresyonda klasik. Hatayı kareler — büyük hatalar ağır cezalandırılır. Aykırı değerlere duyarlı. - MAE (Mean Absolute Error): regresyonda. Mutlak hata — aykırılara daha tolerantlı, ama gradient daha az bilgi içerir. - Huber loss: MSE ve MAE arasında köprü. Küçük hatalarda MSE, büyük hatalarda MAE gibi davranır. - Cross-Entropy: sınıflandırmanın ana kayıp fonksiyonu. Olasılık tahmininin gerçek sınıfa ne kadar uzak olduğunu ölçer; öğrenmeyi olasılık tabanlı yapar. - Hinge loss: SVM'in temeli. Doğru tarafta yeterli marj varsa kayıp 0, yoksa orantılı.
Kayıp fonksiyonu seçimi modelin sonuç davranışını değiştirir. Aynı veri ve aynı mimari, farklı kayıpla farklı performans verir; bu yüzden iş problemine en uygun kaybı seçmek mühendisliğin kritik bir parçasıdır.
Bir okçunun antrenman sırasında kullandığı puanlama sistemi gibi. "Hedeften ne kadar uzakta?" sorusunun cevabını bir sayıya çevirir. MSE okçudan tam ortayı ister, dış halkalara ağır ceza verir. MAE her sapmayı eşit cezalandırır. Hinge yeterince yakınsa hiç ceza vermez. Hangi puan sistemini seçtiğin, okçunun nasıl antrenman yapacağını belirler. Model de tam böyle — kayıp fonksiyonu modelin "ne için optimize ettiğini" tanımlar.
Aynı veri seti üzerinde kâr tahmini için iki model eğitiyorsun: biri MSE, diğeri MAE ile.
- MSE versiyonu: Genelde ortalama kârı iyi bilir ama bir sezon yanlışlıkla giren 2 milyonluk uçuk değer modeli saptırmış. Sonraki sezon, normal aralık tahminleri sürekli yüksek çıkıyor. - MAE versiyonu: Aykırı değerden az etkilenmiş, normal aralıklarda doğruluk benzer ama ortalama hatası daha tutarlı.
İş ekibi "tutarlı tahmin lazım, aykırı sezonu ayrıca ele alacağız" der → MAE seçilir. Aynı veri, aynı algoritma, sadece kayıp fonksiyonu farkı; tamamen farklı bir model davranışı çıkar.
from sklearn.linear_model import HuberRegressor, LinearRegression
from sklearn.metrics import mean_absolute_error
import numpy as np
# Aynı veri, farklı kayıp fonksiyonları
models = {
"Linear (MSE)": LinearRegression(),
"Huber (Huber)": HuberRegressor(epsilon=1.35),
}
# Aykırı değerlerle veri
rng = np.random.default_rng(0)
n = 200
X = rng.normal(size=(n, 1))
y = (3 * X.squeeze() + rng.normal(scale=0.5, size=n))
y[:10] += 50 # 10 aykırı değer ekle
for name, m in models.items():
m.fit(X, y)
preds = m.predict(X)
mae = mean_absolute_error(y, preds)
print(f"{name:15s} katsayı={m.coef_[0]:+.3f} MAE={mae:.3f}")
# MSE tabanlı doğruluğu aykırılar saptırır;
# Huber gerçek eğime daha yakın sonuç verir.import torch
import torch.nn as nn
# Logits → cross-entropy → kayıp
criterion = nn.CrossEntropyLoss()
logits = torch.tensor([[2.0, 1.0, 0.1], [0.5, 2.5, 0.3]]) # 2 örnek, 3 sınıf
targets = torch.tensor([0, 1])
loss = criterion(logits, targets)
print(f"Cross-entropy: {loss.item():.4f}")
# Tahmin sınıf 0 ve 1 → ikisi de doğru → kayıp düşük- Bu bir kavram; her ML eğitiminde mutlaka seçilir
- Kavramsal olarak her zaman gerekli
Yanlış kaybı seçmek
Olasılık çıktısı isteyen yerde MSE kullanmak, aykırı değer dolu veride MSE'de ısrar etmek, sınıflandırmada MAE kullanmak — kötü sonuç üretir. Probleme uygun kaybı seç.
Kayıp ile değerlendirme metriğini karıştırmak
Eğitimde optimize ettiğin kayıp ile son raporladığın metrik genelde farklıdır. Cross-entropy minimize edersin ama F1 raporlarsın. İkisi farklı amaçlara hizmet eder.
Düzenlileştirme terimini unutmak
Pratikte kayıp = veri kaybı + λ × düzenlileştirme. λ'yi ayarlamadan eğitirsen ya aşırı öğrenme ya yetersiz öğrenme alırsın.