Was macht der Faltungsschritt in einem Faltungsneuralnetzwerk?

16

Ich beschäftige mich mit CNNs (Convolutional Neural Networks) aufgrund ihrer Anwendungen in der Bildverarbeitung. Ich bin bereits mit standardmäßigen neuronalen Feed-Forward-Netzen vertraut, daher hoffe ich, dass einige Leute hier mir helfen können, den zusätzlichen Schritt zum Verständnis von CNNs zu machen. Folgendes denke ich über CNNs:

  1. In herkömmlichen Feed-Forward-NNs haben wir Trainingsdaten, bei denen jedes Element aus einem Merkmalsvektor besteht, den wir in den NN in der "Eingabeebene" eingeben. Bei der Bilderkennung könnte also jedes Pixel nur eine Eingabe sein. Das sind unsere Merkmalsvektoren. Alternativ könnten wir manuell andere - wahrscheinlich kleinere - Merkmalsvektoren erstellen.
  2. Der Vorteil des CNN besteht darin, dass es stärkere Merkmalsvektoren erzeugen kann, die gegenüber Bildverzerrung und Position unveränderlicher sind. Wie die folgende Abbildung zeigt (aus diesem Lernprogramm ), generieren CNNs Feature-Maps, die dann in ein standardmäßiges neuronales Netzwerk eingespeist werden (es handelt sich also wirklich um einen riesigen Vorverarbeitungsschritt).

Bildbeschreibung hier eingeben

  1. Die Art und Weise, wie wir diese "besseren" Merkmale erhalten, ist durch abwechselnde Faltung und Unterabtastung. Ich verstehe, wie die Unterabtastung funktioniert. Nehmen Sie für jede Feature-Map nur eine Teilmenge der Pixel, oder berechnen Sie den Durchschnittswert der Pixel.

Aber ich bin hauptsächlich verwirrt darüber, wie der Faltungsschritt funktioniert. Ich kenne die Faltungen aus der Wahrscheinlichkeitstheorie (Dichte für die Summe zweier Zufallsvariablen), aber wie funktionieren sie in CNNs und warum sind sie effektiv?

Meine Frage ähnelt dieser, aber ich bin mir nicht sicher, warum der erste Faltungsschritt funktioniert.

Informatiker
quelle

Antworten:

16

Ich werde zunächst versuchen, eine gewisse Intuition hinter CNN zu verbreiten und dann die einzelnen von Ihnen aufgelisteten Themen zu kommentieren.

Die Faltungs- und Unterabtastungsschichten in einem CNN unterscheiden sich nicht von den verborgenen Schichten in einem gemeinsamen MLP, dh ihre Funktion besteht darin, Merkmale aus ihrer Eingabe zu extrahieren. Diese Merkmale werden dann an die nächste verborgene Ebene übergeben, um noch komplexere Merkmale zu extrahieren, oder werden direkt an einen Standardklassifizierer übergeben, um die endgültige Vorhersage auszugeben (normalerweise kann ein Softmax, aber auch SVM oder ein anderes verwendet werden). Im Kontext der Bilderkennung handelt es sich bei diesen Merkmalen um Bildbehandlungen wie Strichmuster in den unteren Ebenen und Objektteile in den oberen Ebenen.

In natürlichen Bildern sind diese Merkmale an allen Stellen gleich. Das Erkennen eines bestimmten Strichmusters in der Mitte der Bilder ist genauso nützlich wie das Erkennen in der Nähe der Ränder. Warum replizieren wir also nicht die ausgeblendeten Ebenen und verbinden mehrere Kopien davon in allen Bereichen des Eingabebilds, sodass überall dieselben Funktionen erkannt werden können? Genau das macht ein CNN, aber auf effiziente Weise. Nach der Replikation (dem "Convolution" -Schritt) fügen wir einen Sub-Sample-Schritt hinzu, der auf viele Arten implementiert werden kann, aber nichts anderes als ein Sub-Sample ist. Theoretisch könnte dieser Schritt sogar beseitigt werden, in der Praxis ist er jedoch unerlässlich, damit das Problem behoben werden kann.

