Gradyan İnişi
- İngilizcesi
- Gradient Descent
- Okunuşu
- greydiınt disent
Günlük kullanımda iki ad da yaygın.
Kısaca
Gradyan inişi, makine öğrenmesi modellerinin parametrelerini hatayı azaltan yönde tekrar tekrar hafifçe iterek modelleri eğiten bir optimizasyon algoritmasıdır.
Gradyan inişi (gradient descent) nedir?
Gradyan inişi, çoğu makine öğrenmesi modelinin öğrenmek için kullandığı algoritmadır. Eğitim, tahmin yapmak için kullandığı iç sayılar olan parametreleri rastgele ya da varsayılan değerlere ayarlanmış bir modelle başlar. Bir kayıp fonksiyonu, modelin eğitim verisindeki tahminlerinin ne kadar yanlış olduğunu ölçer ve gradyan inişinin görevi bu kaybı olabildiğince küçük yapan parametre değerlerini bulmaktır.
Her adımda algoritma, her parametre biraz artırılsaydı kaybın ne kadar değişeceğini söyleyen gradyanı hesaplar. Sonra her parametreyi gradyanın tersi yönde, yani yokuş aşağı küçük bir miktar hareket ettirir ve bunu tekrarlar. Her adımın büyüklüğünü öğrenme oranı (learning rate) belirler: çok büyükse eğitim hedefi aşar ve kararsızlaşır, çok küçükse sürünür. Milyonlarca örnek üzerinde gradyanı hesaplamak yavaş olduğundan çoğu eğitim, gradyanı her seferinde küçük bir rastgele örnek grubundan tahmin eden stokastik ya da mini-batch gradyan inişini kullanır.
Klasik benzetme, yoğun sisin içinde bir dağdan inmektir. Vadiyi göremezsiniz ama ayaklarınızın altındaki zeminin hangi yöne eğimli olduğunu hissedebilirsiniz; bu yüzden yokuş aşağı bir adım atar, tekrar kontrol eder ve zemin düzleşene kadar sürdürürsünüz. Gradyan inişi ve yaygın kullanılan Adam optimizer gibi varyantları, doğrusal regresyondan derin sinir ağlarına ve büyük dil modellerine kadar hemen her şeyi eğitir.
Gradyan inişi çoğu zaman geri yayılımla (backpropagation) karıştırılır. Geri yayılım, bir sinir ağındaki gradyanları çıktı katmanından geriye doğru çalışarak verimli biçimde hesaplayan yöntemdir; gradyan inişi ise bu gradyanları ağırlıkları güncellemek için kullanan kuraldır ve eğitim ikisini de gerektirir. Gradyan inişi ayrıca mümkün olan en iyi çözümü garanti etmez, çünkü yerel bir minimuma ya da düz bir bölgeye takılabilir; ancak büyük sinir ağlarında bulduğu çözümler genellikle yeterince iyidir.
Önemli noktalar
- Gradyan inişi, bir modelin parametrelerini adım adım ayarlayarak kayıp fonksiyonunu minimize eder.
- Her adım parametreleri, hatanın en hızlı arttığı yön olan gradyanın tersine hareket ettirir.
- Öğrenme oranı adım boyutunu belirler ve eğitimin başarılı olup olmayacağını güçlü biçimde etkiler.
- Mini-batch gradyan inişi, gradyanı küçük rastgele veri gruplarından tahmin eder.
- Geri yayılım gradyanları hesaplar; gradyan inişi bunları ağırlıkları güncellemek için kullanır.
Örnek
# Learn the weight w in y = w * x from examples where the true answer is w = 2
xs = [1.0, 2.0, 3.0, 4.0]
ys = [2.0, 4.0, 6.0, 8.0]
w = 0.0 # start with a poor guess
learning_rate = 0.01
for step in range(200):
# Gradient of the mean squared error with respect to w
grad = sum(2 * (w * x - y) * x for x, y in zip(xs, ys)) / len(xs)
w -= learning_rate * grad # take a small step downhill
print(round(w, 3)) # 2.0Sık sorulan sorular
Gradyan inişinde öğrenme oranı nedir?
Öğrenme oranı, algoritmanın her güncellemede ne kadar büyük bir adım atacağını kontrol eden bir sayıdır. Çok yüksekse kayıp sıçrayıp durabilir ya da patlayabilir; çok düşükse eğitim çok uzun sürer. Bu nedenle ayarlanması gereken en önemli ayarlardan biridir.
Gradyan inişi ile geri yayılım arasındaki fark nedir?
Geri yayılım, bir sinir ağındaki her ağırlığa göre kaybın gradyanını hesaplar. Gradyan inişi ise bu gradyanları ağırlıkları güncellemek için kullanır; yani geri yayılım hangi yöne gidileceğini bulur, gradyan inişi ise gerçekten hareket eder.
Stokastik gradyan inişi nedir?
Stokastik gradyan inişi (SGD), parametreleri tüm veri kümesi yerine tek bir örnekten ya da küçük bir rastgele gruptan elde edilen gradyanla günceller. Her adım daha gürültülüdür ama çok daha ucuzdur; bu da büyük veri kümelerinde eğitimi pratik hale getirir.
İlgili sayfalar
- Makine ÖğrenmesiYapay Zekâ ve Makine Öğrenmesi, s. 30Makine öğrenmesi, bilgisayarların elle yazılmış kurallar yerine verilerdeki örüntüleri öğrenerek tahmin yaptığı bir yapay zekâ dalıdır.
- Yapay Sinir AğıYapay Zekâ ve Makine Öğrenmesi, s. 49Yapay sinir ağı, bağlantılı yapay nöron katmanlarından oluşan ve sayısal ağırlıkları ayarlayarak verilerden örüntü öğrenen bir makine öğrenmesi modelidir.
- Model ParametreleriYapay Zekâ ve Makine Öğrenmesi, s. 33Model parametreleri, bir makine öğrenmesi modelinin eğitimde öğrendiği ve girdileri çıktılara dönüştürmek için kullandığı ağırlık ve sapma gibi iç sayılardır.
- Eğitim VerisiYapay Zekâ ve Makine Öğrenmesi, s. 17Eğitim verisi, bir makine öğrenmesi modelinin öğrendiği örnekler kümesidir; kalitesi, boyutu ve kapsamı modelin ne kadar iyi çalışacağını büyük ölçüde belirler.
- Derin ÖğrenmeYapay Zekâ ve Makine Öğrenmesi, s. 14Derin öğrenme, görüntü ve metin gibi ham verilerden karmaşık örüntüleri öğrenmek için çok katmanlı sinir ağları kullanan bir makine öğrenmesi alt kümesidir.
- Aşırı ÖğrenmeYapay Zekâ ve Makine Öğrenmesi, s. 3Aşırı öğrenme, bir modelin eğitim verisini gürültüsüyle birlikte fazla yakından öğrenip yeni, görülmemiş verilerde kötü performans göstermesidir.
- Geri YayılımYapay Zekâ ve Makine Öğrenmesi, s. 22Geri yayılım (backpropagation), her ağırlığın hataya katkısını ölçüp her ağırlığı hatayı azaltan yönde biraz ayarlayarak sinir ağlarını eğiten algoritmadır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin