AI Atlas
Orta· ~2 dk okuma#gradient-descent#optimization#training

Gradyan İnişi

Gradient Descent

Modelin parametrelerini, kayıp fonksiyonunun en hızlı azaldığı yöne küçük adımlarla iterek optimizasyon yapan algoritma — hemen hemen her ML eğitiminin temeli.

GRADYAN İNİŞİbaşlangıçminimumEğimin tersi yönünde küçük adımlarla minimuma iner.
Tanım

Gradyan inişi, bir fonksiyonun minimumunu bulmak için kullanılan iteratif bir optimizasyon yöntemidir. Her iterasyonda mevcut konumdaki gradyanı (eğimi) hesaplar ve gradyanın tersi yönde bir adım atar — çünkü o yön kaybın en hızlı düştüğü yöndür. Adım büyüklüğüne öğrenme oranı (learning rate) denir.

Üç ana varyantı vardır. Batch GD her güncellemede tüm veriyi kullanır — yavaş ama kararlı. Stochastic GD (SGD) her seferde tek bir örnek kullanır — gürültülü ama hızlı, lokal minimumlardan kaçabilir. Mini-batch GD ikisinin arası — modern derin öğrenmenin standardı, batch boyutu 32-512 arası seçilir.

Saf SGD'nin üzerine birçok geliştirme bina edilmiştir. Momentum önceki gradyanların ortalamasını kullanır — düz bölgelerde hız kazandırır. AdaGrad/RMSprop/Adam her parametre için farklı öğrenme oranı kullanır — sık güncellenenler yavaşlar, nadir güncellenenler hızlanır. Modern derin öğrenmede genelde Adam veya AdamW ilk seçimdir.

Benzetme

Sisli bir dağda iniş yolunu bulmak gibi. Etrafı göremiyorsun ama ayağının altındaki eğimi hissedebiliyorsun. Hangi yön aşağı? Hissettiğin eğimin tersine doğru bir adım atarsın. Tekrar dur, tekrar yokla, tekrar adım at. Adım çok büyükse uçurumdan düşersin (overshoot); çok küçükse asla varamazsın. Gradyan inişi bu seyahatin matematiksel formudur — adım boyutunu (learning rate) ayarlamak zanaatın özüdür.

Gerçek dünyadan örnek

Bir CNN ImageNet üzerinde eğitiliyor. Görsel başına model bir tahmin üretir, gerçek etiketle çapraz entropi kaybı hesaplanır. Backprop ile her ağırlığın kayba etkisi (gradient) bulunur. Gradient descent her ağırlığı kendi gradient'inin tersine doğru learning_rate kadar günceller.

Batch boyutu 256 olduğunda ImageNet'in 1.28 milyon görseli için bir epoch'ta 5000 adım atılır. Toplamda 90 epoch ile 450.000 güncelleme yapılır. Adam optimizer her parametrenin geçmiş gradient'lerini de hesaba katarak adımı uyarlar. Sonuç: birkaç gün içinde milyonlarca parametre %75 üzeri doğruluk veren bir görsel tanıma modeline döner.

Kod örnekleri
Optimizer karşılaştırmasıPython
import torch
import torch.nn as nn

model = nn.Linear(100, 10)
loss_fn = nn.CrossEntropyLoss()

# Üç farklı optimizer
optimizers = {
    "SGD":          torch.optim.SGD(model.parameters(), lr=0.01),
    "SGD+Momentum": torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9),
    "Adam":         torch.optim.Adam(model.parameters(), lr=0.001),
    "AdamW":        torch.optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01),
}

# AdamW modern transformer ve büyük model eğitimlerinin standardı.
# Vanilla SGD küçük modellerde ve son fine-tuning aşamalarında hâlâ
# kullanılır; daha kararlı bir minimuma götürebiliyor.
Learning rate schedulerPython
from torch.optim.lr_scheduler import CosineAnnealingLR, OneCycleLR

# Eğitim ilerledikçe LR'yi ayarlamak büyük fark yaratır
scheduler = CosineAnnealingLR(optimizer, T_max=100)

for epoch in range(100):
    for batch in train_loader:
        optimizer.zero_grad()
        loss = compute_loss(model, batch)
        loss.backward()
        optimizer.step()
    scheduler.step()
    print(f"Epoch {epoch}, LR={scheduler.get_last_lr()[0]:.5f}")
Ne zaman kullan
  • Model parametreleri çok ve gradient hesaplanabiliyorsa
  • Sinir ağı, lojistik regresyon, gradient boosting iç mekanizması olarak
  • Büyük veri setleri — kapalı form çözümü olmayan problemler
Ne zaman kullanma
  • Kapalı form çözümü olan problemler (küçük lineer regresyon vb.) — analitik çözüm daha hızlı
  • Diferansiyellenebilir olmayan operasyonlar — RL veya gradient-free yöntemler
Sık yapılan hatalar

Yanlış learning rate

Çok yüksek LR → kayıp salınır ya da NaN'a gider. Çok düşük LR → eğitim asla bitmez. Öğrenme oranı bulucu (LR finder) veya warm-up + cosine schedule modern pratiklerdir.

Lokal minimum / saddle point

Gradyan inişi global minimumu garanti etmez; bazen düz bir saddle point'e takılır. Momentum ve Adam bu sorunu büyük ölçüde azaltır ama tamamen çözmez.

Batch boyutunun ihmal edilmesi

Çok küçük batch gürültülü ve yavaş; çok büyük batch genelleştirme zayıflığı. Batch boyutu ile learning rate genellikle birlikte ölçeklenir.