React Flow mini map
🧠 ML Temelleriorta12 dk

Gradyen Azalma: Minimuma Doğru Adım Adım

Öğrenme hızı, momentum ve optimizasyon algoritmaları

Önce bunlara göz at

🎯

30 saniyede özet · Ne öğreneceksin

  • Gradyanın matematiksel anlamını kavramak
  • Öğrenme hızının eğitim dinamiklerine etkisini görmek
  • SGD, Mini-batch ve Batch GD arasındaki farkları açıklamak
12 dk okuma·orta·🧪 interaktif sandbox

Gradyen azalma, kayıp fonksiyonunu minimize etmek için parametreleri adım adım güncelleyen temel optimizasyon algoritmasıdır. Tüm derin öğrenme sistemi bu basit güncelleme kuralının üzerine inşa edilmiştir.

Sisi olan bir dağda gözleriniz kapalı. Her adımda ayaklarınızın altındaki eğimi hissediyor…

w ← w - η · ∇L(w)

Parametre güncelleme kuralı: w mevcut parametre, η öğrenme hızı, ∇L(w) kayıp fonksiyonunun gradyanıdır. Gradyan, kayıp fonksiyonunun en hızlı arttığı yönü gösterir; biz tersi yönde adım atarız.

Formül → Kod Karşılığı

wparam / weightgüncellenecek ağırlık
ηlröğrenme hızı (learning rate)
∇L(w)param.gradkaybın w'ya göre gradyanı
param.data -= …yerinde güncelleme (in-place)

Çok küçük η: Yavaş yakınsama, çok uzun eğitim.

⚡ İnteraktif Playground

Yükleniyor…

Batch GD

  • ·Tüm veriyi kullanır
  • ·Kararlı gradyan tahmini
  • ·Her adım yavaş (büyük veri)
  • ·Daha az gürültülü

Mini-batch SGD

  • ·Küçük örneklem grubu
  • ·Gürültülü ama genellenebilir
  • ·Her adım hızlı
  • ·Pratikte standart yaklaşım

💡Adam optimizer, adaptif öğrenme hızı kullanarak hem momentum hem de RMSProp fikirlerini birleştirir. Pratikte çoğu derin öğrenme modelinde SGD'ye tercih edilir.

PyTorch SGD + öğrenme hızı zamanlayıcısı (scheduler)

Python
1import torch.optim as optim
2import torch.optim.lr_scheduler as lr_scheduler
3
4model = build_model()
5
6# SGD + momentum: momentum önceki gradyan yönünü hatırlar
7optimizer = optim.SGD(
8 model.parameters(),
9 lr=0.1,
10 momentum=0.9,
11 weight_decay=1e-4
12)
13
14# StepLR: her 10 epoch'ta learning rate'i 0.1 ile çarp (0.1→0.01→0.001)
15scheduler = lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1)
16
17for epoch in range(30):
18 train(model, optimizer)
19 scheduler.step() # Öğrenme hızını güncelle
20 print(f"Epoch {epoch}: lr = {optimizer.param_groups[0]['lr']:.6f}")
21
22# Adam için alternatif: genellikle scheduler gerekmez ama CosineAnnealingLR iyi çalışır
23optimizer_adam = optim.Adam(model.parameters(), lr=1e-3)
24cosine_sched = lr_scheduler.CosineAnnealingLR(optimizer_adam, T_max=30)

✦ Quiz

Learning rate'i çok büyük seçmenin belirtisi nedir?

Bu konunun pratiği

🧪

Bu konuyu interaktif dene

Az önce okuduğun kavramın parametrelerini değiştir, etkisini canlı gör

Aç →

Daha derinlemesine