Antworten:
Der Vorteil der Faltungsschicht besteht darin, dass sie bestimmte Eigenschaften lernen kann, an die Sie beim Hinzufügen der Poolebene möglicherweise nicht denken. Pooling ist eine feste Operation und Faltung kann gelernt werden. Auf der anderen Seite ist das Pooling eine billigere Operation als die Faltung, sowohl hinsichtlich des Rechenaufwands als auch der Anzahl der zu speichernden Parameter (keine Parameter für die Pooling-Schicht).
Es gibt Beispiele, bei denen einer die bessere Wahl ist als der andere.
Die erste Schicht im ResNet verwendet die Faltung mit Schritten. Dies ist ein großartiges Beispiel dafür, wann das Schreiten Ihnen einen Vorteil verschafft. Diese Schicht allein reduziert den Rechenaufwand, den das Netzwerk in den nachfolgenden Schichten ausführen muss, erheblich. Es komprimiert mehrere 3x3-Faltungen (um genau zu sein 3) zu einer 7x7-Faltung, um sicherzustellen, dass es genau das gleiche Empfangsfeld wie 3 Faltungsschichten hat (obwohl es in Bezug auf das, was es lernen kann, weniger leistungsfähig ist). Gleichzeitig wendet diese Ebene den Schritt = 2 an, der das Bild herunterabtastet. Da diese erste Schicht in ResNet gleichzeitig Faltung und Downsampling durchführt, wird die Operation rechnerisch erheblich billiger. Wenn Sie stride = 1 und Pooling für das Downsampling verwenden, Dann erhalten Sie eine Faltung, die viermal mehr Berechnungen + zusätzliche Berechnungen für die nächste Pooling-Schicht durchführt. Der gleiche Trick wurde in SqueezeNet und einigen anderen neuronalen Netzwerkarchitekturen verwendet.
Im NIPS 2018 wurde eine neue Architektur namens FishNet vorgestellt . Eine Sache, die sie versuchen, ist, die Probleme mit den im ResNet verwendeten Restverbindungen zu beheben. Im ResNet wurde an einigen Stellen eine 1x1-Faltung in die Sprungverbindung eingefügt, wenn ein Downsampling auf das Bild angewendet wurde. Diese Faltungsschicht erschwert die Gradientenausbreitung. Eine der wichtigsten Änderungen in ihrem Artikel ist, dass sie die Windungen in den verbleibenden Verbindungen loswerden und sie durch Pooling und einfache Upscales / Identitäten / Verkettungen ersetzen. Diese Lösung behebt das Problem der Gradientenausbreitung in sehr tiefen Netzwerken.
Aus dem FishNet-Papier (Abschnitt 3.2)
Die Schichten im Kopf bestehen aus Verkettung, Faltung mit Identitätszuordnung und Max-Pooling. Daher wird das Gradientenausbreitungsproblem aus dem vorherigen Backbone-Netzwerk im Schwanz mit dem FishNet gelöst, indem 1) I-conv am Kopf ausgeschlossen wird; und 2) Verwenden von Verkettung am Körper und am Kopf.
Im Wesentlichen ist Max-Pooling (oder jede Art von Pooling) eine feste Operation, und das Ersetzen durch eine schrittweise Faltung kann auch als Lernen der Pooling-Operation angesehen werden, was die Ausdruckskraft des Modells erhöht. Der Nachteil ist, dass es auch die Anzahl der trainierbaren Parameter erhöht, aber dies ist heutzutage kein wirkliches Problem.
Es gibt einen sehr guten Artikel von JT Springenberg, in dem alle Max-Pooling-Operationen in einem Netzwerk durch schrittweise Faltungen ersetzt werden. Das Papier zeigt, wie dies die Gesamtgenauigkeit eines Modells bei gleicher Tiefe und Breite verbessert: "Wenn das Pooling durch eine zusätzliche Faltungsschicht mit Schritt r = 2 ersetzt wird, stabilisiert sich die Leistung und verbessert sogar das Basismodell."
Streben nach Einfachheit: Das All Convolutional Net
Ich ermutige Sie, den Artikel zu lesen, es ist nicht schwer zu lesen.