Wie funktionieren nachfolgende Faltungsschichten?


29

Diese Frage lautet: "Wie funktionieren Faltungsschichten genau ?

Angenommen , ich habe eine Graubild. Das Bild hat also einen Kanal. In der ersten Ebene ich eine Faltung von mit Filtern und -Auffüllung an. Dann habe ich noch eine Faltungsschicht mit Faltungen und Filtern. Wie viele Feature-Maps habe ich?3 × 3 k 1 5 × 5 k 2n×m3×3k15×5k2

Typ 1 Faltung

Die erste Ebene wird ausgeführt. Danach habe ich Feature-Maps (eine für jeden Filter). Jedes davon hat die Größe . Jedes einzelne Pixel wurde erstellt, indem Pixel aus dem gepolsterten Eingabebild genommen wurden. n × m 3 3 = 9k1n×m33=9

Dann wird die zweite Schicht aufgetragen. Jeder einzelne Filter wird separat auf jede der Feature-Maps angewendet . Dies führt zu Feature-Maps für jede der Feature-Maps. Es gibt also Feature-Maps nach der zweiten Ebene. Jedes einzelne Pixel jeder der neuen Feature-Maps wurde erstellt, indem "Pixel" der gepolsterten Feature-Map von zuvor verwendet wurden.k 1 k 1 × k 2 5 5 = 25k2k1k1×k255=25

Das System muss Parameter lernen .k133+k255

Typ 2.1 Faltung

Wie zuvor: Die erste Ebene wird ausgeführt. Danach habe ich Feature-Maps (eine für jeden Filter). Jedes davon hat die Größe . Jedes einzelne Pixel wurde erstellt, indem Pixel aus dem gepolsterten Eingabebild genommen wurden. n × m 3 3 = 9k1n×m33=9

Im Gegensatz zu früher: Dann wird die zweite Schicht aufgetragen. Jeder einzelne Filter wird auf dieselbe Region angewendet, jedoch auf alle Feature-Maps von zuvor. Dies führt zu insgesamt Feature-Maps, nachdem der zweite Layer ausgeführt wurde. Jedes einzelne Pixel jeder der neuen Feature-Maps wurde erstellt, indem "Pixel" der zuvor gepolsterten Feature-Maps verwendet wurden.k 25 5 = 25 k 2k2k255=25k2

Das System muss Parameter lernen .k133+k255

Typ 2.2 Faltung

Wie oben, aber anstatt Parameter pro Filter zu haben, die gelernt und einfach für die anderen Eingabe-Feature-Maps kopiert werden müssen, haben Sie Parameter, die gelernt werden müssen.k 13 3 + k 2k 15 555=25k133+k2k155

Frage

  1. Wird typischerweise Typ 1 oder Typ 2 verwendet?
  2. Welcher Typ wird in Alexnet verwendet ?
  3. Welcher Typ wird in GoogLeNet verwendet ?
    • Wenn Sie Typ 1 sagen: Warum ergeben Faltungen irgendeinen Sinn? Multiplizieren sie die Daten nicht nur mit einer Konstanten?1×1
    • Wenn Sie Typ 2 sagen: Bitte erläutern Sie die quadratischen Kosten ("Wenn beispielsweise in einem Deep-Vision-Netzwerk zwei Faltungsschichten verkettet sind, führt jede gleichmäßige Erhöhung der Anzahl ihrer Filter zu einer quadratischen Erhöhung der Berechnung.")

Bitte geben Sie für alle Antworten einige Beweise (Papiere, Lehrbücher, Dokumentation von Frameworks) an, dass Ihre Antwort korrekt ist.

Bonusfrage 1

Wird das Pooling immer nur pro Feature-Map angewendet oder erfolgt es auch über mehrere Feature-Maps?

Bonusfrage 2

Ich bin mir ziemlich sicher, dass Typ 1 richtig ist und ich habe etwas mit dem GoogLe-Papier falsch gemacht. Aber es gibt auch 3D-Windungen. Nehmen wir an, Sie haben 1337 Feature-Maps der Größe und wenden einen Filter an. Wie schieben Sie den Filter über die Feature-Maps? (Von links nach rechts, von oben nach unten, von der ersten Feature-Map zur letzten Feature-Map?) Ist es wichtig, solange Sie dies konsequent tun?3 × 4 × 542×3143×4×5

Meine Recherche

  • Ich habe die beiden Papiere von oben gelesen, bin mir aber immer noch nicht sicher, was verwendet wird.
  • Ich habe die Lasagnendokumentation gelesen
  • Ich habe die theano-Dokumentation gelesen
  • Ich habe die Antworten auf " Faltungsnetzwerke verstehen" gelesen (ohne allen Links zu folgen)
  • Ich habe Convolutional Neural Networks (LeNet) gelesen . Insbesondere Abbildung 1 lässt mich relativ sicher sein, dass Typ 2.1 der richtige ist. Dies würde auch zum Kommentar "Quadratische Kosten" in GoogLe Net und zu einigen praktischen Erfahrungen passen, die ich mit Caffee gemacht habe.

Eine Weile später: Analyse und Optimierung faltungsbezogener neuronaler Netzwerkarchitekturen , insbesondere Kapitel 2 und Abbildung 2.2 und Abbildung 2.3.
Martin Thoma

Antworten:


5

Ich bin mir bei den oben beschriebenen Alternativen nicht sicher, aber die häufig verwendete Methode lautet:

Vor der Anwendung der Nichtlinearität hängt jede Filterausgabe linear von allen Feature-Maps vor dem Patch ab, sodass Sie nach den zweiten Layern Filter erhalten. Die Gesamtanzahl der Parameter beträgt . 3 ˙k23˙3˙k1+k1˙5˙5˙k2

