Czy istnieją matematyczne powody splotu w sieciach neuronowych poza celami?

14

W splotowych sieciach neuronowych (CNN) matryca wag na każdym kroku zostaje odwrócona w celu uzyskania macierzy jądra przed przystąpieniem do splotu. Wyjaśnia to seria filmów Hugo Larochelle tutaj :

Obliczenie ukrytych map odpowiadałoby wykonaniu dyskretnego splotu z kanałem z poprzedniej warstwy, przy użyciu macierzy jądra [...], a jądro to jest obliczane z macierzy ukrytych wag , gdzie odwracamy rzędy i kolumny.Wij

wprowadź opis zdjęcia tutaj

Gdybyśmy porównali zredukowane kroki splotu do regularnego mnożenia macierzy, jak w innych typach NN, celowość byłaby jasnym wyjaśnieniem . Może to jednak nie być najbardziej trafne porównanie ...

W przetwarzaniu obrazowania cyfrowego zastosowanie splotu filtra do obrazu ( jest to świetny film na youtube dla praktycznej intuicji ) wydaje się związane z:

  1. Fakt, że splot jest asocjatywny, podczas gdy korelacja (krzyżowa) nie.
  2. Możliwość zastosowania filtrów w dziedzinie częstotliwości obrazu jako multiplikacji, ponieważ splot w dziedzinie czasu jest równoważny z multiplikacją w dziedzinie częstotliwości ( twierdzenie o splotie ).

W tym szczególnym środowisku technicznym korelacji DSP definiuje się jako:

FI(x,y)=j=NNi=NNF(i,j)I(x+i,y+j)

która jest zasadniczo sumą wszystkich komórek w produkcie Hadamard:

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

gdzie jest funkcją filtru (wyrażoną jako macierz), a jest wartością piksela obrazu w miejscu :I ( x , y ) ( x , y )F(i,j)I(x,y)(x,y)

wprowadź opis zdjęcia tutaj

Celem wzajemnej korelacji jest ocenić, jak podobny jest obraz sonda do obrazu testowego. Obliczenie mapy korelacji krzyżowej opiera się na twierdzeniu splotowym.


Z drugiej strony splot definiuje się jako:

FI(x,y)=j=NNi=NNF(i,j)I(xi,yj)

który tak długo, jak filtr jest symetryczny, działa tak samo jak operacja korelacji z odwróconymi wierszami i kolumnami filtra:

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

wprowadź opis zdjęcia tutaj


Konwolucja w DSP ma na celu zastosowanie filtrów do obrazu (np. Wygładzanie, wyostrzanie). Jako przykład, po splataniu twarzy Josepha Fouriera z filtrem splotu gaussowskiego : krawędzie na twarzy:[1474141626164726412674162616414741]

wprowadź opis zdjęcia tutaj


Obliczeniowo, obie operacje są produktem wewnętrznym Frobeniusa, co sprowadza się do obliczenia śladu mnożenia macierzy .


Pytania (przeformułowanie po komentarzach i pierwszej odpowiedzi):

  1. Czy stosowanie zwojów w CNN jest powiązane z FFT?

Z tego, co do tej pory zbieram, odpowiedź brzmi: nie. FFT zostały wykorzystane do przyspieszenia implementacji zwojów przez GPU . Jednak FFT zwykle nie są częścią struktury lub funkcji aktywacyjnych w CNN, pomimo zastosowania zwojów w etapach przed aktywacją.

  1. Czy splot i korelacja krzyżowa w CNN są równoważne?

Tak, są równoważne.

  1. Jeśli jest to proste: „nie ma różnicy”, jaki jest sens przerzucania wag do macierzy jądra?

Ani skojarzenie splotu (przydatne w dowodach matematycznych), ani rozważania dotyczące FT i twierdzenia splotowego nie mają zastosowania. W rzeczywistości wydaje się, że przerzucanie nawet nie ma miejsca (korelacja krzyżowa jest po prostu błędnie oznaczona jako splot) (?).

