Momentum (Optimization)
Momentum optimizasyonu, model eğitimini hızlandırmak, gürültülü güncellemeleri yumuşatmak ve öğrenme oranını dengelerken yakınsamayı iyileştirmek için geçmiş gradyanlardan yararlanır.
Momentum, gradyan tabanlı eğitime önceki güncellemelerin belleğini kazandıran bir optimizasyon tekniğidir. Mevcut gradyanı, önceki gradyanların giderek azalan etkili geçmişiyle birleştirerek tutarlı yönlerde hız kazanır ve ileri geri hareketi azaltır. Bu, makine öğrenimi modellerinin eğitim hedefini daha verimli biçimde en aza indirmesine yardımcı olur. Arama motoru optimizasyonu web sitesi görünürlüğüyle ilgilidir; momentum ise model parametrelerine yönelik sayısal güncellemelerle ilgilidir.
Momentum Nasıl Çalışır#
Gradyan inişi sırasında model, ağırlıklarını gradyanın ters yönünde hareket ettirir; gradyan, kayıp fonksiyonunun en hızlı arttığı yöndür. Polyak momentumu veya ağır top yöntemi olarak da adlandırılan klasik momentum, bu harekete atalet kazandırır. Boris Polyak, bunu yinelemeli yöntemleri hızlandırmaya ilişkin 1964 tarihli çalışmasında tanıttı.
Optimizasyon algoritması, her parametre için birikmiş değer içeren bir hız tamponu tutar. Her güncellemede eski tampon, momentum katsayısıyla çarpılır; mevcut gradyan eklenir ve ortaya çıkan tampon, öğrenme oranı ile çarpıldıktan sonra ağırlıklardan çıkarılır. Sinir ağlarında bu gradyanları geri yayılım sağlar; optimizasyon algoritması tamponu güncellemeler arasında saklar.
Momentum, özellikle eğriliğin bir vadinin enine doğru dik, tabanı boyunca ise hafif olduğu uzun ve dar kayıp yüzeylerinde yararlıdır. Vadi boyunca tekrar tekrar aynı yönü gösteren gradyanlar birikirken, vadiyi enine kesen bileşenler kısmen birbirini götürür. Stokastik gradyan inişi kullanıldığında bu bellek, mini yığınlar arasındaki dalgalanmaları da yumuşatır. Momentumun ikinci dereceden kayıplardaki dinamikleri, hem hızlanmayı hem de minimuma yakın bölgelerde ortaya çıkabilecek salınımları açıklar.
Momentum, Öğrenme Oranı ve İlgili Yöntemler#
Genellikle beta veya mu ile gösterilen momentum katsayısı, çoğunlukla sıfır ile bir arasında değer alır. Sıfır, standart gradyan inişine karşılık gelir; bire yaklaşan değerler eski gradyanları daha uzun süre bellekte tutar. 0.9 yaygın bir başlangıç değeridir. Normalize edilmemiş bir hız tamponunda ve sabit bir gradyanla, birikmiş hız 0.9 değerinde bu gradyanın on katına, 0.99 değerinde ise 100 katına yaklaşır. Bu nedenle momentum ve öğrenme oranı, hiperparametre ayarı sırasında birbirini güçlü biçimde etkiler.
Aşırı agresif bir bileşim, güncellemelerin minimum noktayı tekrar tekrar aşmasına ve kaybın salınmasına ya da eğitim sürecinin ıraksamasına yol açar. Bu durum, pürüzsüz ikinci dereceden amaç fonksiyonlarında bile görülür. Öğrenme oranı çizelgesi eğitim boyunca güncelleme büyüklüğünü değiştirirken momentum, yön bilgisinin geçmişten ne ölçüde korunacağını belirler.
Birbiriyle yakından ilişkili iki optimizasyon algoritması, bu geçmiş bilgiyi farklı biçimlerde kullanır:
- Nesterov momentumu, korunan hız kullanılarak elde edilen ileriye dönük bir konumdaki gradyanı hesaplar; böylece gradyan, öngörülen hareketi düzeltebilir.
- Adam, üstel ağırlıklı gradyan ortalamasını, güncellemeleri her parametre için ayrı ayrı ölçeklendiren kareli gradyan ortalamasıyla birleştirir.
beta1, gradyan belleğini kontrol eder.
Minimal Bir PyTorch Örneği#
Bu PyTorch örneği, uzun ve dar ikinci dereceden bir amaç fonksiyonunda aynı başlangıç noktalarını ve öğrenme oranlarını karşılaştırır. Resmî SGD uygulaması, momentum tamponunu otomatik olarak yönetir.
import torch
# Curvature is 50 times greater along the second coordinate.
scale = torch.tensor([1.0, 50.0])
for momentum in (0.0, 0.9):
weights = torch.tensor([5.0, 1.0], requires_grad=True)
optimizer = torch.optim.SGD([weights], lr=0.015, momentum=momentum)
for step in range(100):
optimizer.zero_grad()
loss = (scale * weights.square()).sum()
loss.backward()
optimizer.step()
final_loss = (scale * weights.square()).sum().item()
print(f"Momentum {momentum}: loss = {final_loss:.6f}")100 güncellemeden sonra kayıp, momentumsuz yaklaşık 0.056531, momentumla ise 0.000216 olur. Biriken yön bilgisi, sığ koordinat boyunca ilerlemeyi hızlandırır.
Bilgisayarlı Görü Eğitimi Kullanım Alanları#
Momentum, görüntü sınıflandırma ve nesne tespiti için kullanılan evrişimli sinir ağlarının eğitimini destekler. Ultralytics YOLO eğitimi, optimizer="SGD" seçildiğinde Nesterov momentumunu etkinleştirir; momentum ayarı ise korunan güncelleme geçmişini kontrol eder. Eğitici uygulaması, bu katsayıyı nesterov=True ile optimizasyon algoritmasına iletir.
Önemli bir uygulama örneği, ImageNet için kullanılan özgün ResNet eğitim prosedürüdür. Bu modellerde momentum 0.9 olan SGD, 256 yığın boyutu, 0.0001 ağırlık azalması ve hata sabit bir platoya ulaştığında onda birine düşürülen 0.1 başlangıç öğrenme oranı kullanıldı.










