Sinir ağlarını eğitmek için bir optimize edici seçme yönergeleri


18

Bir süredir sinir ağları kullanıyorum. Bununla birlikte, sürekli mücadele ettiğim bir şey, ağı eğitmek için bir iyileştirici seçimidir (backprop kullanarak). Genellikle yaptığım şey sadece biriyle (örneğin standart SGD) başlamak ve diğerlerini hemen hemen rastgele denemek. İyi bir optimizer bulmak için daha iyi (ve daha az rastgele) bir yaklaşım olup olmadığını merak ediyordum, örneğin bu listeden:

  • SGD (momentumlu veya momentumsuz)
  • AdaDelta
  • AdaGrad
  • RMSProp
  • Adem

Özellikle, eğitim verilerinin belirli bir özelliği olduğu, örneğin seyrek olduğu göz önüne alındığında, diğerinin üzerinde seçim yapmak için bazı teorik gerekçelerin olup olmadığıyla ilgileniyorum. Ayrıca bazı optimize edicilerin belirli alanlardaki diğerlerinden daha iyi çalıştığını düşünebilirim;

Herhangi biriniz optimize edicileri nasıl seçeceğiniz konusunda bir strateji ve / veya sezgi geliştirdiyseniz, bunu duymakla çok ilgilenirim. Dahası, birbirini seçmek için teorik gerekçe sağlayan bir çalışma varsa, bu daha da iyi olurdu.

Yanıtlar:


3

1) AdaGrad, sık sık güncellenen parametreler için öğrenme hızını çok fazla cezalandırır ve seyrek parametrelere, sık güncellenmeyen parametreler için daha fazla öğrenme oranı verir. Birçok problemde sıklıkla en kritik bilgiler, seyrek fakat seyrek olmayan verilerde bulunur. Eğer sorun tf-idf gibi seyrek verilerle uğraşıyorsanız. Adagrad faydalı olabilir.

2) AdaDelta, RMSProp hemen hemen benzer hatlarda çalışır ve Adadelta'daki tek farkla başlamak için başlangıç ​​öğrenme sabitine ihtiyacınız yoktur.

3) Adam, Adadelta ve RMSprop'un iyi özelliklerini birleştirir ve bu nedenle çoğu sorun için daha iyisini yapma eğilimindedir.

4) Stokastik gradyan inişi çok basittir ve günümüzde nadiren kullanılmaktadır. Bir sorun, bununla ilişkili küresel öğrenme oranıdır. Bu nedenle, parametreler farklı ölçeklerde olduğunda iyi çalışmaz, çünkü düşük bir öğrenme oranı öğrenmeyi yavaşlatacak, büyük bir öğrenme oranı ise salınımlara yol açabilir. Ayrıca stokastik gradyan iniş genellikle sele noktalarından kaçmakta zorlanır. Adagrad, Adadelta, RMSprop ve ADAM genellikle sele noktalarını daha iyi işler. Momentumlu SGD optimizasyona biraz hız kazandırır ve yerel minimadan daha iyi kaçmaya yardımcı olur.


2

Kişisel yaklaşımım, en yeni olanı optimize ediciyi seçmektir (yani, en yeni yayınlanan bir dergide yayınlanan dergi), çünkü genellikle standart veri kümelerinde sonuçları veya en son teknolojiyi veya her ikisini birden rapor ederler. Örneğin Caffe kullandığımda, daima Adam'ı kullanıyorum ( http://arxiv.org/abs/1412.6980 ).


0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

AdamAslında RMSpropivme ile olduğu gibi , NadamAdam RMSpropNesterov momentumu ile.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.