Sz
Sıfır Gecikme
veri bilimi · türkçe
Tümüİnteraktif📖Rehber🛠Araç📊Vaka💼Kariyer🐍Playground📚Öğren
Hakkımda
Ana sayfainteraktif

Gradient descent: top yuvarlama oyunu

2026 · 10 dakika okuma

Karanlık bir vadiye düştüğünü hayal et. En alçak noktayı bulmak istiyorsun ama görüş sıfır. Elinden gelen tek şey şu: ayağının altındaki zeminin ne kadar eğimli olduğunu hissetmek. Eğime karşı yürü, tekrar kontrol et, tekrar yürü.

İşte gradient descenttam olarak bu. Makine öğrenmesindeki tüm büyük modellerin — linear regression'dan GPT'ye kadar — parametrelerini öğrenmek için kullandığı temel yöntem.

Önce dene

Aşağıdaki demoda mor top bir parabolün üzerinde yuvarlanıyor. Öğrenme hızını ayarla, "Bir adım at" veya "Otomatik çalıştır" ile ne olduğunu izle.

Adım
0
Konum (x)
3.000
Kayıp f(x)
9.0000
0.05
xf(x)minimum

Başlangıç noktası x = 3.00. Öğrenme hızını ayarlayıp "Bir adım at" butonuna bas.

Ne oluyor aslında?

Her adımda şu hesap yapılıyor:

x_yeni = x_eski - α × f'(x_eski)

# f(x) = x²  →  f'(x) = 2x (türev = gradient)
# α = öğrenme hızı (learning rate)

# Örnek: x=3, α=0.1 ise
x_yeni = 3 - 0.1 × (2 × 3)
x_yeni = 3 - 0.6
x_yeni = 2.4  # minimuma yaklaştı

Türev bize o noktadaki eğimi söyler. Eğim pozitifse sol tarafa git (x azalt), negatifse sağ tarafa (x artır). Her seferinde biraz daha minimuma yaklaşırsın.

Öğrenme hızı neden bu kadar önemli?

Demoda gördüğün üzere:

Makine öğrenmesinde en çok ayarlanan hiperparametre learning rate'tir. Doğru değeri bulmak hâlâ büyük ölçüde deneme yanılma işi.

Gerçek hayatta nasıl kullanılır?

Bizim örneğimizde tek bir parametre (x) ve basit bir kayıp fonksiyonu (x²) vardı. Gerçek bir sinir ağında milyarlarca parametre ve çok daha karmaşık bir kayıp fonksiyonu var. Ama temel fikir aynı: her parametreyi gradienti yönünde biraz güncelle, tekrarla.

# scikit-learn ile linear regression aslında
# gradient descent kullanır (SGD versiyonu)
from sklearn.linear_model import SGDRegressor

model = SGDRegressor(
    learning_rate='constant',
    eta0=0.01,       # α değeri
    max_iter=1000    # maksimum adım sayısı
)
model.fit(X_train, y_train)

Varyantlar: SGD, Mini-batch, Adam

Klasik gradient descent tüm veriyi her adımda kullanır. Bu büyük veri setlerinde çok yavaş olur. O yüzden pratikte şu varyantlar kullanılır:

Sıradaki yazıda k-means kümeleme: gradient descent kullanmadan da öğrenme olur mu? Centroid'ler nasıl yer değiştirir?

💬 Yorumlar