Çeşitli optimize edici algoritmalar Optimize Edici'nin derin öğrenme ayrıntılı açıklaması

Yaygın gradyan inişine ek olarak, makine öğreniminde ve derin öğrenmede kullanılan optimizasyon algoritmalarında ayrıca Adadelta, Adagrad, RMSProp vb. Gibi çeşitli optimize ediciler bulunur. Bunlar nelerdir ve nasıl seçmeliyim?

Bu makale sıralanacak:

  • Her algoritmanın gradyan güncelleme kuralları ve dezavantajları
  • Bir sonraki algoritma bu eksikliği gidermeyi önerdi
  • Hiperparametrenin genel ayar değeri
  • Çeşitli algoritmaların etkilerinin karşılaştırılması
  • Hangi algoritmayı seçmeli

Önsöz: Gradyan inişinin derinlemesine anlaşılması

Aşağıdaki kişisel bir özettir, herhangi bir hata varsa lütfen belirtiniz.

Optimizasyon algoritması için optimizasyonun amacı, ağ modelindeki parametresidir (bir settir, 1 , 2 , 3 ...... ) Amaç fonksiyonu kayıp fonksiyonu L = 1 / N L ben (Her numune için kayıp fonksiyonunun süperpozisyonunun ortalaması alınır). Bu kayıp fonksiyonu L'nin değişkeni, L'deki parametrenin eğitim setinin tamamı olduğu 'dur.Başka bir deyişle, amaç fonksiyonu (kayıp fonksiyonu) tüm eğitim seti boyunca belirlenir.Eğitim seti farklıysa, kayıp fonksiyonunun görüntüsü de farklıdır. Öyleyse mini grupta eyer noktası / yerel minimum nokta ile karşılaşılırsa optimizasyon neden gerçekleştirilemiyor? Çünkü bu noktalarda L'nin 'ya göre gradyanı sıfırdır, diğer bir deyişle her bir bileşeninin kısmi türevi eğitim setine alınır ve türev sıfırdır. SGD / MBGD için, her seferinde kullanılan kayıp fonksiyonu yalnızca bu küçük veri grubu tarafından belirlenir.Fonksiyon görüntüsü, gerçek tam set kayıp fonksiyonundan farklıdır, bu nedenle çözümün gradyanı da belirli bir rasgelelik derecesi içerir. Veya yerel minimum nokta, salınım atlar, çünkü bu noktada, tam eğitim seti seti getirilirse, yani BGD, optimizasyon durur. Mini-parti veya SGD ise, bulunan gradyan her seferinde farklıdır , Salınacak, ileri geri atacak.

1. Optimize edici algoritmanın kısa açıklaması

Öncelikle gradyan inişinin en yaygın üç çeşidi olan BGD, SGD ve MBGD'ye bakalım. Bu üç form arasındaki fark, amaç fonksiyonunun gradyanını hesaplamak için ne kadar veri kullandığımıza bağlıdır. Bu durumda, doğal olarak bir değiş tokuş söz konusudur, yani Parametre güncellemesinin doğruluğu ve çalışma süresi.

1. Toplu Gradyan İniş (BGD)

Gradyan güncelleme kuralları:

BGD, maliyet fonksiyonunun parametrelere olan gradyanını hesaplamak için tüm eğitim setinin verilerini kullanır:

Dezavantajları:

Bu yöntem, tek bir güncellemede tüm veri seti için gradyanı hesapladığından, hesaplanması çok yavaştır ve çok sayıda veri setiyle karşılaşmak çok zordur ve modeli gerçek zamanlı olarak güncellemek için yeni verilere yatırım yapmak imkansızdır.

aralıktaki i için (nb_epochs): params_grad = değerlendirme_gradyanı (kayıp_işlevi, veriler, parametreler) params = params-learning_rate * params_grad

Önceden bir yineleme numarası çağını tanımlayacağız, önce params_grad gradyan vektörünü hesaplayacağız ve ardından degradenin yönü boyunca parametre parametrelerini güncelleyeceğiz.Öğrenme oranı, her adımı ne kadar atacağımızı belirler.

Toplu gradyan inişi, dışbükey işlevler için genel bir minimuma yakınsayabilir ve dışbükey olmayan işlevler için yerel bir minimuma yakınlaşabilir.

