ile ukrytych warstw ?
model bez ukrytych warstw rozwiąże dane, które można rozdzielić liniowo . Więc jeśli nie wiesz już, że twoje dane nie są rozdzielane liniowo, weryfikacja tego nie zaszkodzi - po co używać bardziej złożonego modelu niż wymaga tego zadanie? Jeśli da się je rozdzielić liniowo, wtedy zadziała prostsza technika, ale Perceptron również wykona zadanie.
Zakładając, że dane wymagają rozdzielenia metodą nieliniową, zawsze zaczynaj od jednej ukrytej warstwy . Prawie na pewno to wszystko, czego będziesz potrzebować. Jeśli twoje dane można rozdzielić za pomocą MLP, to MLP prawdopodobnie potrzebuje tylko jednej ukrytej warstwy. Jest to teoretyczne uzasadnienie, ale mój powód jest czysto empiryczny: wiele trudnych problemów klasyfikacyjnych / regresyjnych rozwiązuje się za pomocą jednowarstwowych MLP, ale nie przypominam sobie napotkania żadnych wielowarstwowych warstw ukrytych używanych do pomyślnego modelowania danych. -Czy na tablicach ogłoszeń ML, podręcznikach ML, artykułach naukowych itp. Oczywiście istnieją, ale okoliczności uzasadniające ich użycie są empirycznie dość rzadkie.
Ile węzłów w warstwie ukrytej?
Z literatury naukowej MLP. moje własne doświadczenie itp. zebrałem i często polegam na kilku praktycznych regułach ( RoT ), które również okazały się niezawodnymi przewodnikami (tj. wskazówki były dokładne, a nawet jeśli tak nie było, zwykle było jasne, co dalej):
RoT w oparciu o poprawę konwergencji:
Kiedy zaczynasz budować model, popełniaj błędy po stronie większej liczby węzłów w ukrytej warstwie.
Czemu? Po pierwsze, kilka dodatkowych węzłów w warstwie ukrytej prawdopodobnie nie wyrządzi żadnej szkody - twój MLP nadal będzie się zbieżny. Z drugiej strony zbyt mało węzłów w warstwie ukrytej może uniemożliwić konwergencję. Pomyśl o tym w ten sposób, dodatkowe węzły zapewniają pewną nadwyżkę przepustowości - dodatkowe obciążenia do przechowywania / uwalniania sygnału do sieci podczas iteracji (szkolenie lub budowanie modelu). Po drugie, jeśli zaczniesz od dodatkowych węzłów w swojej ukrytej warstwie, możesz je później łatwo przyciąć (w trakcie iteracji). Jest to powszechne i istnieją techniki diagnostyczne, które mogą Ci pomóc (np. Diagram Hintona, który jest tylko wizualnym przedstawieniem macierzy wagi, „mapą cieplną” wartości wagi).
RoTs na podstawie rozmiaru warstwy wejściowej i rozmiaru warstwy wyjściowej:
Ogólna zasada mówi, że rozmiar tej [ukrytej] warstwy powinien znajdować się gdzieś pomiędzy rozmiarem warstwy wejściowej ... a rozmiarem warstwy wyjściowej ....
Aby obliczyć liczbę ukrytych węzłów, używamy ogólnej zasady: (liczba wejść + wyjść) x 2/3
RoT w oparciu o główne komponenty:
Zwykle określamy tyle ukrytych węzłów, ile wymiarów [głównych składników] potrzeba do uchwycenia 70–90% wariancji zbioru danych wejściowych .
A jednak autor NN FAQ nazywa te reguły „nonsensem” (dosłownie), ponieważ: ignorują one liczbę instancji uczących, szum w celach (wartości zmiennych odpowiedzi) i złożoność przestrzeni funkcji.
Jego zdaniem (i zawsze wydawało mi się, że wie, o czym mówi), wybierz liczbę neuronów w warstwie ukrytej w oparciu o to, czy twój MLP obejmuje jakąś formę regularyzacji, czy też wczesne zatrzymanie .
Jedyna ważna technika optymalizacji liczby neuronów w ukrytej warstwie:
Podczas tworzenia modelu testuj obsesyjnie; testowanie ujawni sygnatury „nieprawidłowej” architektury sieci. Na przykład, jeśli zaczynasz od MLP mającego ukrytą warstwę składającą się z niewielkiej liczby węzłów (którą będziesz stopniowo zwiększać w zależności od potrzeb, na podstawie wyników testów), twój błąd treningu i uogólnienia będzie wysoki, spowodowany uprzedzeniami i niedopasowaniem.
Następnie zwiększaj liczbę węzłów w warstwie ukrytej, jeden po drugim, aż błąd uogólnienia zacznie wzrastać, tym razem z powodu nadmiernego dopasowania i dużej wariancji.
W praktyce robię to w ten sposób:
warstwa wejściowa : rozmiar mojego vactor danych (liczba funkcji w moim modelu) + 1 dla węzła stronniczości i oczywiście bez zmiennej odpowiedzi
warstwa wyjściowa : wyłącznie określona przez mój model: regresja (jeden węzeł) a klasyfikacja (liczba węzłów równa liczbie klas, przy założeniu softmax)
ukryta warstwa : zacząć , jedną warstwę ukrytąz liczbą węzłów równą rozmiarowi warstwy wejściowej. „Idealny” rozmiar prawdopodobnie będzie mniejszy (tj. Pewna liczba węzłów między liczbą w warstwie wejściowej a liczbą w warstwie wyjściowej), a nie większy - znowu jest to tylko obserwacja empiryczna, a większość tej obserwacji jest moje własne doświadczenie. Jeśli projekt uzasadniał dodatkowy wymagany czas, zaczynam od pojedynczej warstwy ukrytej składającej się z niewielkiej liczby węzłów, a następnie (jak wyjaśniłem powyżej) dodam węzły do warstwy ukrytej, po jednym na raz, podczas obliczania uogólnienia błąd, błąd uczenia, odchylenie i wariancja. Kiedy zaniknie błąd uogólnienia i tuż przed tym, jak zacznie ponownie rosnąć, wybieram liczbę węzłów w tym momencie. Zobacz rysunek poniżej.