Gradient Descent Gerçekte Nasıl Çalışır
22 Haz 2026 · 4 dk okuma
Minicik bir lojistik regresyon modelinden yüz milyarlarca parametreli bir dil modeline kadar, bugün kullandığımız neredeyse her sinir ağı aynı sade fikirle eğitildi: gradient descent. Adı kulağa teknik gelse de arkasındaki sezgi tamamen gündelik. Aşağıda o sezgiyi adım adım kuracak, sonra birkaç satır kodla somutlaştırıp en kritik ayar düğmesi olan learning rate'e odaklanacağız. Kalkülüs geçmişiniz olması şart değil; ihtiyacımız olan tek şey "eğim" sezgisi.
Engebeli bir arazide yokuş aşağı
Modelinizi, üzerinde gezdiğiniz engebeli bir arazi olarak hayal edin. Her noktadaki yükseklik, o anki loss değerini, yani modelin ne kadar yanıldığını temsil etsin. Amacınız en alçak vadiye, yani modelin en az hata yaptığı noktaya ulaşmak. Sıkıntı şu ki haritanın tamamını yukarıdan göremiyorsunuz; sisin içinde, yalnızca ayağınızın altındaki zemini hissedebiliyorsunuz. Yine de bu kadarı bile yeterli: bulunduğunuz yerde yamacın hangi yöne doğru indiğini hissedip o yöne küçük bir adım atabilir, sonra bu işlemi tekrarlayabilirsiniz. Yeterince adımdan sonra, başlangıç noktanız neresi olursa olsun, bir vadinin dibinde kendinizi bulursunuz.
İşte "yamacın hangi yöne indiği" bilgisi matematikte gradient adını taşır: loss fonksiyonunun her parametreye göre türevi. Gradient, fonksiyonun en hızlı arttığı yönü gösterir; biz azalmasını istediğimiz için onun tersi yönde ilerleriz. Güncelleme kuralı tek satırda şöyle yazılır:
Buradaki modelin parametrelerini (ağırlıklarını), gradienti, ise learning rate'i, yani her adımda ne kadar yol aldığımızı gösterir. Baştaki eksi işaretinin tek görevi, yokuş yukarı gösteren bu vektörü yokuş aşağı çevirmektir.
Aşağıdaki etkileşimli görsel bu süreci canlandırıyor: top, vadiye adım adım iniyor. Learning rate'i değiştirip "Başlat"a basarak bu ayarın etkisini doğrudan görebilirsiniz.
Kaydıracı ayarla, “Başlat”a bas.
On iki satırda bir doğruyu öğrenmek
Soyut kuralın gerçekten işe yaradığını görmenin en iyi yolu, onu elle çalıştırmak.
Aşağıdaki örnekte, aralarında y = 2x ilişkisi bulunan birkaç veri noktasına tek
parametreli bir model uyduruyoruz. Model w = 0'dan başlıyor, hatasını ölçüyor,
gradienti hesaplıyor ve her adımda biraz daha doğru cevaba yaklaşıyor:
import numpy as np
x = np.array([1, 2, 3, 4], dtype=float)
y = np.array([2, 4, 6, 8], dtype=float) # gerçek ilişki: y = 2x
w = 0.0
lr = 0.01
for step in range(200):
pred = w * x
loss = ((pred - y) ** 2).mean() # mean squared error
grad = (2 * x * (pred - y)).mean() # d loss / d w
w -= lr * grad # güncelleme adımı
print(round(w, 3)) # ≈ 2.0Döngünün her turunda üç şey olur: model bir tahmin üretir (pred), bu tahminin
gerçek değerlerden ne kadar saptığını ölçen bir loss hesaplanır ve loss'un
'ya göre türevi alınarak hangi yöne gidileceği belirlenir. w -= lr * grad
satırı da o yönde küçük bir adım atar. İki yüz adımın sonunda model, kimse
söylemeden w ≈ 2 değerine kendi kendine ulaşır. Gerçek bir sinir ağı da özünde
tam olarak bunu yapar; tek farkı, milyonlarca parametre için aynı işlemi aynı anda
yürütmesi ve gradientleri elle değil, backpropagation ile otomatik
hesaplamasıdır.
Tek bir sayının belirleyici rolü: learning rate
Gradient descent'in başarısı tek bir hiperparametreye, learning rate'e sıkı sıkıya bağlıdır; çünkü her adımda ne kadar yol alacağınızı o belirler. Değeri fazla küçük seçerseniz eğitim umutsuzca yavaşlar: vadiye milimetrelerle inersiniz ve makul bir sürede dibe varamazsınız. Fazla büyük seçerseniz tam ters sorun çıkar: adımlarınız sizi vadinin karşı yamacına fırlatır, loss bir iner bir çıkar, hatta tümden ıraksayabilir. Aradaki o "tam kıvamında" bölgede ise iniş hem istikrarlı hem hızlı olur.
Pratikte "modelim bir türlü eğitilmiyor" diye anlatılan sorunların hatırı sayılır bir kısmı, kök nedende bu tek sayıya iner. Eğitim eğrisi beklediğiniz gibi düşmüyorsa, ilk denenecek şey çoğu zaman learning rate'i kademeli düşürmek ve loss eğrisini dikkatle izlemektir.
Toparlarsak
Gradient descent, karmaşık görünen bir hedefi çok basit bir döngüye indirger: tahmin et, ne kadar yanıldığını ölç, hatanın azaldığı yöne küçük bir adım at, tekrarla. Bu döngünün bütün derin öğrenmeyi taşıyabilmesini sağlayan şey, gradientleri büyük ağlar için verimli hesaplayan backpropagation'dır. Bir sonraki yazıda bu öğrenme mekanizmasının modern dil modellerinin kalbindeki yapıyla, yani attention ile nasıl birleştiğine bakacağız.
Yeni makale yayınlandığında haberiniz olsun ister misiniz?
Yeni bir yazı yayınlandığında size e-posta gelsin. Dilediğiniz an iptal edebilirsiniz.
Yorumlar
Benzer makaleler
BPE(Byte Pair Encoding) nedir ve LLM'ler için neden önemli
1 Tem 2026 · 8 dk okuma
GPT'yi Sıfırdan Yazalım: nano-gpt
27 Haz 2026 · 13 dk okuma
Tensor Nedir? Derin Öğrenme için Lineer Cebir
24 Haz 2026 · 4 dk okuma
Attention'ı Sıfırdan Anlamak
23 Haz 2026 · 3 dk okuma
Kimlik-Farkında Negatif Örnekleme Neden Önemli
20 Haz 2026 · 3 dk okuma
Claude Code ile Verimli Çalışmak — Bölüm 2: Ajanlar, Alt Ajanlar ve Çoklu Ajan Kurulumları
15 Tem 2026 · 10 dk okuma
Claude Code ile Verimli Çalışmak — Bölüm 1: Bağlam (Context), Beceriler ve Prompt Yazımı
1 Tem 2026 · 6 dk okuma
Bu Blog Ne Hakkında?
26 Haz 2026 · 2 dk okuma