Bardzo dobre pytanie, ponieważ nie ma jeszcze dokładnej odpowiedzi na to pytanie. To aktywna dziedzina badań.
Ostatecznie architektura sieci jest związana z wymiarami danych. Ponieważ sieci neuronowe są uniwersalnymi aproksymatorami, o ile twoja sieć jest wystarczająco duża, ma ona możliwość dopasowania twoich danych.
Jedynym sposobem, aby naprawdę wiedzieć, która architektura działa najlepiej, jest wypróbowanie wszystkich, a następnie wybranie najlepszej. Ale oczywiście w sieciach neuronowych jest to dość trudne, ponieważ każdy model zajmuje sporo czasu na szkolenie. To, co robią niektórzy ludzie, to najpierw wytrenowanie modelu, który celowo jest „zbyt duży”, a następnie przycinanie go poprzez usunięcie obciążników, które nie mają większego wpływu na sieć.
Co jeśli moja sieć jest „za duża”
Jeśli twoja sieć jest zbyt duża, może się przepełnić lub z trudem zbiegać. Intuicyjnie dzieje się tak, że twoja sieć próbuje wyjaśnić twoje dane w bardziej skomplikowany sposób niż powinna. To jak próba odpowiedzi na pytanie, na które można odpowiedzieć jednym zdaniem za pomocą 10-stronicowego eseju. Tak długa odpowiedź może być trudna do ustrukturyzowania, a może pojawić się wiele niepotrzebnych faktów. ( Zobacz to pytanie )
Co jeśli moja sieć jest „za mała”
Z drugiej strony, jeśli twoja sieć jest zbyt mała, to nie spełni twoich danych i dlatego. To tak, jakbyś odpowiedział jednym zdaniem, kiedy powinieneś napisać 10-stronicowy esej. Niezależnie od tego, jak dobra jest twoja odpowiedź, brakuje niektórych istotnych faktów.
Szacowanie wielkości sieci
Jeśli znasz wymiarowość swoich danych, możesz stwierdzić, czy Twoja sieć jest wystarczająco duża. Aby oszacować wymiarowość danych, możesz spróbować obliczyć ich rangę. Jest to podstawowa idea tego, jak ludzie próbują oszacować rozmiar sieci.
Nie jest to jednak takie proste. Rzeczywiście, jeśli twoja sieć musi być 64-wymiarowa, czy budujesz pojedynczą ukrytą warstwę o rozmiarze 64 lub dwie warstwy o rozmiarze 8? Tutaj dam wam intuicję, co by się stało w obu przypadkach.
Schodzę głębiej
Głębsze wchodzenie oznacza dodawanie kolejnych ukrytych warstw. Umożliwia sieci obliczanie bardziej złożonych funkcji. Na przykład w konwergentnych sieciach neuronowych często pokazywano, że pierwsze kilka warstw reprezentuje cechy „niskiego poziomu”, takie jak krawędzie, a ostatnie warstwy reprezentują cechy „niskiego poziomu”, takie jak ściany, części ciała itp.
Zazwyczaj musisz zagłębić się, jeśli Twoje dane są bardzo nieuporządkowane (jak obraz) i muszą zostać przetworzone dość długo, zanim można z nich wyciągnąć przydatne informacje.
Coraz szerszy
Pogłębianie oznacza tworzenie bardziej złożonych funkcji, a „szersze” oznacza po prostu tworzenie większej liczby tych funkcji. Być może Twój problem można wyjaśnić za pomocą bardzo prostych funkcji, ale musi być ich wiele. Zwykle warstwy stają się węższe pod koniec sieci z tego prostego powodu, że złożone funkcje niosą więcej informacji niż proste, a zatem nie potrzebujesz ich tak wiele.
Krótka odpowiedź: Jest to bardzo związane z wymiarami twoich danych i rodzajem aplikacji.
Wybór odpowiedniej liczby warstw może być osiągnięty tylko poprzez praktykę. Nie ma jeszcze ogólnej odpowiedzi na to pytanie . Wybierając architekturę sieci, ograniczasz przestrzeń możliwości (przestrzeń hipotez) do określonej serii operacji tensorowych, mapując dane wejściowe na dane wyjściowe. W DeepNN każda warstwa może uzyskać dostęp tylko do informacji obecnych na wyjściu poprzedniej warstwy. Jeśli jedna warstwa upuści jakąś informację związaną z danym problemem, informacji tych nigdy nie można odzyskać przez kolejne warstwy. Jest to zwykle określane jako „ wąskie gardło informacyjne ”.
Informacja Wąskie gardło to miecz obosieczny:
1) Jeśli użyjesz kilku warstw / neuronów, model po prostu nauczy się kilku przydatnych reprezentacji / cech twoich danych i straci kilka ważnych, ponieważ pojemność środkowych warstw jest bardzo ograniczona ( niedopasowanie ).
2) Jeśli użyjesz dużej liczby warstw / neuronów, model nauczy się zbyt wielu reprezentacji / cech, które są specyficzne dla danych treningowych i nie uogólniają się na dane w świecie rzeczywistym i poza zestawem treningowym ( nadmierne dopasowanie ).
Przydatne linki do przykładów i więcej informacji:
[1] https: //livebook.manning.com#! / Book / deep-learning-with-python / Rozdział-3 / point-1130-232-232-0
[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/
źródło
Pracując z sieciami neuronowymi od dwóch lat, jest to problem, który zawsze mam za każdym razem, gdy nie chcę modelować nowego systemu. Najlepsze podejście, jakie znalazłem, to:
Ogólne podejście polega na wypróbowaniu różnych architektur, porównaniu wyników i wybraniu najlepszej konfiguracji. Doświadczenie daje więcej intuicji w pierwszych przypuszczeniach dotyczących architektury.
źródło
Dodając do poprzednich odpowiedzi, istnieją podejścia, w których topologia sieci neuronowej pojawia się endogennie w ramach szkolenia. Najbardziej widoczne jest to, że masz Neuroewolucję rozszerzania topologii (NEAT), w której zaczynasz od podstawowej sieci bez ukrytych warstw, a następnie używasz algorytmu genetycznego do „skomplikowania” struktury sieci. NEAT jest implementowany w wielu ramach ML. Oto dość przystępny artykuł na temat implementacji do nauki Mario: CrAIg: Używanie sieci neuronowych do nauki Mario
źródło