Neden Düzenlileştirme Gerekli? Overfitting Sorunu
Bir model eğitim setinde %99 doğruluk elde edip test setinde %60'a düşüyorsa overfitting yaşanıyor demektir. Model eğitim verisindeki gürültüyü gerçek sinyal olarak öğrenir ve bu örüntüler yeni veriye uygulandığında başarısız olur. Düzenlileştirme, kayıp fonksiyonuna L(w) + λR(w) şeklinde ceza ekleyerek büyük ağırlıkları pahalı kılar ve modeli daha basit çözümlere yönlendirir. Büyük λ → güçlü düzenlileştirme (underfitting riski); küçük λ → zayıf düzenlileştirme (overfitting riski).
L1 (Lasso) ve L2 (Ridge) Karşılaştırması
L2 Ridge: ceza = λΣw²; ağırlıkları küçültür ama sıfırlamaz; tüm özellikler modele katkıda bulunur; weight decay olarak derin öğrenmede standarttır. L1 Lasso: ceza = λΣ|w|; bazı ağırlıkları tam sıfıra iter; seyrek (sparse) model üretir; otomatik özellik seçimi yapar. Elastic Net: α×L1 + (1-α)×L2 kombinasyonu; her iki avantajdan yararlanır. Seçim kuralı: birkaç kritik özellik → L1; çoğu özellik katkılı → L2; emin değilseniz Elastic Net.
Dropout: Derin Ağlara Özgü Düzenlileştirme
Dropout, eğitim sırasında her adımda nöronların rastgele bir kısmını (p oranında) devre dışı bırakır. Model tek nöronlara güvenemeyeceği için farklı alt ağlarla aynı görevi yapmayı öğrenir — bu N ayrı modelin ortalamasını almaya benzer (ansambl etkisi). Çıkarımda tüm nöronlar aktif; ağırlıklar (1-p) faktörüyle ölçeklenir. Pratik değerler: FC katmanlar için p=0.3-0.5; konvolüsyonel katmanlar için p=0.1-0.2. MC Dropout: çıkarımda da dropout etkin tutularak belirsizlik tahmini yapılır.
Erken Durdurma ve Diğer Teknikler
Erken durdurma (early stopping): doğrulama kaybı artmaya başladığında eğitimi keser; örtük düzenlileştirme sağlar. Patience parametresi kaç epoch beklenileceğini belirler. Veri artırma (data augmentation): görüntü döndürme, kesme, renk değişimi gibi yapay çeşitlendirme modelin genelleştirmesini güçlendirir. Batch Normalization: aktivasyonları normalleştirerek eğitimi stabilize eder; dolaylı düzenlileştirme etkisi. Label smoothing: kesin 0/1 etiketler yerine 0.1/0.9 gibi yumuşak değerler kullanarak aşırı güveni azaltır.
Düzenlileştirme Yöntemleri
L1 (Lasso)
Bazı ağırlıkları tam sıfıra götürür; seyrek model ve otomatik özellik seçimi için tercih edilir.
L2 (Ridge)
Ağırlıkları sıfıra yaklaştırır ama tam sıfır yapmaz; korelasyonlu özelliklerle daha kararlı.
Elastic Net
L1 ve L2'yi birleştirir; yüksek boyutlu ve korelasyonlu veri setlerinde dengeyi sağlar.
Batch Normalization
Katman girişlerini normalleştirerek gradyan patlamasını/kaybını önler; derin ağlarda standarttır.
Sık Sorulan Sorular
- check_circle L1 mi L2 mi seçmeliyim? Az sayıda kritik özellik varsa L1 kullanın — bazı ağırlıkları sıfıra iterek otomatik özellik seçimi yapar. Çoğu özellik katkılıysa L2 daha iyidir; hiçbir ağırlığı tam sıfırlamaz. Hangisi işe yarar bilmiyorsanız Elastic Net her ikisini birleştirir.
- check_circle λ (lambda) değerini nasıl ayarlamalıyım? GridSearchCV veya RandomSearchCV ile logaritmik ölçekte [0.001, 0.01, 0.1, 1.0] deneyin. Yüksek λ underfitting, düşük λ overfitting göstergesidir. Validation eğrisinde eğitim-doğrulama arasındaki fark en küçük olduğu değeri seçin.
- check_circle PyTorch'ta L2 regularization nasıl uygulanır? optimizer = torch.optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-4) şeklinde weight_decay parametresi L2 cezasını ekler. Dropout için nn.Dropout(p=0.3) katmanı model sınıfına eklenir.
- check_circle Dropout ile L2'yi birlikte kullanabilir miyim? Evet; ikisi farklı mekanizmalarla çalışır ve birbirini tamamlar. Derin ağlarda standart pratik: FC katmanlara dropout + tüm ağırlıklara weight decay (L2) uygulamak.
- check_circle Dropout eğitimde ve çıkarımda farklı davranır mı? Evet. Eğitimde nöronlar p olasılığıyla devre dışı bırakılır. Çıkarımda (model.eval()) tüm nöronlar aktif olur ve aktivasyonlar (1-p) ile çarpılır (inverted dropout). PyTorch model.eval() çağrısı bunu otomatik yapar.
- check_circle Batch Normalization düzenlileştirme sayılır mı? Teknik olarak düzenlileştirici değil ama güçlü düzenlileştirme etkisi yaratır: eğitimi stabilize eder, daha yüksek öğrenme hızı kullanmayı mümkün kılar ve gürültü ekleyerek overfitting'i azaltır. BN kullanan ağlarda dropout ihtiyacı azalır.