Gibt es mathematische Gründe für die Faltung in neuronalen Netzen, die nicht mehr angemessen sind?

14

In neuronalen Faltungsnetzen (CNN) werden die Zeilen und Spalten der Gewichtungsmatrix bei jedem Schritt umgedreht, um die Kernelmatrix zu erhalten, bevor mit der Faltung fortgefahren wird. Dies wird in einer Reihe von Videos von Hugo Larochelle hier erklärt :

Berechnung der versteckten Karten entspräche eine diskrete Faltung mit einem Kanal von der vorherige Schicht zu tun, unter Verwendung einer Kernel - Matrix [...], und das Kernel wird von der verborgenen Gewichtungsmatrix berechnet Wij , wo wir die Zeilen und der Flip Säulen.

Bildbeschreibung hier eingeben

Wenn wir die reduzierten Schritte einer Faltung mit einer regulären Matrixmultiplikation wie bei anderen Arten von NN vergleichen würden, wäre die Zweckmäßigkeit eine klare Erklärung . Dies ist jedoch möglicherweise nicht der zutreffendste Vergleich ...

In der digitalen Bildverarbeitung scheint die Anwendung der Faltung eines Filters auf ein Bild ( dies ist ein großartiges Youtube-Video für eine praktische Intuition ) mit Folgendem verbunden zu sein:

  1. Die Tatsache, dass Faltung assoziativ ist, während (Kreuz-) Korrelation nicht.
  2. Die Möglichkeit, Filter im Frequenzbereich des Bildes als Multiplikationen anzuwenden, da die Faltung im Zeitbereich der Multiplikation im Frequenzbereich entspricht ( Faltungssatz ).

In diesem speziellen technischen Umfeld der DSP- Korrelation ist definiert als:

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

Dies ist im Wesentlichen die Summe aller Zellen in einem Hadamard-Produkt:

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]]

Dabei ist eine Filterfunktion (ausgedrückt als Matrix) und I ( x , y ) der Pixelwert eines Bildes an der Stelle ( x , y ) :F(i,j)I(x,y)(x,y)

Bildbeschreibung hier eingeben

Das Ziel der Kreuzkorrelation besteht darin, festzustellen, wie ähnlich ein Sondenbild einem Testbild ist. Die Berechnung einer Kreuzkorrelationskarte beruht auf dem Faltungssatz.


Andererseits ist Faltung definiert als:

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

Solange das Filter symmetrisch ist, ist es dasselbe wie eine Korrelationsoperation mit den umgedrehten Zeilen und Spalten des Filters:

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]]

Bildbeschreibung hier eingeben


[1474141626164726412674162616414741]

Bildbeschreibung hier eingeben


Beide Operationen sind rechnerisch ein Frobenius-Innenprodukt, das der Berechnung der Spur einer Matrixmultiplikation gleichkommt .


Fragen (Neuformulierung nach Kommentaren und erster Antwort):

  1. Ist die Verwendung von Faltungen in CNN mit FFT verbunden?

Soweit ich weiß, lautet die Antwort nein. FFTs wurden verwendet, um GPU-Implementierungen von Faltungen zu beschleunigen . FFT sind jedoch normalerweise nicht Teil der Struktur oder Aktivierungsfunktionen in CNNs, trotz der Verwendung von Faltungen in den Voraktivierungsschritten.

  1. Entspricht Faltung und Kreuzkorrelation in CNN?

Ja, sie sind gleichwertig.

  1. Wenn es einfach ist, wie "es gibt keinen Unterschied", wozu werden die Gewichte in die Kernelmatrix gespiegelt?

Weder die Assoziativität der Faltung (nützlich für mathematische Beweise) noch irgendwelche Überlegungen zu FTs und dem Faltungssatz sind anwendbar. Tatsächlich scheint es, als ob das Umdrehen nicht einmal stattfindet (Kreuzkorrelation wird einfach als Faltung falsch bezeichnet) (?).

Antoni Parellada
quelle
Antoni, kannst du auf eine Quelle verweisen, bei der die Gewichte gedreht werden? Wie @hossein hervorhob, können Sie mit Kreuzkorrelation alles tun, was Sie mit Faltungen tun können, indem Sie einfach die Reihenfolge umkehren. All diese Frequenzdomänen sind also irrelevant.
Seanv507
@ seanv507 Ich habe mein OP so bearbeitet, dass es die Quelle für das enthält, was ich glaube, dass Sie mich fragen. Ich verstehe zwar, dass Faltung die gleiche Operation ist wie Kreuzkorrelation mit einer umgedrehten Filtermatrix, aber ich verstehe nicht, warum wir den "Schmerz" der diskreten Faltung durchgehen, wenn es nichts gibt, was nicht sein könnte mit Korrelation erreicht. Die gegebene Antwort ist eindeutig kenntnisreich, könnte aber in einen Kommentar eingepasst werden und erklärt nicht den Grund für zwei unterschiedliche Operationen (ist es eine "Tradition" von DSP, die auf ML übertragen wird?), Die Auswirkungen auf den Lernprozess. und die Beziehung zu FT's.
Antoni Parellada
1
Antoni, es ist nicht nötig, umzudrehen. Es ist eher eine Konvention; In DSP spricht man eher von Faltung als von Kreuzkorrelation, und Kreuzkorrelations-Neuronale Netze rollen nicht von der Zunge. Die natürlichere (für den Menschen zu interpretierende) Operation ist jedoch die Kreuzkorrelation (Sie sind Template-Matching) für CNN (z. B. ein vertikales Kantenfilter anstelle eines rotationssymmetrischen Filters). Ich denke, Hugo Larochelle spricht vielleicht von numerischen Bibliotheken, bei denen Faltung statt Kreuzkorrelation Standardfunktion ist (er sagt effektiv, dass Kreuzkorrelation durch eine Faltung erfolgen kann.)
seanv507
1
Antoni, stimme den 2 ersten Fragen / Antworten zu und mein Kommentar beantwortete die 3. Frage.
Seanv507
1
Zwar gibt es nicht unbedingt eine direkte Verbindung zwischen CNNs und FFTs, doch gibt es Hinweise darauf, dass Sie mit FFTs eine Beschleunigung der CNNs erzielen können, wenn Sie die übliche Faltungssumme beibehalten. Siehe hier zum Beispiel: arxiv.org/pdf/1312.5851.pdf
Alex R.

