Nöral ağlarda nöron ve katman sayısı nasıl belirlenir


26

Sinir ağlarına yeni başlıyorum ve iki kavramı kavramada zorluk çektim:

  1. Belirli bir sinir ağının sahip olduğu orta katmanların sayısına nasıl karar verilir? 1'e 10 ya da her neyse.
  2. Kişi, her orta katmandaki nöronların sayısına nasıl karar verir? Her orta katmanda eşit sayıda nöron bulunması tavsiye edilir mi yoksa uygulamaya göre değişir mi?

Yanıtlar:


19

Her katman için nöron sayısının ve tamamen bağlı ağlardaki katman sayısının dikkate alınması problemin özellik alanına bağlıdır. İki boyutlu durumlarda tasvir etmek için ne olduğunu göstermek için 2 boyutlu boşluk kullanıyorum. Bir bilim insanının eserlerinden görüntüler kullandım . Diğer ağları anlamak CNNiçin buraya bakmanızı tavsiye ederim .

Diyelim ki sadece tek bir nöronunuz var, bu durumda ağın parametrelerini öğrendikten sonra, alanı iki ayrı sınıfa ayırabilecek doğrusal bir karar sınırına sahip olacaksınız.

görüntü tanımını buraya girin

görüntü tanımını buraya girin

Aşağıdaki verileri ayırmanız istendiğini varsayalım. Sen gerekecektir d1yapıyor nasılsa üst karar sınırını belirler ve hangi ANDgiriş verilerinin sol tarafında veya sağ tarafında olup olmadığını belirlemek için operasyon. Satır d2, ANDgiriş verilerinin daha yüksek olup olmadığını araştıran başka bir işlem yapıyor d2. Bu durumda d1, girişi daire olarak sınıflandırmak için girişin satırın sol tarafında olup d2olmadığını anlamaya çalışıyor , aynı zamanda girişi daire olarak sınıflandırmak için girişin hattın sağ tarafında olup olmadığını anlamaya çalışıyor . Şimdi başka birine ihtiyacımız varANDparametreleri eğitildikten sonra oluşturulan iki çizginin sonuçlarını sarma işlemi. Giriş, sol tarafında d1ve sağ tarafında ise d2, daire şeklinde sınıflandırılmalıdır .

görüntü tanımını buraya girin

Şimdi aşağıdaki sorunun olduğunu ve sınıfları ayırmanızın istendiğini varsayalım. Bu durumda, gerekçe tam olarak yukarıdakilerin aynısı gibidir.

görüntü tanımını buraya girin

Aşağıdaki veriler için:

görüntü tanımını buraya girin

Karar sınırı dışbükey değildir ve önceki sınırlardan daha karmaşıktır. Öncelikle, iç çemberleri bulan bir alt ağa sahip olmalısınız. Öyleyse, dikdörtgenin içindeki girdilerin daire olmadığına karar veren iç dikdörtgen karar sınırını bulan başka bir alt ağa sahip olmalısınız. Bundan sonra, sonuçları silmeniz ve giriş verilerinin daha büyük dikdörtgenin içinde ve iç dikdörtgenin dışında olması durumunda, bunun daire şeklinde sınıflandırılması gerektiğini söylemelisiniz . Bunun için başka bir ANDoperasyona ihtiyacınız var . Ağ böyle olurdu:

görüntü tanımını buraya girin


Aşağıdaki daire içine alınmış karar sınırını bulmanız istendiğini varsayalım .

görüntü tanımını buraya girin

Bu durumda, ağınız, ilk gizli katmandaki çok daha fazla nöronlu, ancak buna atıfta bulunulan aşağıdaki ağ gibi olacaktır.

görüntü tanımını buraya girin


11

Çok güzel bir soru, henüz bu soruya kesin bir cevap yok. Bu aktif bir araştırma alanıdır.

Sonuçta, ağınızın mimarisi verilerinizin boyutuyla ilgilidir. Yapay sinir ağları evrensel hesaplayıcılar olduğundan, ağınız yeterince büyük olduğu sürece verilerinize uyabilecek özelliktedir.

Hangi mimarinin en iyi sonucu verdiğini gerçekten bilmenin tek yolu hepsini denemek ve sonra en iyisini seçmektir. Fakat elbette, sinir ağları ile, her modelin eğitilmesi biraz zaman aldığından, bu oldukça zordur. Bazı insanların yaptığı şey, öncelikle bilerek "çok büyük" bir model yetiştirmek ve daha sonra da ağa fazla katkı sağlamayan ağırlıkları kaldırarak budamak.

Ya ağım "çok büyükse"

Ağınız çok büyükse, yaklaşmaya ya da uyum sağlamaya zorlanabilir. Sezgisel olarak, ağınızın verilerinizi olması gerekenden daha karmaşık bir şekilde açıklamaya çalıştığı oluyor. Bu, 10 sayfalık bir makaleyle tek bir cümleyle cevaplanabilecek bir soruyu cevaplamaya çalışmak gibi. Bu kadar uzun bir cevabı yapılandırmak zor olabilir ve bir sürü gereksiz gerçek ortaya çıkabilir. ( Bu soruya bakınız )

Ya ağım "çok küçükse"

Öte yandan, ağınız çok küçükse, verilerinizi ve dolayısıyla verilerinizi karşılayacaktır. 10 sayfalık bir yazı yazmanız gerektiğinde, bir cümleyi yanıtlamak gibi olur. Cevabınız ne kadar iyi olursa olsun, bazı ilgili gerçekleri özleyeceksiniz.

Ağın boyutunu tahmin etme

