Convolutional Layers: Auffüllen oder nicht auffüllen?

19

Die AlexNet-Architektur verwendet Null-Auffüllungen (siehe Abbildung). In diesem Artikel Bildbeschreibung hier eingeben wird jedoch nicht erläutert, warum diese Auffüllung eingeführt wird.

Der Standford CS 231n-Kurs lehrt, dass die räumliche Größe durch Auffüllen erhalten bleibt: Bildbeschreibung hier eingeben

Ich frage mich, ist es der einzige Grund, warum wir Polster brauchen? Ich meine, wenn ich die räumliche Größe nicht beibehalten muss, kann ich dann Polster entfernen? Ich weiß, dass dies zu einer sehr schnellen Verringerung der räumlichen Größe führen wird, wenn wir zu tieferen Ebenen gehen. Dies kann ich jedoch abwägen, indem ich Pooling-Schichten entferne. Ich würde mich sehr freuen, wenn mir jemand eine Begründung für das Null-Polster geben könnte. Vielen Dank!

Jumabek Alihanov
quelle

Antworten:

20

Es gibt einige Gründe, warum die Polsterung wichtig ist:

  1. Es ist einfacher, Netzwerke zu entwerfen, wenn wir das beibehalten heightund widthnicht zu sehr auf Tensordimensionen achten müssen, wenn wir von einem Layer zum anderen wechseln, da Dimensionen einfach "funktionieren" .

  2. Es ermöglicht uns, tiefere Netzwerke zu entwerfen . Ohne Polsterung würde sich die Volumenverringerung zu schnell verringern.

  3. Das Auffüllen verbessert tatsächlich die Leistung, indem die Informationen an den Grenzen bleiben .

Zitat aus Stanford-Vorlesungen: "Zusätzlich zu dem oben genannten Vorteil, die räumlichen Größen nach CONV konstant zu halten, verbessert dies die Leistung. Wenn die CONV-Ebenen die Eingaben nicht auf Null setzen und nur gültige Windungen ausführen, dann die Größe von das Volumen würde sich nach jeder CONV um einen kleinen Betrag verringern, und die Informationen an den Grenzen würden zu schnell "weggespült". " - Quelle

  1. Wie @dontloo bereits sagte, müssen neue Netzwerkarchitekturen Faltungsschichten mit 1x1-, 3x3- und 5x5-Filtern verketten, und es wäre nicht möglich, wenn sie keine Auffüllung verwenden, da die Abmessungen nicht übereinstimmen. Überprüfen Sie dieses Image des Inception-Moduls, um besser zu verstehen, warum das Auffüllen hier nützlich ist.

Bildbeschreibung hier eingeben

Drag0
quelle
4
Warum ist das Auffüllen mit Nullen so allgegenwärtig? In der Bildverarbeitung werden viele verschiedene Randmodi verwendet, z. B. verschiedene Arten der Spiegelung oder Fortsetzung des Werts am Rand. Reine Nullen haben eine sehr unterschiedliche Struktur im Vergleich zu den tatsächlichen Bildern / Merkmalen.
Isarandi
3

Es scheint mir der wichtigste Grund zu sein, die räumliche Größe zu erhalten. Wie Sie sagten, können wir die Verringerung der räumlichen Größe ausgleichen, indem wir Pool-Layer entfernen. Viele neuere Netzwerkstrukturen (wie Restnetze , Anfangsnetze , fraktale Netze ) arbeiten jedoch mit den Ausgängen verschiedener Schichten, was eine konsistente räumliche Größe zwischen ihnen erfordert.

Wenn keine Auffüllung vorhanden ist, wirken sich die Pixel in der Ecke der Eingabe nur auf die Pixel in der entsprechenden Ecke der Ausgabe aus, während die Pixel in der Mitte zu einer Nachbarschaft in der Ausgabe beitragen. Wenn mehrere Ebenen ohne Auffüllen gestapelt werden, ignoriert das Netzwerk die Randpixel des Bildes.

Nur ein Teil meines Verständnisses, ich glaube, es gibt noch andere gute Gründe.

dontloo
quelle
2

Gute Frage. Drag0 hat es nett erklärt, aber ich stimme zu, etwas stimmt nicht.

Es ist, als würde man sich ein Foto ansehen und sich mit der Grenze auseinandersetzen müssen. Im wirklichen Leben können Sie Ihre Augen bewegen, um weiter zu schauen; Es gibt keine wirklichen Grenzen. Es ist also eine Begrenzung des Mediums.

Ist es wichtig, nicht nur die Größe zu erhalten? Mir ist keine zufriedenstellende Antwort bekannt, aber ich vermute (unbewiesen), dass wir mit Experimenten zu Aufmerksamkeit und Okklusion (Teilobjekten) die an den Grenzen verlorenen Informationen nicht brauchen. Wenn Sie etwas schlaueres machen würden (z. B. das Pixel daneben kopieren), würde dies die Antwort nicht ändern, obwohl ich nicht selbst experimentiert habe. Das Auffüllen mit Nullen ist schnell und behält die Größe bei. Deshalb tun wir es.

ignorant
quelle
1

Das ist mein Denken. Null-Polsterung ist zum Anfangszeitpunkt wichtig, um die Größe des Ausgabe-Merkmalsvektors beizubehalten. und sein jemand oben sagte, dass nullauffüllen mehr Leistung hat.

aber wie wäre es mit dem letzten Mal? Die Auflösung des Bildmerkmalsvektors ist sehr gering, und der Pixelwert bedeutet eine Art Vektor von globaler Größe.

Ich denke, im letzten Fall ist eine Art von Spiegelung besser als Null-Polsterung.

user225549
quelle
1

Wenn Sie versuchen, Informationen an der Grenze zu halten, wird das Pixel an der Ecke (grün schattiert) nach der Faltung nur einmal verwendet, während das mittlere Pixel wie das rot schattierte mehrmals zur resultierenden Feature-Map beiträgt , füllen wir das Bild auf. Siehe Abbildung: 2 .

Jatin
quelle
1

Ich werde versuchen, aus der Sicht der Informationen zu sagen, wann es in Ordnung ist, zu füllen, und wann nicht.

Nehmen wir als Basisfall das Beispiel der Tensorflow-Polsterfunktion. Es werden zwei Szenarien bereitgestellt, entweder "Gültig" oder "Gleich". Same behält die Größe der Ausgabe bei und behält die Größe der Eingabe bei, indem geeignete Auffüllungen hinzugefügt werden, während valid dies nicht tut und einige Leute behaupten, dass dies zu einem Informationsverlust führen würde, aber hier ist der Haken .

Dieser Informationsverlust hängt von der Größe des verwendeten Kernels oder Filters ab. Angenommen, Sie haben ein 28x28-Bild und die Filtergröße beträgt 15x15 (sagen wir mal). Der Ausgang sollte die Abmessung 16x16 haben, aber wenn Sie im Tensorflow "same" verwenden, ist er 28x28. Jetzt enthalten die 12 Zeilen und 12 Spalten an sich keine aussagekräftigen Informationen, sind aber immer noch als eine Art Rauschen vorhanden. Und wir alle wissen, wie anfällig Deep-Learning-Modelle für den Lärm sind. Dies kann das Training erheblich beeinträchtigen. Wenn Sie also große Filter verwenden, sollten Sie die Polsterung vermeiden.

Saurabh Kumar
quelle