Regularization (Düzenlileştirme)

Modelin overfitting'ini önlemek için kayıp fonksiyonuna ağırlık ceza terimi ekleyen makine öğrenimi tekniği.

Düzenlileştirme (Regularization), makine öğrenimi modellerinin eğitim verisine aşırı uyum sağlaması (overfitting) problemini önlemek için kayıp fonksiyonuna ek bir ceza terimi ekleyen teknikler ailesidir. Temel amaç, modelin eğitim setini ezberlemek yerine görülmemiş verilere genelleştirme kapasitesini artırmaktır. Aşırı öğrenme (overfitting), bir modelin eğitim verilerindeki gürültüyü ve ayrıntıları kapasitesi sayesinde öğrenmesi ama yeni veriye uygulandığında başarısız olması durumudur. Düzenlileştirme bu sorunu ağırlık değerlerini küçük tutmaya zorlayarak çözer: büyük ağırlıklar modelin tek veri noktalarına aşırı duyarlı olduğuna işaret eder; ceza terimi bu değerleri sıfıra yakın tutarak daha düz ve genelleşebilir bir karar sınırı öğretir. **L2 Düzenlileştirme (Ridge / Ağırlık Sönümlemesi)** en yaygın yöntemdir. Kayıp fonksiyonuna tüm ağırlıkların karelerinin toplamı λΣw² eklenir. Bu formülasyon büyük ağırlıkları cezalandırır ama hiçbirini tam sıfıra indirgemez; sonuç olarak tüm özellikler modelde küçük de olsa katkıda bulunur. Deep learning'de "weight decay" olarak da anılır ve PyTorch optimizer'larında `weight_decay` parametresiyle doğrudan kullanılır. **L1 Düzenlileştirme (Lasso)**, λΣ|w| ceza terimiyle bazı ağırlıkları tam sıfıra iter; bu sayede otomatik özellik seçimi gerçekleşir. Yüzlerce özellik içinden yalnızca birkaç kritik birinin önemli olduğu durumlar için idealdir. L1 ile L2'yi birleştiren Elastic Net, her iki avantajdan yararlanır. **Dropout**, derin sinir ağlarına özgü güçlü bir düzenlileştirme yöntemidir: eğitim sırasında her adımda nöronların rastgele bir oranı (ör. %20-50) devre dışı bırakılır. Model, belirli nöronlara güvenemeyeceği için farklı yollarla aynı sonuca ulaşmayı öğrenir; bu da ansambl etkisi yaratır. Çıkarım sırasında tüm nöronlar etkin olur ve ağırlıklar bırakma oranıyla ölçeklenir. **Erken Durdurma (Early Stopping)**, doğrulama kaybı artmaya başladığı noktada eğitimi kesen örtük bir düzenlileştirme yöntemidir. Model henüz eğitim setini ezberlemeye geçmeden öğrenme durdurulur. Uygulamada λ hiperparametresi kademeli grid search veya Bayesian optimizasyonla ayarlanır; çok büyük λ modeli yetersiz öğrenmeye (underfitting) iter.

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.