Derin Öğrenme: Görüntü
- 1Perceptron
Perceptron, VE kapısını 4 turda öğreniyor. XOR'da 200 tur sonunda bile doğruluk hep %50'de kalıyor -- eğitim sorunu değil, matematiksel imkansızlık.
- 2Yapay sinir ağına giriş
1. derste tek bir doğru XOR'u asla tam çözemiyordu. Araya sadece bir GİZLİ katman eklemek, aynı problemi %100 doğrulukla çözüyor. Fark nereden geliyor?
- 3İleri yayılım
10.000 örneği tek tek işlemek 0.055 saniye sürüyor. Aynı işi TEK bir matris çarpımıyla yapmak 0.0003 saniye -- 179 kat hızlı. Fark nereden geliyor?
- 4Geri yayılım
Elle türetilen gradyan -0.175500. Ağırlığı ε kadar oynatıp ÖLÇÜLEN gradyan de -0.175500. Fark tam sıfır -- zincir kuralı gerçekten çalışıyor mu?
- 5Kaybolan gradyan problemi
15 katmanlı bir ağda sigmoid'in ilk katman gradyanı 1.05e-10. ReLU'da tam olarak 1.00 -- 928 milyon kat fark. Neden bu kadar büyük?
- 6Sigmoid
x=0'da sigmoid'in türevi 0.25 (maksimum). x=10'da sadece 0.000045. 5. dersteki kaybolan gradyanın kök nedeni, bu tek eğrinin şeklinde saklı.
- 7TanH
tanh(x), 2·sigmoid(2x)-1 ile birebir aynı çıkıyor -- fark her yerde tam sıfır. İki 'farklı' fonksiyon aslında aynı eğrinin yeniden ölçeklenmiş hali mi?
- 8ReLU ve GELU
Kötü bir başlangıçla ReLU'nun gradyanı TAM SIFIR -- asla toparlanamaz. Aynı senaryoda GELU'nun gradyanı küçük ama sıfır DEĞİL. Neden?
- 9Softmax
Negatif logit içeren bir kümeyi sadece toplama bölmek, NEGATİF bir 'olasılık' üretiyor. Softmax aynı kümede tüm değerleri pozitif tutuyor. Fark nereden geliyor?
- 10Aktivasyon fonksiyonu özet kartı
4 dersin özeti: ReLU'nun x=-5'teki türevi tam 0.00000, GELU'nunki -0.00000. Neredeyse aynı görünüyor ama biri KALICI ölüm, diğeri toparlanma şansı demek.
- 11Kayıp ve maliyet fonksiyonları
4 tahminin hatalarını DOĞRUDAN ortalarsak sonuç tam olarak 0.0000 çıkıyor -- model 'mükemmel' görünüyor! Ama hiçbir tahmin doğru değildi. Ne oldu?
- 12Regresyon kayıp fonksiyonları
Tek bir tahmin gerçekten çok saparsa MSE ~910 kat, MAE 15 kat, Huber 173 kat büyüyor. Aynı aykırı değer, kayıp fonksiyonuna göre çok farklı bir 'felaket' demek.
- 13Sınıflandırma kayıp fonksiyonları
z=-5.0'da MSE+sigmoid'in gradyanı sadece -0.013, cross-entropy'ninki -0.993 -- 75 kat fark. Aynı 'çok yanlış' tahminde biri ağırlığı zar zor kımıldatıyor.
- 14Optimizasyona giriş
lr=1.2 ile w, 10'dan başlayıp -9.2, 17.7, -20.0 diye SALINARAK büyüyor. lr=0.4 ile aynı başlangıç 3 adımda minimuma iniyor. Tek fark: öğrenme oranı.
- 15SGD, batch, momentum
Aynı w'de batch=1 gradyan tahminleri std=4.28 ile sıçrıyor; batch=32'de std=0.73'e iniyor. Momentum bu gürültüyü yumuşatıp yön değişimini 7'den 3'e indiriyor.
- 16Adagrad
SGD ile sık ve seyrek ağırlık BENZER hızda küçülür (-7 ve -5). Adagrad ile seyrek ağırlık çok daha az küçülür (1.17 ve 3.71) -- kendi geçmişini hatırlıyor.
- 17RMSprop ve Adadelta
Sabit gradyanla Adagrad'ın efektif lr'ı 200 adımda 0.4'ten 0.028'e sürekli küçülüyor. RMSprop aynı koşulda 100. adımdan sonra 0.1'de SABİTLENİYOR.
- 18Adam
Bias düzeltmesi olmadan Adam 15 adımda 5.0'dan -21.4'e PATLIYOR. Tek satırlık düzeltmeyle aynı ayarlar 0.5'e düzgünce iniyor. Fark: (1-beta^t)'ye bölmek.
- 19Patlayan gradyan ve clipping
w=1.5 (sadece %50 büyük) 20 katmanda gradyanı 2216 katına çıkarıyor. TEK güncelleme ağırlığı 1.5'ten -20.7'ye savuruyor -- clipping bunu 5'e sabitliyor.
- 20Ağırlık ilklendirme
Sıfır ilklendirmede 4 nöron TAMAMEN aynı gradyanı alıyor -- asla ayrışmıyorlar. ReLU ile Xavier 10. katmanda sinyali 0.027'ye düşürürken He 0.57'de tutuyor.
- 21L1/L2 düzenlileştirme
weight_decay=0'da ağ eğitim verisini ezberliyor (kayıp~0, ağırlık normu 666). wd=0.01'de test kaybı en düşük (0.017); wd=0.1'de yetersiz öğrenmeye kayıyor.
- 22Dropout
train()'da aynı girdiye 3 farklı çıktı geliyor (rastgele maskeleme); eval()'da hep aynı. Dropout=0.1 test kaybını 0.0715'ten 0.0515'e düşürüyor.
- 23Batch normalization
Kötü ilklendirmeyle (std=0.1) sinyal BatchNorm'suz 10 katmanda 1.00'den 0.24'e sürünüyor. BatchNorm'la ilk katmandan sonra ~0.63'te SABİTLENİYOR.
- 24Layer normalization
Aynı örnek, LayerNorm'da her zaman aynı sonucu veriyor. BatchNorm'da ise komşulara göre [0,0,0,0] veya [-0.49,0.51,-1.29,1.11] gibi FARKLI sonuçlar çıkıyor.
- 25Görüntü verisi nedir
4x4'lük bir 'görüntü' aslında sadece 16 sayı. RGB versiyonu (4,4,3) şeklinde -- her piksel artık 3 sayı. PyTorch bu kanalları NumPy'dan farklı sırada bekliyor.
- 26Neden tam bağlı ağ yetmez
224x224 görüntüde TEK gizli katman 77 milyon parametre gerektiriyor. Daha kötüsü: kareyi köşeden köşeye kaydırınca doğruluk %100'den %55'e (rastgele) düşüyor.
- 27Konvolüsyon işlemi
Aynı 10x10 görsele üç farklı 3x3 çekirdek uygulanınca üç TAMAMEN farklı sonuç çıkıyor: biri kenarı vurguluyor, biri bulanıklaştırıyor, biri keskinleştiriyor.
- 28Filtre, stride, padding
Padding'siz 5x5 görselde köşe piksel pencere tarafından SADECE 1 kez görülüyor -- merkez piksel 9 kez. Padding ekleyince köşe 4 kez görülüyor.
- 29Pooling katmanları
Tek bir aykırı piksel (100) eklenince MaxPool bunu doğrudan yansıtıyor (6->100), AvgPool ise ortalamaya gizleyip 28.5'e çıkıyor -- çok daha az etkileniyor.
- 30CNN mimarisinin tamamı
Aynı 16x16 'artı' şekli conv->relu->pool->conv->relu->pool->flatten->FC->softmax'tan geçip 10 sınıf üzerinde bir dağılıma dönüşüyor -- en yüksek olasılık %64.
- 31Klasik mimariler (LeNet → ResNet)
30 katmanlı düz bir ağda gradyan tam 0.0'a (float32'nin altına) düşüyor. Atlama bağlantılı (ResNet) ağda aynı derinlikte gradyan 99.45'e kadar BÜYÜYOR.
- 32Veri artırma
Augmentation'sız eğitilen bir CNN, eğitimde %100 ama YENİ pozisyonlarda sadece %60 doğru. Rastgele kaydırma eklenince ikisi de %100'e çıkıyor.
- 33Transfer öğrenme
11.7M parametreli ResNet18'i dondurup son katmanı değiştirince, eğitilebilir oran %0.022'ye iniyor -- neredeyse hiçbir şey yeniden öğrenilmiyor.
- 34Nesne tespitine giriş
4 aday kutudan 3'ü aynı nesneyi işaret ediyordu (IoU>0.5). Non-Max Suppression bunları TEK kutuya indirip 2 net tespit bıraktı.
- 35Segmentasyona giriş
Hiçbir piksel işaretlemeyen bir tahmin bile %85.94 piksel doğruluğu alıyor (arka plan baskın olduğu için) ama IoU'su TAM SIFIR -- IoU çok daha dürüst.