[Diese Frage wurde auch beim Stapelüberlauf gestellt]
Die Frage in Kürze
Ich untersuche faltungsbedingte neuronale Netze und glaube, dass diese Netze nicht jedes Eingangsneuron (Pixel / Parameter) gleichwertig behandeln. Stellen Sie sich vor, wir haben ein tiefes Netzwerk (viele Ebenen), das auf ein Eingabebild eine Faltung anwendet. Die Neuronen in der "Mitte" des Bildes haben viele einzigartige Wege zu vielen Neuronen der tieferen Schicht, was bedeutet, dass eine kleine Variation in den mittleren Neuronen einen starken Einfluss auf die Ausgabe hat. Die Neuronen am Bildrand haben jedoch nur Wege (oder, abhängig von der genauen Implementierung, in der Größenordnung von ), in denen ihre Informationen durch den Graphen fließen. Es scheint, dass diese "unterrepräsentiert" sind.
Ich mache mir Sorgen darüber, da diese Unterscheidung von Randneuronen exponentiell mit der Tiefe (Anzahl der Schichten) des Netzwerks skaliert . Selbst das Hinzufügen einer Max-Pooling-Schicht kann den exponentiellen Anstieg nicht aufhalten. Nur eine vollständige Verbindung bringt alle Neuronen auf die gleiche Grundlage. Ich bin jedoch nicht davon überzeugt, dass meine Argumentation richtig ist, daher lauten meine Fragen:
- Habe ich recht, dass dieser Effekt in tiefen Faltungsnetzwerken stattfindet?
- Gibt es eine Theorie darüber, wurde sie jemals in der Literatur erwähnt?
- Gibt es Möglichkeiten, diesen Effekt zu überwinden?
Da ich nicht sicher bin, ob dies genügend Informationen enthält, werde ich etwas mehr über die Problemstellung und den Grund, warum ich dies für bedenklich halte, berichten.
Detailliertere Erklärung
Stellen Sie sich vor, wir haben ein tiefes neuronales Netzwerk, das ein Bild als Eingabe verwendet. Angenommen, wir wenden einen Faltungsfilter von Pixel auf das Bild an, wobei wir das Faltungsfenster jedes Mal um Pixel verschieben. Dies bedeutet, dass jedes Neuron in der Eingabe seine Aktivierung an Neuronen in Schicht sendet . Jede dieser Neuronen könnte ihre Aktivierung an einem anderen senden 265 , so dass unser oberstes Neuron in dargestellt ist 265 ^ 2 Ausgangsneuronen, und so weiter.
Dies gilt jedoch nicht für Neuronen an den Rändern: Diese werden möglicherweise nur in einer kleinen Anzahl von Faltungsfenstern dargestellt, sodass sie in der nächsten Schicht (in der Größenordnung von) nur Neuron aktivieren . Tricks wie das Spiegeln entlang der Ränder helfen nicht weiter: Die zu projizierenden Neuronen der zweiten Schicht befinden sich noch an den Rändern, was bedeutet, dass die Neuronen der zweiten Schicht unterrepräsentiert sind (was die Bedeutung von einschränkt) auch unsere Randneuronen). Wie zu sehen ist, skaliert diese Diskrepanz exponentiell mit der Anzahl der Schichten.
Ich habe ein Bild zur Veranschaulichung des Problems erstellt, das hier zu finden ist (ich darf keine Bilder in den Beitrag selbst einfügen). Dieses Netzwerk hat ein Faltungsfenster der Größe . Die Zahlen neben den Neuronen geben die Anzahl der Pfade bis zum tiefsten Neuron an. Das Bild erinnert an Pascals Dreieck .
https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0
Warum ist das ein Problem?
Dieser Effekt scheint auf den ersten Blick kein Problem zu sein: Grundsätzlich sollten sich die Gewichte automatisch so einstellen, dass das Netzwerk seinen Job macht. Außerdem sind die Kanten eines Bildes bei der Bilderkennung sowieso nicht so wichtig. Dieser Effekt macht sich bei alltäglichen Bilderkennungstests möglicherweise nicht bemerkbar, betrifft mich jedoch aus zwei Gründen: 1. Verallgemeinerung auf andere Anwendungen und 2. Probleme bei sehr tiefen Netzwerken.
1. Möglicherweise gibt es andere Anwendungen, wie die Sprach- oder Tonerkennung, bei denen die Neuronen in der Mitte nicht die wichtigsten sind. Das Anwenden von Faltung wird häufig in diesem Bereich durchgeführt, aber ich konnte keine Papiere finden, die den Effekt erwähnen, mit dem ich mich befasse.
2. Sehr tiefe Netzwerke werden einen exponentiell schlechten Effekt der Unterscheidung von Grenzneuronen bemerken , was bedeutet, dass Zentralneuronen um mehrere Größenordnungen überrepräsentiert werden können (stellen Sie sich vor, wir haben Schichten, sodass das obige Beispiel Wege ergeben würde Die zentralen Neuronen können ihre Informationen projizieren. Wenn man die Anzahl der Schichten erhöht, muss man an eine Grenze stoßen, an der Gewichte diesen Effekt nicht wirklich ausgleichen können.
Stellen Sie sich nun vor, wir stören alle Neuronen um eine kleine Menge. Die zentralen Neuronen bewirken, dass sich die Ausgabe im Vergleich zu den Randneuronen um mehrere Größenordnungen stärker ändert. Ich glaube, dass für allgemeine Anwendungen und für sehr tiefe Netzwerke Wege gefunden werden sollten, um mein Problem zu umgehen.