Sinir ağı mimarisine nasıl karar verilir?


20

Gizli katmanlardaki kaç düğüme ve nöral ağ mimarisi oluştururken kaç tane gizli katman yerleştireceğimize nasıl karar vermemiz gerektiğini merak ediyordum.

Giriş ve çıkış katmanının sahip olduğumuz eğitim setine bağlı olduğunu anlıyorum ama gizli katmana ve genel mimariye nasıl karar veriyoruz?


Tipik olarak niyetimizi kullanarak deney yaparız; bir hiperparametre olduğunu düşünün . Mimariyi öğrenmenin yolları var ama ne kadar pratik olduklarını bilmiyorum: blog.acolyer.org/2017/05/10/…
Emre

2
Bunun bir kopyasını aradım, çünkü bu sitede daha önce birçok kez kırpıldığından eminim. Ancak, bazı veri kümesine veya soruna eklenmemiş saf bir sürüm bulunamadı. Belki bu başkalarına işaret ettiğimiz jenerik soru olabilir? Ne yazık ki, genel olarak alınacak harika bir "nasıl" cevabı yoktur, ancak çok fazla seçenekle karşılaşıldığında bu yaygın bir sorudur.
Neil Slater


Bu çok ilginç bir soru. (Araştırmacı sorunuz üzerinde çalışmaya başladı). Veri kümesi A ve veri kümesi B için en uygun mimari nedir? Lütfen sorunuza cevap vermeye çalışan makaleyi okuyun. Sinir Mimarisi Arama (NAS) dünyasına hoş geldiniz. arxiv.org/abs/1611.01578
iDeepVision

Yanıtlar:


17

Ne yazık ki , sadece bir problem açıklaması verildiğinde, bir sinir ağının en iyi nöron sayısını ve katman sayısını belirlemek için genel bir yol yoktur . Başlangıç ​​noktası olarak denemek için iyi değerleri belirleyecek çok fazla rehberlik bile yoktur.

En yaygın yaklaşım, benzer problemlerde kullanılan ağlar hakkında önceki deneyimlere dayanan kaba bir tahminde başlamak gibi görünmektedir. Bu sizin kendi deneyiminiz veya bir eğitim kursundan, blogunuzdan veya araştırma raporundan aldığınız ikinci / üçüncü el deneyiminiz olabilir. Ardından, bazı varyasyonları deneyin ve en iyisini seçmeden önce performansı dikkatlice kontrol edin.

Sinir ağlarının boyutu ve derinliği diğer hiper-paramatörler ile de etkileşime girer , böylece başka bir yerde bir şeyi değiştirmek en iyi değerlerin yerini etkileyebilir. Bu nedenle, bir ağ için "en iyi" boyut ve derinliği izole etmek mümkün değildir ve daha sonra diğer parametreleri izole etmeye devam eder. Örneğin, çok derin bir ağınız varsa, ReLU etkinleştirme işleviyle verimli bir şekilde çalışabilir, ancak sigmoid ile o kadar iyi çalışmayabilir - ağın en iyi boyutunu / şeklini bulup daha sonra değişen etkinleştirme işlevleriyle bir deneme denediyseniz neyin en iyi sonuç verdiği konusunda yanlış sonuca varmak.

Bazen sinir ağ tasarımına sıfırdan başlayarak araştırmacıların kullandığı “temel kurallar” hakkında bilgi edinebilirsiniz. Bunlar sorunlarınız için işe yarayıp yaramayabilir, ancak en azından probleme bir başlangıç ​​yapma avantajına sahiptirler. Gördüğüm varyasyonlar:

  • Boyutu değiştirmek için özel bir neden olmadığı gerekçesiyle (belki bir otomatik kodlayıcı oluşturmuyorsanız), girişe benzer boyutta ve aynı boyutta gizli katmanlara sahip bir ağ oluşturun.

  • Basit bir ağı neyin geliştirdiğini görmek için basit başlayın ve karmaşıklık oluşturun.

  • Çıktının giriş verileriyle iyi açıklanmasını bekliyorsanız, ancak karmaşık bir ilişkiyle (yalnızca doğal olarak gürültülü olmanın aksine) değişen ağ derinliklerini deneyin.

  • Biraz bırakmayı deneyin, sinir ağlarının her şeyi daha iyi hale getiren sihirli peri tozuna en yakın şeydir (uyarı: bırakma eklemek genellemeyi artırabilir, ancak gerekli katman boyutlarını ve eğitim sürelerini de artırabilir).

Bunları veya herhangi bir metni herhangi bir metinde okursanız, bir tutam tuz ile alın. Ancak, en kötüsü, boş sayfa efektini geçmenize ve bir tür ağ yazmanıza ve test ve iyileştirme sürecini başlatmanıza yardımcı olurlar.


Bir kenara, başka bir yaklaşım daha iyi olabilir ve size çok zaman kazandırarak bir sinir ağını ayarlamak çok kaybolmak için çalışın. Diğer makine öğrenimi ve veri bilimi yaklaşımlarını göz önünde bulundurun ve kullanın. Verileri keşfedin, belki bazı grafikler yapın. Sorununuza bağlı olarak, atım, doğrusal regresyon, lojistik regresyon veya softmax regresyon için kriterler elde etmek için önce bazı basit doğrusal yaklaşımları deneyin. NN'lere farklı bir ML algoritması kullanmayı düşünün - XGBoost gibi karar ağacı tabanlı yaklaşımlar birçok problem üzerinde derinlemesine öğrenmekten daha hızlı ve daha etkili olabilir.


Harika bir açıklama. Teşekkürler. Hangi ML yaklaşımının kullanılacağına karar vermenin iyi bir yolu olup olmadığını merak ediyorum. Sinir ağından daha iyi bir yol olabileceğini söylemiştiniz, ancak bunu nasıl kolayca belirleyebiliriz?
user7677413

@ user7677413: Aynı şey geçerlidir. Deneyim size tanıdık problemler hakkında rehberlik etmesine rağmen, denemek ve görmek zorundasınız.
Neil Slater

1
sinir ağı ne zaman gereklidir?
user7677413

1
Sinir ağları nadiren gereklidir . Ancak, bazı problemlerde daha iyidirler. Ses ve görüntü tanıma gibi sinyal işleme görevlerinde mükemmeldirler ve ayrıca daha basit algoritmaların bir sınıra ulaşabileceği büyük miktardaki verilerden küçük farkları öğrenme kapasitesine sahiptirler. Bununla birlikte, bir NN sizin için doğru araç olup olmadığı ve belirli bir günde karşılaştığınız sorun ne olursa olsun, kimse tahmin edemez.
Neil Slater

1
@ user7677413 Sanırım 40 yıllık derin ve kavrayıcı makine öğrenimi araştırması olmadığını varsayıyorsunuz. Sadece yüzeyi çiziyormuşsunuz gibi geliyor. Bir ders kitabı bulmanızı ve birçok makine öğrenimi algoritması için sezgilerinizi geliştirmenize yardımcı olacak tüm bunların nasıl bağlandığını görmenizi öneririm.
Alex L
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.