2016-05-26 22 views
11

Regresyon problemi için Tensorflow ve AdamOptimizer kullanarak oldukça basit bir ANN var ve şimdi tüm hiperparametrelerin ayarlandığı noktadayım.Neural Networks'te hiperparametreleri hangi sırayla ayarlamalıyız?

  • Öğrenme hızının:

    Şimdilik, sana ses var birçok farklı hyperparameters gördüğümüz ilk öğrenme hızı, hız çürüme öğrenme AdamOptimizer 4 argümanlar ihtiyacı

  • (öğrenme hızı, beta1'in beta2 , epsilon) böylece ayar bunları gereken - en az epsilon iterasyon
  • parti boyutu
  • nb
  • Lambda L2 düzenlilestirme parametresi
  • nöronların
  • sayısı, katmanların sayısı
  • çıkış katmanı için gizli katmanları için aktivasyon fonksiyonu ne tür
  • bırakma parametresi

ben 2 soru var:

1) Eğer Do Unutmuş olabileceğim başka hiperparametreye bakın.

2) Şu an için ayarım oldukça "manuel" ve her şeyi doğru şekilde yapmadığımdan emin değilim. Parametreleri ayarlamak için özel bir sipariş var mı? E.g öğrenme oranı önce, sonra toplu boyutu, daha sonra ... Tüm bu parametrelerin bağımsız olduğundan emin değilim - aslında, bazılarının olmadığından eminim. Hangileri açıkça bağımsız ve hangileri açıkça bağımsız değil? Onları birlikte ayarlamalı mıyız? Tüm parametrelerin özel bir sırada düzgün şekilde ayarlanmasından söz eden herhangi bir makale veya makale var mı?

DÜZENLEME: Farklı başlangıç ​​öğrenme oranları, parti boyutları ve düzenlenme parametreleri için aldığım grafikler aşağıda verilmiştir. Mor eğri benim için tamamen garip ... Çünkü maliyeti yavaşça diğerlerine göre yavaşlatıyor, ancak daha düşük bir doğruluk oranına sıkışmıştı. Modelin yerel bir minimumda kalması mümkün mü? LR (t) LRI/sqrt (dönem) Yardımlarınız için

Teşekkür =: öğrenme oranı için

Accuracy

Cost, ben çürümesi kullanılan! Paul

+0

Merhaba Paul, öğrenme hızı azalması olarak neden "LRI/sqrt (epoch)" yi kullandığınızı merak ediyorum? Ben çürüme başlamak istediğim çağa epoch_0 'ayarlamak nerede 'LRI/max (epoch_0, epoch)' kullanıyorum, ama payda gibi karenin kökü alırsanız belki daha hızlı bir yakınlaşma olsun Yapmalısın. Bu öğrenme oranı azalması için herhangi bir referansınız var mı yoksa az çok kendiniz mi geldin? – HelloGoodbye

+0

Merhaba @HelloGoodbye! Adam Doktoru'nu (https://arxiv.org/pdf/1412.6980.pdf) sunan makalede, Teorem 4.1'in yakınsamasını kanıtlamak için Öğrenme Oranı için bir Kare Kök azalması kullanırlar. –

cevap

2

Daha az önemli olan parametreler için muhtemelen sadece makul bir değer seçebilir ve onunla yapışabilirsiniz.

Dediğiniz gibi, bu parametrelerin en uygun değerleri birbirilerine bağlıdır. Yapılacak en kolay şey, her hiperparametre için makul bir değer aralığı tanımlamaktır. Ardından, her aralıktan bir parametreyi rastgele örnekleyin ve bu ayarda bir model eğitin. Bunu birkaç kez tekrarlayın ve en iyi modeli seçin. Eğer şanslıysanız, hangi hiperparametre ayarlarının en iyi çalıştığını analiz edebilir ve bundan bazı sonuçlar çıkartabilirsiniz.

+0

Cevabınız için teşekkürler! Bu nedenle, hipermetirgelerin TÜMÜ için değerleri rastgele seçmek ve bunları ayrı ayrı ayarlamaktan tamamen mi ayırmak daha iyidir? –

+0

Evet. Bildiğiniz bazı hiperparametreler yoksa, o kadar önemli değil. Onlar için sadece bir değer seçebilir ve geri kalanını optimize edebilirsiniz. Örneğin, insanlar iki katman ve sigmoid aktivasyonunu kullanmaya karar verebilir, ancak her katmanın büyüklüğünü optimize ederler. – Aaron

+0

