💫
Derin Öğrenme
  • 💫Derin Öğrenme Notları
  • 🚀English Version
  • 🦋Projeye Katkıda Bulunma
  • 💼Kullanışlı Araçlar
  • 💎Yapay Sinir Ağları Kavramları
    • 🌱Giriş
    • 🔎Esas Problem
    • 👷‍♀️ Yapay Sinir Ağlarının Uygulanması Üzerine Notlar
    • 📚Yapay Sinir Ağlarının Kavramları
    • 💥Yapay Sinir Ağlarında Aktivasyon Fonksiyonları
    • 🎈NN Uygulama İp Uçları
    • 👩‍🔧 NN Düzenlileştirme (Regularization)
    • ✨Optimizasyon Algoritmaları
    • 🎨Softmax Regression
    • 🏃‍♀️ Tensorflow'a Hızlı Giriş
    • 👩‍💻 Yapay Sinir Ağlarıyla ilgili Pyhton Kod Parçaları
  • 🙋‍♀️ Yapay Sinir Ağları ile Derin Öğrenme'nin Hello World'u
    • 🌱Giriş
    • 🌐Tarayıcıda CNNler
  • 🚪Bilgisayar Görüşüne Giriş
    • 🌱Giriş
  • 🚩Evrişimli Sinir Ağları Kavramları
    • 🌱Giriş
    • 📌Evrişimli Sinir Ağları ile İlgili Genel Kavramlar
    • 🌟Evrişimli Sinir Ağları Gelişmiş Kavramları
    • 👀Evrişimli Sinir Ağlarının Görselleştirilmesi
    • 👵Klasik Evrişimli Sinir Ağları
    • ✨CNN'leri Kurmak İçin Diğer Yaklaşımlar
    • 🕸️CNN'lerin Popüler Uygulamaları
  • 👩‍💻 CNN'ler Üzerinde Kodlar ve Notlar
    • 🌱Giriş
  • 💄Derin Öğrenmenin Popüler Stratejileri
    • 🌱Giriş
    • 🚙Öğrenme Aktarması (Transfer Learning)
    • 📚Derin Öğrenmede Diğer Stratejiler
  • 🤡Resim Artırma (Image Augmentation)
    • 🌱Giriş
  • 🤸‍♀️ Uygulamalı Makine Öğrenmesi Üzerine Notlar
    • 🌱Giriş
    • 👩‍🔧 Makine Öğrenimi Projelerinin Yapılandırılması Üzerine Notlar
    • 👩‍🏫 Uygulama Talimatları
  • 🕵️‍♀️ Obje Algılama Temelleri
    • 🌱Giriş
    • ⭕Bölge Tabanlı (Region-Based) CNN'ler
    • 🤳SSD ve YOLO
    • 🤖TensorFlow Object Detection API
  • ➰Derin Öğrenmede Dizi Modelleri
    • 🌱Giriş
    • 📚Dizi Modellerinin Genel Kavramları
    • 🔄Tekrarlayan Sinir Ağları (RNN)
    • 🌌RNN'deki Vanishing Gradients
    • 🌚Kelime Gösterimi
    • 💬NLP Hakkında Karışık Bilgiler
  • 📕Proje Sözlüğü
  • 📚Faydalı PDF'ler
  • 👀Hızlı Görsel Bilgiler
Powered by GitBook
On this page
  • 🔩 Toplu Gradyan İnişi (Batch Gradient Descent)
  • 🎩 Stokastik Gradyan İnişi (SGD)
  • 🔩 Mini-Toplu Gradyan İnişi (Mini Batch Gradient Descent)
  • 🔃 Karşılaştırma
  • 🚩 Batch-Size Seçmek İçin Kurallar
  • 🔩 Momentumlu Gradyan İnişi (Gradient Descent with Momentum)
  • 🔩 RMSprop En İyileyicisi
  • ✨ Adam En İyileyicisi
  • 👩‍🏫 Hiper-parametrelerin Seçimi (önerilen değerler)
  • 🌞 Yazının Aslı
  • 🧐 Referanslar

Was this helpful?

Export as PDF
  1. Yapay Sinir Ağları Kavramları

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

  • Küçü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:

vdW=βvdW+(1−β)dWv_{dW} = \beta v_{dW }+ (1-\beta)dWvdW​=βvdW​+(1−β)dW

vdb=βvdb+(1−β)dbv_{db} = \beta v_{db }+ (1-\beta)dbvdb​=βvdb​+(1−β)db

W=W−αvdWW = W -\alpha v_{dW}W=W−αvdW​

b=b−αvdbb = b -\alpha v_{db}b=b−αvdb​

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:

SdW=βSdW+(1−β)dW2S_{dW} = \beta S_{dW} + (1-\beta)dW^2SdW​=βSdW​+(1−β)dW2

Sdb=βSdb+(1−β)db2S_{db} = \beta S_{db} + (1-\beta)db^2Sdb​=βSdb​+(1−β)db2

W=W−αdWSdWW = W -\alpha\frac{dW}{\sqrt{S_{dW}}}W=W−αSdW​​dW​

b=b−αdbSdbb = b -\alpha\frac{db}{\sqrt{S_{db}}}b=b−αSdb​​db​

✨ 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

vdW=β1vdW+(1−β1)dWv_{dW}=\beta_1v_{dW}+ (1-\beta_1)dWvdW​=β1​vdW​+(1−β1​)dW

vdb=β1vdb+(1−β1)dbv_{db}=\beta_1v_{db}+ (1-\beta_1)dbvdb​=β1​vdb​+(1−β1​)db

SdW=β2SdW+(1−β2)dW2S_{dW}=\beta_2S_{dW}+ (1-\beta_2)dW^2SdW​=β2​SdW​+(1−β2​)dW2

Sdb=β2Sdb+(1−β2)db2S_{db}=\beta_2S_{db}+ (1-\beta_2)db^2Sdb​=β2​Sdb​+(1−β2​)db2

vdWcorrected=vdW1−β1tv^{corrected}_{dW}=\frac{v_{dW}}{1-\beta^t_1}vdWcorrected​=1−β1t​vdW​​

vdbcorrected=vdW1−β1tv^{corrected}_{db}=\frac{v_{dW}}{1-\beta^t_1}vdbcorrected​=1−β1t​vdW​​

SdWcorrected=SdW1−β2tS^{corrected}_{dW}=\frac{S_{dW}}{1-\beta^t_2}SdWcorrected​=1−β2t​SdW​​

Sdbcorrected=Sdb1−β2tS^{corrected}_{db}=\frac{S_{db}}{1-\beta^t_2}Sdbcorrected​=1−β2t​Sdb​​

W=W−αvdWcorrectedSdWcorrected+ϵW = W-\alpha \frac{v^{corrected}_{dW}}{\sqrt{S^{corrected}_{dW}}+\epsilon}W=W−αSdWcorrected​​+ϵvdWcorrected​​

b=b−αvdbcorrectedSdbcorrected+ϵb = b-\alpha \frac{v^{corrected}_{db}}{\sqrt{S^{corrected}_{db}}+\epsilon}b=b−αSdbcorrected​​+ϵvdbcorrected​​

😵😵😵

👩‍🏫 Hiper-parametrelerin Seçimi (önerilen değerler)

  • α: ayarlanması gerekiyor

  • β1: 0.9

  • β2: 0.999

  • ε: 10−810^{-8}10−8

🌞 Yazının Aslı

🧐 Referanslar

Previous👩‍🔧 NN Düzenlileştirme (Regularization)NextSoftmax Regression

Last updated 3 years ago

Was this helpful?

💎
✨
Burada 🐾
Machine learning Gradient Descent