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.
Beispiel, wenn die Faltung mit Schritten besser ist als das Pooling
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.
Beispiel, bei dem Pooling besser ist als Faltung
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.