Teşekkürler! İlk öğrenme oranı, normalleştirme parametresi ve parti boyutu için rastgele seçim seçeneklerinden aldığım grafikleri ekledim. Modelin neden bu kadar düşük bir doğrulukla sıkıştığını anlayamıyorum ... –

3

Tensorboard'u çalıştırın. Hatayı orada çizin. TB'nin verileri çizmek için aradığı yoldaki alt dizinleri oluşturmanız gerekir.Komutta bu alt dizin oluşturmayı yapıyorum. Bu yüzden, komut dosyasındaki bir parametreyi değiştiriyorum, denemeye bir ad verin, çalıştırın ve tüm denemeleri aynı grafikte çizin. Çok yakında grafiğiniz ve verileriniz için en etkili ayarlar için bir fikir edineceksiniz.

+0

Teşekkürler! Aynı Tensorboard penceresinde farklı grafikler gösterebileceğimizi bilmiyordum. Bu şekilde bakacağım, ilk sorularıma cevap vermiyor olsa bile. –

5

Benim genel sırası:

  1. Parti büyüklüğü, büyük ölçüde gelecekteki deneylerin eğitim süresini etkileyecektir olarak. ağın
  2. Mimari: ağda nöron
    • sayısı tabakaların
    • sayısı
  3. istirahat (bırakma, L2 reg vs.)

bağımlılıklar:

Optimal va.

  • arasında frengi kuvvetle birbirine bağlıdır hızı ve toplu boyutunu
  • öğrenme oranı ve nöronların sayısı nöronlarının
  • sayısı ve tabakalar

sayısını öğrenme. Ben bu alanda uzman değilim. senin hyperparameters gelince

: Adam optimize edici için

  • : "kağıt Önerilen değerler eps vardır = 1e-8, beta1 = 0.9, beta2 = 0,999." (source)
  • Adam ve RMSProp ile öğrenme oranı için, çoğu sorun için en uygun olacak şekilde 0.001 civarında değerler buldum.
  • Adam'a alternatif olarak, bellek kaplamasını% 33'e kadar azaltan RMSProp da kullanabilirsiniz. Daha fazla ayrıntı için bkz. this answer.
  • Ayrıca, başlangıç ​​ağırlık değerlerini ayarlayabilirsiniz (bkz. All you need is a good init). Bununla birlikte, Xavier başlatıcısı, ağırlık girişlerini ayarlamayı önlemek için iyi bir yol gibi görünüyor.
  • Yineleme sayısını/epoch sayısını bir hiperparametre olarak ayarlamam. Doğrulama hatası yaklaşana kadar ağı eğitiyorum. Ancak, her koşuyu bir zaman bütçesi veririm.
+0

RMSprop, 'beta1 = 0' ile AdamOptimizer'e neredeyse eşdeğerdir. (AdamOptimizer başlangıçta RMS terimindeki önyargıyı düzeltir, ancak önyargı ve düzeltme her ikisi de yeterli eğitim adımından sonra sıfıra yaklaşır.) –

+0

@CharlesStaats Giriş için teşekkürler! Adam ve RMSprop arasındaki farkı araştırırken şunu buldum: http://cs231n.github.io/neural-networks-3/#ada "Güncelleştirmenin" düzgün "sürüm dışında RMSProp güncelleştirmesi gibi göründüğüne dikkat edin. gradyan m'nin ham (ve belki de gürültülü) gradyan vektörünün yerine kullanılması dx. Kağıtta tavsiye edilen değerler eps = 1e-8, beta1 = 0.9, beta2 = 0.999'dur .. Pratikte Adam şu anda varsayılan algoritma olarak önerilmektedir. kullanın ve genellikle RMSProp'tan biraz daha iyi çalışır. " Yani haklısınız. Adam'ı bundan sonra kullanacağım. –

0

I tensorflow için herhangi bir araç, belirli bilgi yoktur, ama en iyi strateji, ilk olarak, örneğin 0.01, 0.001 öğrenme oranı, 0.005 weight_decay 0.0005 gibi temel hyperparameters ile başlamaktır. Ve sonra onları ayarlayın. El ile yapmak çok zaman alacaktır, eğer kafe kullanıyorsanız, hiperparametreleri bir dizi giriş değerinden alacağınız en iyi seçenek aşağıdadır ve size en iyi seti verecektir.İlk

katmanların sayısı için http://fastml.com/optimizing-hyperparams-with-hyperopt/

, sana ne yapmasını önermek olduğunu daha küçük ağ yapmak ve veri artırır:

https://github.com/kuz/caffe-with-spearmint

fazla bilgi için, siz de bu öğretici takip edebilirsiniz ve yeterli verilere sahip olduktan sonra, model karmaşıklığını arttırın.