Eğitimi hızlandıran ve overfitting'i önleyen teknikler
Derin ağlar derinleştikçe eğitim zorlaşır: her katmanın girişi sürekli kayar, gradyanlar patlar veya kaybolur. Normalizasyon teknikleri bu kaosu düzene sokarken, Dropout ağın "her şeyi ezberlemesini" engeller. Bu ikili, modern derin öğrenmenin sessiz kahramanlarıdır.
Eğitim sırasında her katmanın ağırlıkları güncellenir → bir sonraki katmanın girişinin dağ…
🎯Hedef Tahtası Metaforu
Internal Covariate Shift'i şöyle düşünün: dart atıyorsunuz ama her atıştan sonra hedef tahtası rastgele yer değiştiriyor. Ne kadar iyi nişan alsanız da tutarlı başarı zor. Normalizasyon, tahtayı sabitleyerek nişan almanızı kolaylaştırır.
Mini-batch içindeki her özellik için ortalama (μ) ve varyans (σ²) hesaplanır, ardından nor…
x̂ = (x - μ_batch) / √(σ²_batch + ε), y = γx̂ + βGirdi x, batch ortalaması çıkarılıp standart sapmaya bölünerek normalize edilir. ε (epsilon) sıfıra bölünmeyi önler. γ ve β geri yayılımla öğrenilir.
Batch boyutundan bağımsız olarak **tek bir örneğin tüm özellikleri** üzerinde normalizasyo…
Batch Normalization
Layer Normalization
Eğitim sırasında her nöron **p olasılıkla** sıfırlanır (tipik p=0.5). Bu, ağı tek bir nöro…
⚠️Dropout çıkarımda kapatılmalıdır! Aksi halde model her seferinde farklı sonuç verir. PyTorch'ta model.eval() çağrısı Dropout'u otomatik devre dışı bırakır — bu geçişi unutmak en sık yapılan hatalardan biridir.
BatchNorm + Dropout içeren PyTorch modeli
| 1 | import torch.nn as nn |
| 2 | |
| 3 | model = nn.Sequential( |
| 4 | nn.Linear(10, 64), |
| 5 | nn.BatchNorm1d(64), # Batch normalization |
| 6 | nn.ReLU(), |
| 7 | nn.Dropout(p=0.5), # %50 dropout |
| 8 | nn.Linear(64, 32), |
| 9 | nn.BatchNorm1d(32), |
| 10 | nn.ReLU(), |
| 11 | nn.Dropout(p=0.3), # %30 dropout |
| 12 | nn.Linear(32, 1) |
| 13 | ) |
| 14 | |
| 15 | # Eğitim döngüsünde: |
| 16 | model.train() # Dropout aktif, BatchNorm batch stats kullanır |
| 17 | |
| 18 | # Değerlendirme/çıkarımda: |
| 19 | model.eval() # Dropout kapalı, BatchNorm running stats kullanır |
💡Dropout oranını katman derinliğine göre ayarlayın: giriş katmanlarında düşük (0.2), derin katmanlarda yüksek (0.5). Aşırı dropout ağın öğrenme kapasitesini kısıtlar.
✦ Quiz
Batch Normalization'da γ (gamma) ve β (beta) parametrelerinin rolü nedir?
✦ Quiz
Transformer mimarileri neden Batch Norm yerine Layer Norm tercih eder?
✦ Quiz
model.train() ve model.eval() arasındaki fark Dropout için ne anlama gelir?
Bağlantılı Konular