Wie sind Filter und Aktivierungskarten in Convolutional Neural Networks verbunden?


11

Wie sind die Aktivierungskarten auf einer bestimmten Ebene mit den Filtern für diese Ebene verbunden? Ich frage nicht nach einer Faltungsoperation zwischen dem Filter und der Aktivierungskarte, sondern nach der Art der Konnektivität, die diese beiden haben.

Angenommen, Sie möchten eine vollständige Konnektivität herstellen. Sie haben f Anzahl von Filtern und n Anzahl von Aktivierungskarten in einer bestimmten Ebene. Sie erhalten eine f * n Anzahl von Aktivierungskarten in der nächsten Ebene, und die Anzahl der Aktivierungskarten würde mit jeder neuen Ebene zunehmen. Ich gehe davon aus, dass dies so gemacht wird.

Oder Sie könnten sagen, jeder Filter ist nur mit einer Aktivierungskarte verbunden. In diesem Fall würde die Anzahl der Filter der Anzahl der Aktivierungskarten entsprechen, und jede Schicht würde die gleiche Anzahl von Filtern und Aktivierungskarten haben. Dies ist die aktuelle Architektur meines Netzwerks, und es scheint gut zu lernen.

Die Hauptursache für meine Verwirrung ist das Betrachten von Diagrammen von Convnets, die ich online sehe. Einige von ihnen haben die "vollständige Verbindung" zwischen Filtern und Aktivierungskarten, wie diese - Geben Sie hier die Bildbeschreibung ein In der ersten Ebene haben Sie 4 Aktivierungskarten und vermutlich 2 Filter. Jede Karte wird mit jedem Filter gefaltet, was zu 8 Karten in der nächsten Ebene führt. Sieht großartig aus.

Aber hier haben wir eine Architektur, die für mich keinen Sinn ergibt - Geben Sie hier die Bildbeschreibung ein Wie geht man von 6 Karten in der ersten Ebene zu 16 in der zweiten? Ich kann mir Möglichkeiten vorstellen, 16 Karten aus 6 zu erhalten, aber das macht keinen Sinn.

Antworten:


10

Die zweite von Ihnen veröffentlichte CNN-Architektur (Convolutional Neural Network) stammt aus diesem Dokument . In der Arbeit beschreiben die Autoren, was zwischen den Schichten S2 und C3 passiert. Ihre Erklärung ist jedoch nicht sehr klar. Ich würde sagen, dass diese CNN-Architektur kein "Standard" ist und als erstes Beispiel für CNNs ziemlich verwirrend sein kann.

CNN-Architektur

28×285×5M×MN×NMN(MN+1)×(MN+1)

Was zwischen Schicht S2 und Schicht C3 passiert, ist das Folgende. In Schicht C3 gibt es 16 Merkmalskarten, die aus 6 Merkmalskarten in Schicht S2 erstellt wurden. Die Anzahl der Filter in Schicht C3 ist in der Tat nicht offensichtlich. Tatsächlich kann man nur anhand des Architekturdiagramms nicht beurteilen, wie viele Filter genau diese 16 Feature-Maps erzeugen. Die Autoren des Papiers stellen die folgende Tabelle zur Verfügung (Seite 8):

Verbindungen zwischen den Schichten S2 und C3

Mit der Tabelle bieten sie die folgende Erklärung (unten auf Seite 7):

5×5

In der Tabelle zeigen die Autoren, dass jede Feature-Map in Layer C3 durch Kombinieren von 3 oder mehr Feature-Maps erstellt wird (Seite 8):

Die ersten sechs C3-Feature-Maps nehmen Eingaben von jeder zusammenhängenden Teilmenge von drei Feature-Maps in S2 entgegen. Die nächsten sechs nehmen Eingaben von jeder zusammenhängenden Teilmenge von vier entgegen. Die nächsten drei nehmen Eingaben von einigen diskontinuierlichen Teilmengen von vier entgegen. Schließlich nimmt der letzte Eingaben von allen S2-Feature-Maps entgegen.

