1 ukryta warstwa z 1000 neuronów vs. 10 ukrytych warstw ze 100 neuronami

13

Tego rodzaju pytania mogą być zależne od problemu, ale próbowałem znaleźć badania, które odpowiedzą na pytanie, czy liczba ukrytych warstw i ich rozmiar (liczba neuronów w każdej warstwie) ma znaczenie, czy nie.

Moje pytanie brzmi więc, czy to naprawdę ma znaczenie, jeśli na przykład mamy 1 dużą ukrytą warstwę 1000 neuronów vs. 10 ukrytych warstw po 100 neuronów każda?

Stephen Johnson
źródło

Odpowiedzi:

12

Zasadniczo posiadanie wielu warstw (inaczej głębokiej sieci) sprawia, że ​​twoja sieć chętniej rozpoznaje pewne aspekty danych wejściowych. Na przykład, jeśli masz dane domu (rozmiar, rozmiar trawnika, lokalizację itp.) Jako dane wejściowe i chcesz przewidzieć cenę. Pierwsza warstwa może przewidywać:

  • Duża powierzchnia, wyższa cena
  • Mała ilość sypialni, niższa cena

Druga warstwa może zawierać:

  • Duża powierzchnia + mała ilość sypialni = duże sypialnie = efekt +

Tak, jedna warstwa może również „wykryć” statystyki, jednak będzie wymagała więcej neuronów, ponieważ nie może polegać na innych neuronach w wykonywaniu „części” całkowitego obliczenia wymaganego do wykrycia tej statystyki.

Sprawdź tę odpowiedź

Thomas W.
źródło
Dziękuję bardzo za odpowiedź. Aby wyjaśnić, pisząc „tworzy sieć [...]”, czy masz na myśli przypadek, w którym mam wiele ukrytych warstw z mniejszą liczbą neuronów, niż więcej neuronów w mniejszej liczbie warstw?
Stephen Johnson
@StephenJohnson ups, zredagowałem pytanie. Mam na myśli głęboką sieć (wiele warstw).
Thomas W
Dobra odpowiedź, jeszcze raz dziękuję. Może powinienem to kontynuować w innym wątku, ale czy uważasz, że to samo rozumowanie dotyczy powtarzających się sieci neuronowych, takich jak GRU lub LSTM?
Stephen Johnson
@StephenJohnson, czy masz na myśli jednowarstwowe sieci rekurencyjne vs wielowarstwowe sieci rekurencyjne, czy masz na myśli ich powtarzające się połączenia?
Thomas W
Mam na myśli ogólnie, ponieważ z powodu powtarzających się połączeń, które pozwalają im mapować konteksty na większych odległościach, czy takie sieci korzystają z bycia Głębokimi w taki sam sposób, jak zwykła sieć feedforward? Może nie można ich tak porównać, ponieważ sieci rekurencyjne są zwykle używane, gdy wykorzystywane są dane sekwencyjne, takie jak audio.
Stephen Johnson
4

Jest tyle aspektów.

1. Trening: Trening głębokich sieci jest trudny ze względu na znikający (z tyłu wybuch) problem gradientu. Dlatego nie zaleca się budowania sieci neuronowej 10 x 100.

2. Wyszkolona wydajność sieci:

  • Utrata informacji: Klasyczne zastosowanie sieci neuronowych stanowi problem klasyfikacji . Co oznacza, że ​​chcemy uzyskać dobrze zdefiniowane informacje z danych. (Np. Czy na zdjęciu jest twarz, czy nie.) Zwykle więc problem klasyfikacji ma dużo danych wejściowych i mało danych wyjściowych, co więcej, rozmiar ukrytych warstw jest malejący od danych wejściowych do wyjściowych. Jednak tracimy informacje przy użyciu mniejszej liczby neuronów warstwa po warstwie. (Tj. Nie możemy odtworzyć oryginalnego obrazu na podstawie faktu, że jest na nim twarz lub nie.) Musisz więc wiedzieć, że tracisz informacje za pomocą 100 neuronów, jeśli wielkość wejściowa wynosi (powiedzmy) 1000.
  • Złożoność informacji: jednak sieci głębsze (jak wspomniał Tomas W) mogą pobierać bardziej złożone informacje z danych wejściowych. Mimo to nie zaleca się używania 10 w pełni połączonych warstw. Zaleca się stosowanie warstw splotowych / relu / maxpooling lub innego rodzaju. Warstwy Firest mogą kompresować pewną istotną część danych wejściowych. (Np. Czy jest jakaś linia w określonej części obrazu) Druga warstwa może powiedzieć: W tym miejscu na zdjęciu jest określony kształt. Itd itd.

Tak więc głębsze sieci są bardziej „sprytne”, ale struktura sieci 10 x 100 to dobry wybór.

betontalpfa
źródło
1

Jeśli rozwiązywany problem można rozdzielić liniowo, jedna warstwa 1000 neuronów może wykonać lepszą robotę niż 10 warstw z każdym ze 100 neuronów. Jeśli problem nie jest liniowy i nie jest wypukły, potrzebujesz głębokich sieci neuronowych.

Sreedhar Veluri
źródło
2
Jeśli problem można rozwiązać liniowo, wcale nie potrzebujesz ukrytych warstw
Amedeo Baragiola
0

Myślę, że masz zamieszanie w podstawach sieci neuronowych. Każda warstwa ma osobną funkcję aktywacji i wagi połączeń wejścia / wyjścia.

Wyjście pierwszej ukrytej warstwy zostanie pomnożone przez wagę, przetworzone przez funkcję aktywacji w następnej warstwie i tak dalej. Jednowarstwowe sieci neuronowe są bardzo ograniczone do prostych zadań, głębsze NN może działać znacznie lepiej niż pojedyncza warstwa.

Nie należy jednak używać więcej niż warstwy, jeśli aplikacja nie jest dość złożona. Podsumowując, warstwa 100 neuronów nie oznacza lepszej sieci neuronowej niż 10 warstw x 10 neuronów, ale 10 warstw jest czymś wymyślonym, chyba że wykonujesz głębokie uczenie się. zacznij od 10 neuronów w ukrytej warstwie i spróbuj dodać warstwy lub dodaj więcej neuronów do tej samej warstwy, aby zobaczyć różnicę. nauka z większą liczbą warstw będzie łatwiejsza, ale potrzeba więcej czasu na szkolenie.

ahmadjordan
źródło