Jak wybrać liczbę ukrytych warstw i liczbę komórek pamięci w LSTM?

28

Próbuję znaleźć jakieś istniejące badania na temat wyboru liczby ukrytych warstw i ich rozmiaru dla RNN opartego na LSTM.

Czy istnieje artykuł, w którym bada się ten problem, tj. Ile komórek pamięci należy użyć? Zakładam, że całkowicie zależy to od aplikacji i kontekstu, w którym model jest używany, ale co mówią badania?

Stephen Johnson
źródło

Odpowiedzi:

15

Twoje pytanie jest dość ogólne, ale oto kilka wskazówek:

W przypadku sieci feedforward zobacz to pytanie :

Odpowiedź @ douga zadziałała dla mnie. Istnieje jedna dodatkowa zasada, która pomaga w nadzorowanych problemach z nauką. Górna granica liczby ukrytych neuronów, które nie spowodują nadmiernego dopasowania, to:

N.h=N.s(α(N.ja+N.o))

N.ja = liczba neuronów wejściowych. N.o = liczba neuronów wyjściowych. N.s = liczba próbek w zbiorze danych szkoleniowych. α = arbitralny współczynnik skalowania zwykle 2-10.
Inni zalecają ustawieniezalphza na wartość między 5 a 10, ale uważam, że wartość 2 często działa bez przeregulowania. Jak wyjaśniono tymdoskonałym tekstem NN Design, chcesz ograniczyć liczbę wolnych parametrów w swoim modelu (jego stopień lub liczbą niezerowych odważników) do niewielkiej części stopni swobody danych. Stopnie swobody w danych to liczba próbek * stopni swobody (wymiary) w każdej próbce lub N.s(N.ja+N.o) (przy założeniu, że wszystkie są niezależne). Więcα jest sposób, aby wskazać, jak chcesz ogólny model być, lub ile chcesz uniknąć nadmiernego dopasowania.

W przypadku procedury zautomatyzowanej zaczynasz od alfa 2 (dwa razy więcej stopni swobody w danych treningowych niż w modelu) i pracujesz aż do 10, jeśli błąd danych treningowych jest znacznie mniejszy niż w przypadku weryfikacji krzyżowej zbiór danych.

A konkretnie na LSTM'S, może chcesz sprawdzić to .

Ale główny punkt: nie ma reguły dotyczącej liczby ukrytych węzłów, których powinieneś użyć, jest to coś, co musisz ustalić dla każdej sprawy metodą prób i błędów .

Thomas W.
źródło
7

Wybierz liczbę ukrytych warstw, a liczba komórek pamięci w LSTM zawsze zależy od domeny aplikacji i kontekstu, w którym chcesz zastosować ten LSTM.

Dla ukrytych warstw. Wprowadzenie ukrytych warstw pozwala sieci na zachowanie nieliniowe.

Optymalna liczba ukrytych jednostek może być z łatwością mniejsza niż liczba danych wejściowych, nie ma zasady, jak pomnożyć liczbę danych wejściowych przez N ... Jeśli masz wiele przykładów treningu, możesz użyć wielu ukrytych jednostek, ale czasami po prostu 2 ukryte jednostki najlepiej działają z niewielką ilością danych. Zwykle ludzie używają jednej ukrytej warstwy do prostych zadań, ale obecnie badania nad głębokimi architekturami sieci neuronowych pokazują, że wiele ukrytych warstw może być owocnych w przypadku problemów z trudnym przedmiotem, odręcznym charakterem i rozpoznawaniem twarzy.

I assume it totally depends on the application and in which context the model is being used.

Ligade Maheshwar
źródło
5
Nieliniowość wynika z zastosowania nieliniowych funkcji aktywacyjnych. Liczba warstw tylko zwiększa ekspresję NN. Powinieneś poprawić tę odpowiedź. Kombinacje funkcji liniowych są nadal funkcjami liniowymi (więc jeśli miałbyś wiele warstw, które wykonywały tylko liniową kombinację danych wejściowych, wówczas kombinacja tych warstw byłaby nadal liniowa).
nbro
4

Zasadniczo nie ma żadnych wskazówek, jak określić liczbę warstw lub liczbę komórek pamięci w LSTM.

Liczba warstw i komórek wymaganych w LSTM może zależeć od kilku aspektów problemu:

  1. złożoność zbioru danych. Ilość funkcji, liczba punktów danych itp.

  2. Proces generowania danych. Poniżej przykład, w jaki sposób proces generowania danych może odgrywać znaczącą rolę.

Ex - Prognozowanie cen ropy naftowej w porównaniu z prognozą PKB dobrze rozumianej gospodarki. To drugie jest znacznie łatwiejsze niż pierwsze. Zatem przewidywanie cen ropy może równie dobrze wymagać większej liczby komórek pamięci LSTM, aby przewidywać z taką samą dokładnością jak PKB.

  1. Wymagana dokładność dla przypadku użycia. Liczba komórek pamięci będzie w dużym stopniu zależeć od tego. Jeśli celem jest pokonanie najnowocześniejszych technologii - potrzeba ogólnie więcej komórek LSTM. Porównaj to z celem opracowania rozsądnych prognoz, które wymagałyby mniejszej liczby komórek LSTM.

Podczas modelowania przy użyciu LSTM wykonuję następujące kroki:

  1. Wypróbuj jedną ukrytą warstwę z 2 lub 3 komórkami pamięci. Zobacz, jak wypada w porównaniu z testem porównawczym. Jeśli jest to problem z szeregami czasowymi, generalnie prognozuję na podstawie klasycznych technik szeregów czasowych.

  2. Spróbuj zwiększyć liczbę komórek pamięci. Jeśli wydajność niewiele wzrasta, przejdź do następnego kroku.

  3. Zacznij pogłębiać sieć, tj. Dodaj kolejną warstwę z niewielką liczbą komórek pamięci.

Na bok :

Nie ma ograniczeń co do ilości pracy, którą można poświęcić, aby osiągnąć te globalne minima funkcji straty i dostroić najlepsze hiper-parametry. Tak więc skupienie się na końcowym celu modelowania powinno być strategią, a nie próbowanie maksymalnego zwiększenia dokładności.

Większość problemów można rozwiązać za pomocą 2-3 warstw sieci.

naiwny
źródło