Antoni Parellada
źródło
Antoni, czy możesz wskazać dowolne źródło, w którym zmieniają ciężary? Jak zauważył @hossein, możesz zrobić wszystko z korelacją krzyżową, co możesz zrobić ze splotami, po prostu odwracając kolejność. Więc wszystkie te rzeczy w dziedzinie częstotliwości nie mają znaczenia.
seanv507
@ seanv507 Zredagowałem moją OP, aby uwzględnić źródło tego, o co, jak sądzę, pytasz. Rozumiem, że splot jest tą samą operacją, co korelacja krzyżowa z odwróconą matrycą filtra, ale nie rozumiem, dlaczego omijamy „ból” dyskretnego splotu, jeśli nie ma w tym nic, co nie mogłoby być osiągnięto dzięki korelacji. Podana odpowiedź jest dobrze poinformowana, ale można ją dopasować do komentarza i nie wyjaśnia przyczyny dwóch odrębnych operacji (czy jest to „tradycja” z DSP przeniesiona na ML?), Implikacji dotyczących procesu uczenia się, i stosunek do FT.
Antoni Parellada
1
Antoni, nie trzeba odwracać. To bardziej konwencja; w dsp ludzie mówią raczej o splotach niż korelacjach krzyżowych, a krzyżowe sieci neuronowe nie spływają z języka. Ale bardziej naturalną (dla ludzi do interpretacji) operacją jest korelacja krzyżowa (dopasowywanie szablonów) dla CNN (rozważ np. Filtr krawędzi pionowej zamiast symetrii obrotu). Myślę więc, że Hugo larochelle może mówić o bibliotekach numerycznych, w których splot zamiast korelacji krzyżowej jest standardową funkcją (skutecznie twierdzi, że korelację krzyżową można wykonać przez splot).
seanv507
1
Antoni, zgódź się na 2 pierwsze pytania / odpowiedzi, a mój komentarz był odpowiedzią na trzecie pytanie.
seanv507
1
Chociaż niekoniecznie istnieje bezpośredni związek między CNN a FFT, istnieją dowody, które pokazują, że można uzyskać przyspieszenie CNN za pomocą FFT, gdy zachowa się zwykłą sumę splotu. Zobacz tutaj na przykład: arxiv.org/pdf/1312.5851.pdf
Alex R.

Odpowiedzi:

8

Nie ma różnic w tym, co sieci neuronowe mogą zrobić, gdy używają splotu lub korelacji. Wynika to z tego, że filtry są wyuczone i jeśli CNN może nauczyć się wykonywać określone zadanie za pomocą operacji splotu, może także nauczyć się wykonywać to samo zadanie za pomocą operacji korelacji (poznałby obróconą wersję każdego filtra).

Aby znaleźć więcej szczegółów na temat powodów, dla których ludzie czasem uważają, że splot jest bardziej intuicyjny niż korelacja, ten post może być przydatny.

Pozostaje pytanie, że jeśli nie ma różnicy między splotem a korelacją krzyżową, jaki jest sens przerzucania wag do macierzy jądra? Chciałbym załączyć kilka zdań z książki „ Deep learningIana Goodfellow i in. aby odpowiedzieć na to pytanie:

„Jedynym powodem przerzucenia jądra jest uzyskanie właściwości przemienności. Chociaż właściwość przemienności jest przydatna do pisania dowodów, zwykle nie jest to ważna właściwość implementacji sieci neuronowej ... Wiele bibliotek uczenia maszynowego implementuje korelację krzyżową, ale wywołuje to splot.

Zaletą jest to, że chociaż splot jest ulubioną operacją w klasycznych aplikacjach wizyjnych, zastępuje go korelacja w wielu implementacjach splotowych sieci neuronowych.

Hossein
źródło
Dziękuję Ci. Z uwagą czytam blog, do którego linkujesz, i wydaje się, że użycie splotu nie jest po prostu równoważne z korelacją i odpowiada na wybór funkcji w dziedzinie częstotliwości. Szukam odpowiedzi na ten temat.
Antoni Parellada
Jak wiem, są one równoważne w tym, co mogą zrobić , ponieważ obie tworzą iloczyn kropkowy z dwóch matryc, ale splot odwraca matrycę filtra przed iloczynem kropki, a ponieważ CNN uczą się filtrów, mogą nauczyć się filtrów odwróconych.
Hossein
+1 do wyjaśnienia Hosseinsa, ale -1 do linku do bloga. Blog koncentruje się głównie na sprzęcie i jest facetem CS bez doświadczenia w konwolucji i innych koncepcjach przetwarzania sygnałów.
seanv507
Chciałbym nadal nalegać na dodanie dodatkowego akapitu na temat związku (lub jego braku) między splotem w CNN i transformatami Fouriera.
Antoni Parellada,
2

Istnieje praktyczny powód dla powiązania między FFT a splotem.

n×nO(n2)N×Nn2N2 operacji. Rośnie to szybko, a duża liczba operacji nie tylko wymaga dodatkowego czasu, ale także wprowadza więcej błędów numerycznych.

O(N2logN2)O(N2)O(n2N2). Może to zapewnić znaczne przyspieszenie, nawet jeśli przejście FFT -> zwielokrotnienie -> odwrotna trasa FFT wydaje się znacznie bardziej skomplikowane. Więcej tutaj

Matt Krause
źródło