Die AlexNet-Architektur verwendet Null-Auffüllungen (siehe Abbildung). In diesem Artikel 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:
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!
quelle
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.
quelle
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.
quelle
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.
quelle
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 .
quelle
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.
quelle