Filtergröße, Schritte usw. in einem CNN auswählen?

11

Ich habe mir die CS231N-Vorlesungen von Stanford angesehen und versuche, mich mit einigen Problemen in CNN-Architekturen zu befassen. Ich versuche zu verstehen, ob es einige allgemeine Richtlinien für die Auswahl der Faltungsfiltergröße und Dinge wie Schritte gibt oder ob dies eher eine Kunst als eine Wissenschaft ist.

Ich verstehe, dass Pooling hauptsächlich dazu dient, eine Form der Übersetzungsinvarianz in ein Modell zu induzieren. Andererseits habe ich keine gute Vorstellung davon, wie die Schrittgröße ausgewählt wird. Gibt es noch andere Richtlinien, außer zu versuchen, die aktuelle Schichtgröße zu komprimieren oder ein größeres Empfangsfeld für ein Neuron zu erreichen? Kennt jemand gute Papiere oder ähnliches, die dies diskutieren?

dst
quelle

Antworten:

7

Als Einführungstext zu allen von Ihnen genannten Themen würde ich das Deep-Learning-Buch empfehlen . Es bietet einen umfassenden Überblick über das Gebiet. Es erklärt die Rolle, die jeder dieser Parameter spielt.

Meiner Meinung nach ist es sehr hilfreich, einige der beliebtesten Architekturen (resnet, inception, alex-net) zu lesen und die Schlüsselideen zu extrahieren, die zu den Entwurfsentscheidungen führen. Nach dem Lesen des oben genannten Buches.

Im Lehrplan der Vorlesungen, auf die Sie sich beziehen, wird ausführlich erklärt, wie die Faltungsschicht eine große Anzahl von Parametern (Gewichte, Verzerrungen) und Neuronen hinzufügt. Sobald diese Ebene trainiert ist, kann sie Bedeutungsmuster aus dem Bild extrahieren. Für untere Schichten sehen diese Filter wie Kantenextraktoren aus. Für höhere Schichten werden diese primitiven Formen kombiniert, um komplexere Formen zu beschreiben. Diese Filter beinhalten eine große Anzahl von Parametern und ein großes Problem beim Entwurf tiefer Netzwerke, wie komplexe Formen beschrieben und dennoch die Anzahl von Parametern reduziert werden können.

Da benachbarte Pixel stark korreliert sind (insbesondere in den untersten Schichten), ist es sinnvoll, die Größe der Ausgabe durch Unterabtastung (Pooling) der Filterantwort zu reduzieren. Je weiter zwei Pixel voneinander entfernt sind, desto weniger korreliert. Daher führt ein großer Schritt in der Pooling-Schicht zu einem hohen Informationsverlust. Grob gesagt. Ein Schritt von 2 und eine Kernelgröße von 2x2 für die Pooling-Schicht sind eine häufige Wahl.

Ein ausgefeilterer Ansatz ist das Inception-Netzwerk ( mit Faltungen tiefer gehen ), bei dem die Idee darin besteht, die Sparsamkeit zu erhöhen, aber dennoch eine höhere Genauigkeit zu erzielen, indem die Anzahl der Parameter in einer Faltungsschicht gegen ein Inception-Modul gegen tiefere Netzwerke ausgetauscht wird.

Ein schönes Papier, das strukturiert und systematisch Hinweise auf aktuelle Architekturen und die Rolle einiger Entwurfsdimensionen gibt, ist SqueezeNet: Genauigkeit auf AlexNet-Ebene mit 50x weniger Parametern und einer Modellgröße von <0,5 MB . Es baut auf Ideen auf, die in den zuvor genannten Modellen eingeführt wurden.

jpmuc
quelle
1

Wenn Sie überlegen, im Laufe der Lernzeit besser zu lernen, möchte ich diese Kernel- und Schrittgrößen vorschlagen.

Die Filtergröße hängt meiner Meinung nach von Ihren Bildeigenschaften ab. Beispielsweise ist eine große Anzahl von Pixeln erforderlich, damit das Netzwerk das Objekt erkennt. Sie können größere Filter verwenden. Wenn Objekte jedoch etwas klein sind oder lokale Merkmale aufweisen, sollten Sie kleinere Filter im Verhältnis zu Ihrer Eingabebildgröße anwenden.

Für die Schrittgröße wäre ein kleiner Schritt für mich besser, um die feineren Details des Eingabebildes zu erfassen.

Für mich besteht der Vorteil des Pooling darin, dass die schärfsten Merkmale eines Bildes extrahiert werden. Im Allgemeinen sehen die schärfsten Merkmale wie die beste Darstellung eines Bildes auf niedrigerer Ebene aus.

Cloud Cho
quelle