React Flow mini map
Derin Öğrenmeorta12 dk

Normalizasyon: Batch Norm, Layer Norm ve Dropout

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

  • ·Mini-batch üzerinde normalize eder
  • ·Batch boyutuna bağımlı
  • ·CNN'lerde yaygın tercih
  • ·Çıkarımda running stats gerekir

Layer Normalization

  • ·Tek örnek üzerinde normalize eder
  • ·Batch boyutundan bağımsız
  • ·Transformer/RNN'lerde standart
  • ·Eğitim ve çıkarım davranışı aynı

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

Python
1import torch.nn as nn
2
3model = 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:
16model.train() # Dropout aktif, BatchNorm batch stats kullanır
17
18# Değerlendirme/çıkarımda:
19model.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