Derin öğrenme optimize edici optimize edicinin seçimiyle ilgili olarak, bunları bilmeniz gerekir

Lei Feng Net Not: Bu makalenin yazarı Yang Xi, orijinal metin yazar tarafından yayınlandı kişisel blog Leifeng.com yetkilendirildi.

Birçok makine öğrenimi ve derin öğrenme uygulamasında, en çok kullanılan optimize edicinin Adam olduğunu gördük. Neden?

Aşağıdakiler TensorFlow'daki iyileştiricilerdir:

Ayrıntılar için bkz: https://www.tensorflow.org/api_guides/python/train

Ayrıca keras'ta SGD, RMSprop, Adagrad, Adadelta, Adam vb. Bulunmaktadır.Detaylar:

https://keras.io/optimizers/

Yaygın gradyan inişine ek olarak, Adadelta, Adagrad, RMSProp, vb. Gibi birkaç optimize edicinin olduğunu bulabiliriz. Bunlar nedir ve nasıl seçilir?

Yaygın olarak kullanılan optimize edicilerin bir karşılaştırması bu makalede Sebastian Ruder tarafından verilmiştir. Bugün öğrenelim:

Orijinal bağlantı: https://arxiv.org/pdf/1609.04747.pdf

Bu makale sıralanacak:

Gradyan güncelleme kuralları ve her algoritmanın dezavantajları

Bu eksikliğin üstesinden gelmek için önerilen bir sonraki algoritma

Hiperparametrenin genel ayar değeri

Çeşitli algoritmaların etkilerinin karşılaştırması

Hangi algoritmayı seçmelisiniz

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

Öncelikle gradyan iniş BGD, SGD, MBGD'nin en yaygın üç varyantına bakın,

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 inişi

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, bir güncellemede tüm veri setinin gradyanını hesaplamak olduğu için hesaplaması ç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 inişi

Gradyan güncelleme kuralları:

BGD'nin tüm verilerle tek seferlik gradyan hesaplamasıyla karşılaştırıldığında, SGD her güncellendiğinde her örnek için gradyanları günceller.

Büyük veri kümeleri için benzer örnekler olabilir, böylece BGD degradeleri hesaplarken fazlalık olacaktır.

SGD bir seferde 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.

Dezavantajları:

Ancak, SGD sık sık güncellendiği için maliyet fonksiyonunda ciddi dalgalanmalara neden olacaktır.

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 inişi

Gradyan güncelleme kuralları:

MBGD her seferinde küçük bir numune grubu kullanır, yani hesaplama için n numune,

Bu şekilde, parametre güncellemesi sırasındaki varyansı azaltabilir ve yakınsama daha kararlı hale gelir.

Öte yandan, daha etkili gradyan hesaplamaları gerçekleştirmek için derin öğrenme kütüphanesindeki yüksek düzeyde optimize edilmiş matris işlemlerinden tam olarak yararlanabilirsiniz.

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

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 ila 256 arasındadır

Dezavantajları:

Ancak, Mini toplu gradyan inişi iyi yakınsamayı garanti edemez:

1. Öğrenme hızı çok küçükse, yakınsama hızı çok yavaş olacaktır, çok büyükse kayıp işlevi minimum değerde salınacak veya hatta 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. Bununla birlikte, eşik ayarının önceden yazılması gerekir. Veri setinin özelliklerine uyum sağlayabilme)

2. Ayrıca bu yöntem, tüm parametreleri güncellerken aynı öğrenme oranını uygulamaktır.Verilerimiz seyrekse, özellikleri düşük frekansla güncellemeyi tercih ederiz.

3. Ek olarak, dışbükey olmayan işlevler için yerel minimumlarda veya eyer noktalarında yakalamadan kaçının çünkü eyer noktası etrafındaki hata aynıdır, tüm boyutların gradyanları 0'a yakındır ve SGD burada kolayca yakalanır.

Eyer noktası, tümü bu noktanın teğet çizgisinin farklı taraflarında bulunan, pürüzsüz bir işlevin eyer noktasının yakınında bulunan bir eğri, yüzey veya hiper yüzeydir.

Örneğin, aşağıdaki şekilde 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)

Yukarıdaki üç zorluğun üstesinden gelmek için aşağıdaki algoritmalar geliştirilmiştir.

[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:

hala 0,9 civarında.

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

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 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:

Genel olarak 0.01 olarak alınır.

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ı ile değiştirilir:

Bu payda degradenin kök ortalama karesine (RMS) eşdeğerdir, bu nedenle 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çimiyle aynıdır:

Hiperparametre ayar değeri:

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

9. Adam

Bu algoritma, her parametre için uyarlanabilir öğrenme oranını hesaplamanın başka bir yoludur.

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 önyargılı olacaktır, bu nedenle sapma düzeltmesi yapılır.

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.

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

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

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.

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 bir 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.

referans:

https://stats.stackexchange.com/questions/55247/how-to-choose-the-right-optimization-algorithm

Leifeng.com'da İlgili Okumalar:

Google'ın açık kaynaklı bilgisayarla görme modeli MobileNets: farklı mobil cihaz seviyeleri için optimize edilmiştir

OpenBLAS projesi ve matris çarpım optimizasyonu | AI Araştırma Enstitüsü

Shenguang senkronizasyonunun etkisi nedir? Bir "ışık kirliliği" ana bilgisayarı oluşturun | Titanium Geek
önceki
China Resources Micro / Jiangsu Electronics Technology ile kalabalığın arasından sıyrılan Wuxi, entegre devre bomundaki konumunu koruyamıyor.
Sonraki
Hint tanrıları, gelin ve birer birer hizmet edin
"Final Fantasy 15" yeni güncelleme duyuruldu, resmi mod araçları yakında geliyor
Ev aletleri bu hafta dolanıyor: Xiaomi IoT'ye bağlı IKEA aydınlatması, Hammer, nemlendiricilerin teslimatının geciktiği için özür diledi
"Mükemmel blog yayını" DDR okuryazarlığı-DDR3 temelleri
Filmdeki "iş" de, karanlık atları ve kötü filmleri saklayacak hiçbir yer yok
Mart ayında şanslı paranızı boşaltmak için çok fazla gişe rekoru kıran film var
Yeni Mercedes-Benz uzun aks açıklığına sahip A sınıfı sedan Chongqing'de piyasaya sürüldü
Blower Arıza Modunun Tanınmasında DFT Enterpolasyon Algoritmasının Uygulanması
Shuangfeng: 9. Tecavüz Çiçeği Kültür Turizmi Festivali düzenlendi
"God Eater 3" pek çok yeni ekran görüntüsü, kadın kahramanı HD olarak sunuluyor
5G ağ dönüşümünün itici gücü - SDN'nin geçmişi ve bugünü
Blok bulanık entropi ve rastgele ormanı birleştiren görüntü sınıflandırma yöntemi
To Top