Wie viele Filter gibt es in Schicht C3? Leider erklären sie dies nicht. Die zwei einfachsten Möglichkeiten wären:

  1. Es gibt einen Filter pro S2-Feature-Map pro C3-Feature-Map, dh es gibt keine Filterfreigabe zwischen S2-Feature-Maps, die derselben C3-Feature-Map zugeordnet sind.
  2. Es gibt einen Filter pro C3-Feature-Map, der von den (3 oder mehr) Feature-Maps der Schicht S2 gemeinsam genutzt wird.

In beiden Fällen würde "kombinieren" bedeuten, dass die Ergebnisse der Faltung pro S2-Feature-Map-Gruppe kombiniert werden müssten, um C3-Feature-Maps zu erstellen. Die Autoren geben nicht an, wie dies gemacht wird, aber das Hinzufügen ist eine häufige Wahl (siehe zum Beispiel das animierte GIF in der Mitte dieser Seite .

Die Autoren geben jedoch einige zusätzliche Informationen, die uns helfen können, die Architektur zu entschlüsseln. Sie sagen, dass 'Schicht C3 1.516 trainierbare Parameter hat' (Seite 8). Wir können diese Informationen verwenden, um zwischen den obigen Fällen (1) und (2) zu entscheiden.

(6×3)+(9×4)+(1×6)=60(1410+1)×(1410+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

Wenn wir uns Tabelle I noch einmal ansehen, sind daher jeder S2-Feature-Map 10 verschiedene C3-Filter zugeordnet (also insgesamt 60 verschiedene Filter).

Die Autoren erklären diese Art der Wahl:

Verschiedene Feature-Maps [in Schicht C3] müssen unterschiedliche (hoffentlich komplementäre) Features extrahieren, da sie unterschiedliche Eingabesätze erhalten.

Ich hoffe das klärt die Situation.


3

Sie haben in der Tat Recht, dass der Wert vor dem @ die Anzahl der Filter und nicht die Anzahl der Feature-Maps angibt (obwohl diese Werte für die ersten Faltungsebenen übereinstimmen).

Zu Ihrer letzten Frage: Ja, es ist sinnvoll, jede Feature-Map auf Ebene 1 mit jedem Filter auf Ebene 1 + 1 zu verbinden. Der einzige Grund dafür ist, dass dies die Ausdruckskraft des Netzwerks erheblich erhöht, da es mehr Möglichkeiten (Pfade) zum Kombinieren der Feature-Maps bietet, wodurch es besser unterscheiden kann, was sich auf dem Eingabebild befindet.

Endlich weiß ich nicht, ob Sie Ihre Fähigkeiten in neuronalen Netzwerken üben, indem Sie sie selbst implementieren, aber wenn Sie nur Faltungsnetzwerke auf eine bestimmte Aufgabe anwenden möchten, gibt es bereits mehrere ausgezeichnete Bibliotheken für neuronale Netzwerke wie Theano, Brainstorm, Caffe


Ich denke, ich werde beide Methoden vergleichen, um sie zu vergleichen. Mit der nicht vollständig verbundenen Version wird die Klassifizierung schneller trainiert und berechnet. Genauigkeit ist jedoch wichtiger. In der nicht vollständig verbundenen Version ist jeder Filter auf eine viel spezifischere Aufgabe anstatt auf eine allgemeinere Aufgabe beschränkt. In der vollständig verbundenen Version wird ein Filter auf der Grundlage der für alle vorherigen Filter am besten geeigneten Filter aktualisiert, anstatt nur eines einzigen Funktionstyps. Ich habe mein Netzwerk mit c # zu 100% von Grund auf neu erstellt. sicherlich nicht die einfache Art, Dinge zu tun ... aber es hat mich tiefgreifende Dinge
gelehrt

Das klingt nach einem Soundplan. Viel Glück!
Sjoerd
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.