2012-06-25 19 views
5

Prowadzę badania w sieciach neuronowych, a koncepcja i teoria jako całość mają dla mnie sens. Chociaż jedyne pytanie, które mnie interesuje, na które nie byłem jeszcze w stanie znaleźć odpowiedzi, to ile neuronów należy zastosować w sieci neuronowej. aby uzyskać właściwe/wydajne wyniki. W tym ukryte warstwy, neurony na ukrytą warstwę itd. Czy więcej neuronów musi być koniecznie bardziej dokładnych wyników (przy jednoczesnym większym obciążeniu systemu) lub czy mniej neuronów będzie nadal wystarczających? Czy istnieje jakaś reguła rządząca, która pomoże ustalić te liczby? Czy to zależy od rodzaju algorytmu szkolenia/uczenia się, który jest wdrażany w sieci neuronowej. Czy zależy to od rodzaju danych/danych wejściowych, które są prezentowane w sieci?Określanie odpowiedniej liczby neuronów dla sieci neuronowej

Jeśli łatwiej odpowiedzieć na pytania, najprawdopodobniej będę korzystał z przekazywania informacji i backpropogacji jako głównej metody szkolenia i prognozowania.

Na marginesie, czy istnieje algorytm przewidywania/reguła wypalania lub algorytm uczenia się, który generalnie jest odnawiany jako "najlepszy/najbardziej praktyczny", czy też zależy to również od rodzaju danych prezentowanych w sieci?

Dzięki każdemu, kto ma jakikolwiek wkład, jest zawsze mile widziany!

EDYCJA: Odnośnie znacznika C#, jest to język, w którym będę układał moją sieć neuronową. Jeśli ta informacja w ogóle pomaga.

+0

* Jeśli możesz sobie wyobrazić całą książkę, która odpowiada na twoje pytanie, pytasz za dużo. * Http://stackoverflow.com/faq#dontask Ponadto, nie widzę, jak to ma coś wspólnego z C#. –

+2

Zobacz http://stats.stackexchange.com/questions/181/how-to-choose-number-of-hidden-layers-and-nodes-in-a-eedeedforward-neural-netw –

+0

@ 0xA3, świetnie połączyć. To pytanie może nie być wystarczająco specyficzne dla SO, ale tylko kilka myśli: rozmiar sieci neuronowej jest podyktowany złożonością funkcji lub klasyfikatora, który reprezentują. Tak, tak, możliwe jest posiadanie zbyt wielu neuronów: w klasyfikacji może prowadzić do przeuczenia i utraty uogólnionego modelu. – nicholas

Odpowiedz

2

Specjalizowałem się w AI/NN w College'u i miałem pewne doświadczenie w pracy nad nimi do gier, a oto co znalazłem jako przewodnik do rozpoczęcia. Uświadom sobie jednak, że każdy NN podejmie pewne poprawki, aby najlepiej działał w wybranym środowisku. (Jednym z potencjalnych rozwiązań jest wystawienie programu na 1000 różnych NN, skonfigurowanie testowalnych kryteriów wydajności, a następnie wykorzystanie algorytmu genetycznego do propagowania bardziej przydatnych NN i eliminacji mniej użytecznych NN - ale jest to zupełnie inny bardzo duży post ...)

znalazłem - w ogólnym

  • warstwie wejściowej - jeden AN dla każdego wektora wejściowego + 1 polaryzacji (zawsze 1)
  • Warstwa wewnętrzna - podwójne warstwy wejściowej
  • Wyjście Warstwa - jeden AN dla każdego działania czy wynik

przykład: rozpoznawania znaków

  • Jeśli badasz siatkę 10x10 do rozpoznawania znaków;
  • początek z 101 wprowadzisz (po jednym dla każdego piksela, plus jeden stronniczości)
  • 202 Wewnętrznej AN
  • i 26 wyjściową (po jednym dla każdej litery alfabetu)

przykładu: Blackjack

  • Jeśli budujesz NN, aby wygrać w blackjacku;
  • początek z 16 wprowadzisz (13 liczyć każdym wystąpieniu z karty, 1 dla wartości dłoni gracza, 1 dla dystrybutorów "up-card" i 1 bias)
  • 32 Wewnętrznej AN
  • i 6 wydawać (jeden dla „hit” „Stay” „Podziel” „double” „Surrender” i „Insurrance”)
+0

Mam bardzo ograniczony kontakt z NN do tej pory, więc przepraszam, jeśli to pytanie jest bardzo proste; ale co masz na myśli przez warstwę wewnętrzną Bias? Ukryta warstwa, która ma pewne stronniczości? A do jakiej "wartości" jest ustawiona warstwa Bias? Czy mam rację zakładając warstwę wewnętrzną = ukrytą? – RaiderNation

+1

Przepraszam za zamieszanie, przez "Bias" mam na myśli pojedynczy AN, w Warstwie wejściowej, która jest zawsze ustawiona na 1. Nie ma potrzeby odchylenia na warstwach Wewnętrznych lub Wyjściowych. (Tak sformatowano mój post inaczej niż to, co zrobiłem, więc linie biegły razem, gdy nie powinny mieć = p) Więc, Bias Artificual Neuron zawsze podaje "1" do Wewnętrznej Warstwy, tak jakby to był normalny AN, który utknął na." – EtherDragon

+0

Więc ustawienie neuronu wejściowego jako "1" będzie ogólnie korzystne, niezależnie od rodzaju sygnału wejściowego podawanego do warstwy wejściowej? Na przykład, czy typy danych wejściowych do rozpoznawania znaków i BlackJack nie są różne? Dzięki jeszcze raz! – RaiderNation

0

Niektóre Ogólne zasady są następujące na podstawie niniejszego opracowania: „zbliżenia liczby ukrytych neuronów warstwy w architekturze wielowarstwowej BPNN o wielu ukrytych numerach 'autor: Saurabh Karsoliya.

  • liczby ukrytych neuronach warstw są 2/3 (lub 70% do 90%), wielkości warstwy wejściowego. Jeśli jest to niewystarczające, liczba neuronów warstwy wyjściowej może być później dodana.
  • Liczba neuronów ukrytej warstwy powinna być mniejsza o niż dwukrotność liczby neuronów w warstwie wejściowej.
  • Rozmiar neuronów ukrytej warstwy znajduje się między rozmiarem warstwy wejściowej a rozmiarem warstwy wyjściowej.
Powiązane problemy