Bonus 1: Das Pooling erfolgt separat pro Feature-Map.

Bonus 2: Die Reihenfolge des "Rutschens" spielt keine Rolle. Tatsächlich wird jede Ausgabe auf der Grundlage der vorherigen Ebene berechnet, sodass die Ausgabefilterantworten nicht voneinander abhängen. Sie können parallel berechnet werden.


1
Ich habe diese Frage total vergessen. In der Zwischenzeit habe ich meine Masterarbeit über CNNs geschrieben. Kapitel 3 erklärt, wie sie funktionieren.
Martin Thoma

1
Zur Verdeutlichung: Typ 2.2 ist der richtige (beschrieben in dieser Antwort)
Martin Thoma

1
Für den Fall, dass jemand dies wirklich in Aktion sehen möchte , habe ich ein tiefes neuronales Faltungsnetz in Google Sheets implementiert. Sie können die Filter und das Eingabebild Pixel für Pixel sehen, während es durch das CNN geht, bis das CNN die Antwort vorhersagt: docs.google.com/spreadsheets/d/…
bwest87

5

Mit dieser Frage habe ich mich gerade ein paar Stunden lang beschäftigt. Ich dachte, ich teile das Insite, das mir geholfen hat, es zu verstehen.

Die Antwort ist, dass die Filter für die zweite Faltungsschicht nicht die gleiche Dimension aufweisen wie die Filter für die erste Schicht. Im Allgemeinen muss der Filter die gleiche Anzahl von Dimensionen haben wie seine Eingänge . In der ersten Conv-Ebene hat die Eingabe zwei Dimensionen (da es sich um ein Bild handelt). Somit haben die Filter auch zwei Dimensionen. Wenn die erste Conv-Ebene 20 Filter enthält, besteht die Ausgabe der ersten Conv-Ebene aus einem Stapel von 20 2D-Feature-Maps. Die Ausgabe der ersten Konvektionsebene ist also dreidimensional, wobei die Größe der dritten Dimension der Anzahl der Filter in der ersten Ebene entspricht.

Dieser 3D-Stapel bildet nun die Eingabe für die zweite Conv-Ebene. Da die Eingabe für die 2. Ebene 3D ist, müssen die Filter auch 3D sein. Stellen Sie die Größe der Filter des zweiten Layers in der dritten Dimension auf die Anzahl der Feature-Maps ein, die die Ausgabe des ersten Layers waren.

Jetzt falten Sie sich einfach über die ersten beiden Dimensionen. Reihen und Spalten. Somit ergibt die Faltung jedes Filters der zweiten Schicht mit dem Stapel von Merkmalskarten (Ausgabe der ersten Schicht) eine einzelne Merkmalskarte.

Die Größe der dritten Dimension des Ausgangs der zweiten Schicht ist daher gleich der Anzahl der Filter in der zweiten Schicht.


2

Überprüfen Sie diese Vorlesung und diese Visualisierung

Normalerweise wird Faltung vom Typ 2.1 verwendet. In der Eingabe haben Sie NxMx1 Bild, dann erhalten Sie nach der ersten Faltung N_1xM_1xk_1, so dass Ihr Bild nach der ersten Faltung k_1 Kanäle hat. Die neue Dimension N_1 und M_1 hängt von Ihrem Schritt S und der Auffüllung P ab: N_1 = (N - 3 + 2P) / S + 1, Sie berechnen M_1 in Analogie. Für die erste Conv-Ebene haben Sie 3x3xk_1 + k_1 Gewichte. Für Verzerrungen in nichtlinearen Funktionen wird k_1 hinzugefügt.

In der zweiten Ebene haben Sie als Eingabebild die Größe N_1xM_1xk_1, wobei k_1 die neue Anzahl von Kanälen ist. Und nach der zweiten Faltung erhalten Sie N_2xM_2xk_2 Bild (Array). Sie haben 5x5xk_2xk_1 + k_2 Parameter in der zweiten Ebene.

Für eine 1x1-Faltung mit k_3-Filtern und dem Eingang NxMxC (C ist die Anzahl der Eingangskanäle) erhalten Sie ein neues Bild (Array) NxMxk_3, daher ist 1x1 sinnvoll. Sie wurden in diesem Artikel vorgestellt

Bonus 1: Pooling wird pro Feature-Map angewendet.

Weitere Informationen finden Sie auf den Folien zum CNN-Kurs in Stanford. Dort haben Sie eine schöne Visualisierung, wie die Faltung aus mehreren Eingangskanälen summiert wird.


2
Nur-Link-Antworten werden nicht empfohlen - Links funktionieren möglicherweise nicht mehr. Können Sie relevante Informationen einbinden?
Sean Owen

1
Visualisierung war sehr hilfreich. Mein Moment der Offenbarung war, als ich feststellte, dass die Filter 3D und nicht 2D sind.
kmace

1
Tolle Links, sorten Zeug für mich aus. Ihre Antwort scheint jedoch nicht mit den Aussagen in den Links übereinzustimmen. Insbesondere in der Konvektionsschicht 2 ist jedes Empfangsfeld 3D mit den Dimensionen 5x5xk_1, sodass die Anzahl der Parameter 5 * 5 * k_1 * k_2 (plus Bias) betragen sollte.
Daniel Schlaug

@DanielSchlaug du hast recht, ich habe die Antwort korrigiert.
Pplonski

1

k1331k1

k255k1k2

Das heißt, die Kerne in einer Faltungsschicht erstrecken sich über die Tiefe der Ausgabe der vorherigen Schicht.

1×1kn11kn1

Spekulation:

Die Bonusfrage 2 ist mir nicht vertraut, aber ich schätze, der Tiefenparameter in der Faltung wird zu einer zusätzlichen Dimension.

mnknmnkn+1kn

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.