2. Stokastik Gradyan İniş (SGD)

Gradyan güncelleme kuralları:

BGD'nin tüm verilerle tek seferde gradyan hesaplamasıyla karşılaştırıldığında, SGD her bir örneğin güncellendiğinde gradyanlarını günceller. Büyük bir veri kümesi için benzer örnekler olabilir, böylece gradyan hesaplanırken BGD gereksiz olacaktır. Ancak, SGD her seferinde yalnızca bir kez güncellenirken, artıklık yoktur ve daha hızlıdır ve örnekler eklenebilir.

aralıktaki i için (nb_epochs): np.random.shuffle (veri) örneğin verilerde: params_grad = değerlendirme_gradyanı (kayıp_işlevi, örnek, parametreler) params = params-learning_rate * params_grad

Koda baktığınızda farkı görebilirsiniz, yani genel veri seti, her örnek için bir parametre güncellemesinin gerçekleştirildiği bir döngüdür.

Stokastik gradyan inişi, her numune için bir kez yinelemeli olarak güncellenir.Örnek boyutu büyükse, theta'yı optimal çözüme yinelemek için yalnızca bazı örnekler kullanılabilir. Yukarıdaki toplu gradyan inişini karşılaştırın ve bir kez yineleyin. Onbinlerce eğitim örneğine ihtiyaç vardır ve bir yineleme optimal olamaz. 10 kez yinelenirse, eğitim örneklerini 10 kez geçmesi gerekir. Dezavantajı, SGD'nin BGD'den daha fazla gürültüye sahip olmasıdır, bu da SGD'nin her yinelemede genel optimizasyon yönüne doğru hareket etmemesini sağlar. . Bu nedenle eğitim hızı hızlı olmasına rağmen doğruluk azalır ki bu küresel en iyisi değildir . Belli bir rasgelelik derecesi içermesine rağmen, beklenti açısından doğru türeve eşittir.

Dezavantajları:

SGD sık sık güncellenir ve bu da maliyet işlevinde ciddi dalgalanmalara neden olur.

BGD, yerel bir minimuma yaklaşabilir ve tabii ki SGD'nin salınımı daha iyi bir yerel minimuma sıçrayabilir.

Öğrenme oranını biraz düşürdüğümüzde, SGD ve BGD'nin yakınsaması aynıdır.

3. Mini Toplu Gradyan İnişi (MBGD)

Gradyan güncelleme kuralları:

MBGD, her seferinde küçük bir örnek grubu, yani hesaplama için n örnek kullanır, böylece parametre güncellemesi sırasında varyansı azaltabilir ve yakınsama daha kararlı olur.Diğer yandan, daha etkili bir şekilde derin öğrenme kitaplığındaki yüksek düzeyde optimize edilmiş matris işlemlerinden tam olarak yararlanabilir. Gradyan hesaplaması.

SGD ile fark, her döngünün her numune üzerinde değil, n numuneden oluşan bir parti üzerinde hareket etmesidir.

aralıktaki i için (nb_epochs): np.random.shuffle (veri) get_batches içindeki parti için (data, batch_size = 50): params_grad = değerlendirme_gradyanı (kayıp_işlevi, toplu iş, parametreler) params = params-learning_rate * params_grad

Hiperparametre ayar değeri: n genellikle 50 256 alır

