✨Optimizasyon Algoritmaları
Hızlı ve iyi optimizasyon algoritmalarına sahip olmak tüm işin verimliliğini hızlandırabilir ✨
🔩 Toplu Gradyan İnişi (Batch Gradient Descent)
Toplu gradyan inişinde, gradyan inişinin her yinelemesinde maliyet fonksiyonunun gradyanını hesaplamak için tüm veri kümesini kullanırız ve ardından ağırlıkları güncelleriz.
Tüm veri kümesini hesaplamada kullandığımızdan dolayı gradyanın yakınsaması yavaştır.
🎩 Stokastik Gradyan İnişi (SGD)
Stokastik Gradyan İnişi'nde, gradyanı hesaplamak ve ağırlıkları her bir yinelemeyle güncellemek için tek bir veri noktası veya örnek kullanıyoruz, tamamen rastgele bir veri setini alabilmemiz için önce veri kümesini karıştırmamız gerekir.
Rastgele örnek, global bir minimuma ulaşmaya yardımcı olur ve yerel bir minimumda takılıp kalmayı önler.
Büyük bir veri kümesi için öğrenme çok daha hızlı ve yakınsama çok hızlı 🚀
🔩 Mini-Toplu Gradyan İnişi (Mini Batch Gradient Descent)
Tek bir eğitim örneği yerine, örneklerin küçük bölümünün kullanıldığı bir Stokastik Gradyan İnişinin bir varyasyonudur.
Yaygın olarak kullanılır, daha hızlı yakınsar ve daha stabildir
Bölüm büyüklüğü veri kümesine bağlı olarak değişebilir
1 ≤ batch-size ≤ m, batch-size bir hiper-parametredir ❗
🔃 Karşılaştırma
Çok büyük
batch-size
(m veya m'ye yakın):Her yineleme için çok uzun
Çok küçük
batch-size
(1 veya 1'e yakın)Vektörleştirme hızını kaybetme
Ne çok büyük ne çok küçük
batch-size
Vektörleştirme yapabiliriz
Her yineleme için iyi hız
En hızlı (en iyi) öğrenme 🤗✨
🚩 Batch-Size
Seçmek İçin Kurallar
Batch-Size
Seçmek İçin KurallarKüçük bir veri kümesi için (m ≤ 2000) ➡ bölümlü gradyan inişi kullan
Tipik mini batch-size: 64, 128, 256, 512, 1024'e kadar
mini batch-size CPU / GPU belleğine sığdığından emin ol
mini batch-size 2 kuvveti olarak seçmek daha iyidir (daha hızlı) (bellek sorunları nedeniyle) 🧐
🔩 Momentumlu Gradyan İnişi (Gradient Descent with Momentum)
Hemen hemen her zaman, momentumlu gradyan inişi, standart gradyan inişi algoritmasından daha hızlı yakınsar. Standart gradyan inişi algoritmasında, algoritmayı yavaşlatan bir yönde daha büyük ve başka bir yönde daha küçük adımlar atmamızdır 🤕
Bu momentumun geliştirebileceği şeydir, salınımı bir yönde kısıtlar, böylece algoritmamız daha hızlı yakınsayabilir. Ayrıca, y yönünde atılan adımların sayısı sınırlı olduğu için daha yüksek bir öğrenme hızı belirleyebiliriz 🤗
Aşağıdaki resim durumu daha iyi anlatmaktadır: 🧐
Formül:
Daha iyi anlamak için:
Momentumlu gradyan inişinde, gradyan inişini hızlandırmaya çalışırken şunu söyleyebiliriz:
Türevler hızlandırıcıdır
v'ler hızdır
β sürtünmedir
🔩 RMSprop En İyileyicisi
RMSprop optimizer, momentumlu gradyan inişi algoritmasına benzer. RMSprop en iyileyicisi salınımları dikey yönde kısıtlar. Bu nedenle, öğrenme hızımızı artırabiliriz ve algoritmamız yatay doğrultuda daha hızlı yaklaşırken daha büyük adımlar atabilir.
RMSprop ve gradyan inişi arasındaki fark, gradyanlarım nasıl hesaplandığıdır, RMSProp gradyanları aşağıdaki formülle hesaplar:
✨ Adam En İyileyicisi
Açılımı: ADAptive Moment estimation
Günümüzde yaygın olarak kullanılan algoritmadır, Adam, RMSprop ve Stokastik Gradyan İnişi'nin momentum ile bir kombinasyonu olarak görülebilir. RMSprop gibi öğrenme hızını ölçeklendirmek için kare gradyanları kullanır ve momentum ile SGD gibi gradyan yerine gradyanın hareketli ortalamasını kullanarak momentumdan yararlanır.
Özetle: Adam = RMSProp + GD with momentum + bias correction
😵😵😵
👩🏫 Hiper-parametrelerin Seçimi (önerilen değerler)
α: ayarlanması gerekiyor
β1: 0.9
β2: 0.999
ε:
🌞 Yazının Aslı
🧐 Referanslar
Last updated