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 , wo wir die Zeilen und der Flip Säulen.
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:
- Die Tatsache, dass Faltung assoziativ ist, während (Kreuz-) Korrelation nicht.
- 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:
Dies ist im Wesentlichen die Summe aller Zellen in einem Hadamard-Produkt:
Dabei ist eine Filterfunktion (ausgedrückt als Matrix) und I ( x , y ) der Pixelwert eines Bildes an der Stelle ( x , y ) :
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:
Solange das Filter symmetrisch ist, ist es dasselbe wie eine Korrelationsoperation mit den umgedrehten Zeilen und Spalten des Filters:
Beide Operationen sind rechnerisch ein Frobenius-Innenprodukt, das der Berechnung der Spur einer Matrixmultiplikation gleichkommt .
Fragen (Neuformulierung nach Kommentaren und erster Antwort):
- 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.
- Entspricht Faltung und Kreuzkorrelation in CNN?
Ja, sie sind gleichwertig.
- 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) (?).
quelle
Antworten:
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.
quelle
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 O ( n2) Multiplikationen und Additionen. Anwenden auf jedes Pixel in einerN× N Bild erfordert also n2N2 Operationen. 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 LeistungO ( 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ührenO ( N2) Zeit (die von der punktweisen Multiplikation dominiert wird), statt O ( 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
quelle