Co robi krok konwolucji w sieci neuronowej konwergencji?

16

Studiuję splotowe sieci neuronowe (CNN) ze względu na ich zastosowania w wizji komputerowej. Znam już standardowe sieci neuronowe typu feed-forward, więc mam nadzieję, że niektórzy ludzie tutaj pomogą mi zrobić dodatkowy krok w zrozumieniu CNN. Oto, co myślę o CNN:

  1. W tradycyjnych NN z feed-feedem mamy dane treningowe, w których każdy element składa się z wektora cech, który wprowadzamy do NN w „warstwie wejściowej”, więc przy rozpoznawaniu obrazu każdy piksel może być jednym wejściem. To są nasze wektory cech. Alternatywnie, moglibyśmy ręcznie stworzyć inne - prawdopodobnie mniejsze - wektory cech.
  2. Zaletą CNN jest to, że może generować silniejsze wektory cech, które są bardziej niezmienne dla zniekształceń obrazu i położenia. Jak pokazuje poniższy obraz (z tego samouczka ), CNN generują mapy funkcji, które są następnie podawane do standardowej sieci neuronowej (tak naprawdę jest to gigantyczny etap wstępnego przetwarzania).

wprowadź opis zdjęcia tutaj

  1. W ten sposób uzyskujemy te „lepsze” funkcje poprzez naprzemienne splatanie i podpróbkowanie. Rozumiem, jak działa podpróbkowanie. Dla każdej mapy obiektów wystarczy wziąć podzbiór pikseli lub możemy uśrednić wartości pikseli.

Ale przede wszystkim jestem zdezorientowany, jak działa krok konwolucji. Znam splot z teorii prawdopodobieństwa (gęstość sumy dwóch zmiennych losowych), ale jak działają one w CNN i dlaczego są skuteczne?

Moje pytanie jest podobne do tego, ale w szczególności nie jestem pewien, dlaczego działa pierwszy krok splotu.

Informatyk
źródło

Odpowiedzi:

16

Najpierw postaram się podzielić intuicją stojącą za CNN, a następnie skomentować wymienione tematy.

Warstwy splotu i podpróbkowania w CNN nie różnią się od warstw ukrytych we wspólnym MLP, tj. Ich funkcją jest wydobywanie cech z ich danych wejściowych. Funkcje te są następnie przekazywane następnej ukrytej warstwie w celu wyodrębnienia jeszcze bardziej złożonych funkcji lub są przekazywane bezpośrednio standardowemu klasyfikatorowi w celu wygenerowania ostatecznej prognozy (zwykle Softmax, ale można także użyć SVM lub dowolnego innego). W kontekście rozpoznawania obrazu funkcje te są traktowane jako obrazy, takie jak wzory obrysu w dolnych warstwach i części obiektów w górnych warstwach.

Na naturalnych obrazach funkcje te są zwykle takie same we wszystkich lokalizacjach. Rozpoznanie określonego wzoru obrysu na środku obrazów będzie równie przydatne, jak rozpoznanie go blisko granic. Dlaczego więc nie replikujemy ukrytych warstw i nie łączymy wielu jego kopii we wszystkich regionach obrazu wejściowego, aby wszędzie można było wykryć te same funkcje? To dokładnie to, co robi CNN, ale w efektywny sposób. Po replikacji (etap „splotu”) dodajemy etap próby cząstkowej, który można wdrożyć na wiele sposobów, ale jest niczym więcej niż próbą cząstkową. Teoretycznie krok ten można nawet usunąć, ale w praktyce jest niezbędny, aby problem mógł pozostać możliwy do rozwiązania.

A zatem:

  1. Poprawny.
  2. Jak wyjaśniono powyżej, ukryte warstwy CNN są ekstraktorami funkcji, jak w zwykłym MLP. Kolejne etapy splotu i podpróbkowania są wykonywane podczas szkolenia i klasyfikacji, więc nie są one wykonywane „przed” faktycznym przetwarzaniem. Nie nazwałbym ich „przetwarzaniem wstępnym”, podobnie jak ukryte warstwy MLP nie są tak nazywane.
  3. Poprawny.

3)×3)5×5

wprowadź opis zdjęcia tutaj

9

Kolejne etapy splotu i podpróbkowania są oparte na tej samej zasadzie, ale są obliczane na podstawie elementów wyodrębnionych w poprzedniej warstwie zamiast surowych pikseli oryginalnego obrazu.

Saul Berardo
źródło
Dziękuję za wyjaśnienie. Sprawdzę ten samouczek, o którym wspominałeś.
ComputerScientist
Naprawdę ładna grafika ilustracyjna. Zobacz pracę źródłową: M. Egmont-Petersen, D. de Ridder, H. Handels. Przetwarzanie obrazu za pomocą sieci neuronowych - recenzja, Rozpoznawanie wzorców, t. 35, nr 10, str. 2279-2301, 2002
Match Maker EE
Cztery lata później i teraz prawie codziennie pracuję z CNN. Ten post od @Saul Berardo naprawdę pomógł mi wejść na właściwy tor :)
ComputerScientist
1

Nie mam pojęcia, co rozumiesz przez „dlaczego działa pierwszy krok splotu”. Aby CNN odniósł sukces, musi mieć wiele warstw. Jedną z podstawowych idei CNN i wielu innych podejść do głębokiego uczenia się jest to, że większe sygnały można zidentyfikować na podstawie korelacji przestrzennej ich mniejszych części, które mogą być rzadko reprezentowane. Innymi słowy, obrazy mogą wyglądać na skomplikowane, ale są wykonane z kombinacji zaledwie kilku podstawowych części. W przypadku wizji komputerowej podstawowa struktura obrazów składa się zwykle z krawędzi i narożników. CNN próbuje wykorzystać rzadkość struktury na obrazie, szukając wspólnych zlokalizowanych struktur. Właśnie to stara się ustalić pierwsza warstwa CNN. Pomyśl o splotie jako filtrze dopasowania, który szuka sygnałów pasujących do określonego szablonu. Jak to działa, zależy od dostępnych danych. Na szczęście świat jest pełen powtórzeń na małą skalę, więc CNN dobrze sprawdza się w komputerowych zadaniach wizyjnych.

SimpleLikeAnEgg
źródło
Tak, myślę, że to jest ogólny pomysł. Moje pierwotne pytanie nie było jasne, ale zastanawiałem się, dlaczego matematyka działała, tj. Dlaczego sama właściwość splotu pozwala pierwszej warstwie znaleźć te małe części.
ComputerScientist
1
Dowiedz się więcej o konwolucji i filtrowaniu dopasowanym. Kiedy jądro splotu pasuje do sygnału, daje największy zwrot.
SimpleLikeAnEgg