30

Co powoduje, że liczba ukrytych warstw w wielowarstwowej sieci neuronowej perceptronu zachowuje się tak, jak zachowuje się sieć neuronowa? To samo pytanie dla liczby węzłów w ukrytych warstwach?Jak wybrać liczbę ukrytych warstw i węzłów w sieci neuronowej?

Załóżmy, że chcę używać sieci neuronowej do ręcznego rozpoznawania znaków. W tym przypadku ustawiam wartości intensywności koloru pikseli jako węzły wejściowe, a klasy znaków jako węzły wyjściowe.

Jak wybrać liczbę ukrytych warstw i węzłów do rozwiązania tego problemu?

+0

Aby się upewnić, od czego zacząć, wiesz, czego potrzebujesz do ukrytej warstwy? Nawiasem mówiąc, nie sądzę, że można uzyskać idealną odpowiedź na to pytanie. – Tim

+0

Z tego co rozumiem, ukryte warstwy na ogół pozwalają na bardziej złożone relacje. Jestem świadomy, że nie może być idealnej odpowiedzi, ale czego powinienem szukać decydując o liczbie warstw/węzłów? – gintas

+0

Powinieneś zacząć od zrozumienia, dlaczego potrzebujesz nawet ukrytych warstw (XOR). – Tim

Odpowiedz

7

Ogólna odpowiedź polega na tym, że do wybierania hiperparametrów należy weryfikacja krzyżowa. Trzymaj dane, trenuj sieci w różnych konfiguracjach i korzystaj z tych, które najlepiej radzą sobie z wyciągniętym zestawem.

+4

Ok, to jedno solidne podejście. Ale czy istnieje sposób, aby to oszacować? Coś w stylu, te dane mogą być dość dobrze wyjaśnione z 10 głównych składników, więc powinniśmy mieć około 10 ukrytych węzłów ułożonych w 2 warstwach? – gintas

16

Uwaga: ta odpowiedź była prawidłowa w momencie jej wykonania, ale od tego czasu stała się nieaktualna.


W sieci neuronowej rzadko występują więcej niż dwie ukryte warstwy. Liczba warstw zazwyczaj nie będzie parametrem sieci, o którą będziesz się martwić.

Chociaż wielowarstwowe sieci neuronowe z wielu warstw może reprezentować głębokich obwodów, szkolenia głębokie sieci zawsze była postrzegana jako nieco wyzwaniem. Do niedawna badania empiryczne często stwierdzały, że głębokie sieci generalnie nie działały lepiej, a często gorzej, niż sieci neuronowe z jedną lub dwiema ukrytymi warstwami.

Bengio, Y. & LeCun, Y., 2007. Scaling learning algorithms towards AI. Large-Scale Kernel Machines, (1), pp.1-41.

Wspomniany papier jest dobre odniesienie do nauki o efekt głębi sieci, ostatnie postępy w nauczaniu głębokie sieci i głębokiej nauki w ogóle.

+0

To jest poprawne. Z technicznego punktu widzenia, ze względu na problemy z "attentuacją", modele takie jak perceptron wielowarstwowy percepcji wstecznej mają problemy ze zbyt wieloma warstwami. Jeśli masz mieć wiele ukrytych warstw, będziesz chciał zajrzeć do głębokiego uczenia się, które może rozwiązać ten problem. – bean5

+1

Ten widok jest jednak dość stary. Jeśli korzystasz z wcześniejszego szkolenia, udowodniono, że zwiększając liczbę warstw, zmniejszasz górną granicę błędu. Również Hinton ma pewne eksperymenty, które pokazują, że bardziej ukryte jednostki oznaczają lepszą reprezentację danych wejściowych, a tym samym lepsze wyniki. Jest to szczególnie widoczne w przypadku stosowania prostowanych jednostek liniowych. – elaRosca

+0

Może to było prawdą w 2012 roku, ale nie jestem pewien, czy teraz jest. Sądzę, że rzadko można mieć więcej niż dwie warstwy. –

4

Większość problemów, które widziałem, zostało rozwiązanych z 1-2 ukrytymi warstwami. Udowodniono, że MLP z tylko jedną ukrytą warstwą są aproksymatorami funkcji uniwersalnej (Hornik et. al.). Więcej ukrytych warstw może sprawić, że problem będzie łatwiejszy lub trudniejszy. Zazwyczaj musisz wypróbować różne topologie. Słyszałem, że nie możesz dodać dowolnej liczby ukrytych warstw, jeśli chcesz ćwiczyć MLP z backpropem, ponieważ gradient stanie się zbyt mały na pierwszych warstwach (nie mam do tego odniesienia). Ale są pewne aplikacje, w których ludzie używali do nine layers. Być może interesuje Cię standard benchmark problem, który jest rozwiązywany przez różne klasyfikatory i topologie MLP.

3

Oprócz faktu, że sprawdzanie krzyżowe w różnych konfiguracjach modelu (liczba ukrytych warstw LUB neuronów na warstwę) poprowadzi Cię do wyboru lepszej konfiguracji.

Jedno podejście jest szkolenie modelu, jak duże i głęboko, jak to możliwe i używać przerywania regularyzacji do wyłączyć niektóre neurony i zmniejszyć przeuczenia.

Odniesienie do tego podejścia można zobaczyć w tym dokumencie. https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

0

Wszystkie powyższe odpowiedzi są oczywiście poprawne, ale tylko dodać jeszcze kilka pomysłów: Pewne ogólne zasady są następujące oparte na tym papierze: „zbliżenia liczby ukrytych neuronów warstwy w stwardnieniu warstwy ukrytej BPNN Architektury” przez Saurabh Karsoliya.

Ogólnie:

  • 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 niż dwukrotność liczby neuronów w warstwie wejściowej.
  • Rozmiar neuronów ukrytej warstwy jest między rozmiarem warstwy wejściowej a rozmiarem warstwy wyjściowej.

Pamiętaj, że musisz odkrywać i wypróbowywać wiele różnych kombinacji. Ponadto, korzystając z opcji GridSearch, można znaleźć "najlepszy model i parametry". Na przykład. możemy wykonać GridSearch, aby określić "najlepszy" rozmiar ukrytej warstwy.

Powiązane problemy