Somit:

  1. Richtig.
  2. Wie oben erläutert, sind verborgene Schichten eines CNN Merkmalsextraktoren wie in einem regulären MLP. Die abwechselnden Faltungs- und Unterabtastungsschritte werden während des Trainings und der Klassifizierung durchgeführt, so dass sie nicht "vor" der eigentlichen Verarbeitung durchgeführt werden. Ich würde sie nicht "Pre-Processing" nennen, so wie die versteckten Schichten eines MLP nicht so genannt werden.
  3. Richtig.

Ein gutes Bild zum Verständnis der Faltung ist die CNN-Seite im ULFDL-Tutorial. Stellen Sie sich eine verborgene Schicht mit einem einzelnen Neuron vor, das darauf trainiert ist, Merkmale aus Patches zu extrahieren . Wenn wir dieses einzelne erlernte Feature über ein Bild falten , kann dieser Prozess durch das folgende GIF dargestellt werden:3×35×5

Bildbeschreibung hier eingeben

In diesem Beispiel haben wir ein einzelnes Neuron in unserer Feature-Extraktionsschicht verwendet und gefaltete Features generiert . Wenn wir eine größere Anzahl von Einheiten in der verborgenen Schicht hätten, wäre klar, warum der Unterabtastschritt danach erforderlich ist.9

Die nachfolgenden Faltungs- und Unterabtastungsschritte basieren auf demselben Prinzip, werden jedoch anhand der in der vorherigen Ebene extrahierten Merkmale anstelle der Rohpixel des Originalbilds berechnet.

Saul Berardo
quelle
Danke für die Klarstellung. Ich werde das Tutorial überprüfen, das Sie erwähnt haben.
ComputerScientist
Wirklich schöne illustrative Grafiken. Siehe die referenec Arbeit: M. Egmont-Petersen, D. de Ridder, H. Handels. Bildverarbeitung mit neuronalen Netzen - ein Rückblick, Pattern Recognition, Vol. 10, S. 2279-2301, 2002
Match Maker EE
Vier Jahre später und jetzt arbeite ich fast täglich mit CNNs. Dieser Beitrag von @Saul Berardo hat mir wirklich geholfen, auf den richtigen Weg zu kommen :)
ComputerScientist
1

Ich habe keine Ahnung, was Sie mit "warum der erste Faltungsschritt funktioniert" meinen. Damit ein CNN erfolgreich ist, müssen viele Ebenen vorhanden sein. Eine der Grundideen hinter CNN und vielen anderen Deep-Learning-Ansätzen ist, dass größere Signale durch die räumliche Korrelation ihrer kleineren Teile identifiziert werden können, die spärlich dargestellt werden können. Mit anderen Worten, Bilder sehen zwar komplex aus, bestehen jedoch aus einer Kombination weniger grundlegender Teile. Für die Bildverarbeitung besteht die Grundstruktur in Bildern normalerweise aus Kanten und Ecken. CNN versucht, die Spärlichkeit der Struktur in einem Bild auszunutzen, indem nach gemeinsamen lokalisierten Strukturen gesucht wird. Das ist es, was die erste Schicht des CNN zu bestimmen versucht. Stellen Sie sich eine Faltung als Übereinstimmungsfilter vor, der nach Signalen sucht, die einer bestimmten Vorlage entsprechen. Wie gut es funktioniert, hängt von den vorliegenden Daten ab. Glücklicherweise ist die Welt im kleinen Maßstab voller Wiederholungen, sodass CNN gut für Computer-Vision-Aufgaben geeignet ist.

SimpleLikeAnEgg
quelle
Ja, ich denke das ist die allgemeine Idee. Ich war in meiner ursprünglichen Frage nicht klar, aber ich frage mich , warum die Mathematik gearbeitet, also warum die Faltungseigenschaft selbst ermöglicht die erste Schicht die kleinen Teile zu finden.
ComputerScientist
1
Lesen Sie mehr über Faltung und Matched Filtering. Wenn der Faltungskern mit dem Signal übereinstimmt, liefert er die größte Rendite.
SimpleLikeAnEgg