Verilerinizin boyutluluğunu biliyorsanız, ağınızın yeterince büyük olup olmadığını söyleyebilirsiniz. Verilerinizin boyutluluğunu tahmin etmek için rütbesini hesaplamayı deneyebilirsiniz. Bu, insanların ağların boyutunu nasıl tahmin etmeye çalıştıklarına dair temel bir fikirdir.

Ancak, bu kadar basit değil. Aslında, ağınızın 64 boyutlu olması gerekiyorsa, 64 boyutunda tek bir gizli katman veya 8 boyutunda iki katman mı oluşturuyorsunuz? Burada, her iki durumda da ne olacağı konusunda size biraz sezgi vereceğim.

Daha derine gitmek

Derinleşmek, daha fazla gizli katman eklemek demektir. Yaptığı şey, ağın daha karmaşık özellikleri hesaplamasına izin vermesidir. Örneğin, Evrişimsel Sinir Ağları'nda, ilk birkaç katmanın kenarlar gibi "düşük seviye" özellikleri temsil ettiği ve son katların yüzler, vücut parçaları vb. Gibi "yüksek seviye" özellikleri temsil ettiği sıkça gösterilmiştir.

Verileriniz çok iyi yapılandırılmamışsa (bir resim gibi) ve yararlı bilgiler bu bilgiden elde edilmeden önce biraz işlenmesi gerekiyorsa, genellikle derinlemesine gitmeniz gerekir.

Daha geniş oluyor

Daha derine gitmek, daha karmaşık özellikler oluşturmak anlamına gelir ve "daha geniş" olmak, yalnızca bu özelliklerden daha fazlasını oluşturmak anlamına gelir. Sorununuz çok basit özelliklerle açıklanabilir, ancak birçoğunun olması gerekir. Genellikle, katmanlar ağın sonuna doğru daralmaktadır, çünkü karmaşık özelliklerin basit olanlardan daha fazla bilgi taşıması nedeniyle, bu nedenle çok fazla ihtiyaç duymazsınız.


Sorununla ilgili boyutların sayısını bulmak için içsel boyut kavramını kullanabilirsiniz . İçsel boyutlar bir sinyali tam olarak tanımlamak için kaç değişkene ihtiyaç duyulduğunu ve bu sinyalin rastgele kaynağındaki değişkenlerin sayısıyla ilişkili olduğunu cevaplamaya çalışır.
Pedro Henrique Monforte

8

Kısa Cevap: Verilerinizin boyutları ve uygulamanın türü ile çok ilgilidir.

Doğru katman sayısını seçmek ancak uygulamada mümkün olabilir. Bu soruya henüz genel bir cevap yok . Bir ağ mimarisi seçerek, olasılık alanınızı (hipotez alanı) belirli bir tensör işlem serisiyle sınırlar, girdi verilerini çıktı verisiyle eşleştirirsiniz. DeepNN'de her katman yalnızca önceki katmanın çıktısında bulunan bilgilere erişebilir. Bir katman eldeki sorunla ilgili bazı bilgileri bırakırsa, bu bilgi daha sonraki katmanlar tarafından asla geri kazanılamaz. Buna genellikle " Bilgi Darboğaz " adı verilir.

Bilgi Darboğazı iki ucu keskin bir kılıçtır:

1) Birkaç katman / nöron kullanırsanız, model verilerinizin sadece birkaç yararlı sunumunu / özelliğini öğrenecek ve bazı önemli olanları kaybedecektir, çünkü orta katmanların kapasitesi çok sınırlıdır ( yetersizdir ).

Eğer katmanlar / nöronların büyük bir sayı yaparsanız 2), sonra modelin çok fazla temsillerini / eğitim verileri özgüdür ve gerçek dünya ve eğitim setinin dış verilerde genelleme yoktur özellikler öğrenecektir ( overfitting ).

Örnekler ve daha fazla bulma için faydalı bağlantılar:

[1] https: //livebook.manning.com#! / Kitap / python ile derin öğrenme / bölüm-3 / nokta-1130-232-232-0

[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box- of-deep-learning-20170921/


4

İki yıldan beri sinir ağları ile çalışmak, bu her zaman yeni bir sistemi modellemek istemediğim bir problem. Bulduğum en iyi yaklaşım şudur:

  1. İleri beslemeli ağlarla modellenen benzer sorunları araştırın ve mimarilerini inceleyin.
  2. Bu konfigürasyona başlayın, veri setini eğitin ve test setini değerlendirin.
  3. Mimarinizde budama işlemi yapın ve önceki verilerle veri kümesindeki sonuçları karşılaştırın. Modelinizin doğruluğu etkilenmediyse, orijinal modelin verilere uygun olmadığını görebilirsiniz.
  4. Aksi takdirde, daha fazla serbestlik derecesi eklemeyi deneyin (yani daha fazla katman).

Genel yaklaşım, farklı mimarileri denemek, sonuçları karşılaştırmak ve en iyi konfigürasyonu almaktır. Tecrübe size ilk mimarlık tahmininde daha fazla sezgi verir.


1

Önceki cevaplara ek olarak, sinir ağının topolojisinin eğitimin bir parçası olarak içsel olarak ortaya çıktığı yaklaşımlar vardır. En belirgin şekilde, gizli katmanları olmayan temel bir ağla başladığınız ve daha sonra ağ yapısını "karmaşıklaştırmak" için genetik bir algoritma kullandığınız, Artırıcı Topolojiler (NEAT) Nöroevrimine sahipsiniz. NEAT birçok ML çerçevesinde uygulanmaktadır. Mario öğrenmek için bir uygulama üzerine oldukça erişilebilir bir makale: CrAIg: Mario öğrenmek için Sinir Ağları kullanarak

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.