Dezavantajlar: (iki büyük dezavantaj)

  • Bununla birlikte, Mini-toplu gradyan inişi iyi bir yakınsamayı garanti edemez.Eğer öğrenme hızı çok küçük seçilirse, yakınsama hızı çok yavaş olacaktır.Çok büyükse, kayıp fonksiyonu salınacak ve hatta minimum değerde sapacaktır. (Bir önlem, önce daha büyük bir öğrenme oranı belirlemektir. İki yineleme arasındaki değişiklik belirli bir eşikten düşük olduğunda, öğrenme oranını azaltın. Ancak eşik ayarının önceden yazılması gerekir. Veri setinin özelliklerine uyum sağlayabilir.) Dışbükey olmayan işlevler için, eyer noktası etrafındaki hata aynı olduğundan ve tüm boyutların gradyanları 0'a yakın olduğundan ve SGD burada kolayca yakalandığından yerel minimumlarda veya eyer noktalarında yakalanmaktan kaçının. ( Eyer noktasında veya yerel minimum noktada salınacaktır, çünkü bu noktada, tam eğitim seti getirilirse, yani BGD, optimizasyon duracaktır. Mini-parti veya SGD ise, bulunan gradyan her seferinde farklıdır , Salınacak, ileri geri atacak. )
  • SGD, tüm parametreleri güncellerken aynı öğrenme oranını uygular. Verilerimiz seyrekse, Daha seyrek görünen özelliklerde daha büyük güncellemeler yapmayı tercih ediyoruz. LR, güncelleme sayısı ile kademeli olarak azalacaktır.
  • Eyer noktası: tümü bu noktanın teğet çizgisinin farklı taraflarında bulunan, pürüzsüz bir fonksiyonun eyer noktasının yakınında bir eğri, yüzey veya hiper yüzeydir. Örneğin, bu iki boyutlu şekil bir eyer gibidir: x ekseni yönünde yukarı doğru ve y ekseni yönünde aşağı doğru kıvrılır, eyer noktası (0,0) 'dır.

    Yukarıdaki iki zorluğun üstesinden gelmek için aşağıdaki algoritmalar mevcuttur.

    Önceki bilgiler: Üstel ağırlıklı ortalama, lütfen "Üstel Ağırlıklı Ortalama ve Sapma Düzeltmesi Nedir?

    [Zorluğu ele alma 1]

    4. momentum

    Geçitler durumunda SGD kolayca hapsolur. Uçurum, yüzeyin bir yönünün diğerinden daha dik olduğu anlamına gelir. Şu anda, SGD salınacak ve minimum değere yakın olmayacaktır:

    Gradyan güncelleme kuralları:

    Momentum, v_t 1 ekleyerek SGD'yi hızlandırabilir ve salınımı bastırabilir

    Dağdan aşağı küçük bir top yuvarladığımızda direnç yoksa momentumu artacak, dirençle karşılaşırsa hızı düşecektir.

    Bu öğenin eklenmesi, yakınsamayı hızlandırmak ve şoku azaltmak için, boyutun hızını aynı gradyan yönüyle daha hızlı hale getirebilir ve gradyan yönüyle boyutun güncelleme hızını daha yavaş değiştirebilir.

    Hiperparametre ayar değeri: Genel olarak, değeri yaklaşık 0,9'dur.

    Dezavantajları:

    Bu durum, topun dağdan aşağıya yuvarlanırken yokuş boyunca kör bir şekilde yuvarlanmasıyla eşdeğerdir.Eğer bazı peygamberleri varsa, örneğin yokuş yukarı gitmek üzereyken yavaşlaması gerektiğini bilir, adaptasyon daha iyi olur.

    5. Nesterov Hızlandırılmış Gradyan

    Gradyan güncelleme kuralları:

    Parametrenin bir sonraki adımda olacağı değeri yaklaşık olarak tahmin etmek için v_t 1 kullanın. Gradyan hesaplanırken, mevcut konumda değil, gelecekteki konumdadır

    Hiperparametre ayar değeri: Genel olarak, hala yaklaşık 0.9'dur.

    Etkilerin karşılaştırılması:

    Mavi, Momentum sürecidir. Önce geçerli gradyan hesaplanır ve ardından güncellenen kümülatif gradyan sonrasında büyük bir sıçrama olur.

    NAG, önce önceki adımın kümülatif gradyanında (kahverengi vektör) büyük bir sıçrama yapacak ve ardından bir düzeltme (kırmızı vektör) yapmak için gradyanı ölçecek. Bu beklenen güncelleme, çok hızlı ilerlememizi engelleyebilir.

    NAG, RNN'nin birçok görevde daha iyi performans göstermesini sağlayabilir.

    Şimdiye kadar, gradyanı güncellerken kayıp fonksiyonunun gradyanına göre hızı ayarlayabilir ve SGD'yi hızlandırabiliriz.

    Ayrıca, farklı parametrelerin önemlerine göre değişen derecelerde güncellenebileceğini umuyoruz.

    [Zorluğu ele alma 2]

    6. Adagrad (Uyarlamalı gradyan algoritması)

    Bu algoritma, düşük frekanslı parametrelerde daha büyük güncellemeler ve yüksek frekanslı parametrelerde daha küçük güncellemeler yapabilir. Bu nedenle, seyrek veriler için çok iyi performans gösterir, bu da tanıma gibi SGD'nin sağlamlığını büyük ölçüde artırır. Youtube videolarındaki kediler GloVe kelime düğünlerini eğitiyor çünkü hepsi düşük frekanslı özelliklerde daha büyük güncellemeler gerektiriyor.

    Gradyan güncelleme kuralları:

    G olduğu yerde: t anında _i parametresinin gradyanı

    Normal bir SGD ise, her an moment_i'nin gradyan güncelleme formülü şöyledir:

    Ama burada öğrenme oranı da t ve i ile değişir:

    Bunların arasında, G_t bir köşegen matristir ve (i, i) elemanı t zamanında _i parametresinin kare gradyanlarının toplamıdır.

    Adagrad'ın avantajı, öğrenme oranının manuel olarak ayarlanmasını azaltmaktır.

    Hiperparametre ayar değeri: genellikle 0.01'i seçer

    Dezavantajları:

    Dezavantajı, paydanın birikmeye devam etmesi, bu nedenle öğrenme oranının azalması ve sonunda çok küçük olmasıdır.

    7. Adadelta

    Bu algoritma, Adagrad'ın bir iyileştirmesidir,

    Adagrad ile karşılaştırıldığında, payda G, geçmiş gradyan kare zayıflama ortalaması, üstel zayıflama ortalaması ile değiştirilir

    Bu payda eşdeğerdir Kök ortalama kare (RMS) Verilerin istatistiksel analizinde, tüm değerlerin karelerinin toplamı, ortalama değer ve karekök, ortalama karekök değerini alır, böylece RMS kısaltılabilir:

    E'nin hesaplama formülü aşağıdaki gibidir ve t süresi önceki zamanın ortalamasına ve mevcut gradyanına bağlıdır:

    Gradyan güncelleme kuralları:

    Ek olarak, öğrenme oranı , öğrenme oranını önceden belirlememize gerek kalmaması için RMS ile değiştirilir:

    Hiperparametre ayar değeri: genellikle 0,9'a ayarlanır

    8. RMSprop

    RMSprop, Geoff Hinton tarafından önerilen uyarlanabilir bir öğrenme hızı yöntemidir.

    Hem RMSprop hem de Adadelta, Adagrad'ın öğrenme oranındaki keskin düşüş sorununu çözmek için tasarlanmıştır. ,

    Gradyan güncelleme kuralları:

    RMSprop, Adadelta'nın ilk biçimi ile aynıdır: (Gradyan inişindeki salınımı ortadan kaldırmayı amaçlayan üstel ağırlıklı ortalamayı kullanır. Etki Momentum ile aynıdır. Belirli bir boyutun türevi daha büyüktür ve üstel ağırlıklı ortalama daha büyüktür. Boyutun türevi nispeten küçüktür, üssel ağırlıklı ortalama küçüktür, bu da her boyutun türevinin bir büyüklük mertebesine sahip olmasını sağlar, böylece salınımı azaltır. Daha büyük bir öğrenme oranına izin verir )

    Hiperparametre ayar değeri:

    Hinton, 'nin 0.9'a ve öğrenme oranının 'nin 0.001'e ayarlanmasını önerir.

    9. Adam: Uyarlanabilir Moment Tahmini

    Bu algoritma, her parametre için uyarlanabilir öğrenme oranını hesaplamanın başka bir yoludur. RMSprop + Momentum'a eşdeğer

    Adadelta ve RMSprop gibi geçmiş gradyan vt'nin karesinin üssel bozulma ortalamasını depolamanın yanı sıra, momentum gibi geçmiş gradyan mt'nin üssel bozulma ortalamasını da korur:

    Mt ve vt 0 vektör olarak başlatılırsa, 0'a doğru kaydırılırlar. Sapma düzeltmesi , Düzeltilmiş mt ve vt'yi hesaplayarak bu sapmaları dengeleyin:

    Gradyan güncelleme kuralları:

    Hiperparametre ayar değeri:

    1 = 0.9, 2 = 0.999, = 10e 8 olması tavsiye edilir.

    Uygulama, Adam'ın diğer uyarlanabilir öğrenme yöntemlerinden daha iyi olduğunu göstermektedir.

    2. Etkilerin karşılaştırılması

    Eyer noktaları ve konturlar üzerindeki çeşitli algoritmaların performansına bir göz atalım:

    Eyer noktasında GD optimizasyonu

    Kayıp yüzey konturlarında SGD optimizasyonu

    Yukarıdaki iki durumda, Adagrad, Adadelta ve RMSprop'un doğru yönü bulduğu ve neredeyse hızlı bir şekilde ilerlediği ve yakınsama hızının oldukça hızlı olduğu, diğer yöntemlerin ise ya çok yavaş olduğu ya da bulmak için çok fazla sapma aldığı görülebilir.

    Adagrad, Adadelta, RMSprop, Adam gibi uyarlanabilir öğrenme hızı yöntemlerinin bu senaryoda daha uygun olduğu ve daha iyi yakınsama gösterdiği şekilden görülebilmektedir.

    3. Bir optimizasyon algoritması nasıl seçilir

    Veriler seyrekse, kendi kendine uygulanabilir yöntemler, yani Adagrad, Adadelta, RMSprop, Adam kullanın.

    RMSprop, Adadelta, Adam birçok durumda benzer etkilere sahiptir.

    Adam, RMSprop temelinde önyargı düzeltme ve ivme ekledi.

    Gradyan seyrekleştikçe Adam, RMSprop'tan daha iyi performans gösterecektir.

    Genel olarak, Adam en iyi seçimdir .

    SGD birçok makalede ivme olmaksızın kullanılmaktadır. SGD minimum değere ulaşabilse de, diğer algoritmalardan daha uzun sürer ve bir eyer noktasında sıkışmış olabilir.

    Daha hızlı yakınsamaya veya daha derin ve daha karmaşık sinir ağlarını eğitmeye ihtiyacınız varsa, uyarlanabilir bir algoritma kullanmanız gerekir.

    Yuan Xiangqin hala sevimli, Lin Yichen beyaz çoraplı çiçekli bir etek giyiyor ve elinde balonlar tutuyor, minyon ve sevimli
    önceki
    Jule, Lewan'ın orta kademe Pavlenka'yı defalarca kurtarmak için bozar, Bayern 1-0 Bremen
    Sonraki
    Liu Yan, çekici, dağınık kıvırcık saçlı, düşük boyunlu dar örgü etek giyen yine iyi bir figüre sahip.
    Okuduktan sonra evrişimli sinir ağlarının "alıcı alanını" anlamıyor musunuz? O zaman sen bana gel
    Uzun ve kısa vadeli bellek ağı LSTM'yi ve geçitli tekrarlayan ağ GRU'yu anlamak için resme bakın
    Jiang Mengjie, uzun ve düz bacakları ve şık bir takım elbisesiyle yırtık taytlar giymişti Netizen: Bir çanta istiyorum
    "Gençlik Dövüşü" nde, bilekleri bilek kadar ince, batı tarzı duvaklı kolsuz etek giyen Jin Xiaoni'yi canlandırdı.
    Hayvanlar o kadar iyi değil! Güzel çift, 13 çocuğu 20 yıldan fazla bir süredir hapsedip taciz etti, 30 yaşındaki oğlunun sadece 3 IQ'su var
    Wu Qianın yeni oyunu başladığında spor giyimde bir kar prensesine dönüşüyor. Rafine resim ve rötuşsuz resim bir çift bacak olabilir mi?
    Ma Su, kareli kalça eteği olan bir tişört giydi. Aşağı baktı ve ayaklarını gördü. Netizenler sessizdi: buzağı gerçekten güçlü
    Yu Kewei 36 yaşında, ama o hala kalbinde bir kız.Sevimli ve sevimli bir elbise giyiyor.Gerçekten evle evlenmek istiyor.
    Paris'te yürüyen beyaz bir trençkot giyen, uzun saçları dalgalanan cazibeyle dolu "Creation 101" ile popüler oldu.
    Boston Dynamics mekanik köpeğinin "Black Mirror" katilinin yüzüne vurmasından korkuyor musunuz?
    C pozisyonunda, düz paçalı pantolonlu örme bir hırka giyen "Creation 101" aynaya çok tatlı geldi.
    To Top