W jaki sposób filtry i mapy aktywacyjne są połączone w sieci neuronowe splotowe?

11

W jaki sposób mapy aktywacyjne na danej warstwie są połączone z filtrami dla tej warstwy? Nie pytam o to, jak wykonać operację splotu między filtrem a mapą aktywacyjną, pytam o rodzaj łączności tych dwóch.

Powiedzmy na przykład, że chcesz uzyskać pełną łączność. Masz liczbę filtrów i liczbę map aktywacyjnych w danej warstwie. Dostaniesz f * n liczby map aktywacyjnych na następnej warstwie, a liczba map aktywacyjnych będzie się zwiększać z każdą nową warstwą. Tak właśnie zakładam.

Lub można powiedzieć, że każdy filtr jest podłączony tylko do jednej mapy aktywacyjnej. W takim przypadku liczba filtrów byłaby równa liczbie map aktywacyjnych, a każda warstwa miałaby taką samą liczbę filtrów i map aktywacyjnych. To jest obecna architektura mojej sieci i wydaje się, że dobrze się uczy.

Głównym źródłem mojego zamieszania jest przeglądanie diagramów sieci, które widzę online. Niektóre z nich mają „pełne połączenie” między filtrami a mapami aktywacyjnymi, takie jak to - wprowadź opis zdjęcia tutaj W pierwszej warstwie masz 4 mapy aktywacyjne i prawdopodobnie 2 filtry. Każda mapa jest spleciona z każdym filtrem, co daje 8 map w następnej warstwie. Wygląda świetnie.

Ale tutaj mamy architekturę, która nie ma dla mnie sensu - wprowadź opis zdjęcia tutaj Jak przechodzisz z 6 map w pierwszej warstwie do 16 w drugiej? Mogę wymyślić sposoby na uzyskanie 16 map z 6, ale nie miałyby sensu.

Frobot
źródło

Odpowiedzi:

10

Druga opublikowana przez ciebie architektura sieci neuronowej (CNN) pochodzi z tego artykułu . W artykule autorzy podają opis tego, co dzieje się między warstwami S2 i C3. Ich wyjaśnienie nie jest jednak bardzo jasne. Powiedziałbym, że ta architektura CNN nie jest „standardowa” i może być dość myląca jako pierwszy przykład dla CNN.

Architektura CNN

28×285×5M.×M.N.×N.M.N.(M.-N.+1)×(M.-N.+1)

To, co dzieje się między warstwą S2 i warstwą C3, jest następujące. W warstwie C3 znajduje się 16 map obiektów utworzonych z 6 map obiektów w warstwie S2. Liczba filtrów w warstwie C3 rzeczywiście nie jest oczywista. W rzeczywistości, tylko na podstawie schematu architektury, nie można ocenić, jaka jest dokładna liczba filtrów, które tworzą te 16 map obiektów. Autorzy artykułu przedstawiają następującą tabelę (strona 8):

połączenia między warstwami S2 i C3

W tabeli znajdują się następujące wyjaśnienia (na dole strony 7):

5×5

W tabeli autorzy pokazują, że każda mapa obiektów w warstwie C3 jest tworzona przez połączenie 3 lub więcej map obiektów (strona 8):

Pierwsze sześć map obiektów C3 pobiera dane wejściowe z każdego ciągłego podzbioru trzech map obiektów w S2. Następne sześć pobiera dane wejściowe z każdego ciągłego podzestawu czterech. Następne trzy pobierają dane z niektórych nieciągłych podzbiorów czterech. Wreszcie ostatni pobiera dane ze wszystkich map obiektów S2.

Ile jest filtrów w warstwie C3? Niestety nie wyjaśniają tego. Dwie najprostsze możliwości to:

  1. Istnieje jeden filtr na mapę funkcji S2 na mapę funkcji C3, tzn. Nie ma współdzielenia filtra między mapami funkcji S2 powiązanymi z tą samą mapą funkcji C3.
  2. Istnieje jeden filtr na mapę obiektów C3, który jest wspólny dla (3 lub więcej) map obiektów warstwy S2, które są połączone.

W obu przypadkach „połączenie” oznaczałoby, że wyniki splotu na grupę map obiektów S2 musiałyby zostać połączone w celu wytworzenia map obiektów C3. Autorzy nie określają, jak to się robi, ale dodawanie jest powszechnym wyborem (patrz na przykład animowany gif w pobliżu środka tej strony .

Autorzy podają jednak dodatkowe informacje, które mogą pomóc nam w rozszyfrowaniu architektury. Mówią, że „warstwa C3 ma 1 516 możliwych do wyuczenia parametrów” (strona 8). Możemy wykorzystać te informacje do podjęcia decyzji pomiędzy sprawami (1) i (2) powyżej.

W przypadku (1) mamy 5 × 5 × 60 = 1 , 500 1 , 500 + 16 = 1 , 516(6×3))+(9×4)+(1×6)=60(14-10+1)×(14-10+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

Dlatego, jeśli spojrzymy ponownie na tabelę I powyżej, istnieje 10 różnych filtrów C3 powiązanych z każdą mapą funkcji S2 (a więc łącznie 60 różnych filtrów).

Autorzy wyjaśniają ten rodzaj wyboru:

Różne mapy obiektów [w warstwie C3] są zmuszone wyodrębniać różne (miejmy nadzieję komplementarne) cechy, ponieważ otrzymują różne zestawy danych wejściowych.

Mam nadzieję, że to wyjaśnia sytuację.

Orestis Tsinalis
źródło
3

Rzeczywiście masz rację, że wartość przed @ wskazuje liczbę filtrów, a nie liczbę map obiektów (chociaż dla pierwszych warstw splotowych te wartości się pokrywają).

Jeśli chodzi o twoje ostatnie pytanie: tak, sensowne jest połączenie każdej mapy obiektów w warstwie l z każdym filtrem w warstwie l + 1. Jedynym powodem tego jest to, że znacznie zwiększa to moc ekspresji sieci, ponieważ ma więcej sposobów (ścieżek) na łączenie map obiektów, co pozwala lepiej rozróżnić cokolwiek na obrazie wejściowym.

W końcu nie wiem, czy ćwiczysz swoje umiejętności sieci neuronowej, wdrażając je samodzielnie, ale jeśli chcesz po prostu zastosować sieci splotowe do określonego zadania, istnieje już kilka doskonałych bibliotek sieci neuronowych, takich jak Theano, Brainstorm, Caffe

Sjoerd
źródło
Myślę, że to, co zrobię, to porównanie obu sposobów ich porównania. W wersji nie w pełni połączonej będzie szybciej trenować i obliczać swoją klasyfikację. Ale ważniejsza jest dokładność. W wersji nie w pełni połączonej każdy filtr jest zlokalizowany na bardziej szczegółowe zadanie zamiast zadania bardziej ogólnego. W wersji w pełni połączonej filtr jest aktualizowany na podstawie tego, co jest najlepsze dla wszystkich poprzednich filtrów, a nie tylko jednego rodzaju funkcji. Tworzę moją sieć od zera w 100% za pomocą c #. z pewnością nie jest to łatwy sposób robienia rzeczy ... ale nauczył mnie dogłębnych rzeczy
Frobot
To brzmi jak plan dźwiękowy. Powodzenia!
Sjoerd