Pratik Derin Öğrenme — fast.ai (Jeremy Howard)’dan
ML Builder için Türkçe Notlar
1 Bu kitap nedir?
Bu, Jeremy Howard — Practical Deep Learning for Coders (fast.ai) ders serisinin Türkçe ders notlarıdır. Hedef, videoları izlerken paralel okunabilecek; sonradan tek başına da yeterli olabilecek bir referans seti üretmek.
Serinin tek bir pedagojik iddiası var: derin öğrenme önce çalıştırılarak öğrenilir. İlk derste lineer cebir veya calculus gözden geçirmeyiz — doğrudan çalışan bir görüntü sınıflandırıcı eğitiriz, “neden” ve “nasıl”ı sonra, ihtiyaç duydukça açarız. Howard’ın sözüyle: “First you’ll learn to be very very good at actually building and deploying models. And you will learn why and how things work as you need.” Bu top-down yaklaşım, sporu öğrenme biçimimizi taklit eder: önce bütün oyunu göster, sonra parçaları bir araya getir.
Her bölüm bir Builder Notu katmanı taşır: kavramın hem geriye (Karpathy’nin sıfırdan kurduğu çekirdek, 6.S191, Stat 110, 18.06) hem de ileriye (production, deployment, modern diffusion) köprüsü. fast.ai’nin fine_tune’unun altında Karpathy’nin elle kurduğu autograd/backprop yatar; bu seriyi onunla birlikte okuyoruz: fast.ai “ne mümkün”ü gösterir, Karpathy “altında ne var”ı kazır.
- Seri: Practical Deep Learning for Coders (course.fast.ai) — Jeremy Howard, 2022
- Yazar: Jeremy Howard — fast.ai kurucu ortağı, eski Kaggle başkanı, Enlitic kurucusu
- Kitap: fastbook (Deep Learning for Coders with fastai & PyTorch)
- Ders depoları: course22 (Part 1) · course22p2 / miniai (Part 2)
- Çeviri ve genişletme: Phase 2 (TR + ML Builder köprüleri)
2 Nasıl Okumalı
Sıralı oku. Seri kümülatiftir — özellikle Part 2 (Ders 9–25) “Stable Diffusion’ı sıfırdan kur” hedefine doğru her dersi bir öncekinin üstüne yığar. Ders 1’de hazır kütüphaneyle (vision_learner, fine_tune) kullandığımız her şeyi, Part 2’de katman katman kendi elimizle yeniden kurarız: matmul, backprop, Learner, optimizer, ResNet, U-Net, attention, VAE — ta ki latent diffusion (gerçek Stable Diffusion) çıkana dek.
Howard’ın önerdiği akış: önce videoyu izle, sonra ilgili dersi oku, en sonunda kodu kendin çalıştır. Bu set videoyu destekler, ikame etmez.
Her bölüm sonundaki egzersizleri atlama. Howard’ın felsefesi: bir şeye başla, ilginç bulduğun bir şey yap, paylaş. Ders 1’den sonra kendi iki sınıfını seçip (kedi/köpek, elma/armut) notebook’u baştan çalıştırmak, dersin tamamını içselleştirmenin en hızlı yoludur. “Önce çalıştır, sonra anla.”
3 27 Ders
Seri iki parçadır. Part 1 (Ders 1–8) uygulamalı derin öğrenme: görüntü, NLP, tablo, öneri sistemleri. Part 2 (Ders 9–25) “Foundations to Stable Diffusion”: her parçayı sıfırdan kurarak modern diffusion’a tırmanır.
| # | Ders | Ana Fikir |
|---|---|---|
| 1 | Başlangıç (Is it a bird?) | Çalışan görüntü sınıflandırıcı; top-down öğrenme + transfer learning |
| 2 | Dağıtım (Deployment) | Veri temizleme, export, Hugging Face Spaces + Gradio |
| 3 | Sinir ağı nasıl çalışır | Gradient descent; bir model = parametreli fonksiyon |
| 4 | NLP & Hugging Face | Transformer’larla metin sınıflandırma; ULMFiT mirası |
| 5 | Sıfırdan model | Doğrusal model + sinir ağını elle kur (Titanic) |
| 6 | Random Forests | Karar ağaçları, bagging; klasik ML hâlâ güçlü |
| 7 | Collaborative Filtering | Gömü (embedding) tabanlı öneri sistemleri |
| 8 | Convolutions (CNN) | Konvolüsyon, kanal, stride; görü mimarisinin temeli |
| 9 | Stable Diffusion | Part 2 başlar: pipeline’ı yüksek seviyede çalıştır |
| 9A | SD Deep Dive (Whitaker) | CLIP, VAE, U-Net, scheduler parça parça |
| 9B | Diffusion Matematiği | Forward process, reparameterization (ilk LaTeX-yoğun ders) |
| 10 | Matmul Temelleri | 01_matmul: 3-döngüden broadcasting’e |
| 11 | Broadcasting & Makale Okuma | Broadcasting kuralları; arXiv/DiffEdit okuma |
| 12 | einsum / CUDA / meanshift | einsum, @, GPU; clustering |
| 13 | Backprop (MLP) | 03_backprop: ileri/geri geçiş elle (Karpathy köprüsü) |
| 14 | Backprop (nn.Module) | Refactor: Module deseni doğar |
| 15 | Convolutions & Autoencoder | im2col→F.conv2d; encoder/decoder |
| 16 | Learner & Callbacks (miniai) | 09_learner: eğitim döngüsü + callback mimarisi |
| 17 | Aktivasyonlar & Başlatma | Xavier/Kaiming init, BatchNorm (Karpathy makemore 3) |
| 18 | Hızlandırılmış SGD & ResNet | Momentum→Adam, 1-cycle, ResBlock skip |
| 19 | DDPM (Sıfırdan Diffusion) | 15_DDPM: forward/reverse, \(\varepsilon\)-tahmini (math zirvesi) |
| 20 | Mixed Precision & Style Transfer | autocast/GradScaler; içerik/stil kaybı |
| 21 | CIFAR / W&B / FID / DDIM | Deney takibi, FID metriği, DDIM örnekleyici |
| 22 | Cosine & Karras Scheduler | cosine \(\bar\alpha(t)\), Karras sürekli \(\sigma\) |
| 23 | Super-Resolution | 25_superres: koşullu üretim, perceptual loss |
| 24 | Attention | 27_attention: self/cross-attention (Karpathy nanoGPT köprüsü) |
| 25 | VAE & Latent Diffusion | 29_vae + latent diffusion = gerçek Stable Diffusion (halka kapanır) |
Not: Phase 2 pilotu Ders 1 (Başlangıç) ile başlar. Dersler 2–25 aynı şablonla eklenecektir.
4 Notasyon
Part 1 büyük ölçüde matematik-hafiftir; ağırlık Part 2’de gelir (özellikle Ders 9B ve 19+). Sık geçen birkaç gösterim:
- Tensör: çok boyutlu sayı dizisi — bir RGB görüntü \(H \times W \times 3\) boyutludur (Ders 1).
- Olasılık çıktısı: softmax’ın ürettiği sınıf dağılımı; toplamı 1 (kuş + orman = 1).
- Pretrained ağ +
fine_tune: ImageNet’te eğitilmiş ağırlıklardan başlayıp kendi verine uyarlama (transfer learning). - Gradient descent (Ders 3+): \(p \leftarrow p - \eta \, \partial L/\partial p\) — kaybın gradyanı yönünde küçük adım.
- \(\varepsilon\)-tahmini (Ders 19): diffusion modelinin eklenen gürültüyü tahmin etmesi; kayıp \(\text{MSE}(\varepsilon, \varepsilon_\theta)\).
Tüm matematik MathJax 3 ile render ediliyor.
5 Builder Eksen — fast.ai (top-down) ↔︎ Karpathy (bottom-up)
| fast.ai (kullan, sonra kur) | Altında ne var (Karpathy / temel kurslar) |
|---|---|
vision_learner + fine_tune |
nn.Module + autograd + optimizer (Karpathy micrograd→makemore) |
| Görüntü = tensör | matris-vektör yapısı (18.06), CNN girdisi (6.S191 Ders 3) |
| Pretrained öznitelik dedektörleri | öğrenilen ağırlıklar (Zeiler-Fergus); fonksiyon bileşkesi (zincir kuralı) |
| Olasılık çıktısı (softmax) | kategorik dağılım (Stat 110) |
DataBlock / DataLoaders |
veri pipeline disiplini (production gerçeği) |
fine_tune’un altındaki gradient |
backprop = calculus zincir kuralı (Part 2’de elle kurulur) |
| Stable Diffusion’ı kullan (Ders 9) | Stable Diffusion’ı kur (Ders 11–25: U-Net, attention, VAE, latent) |
Derin öğrenmenin gücü artık özel matematik veya pahalı donanımda değil; veriyi doğru biçimde modele sokup hazır bir ağı kendi problemine ince ayarlamakta yatar. fast.ai bunu önce çalıştırarak öğretir; perdenin arkasındaki saf PyTorch ve matematik, kurs derinleştikçe — ve Karpathy serisinde satır satır — açılır.
6 Yazım Kuralları
- Türkçe terminoloji + parantez içinde İngilizce orijinal ilk geçtiğinde: “ince ayar (fine-tuning)”, “öznitelik (feature)”, “doğrulama kümesi (validation set)”.
- Howard’dan alıntılar İngilizce orijinal hâliyle, blockquote içinde, zaman damgasıyla verilir.
- Builder Notu callout’ları her ana bölüm sonunda; ML köprüsünü (geriye + ileriye) buraya yazıyoruz.
- fast.ai/PyTorch kodu (Howard’ın notebook’ta yazdığı
search_images,DataBlock,vision_learner,fine_tune) görünürpythonbloklarındadır — pedagojik olarak okunmak içindir, render sırasında çalıştırılmaz. Figürler ise sentetik/illüstratif verilerle matplotlib üreten executable hücrelerdir. - Kontrol Soruları collapse’lu — cevap kapalı başlar, okur kendi düşündükten sonra açar.
- Egzersizler cevapsız — Howard’ın “bir şeye başla” çağrısını izler.
Tek başına bu set yetmez — Howard’ın canlı kodlama anlatımının ve sezgisinin yerine geçemez. Önce videoyu izle, sonra ilgili dersi oku, son olarak kodu kendin çalıştır. Set videoyu destekler, ikame etmez.