Antworten:

8

Es gibt keine Unterschiede, was neuronale Netze tun können, wenn sie Faltung oder Korrelation verwenden. Dies liegt daran, dass die Filter sind gelernt werden und wenn ein CNN lernen kann, eine bestimmte Aufgabe unter Verwendung einer Faltungsoperation zu erledigen, kann es auch lernen, dieselbe Aufgabe unter Verwendung einer Korrelationsoperation zu erledigen (es würde die gedrehte Version jedes Filters lernen).

Um mehr Details über die Gründe zu finden, aus denen Menschen es manchmal intuitiver finden, über Faltung nachzudenken als über Korrelation, dieser Beitrag hilfreich sein.

Es bleibt die Frage, ob, wenn es keinen Unterschied zwischen Faltung und Kreuzkorrelation gibt, an welcher Stelle die Gewichte in die Kernelmatrix gespiegelt werden sollen. Ich möchte einige Sätze aus dem Deep-Learning- Buch von Ian Goodfellow et al.um diese frage zu beantworten:

Der einzige Grund, den Kernel umzudrehen, ist das Erhalten der kommutativen Eigenschaft. Während die kommutative Eigenschaft zum Schreiben von Beweisen nützlich ist, ist sie normalerweise keine wichtige Eigenschaft einer Implementierung eines neuronalen Netzwerks ... Viele maschinell lernende Bibliotheken implementieren Kreuzkorrelation, rufen jedoch auf es Faltung. "

Die Erkenntnis ist, dass Faltung zwar in klassischen Bildverarbeitungsanwendungen ein beliebter Vorgang ist, in vielen Implementierungen der neuronalen Faltungsnetze jedoch durch Korrelation ersetzt wird.

Hossein
quelle
Vielen Dank. Ich habe den Blog, auf den Sie verlinken, aufmerksam gelesen, und es scheint, als ob die Verwendung der Faltung nicht einfach der Korrelation entspricht und auf die Auswahl von Frequenzdomänen-Features reagiert. Ich bin auf der Suche nach einer Antwort, die dies näher erläutert.
Antoni Parellada
Wie ich weiß, sind sie in ihren Möglichkeiten gleichwertig , da beide ein Punktprodukt aus zwei Matrizen erzeugen , die Faltung jedoch die Filtermatrix vor dem Punktprodukt umdreht und CNNs die Filter lernen, können sie die umgedrehten Filter lernen.
Hossein
+1 zu Hosseins Erklärung, aber -1 für den Blog-Link. Der Blog konzentriert sich hauptsächlich auf Hardware und ist ein CS-Typ ohne Hintergrundwissen in Faltung und anderen Signalverarbeitungskonzepten.
Seanv507
Ich möchte immer noch darauf bestehen, einen zusätzlichen Absatz über die Beziehung (oder das Fehlen davon) zwischen der Faltung in CNNs und Fourier-Transformationen zu haben.
Antoni Parellada
2

Es gibt einen praktischen Grund für die Verbindung zwischen FFTs und Faltung.

Die Faltung ist im Zeit- / Bildbereich langsam. Anwenden einern×n Filter auf ein Pixel benötigt Ö(n2)Multiplikationen und Additionen. Anwenden auf jedes Pixel in einerN×N Bild erfordert also n2N2Operationen. Dies wächst schnell und die große Anzahl von Operationen erfordert nicht nur zusätzliche Zeit, sondern führt auch zu mehr numerischen Fehlern.

Der Faltungssatz besagt, dass die Faltung im Zeitbereich der punktweisen Multiplikation im Frequenzbereich entspricht. FFTs sind schnell: Sie haben eine gute asymptotische LeistungÖ(N2LogN2)und die tatsächlichen Implementierungen sind oft stark optimiert. Wenn Sie in die Fourier-Domäne wechseln, können Sie eine Faltung in durchführenÖ(N2) Zeit (die von der punktweisen Multiplikation dominiert wird), statt Ö(n2N2). Dies kann zu einer beträchtlichen Beschleunigung führen, obwohl es sehr viel komplizierter erscheint, die FFT -> Multiplikation -> inverse FFT-Route zu durchlaufen. Mehr hier

Matt Krause
quelle