Kurz gesagt: Ich möchte verstehen, warum ein neuronales Netzwerk mit einer verborgenen Schicht zuverlässiger auf ein gutes Minimum konvergiert, wenn eine größere Anzahl versteckter Neuronen verwendet wird. Nachfolgend eine detailliertere Erklärung meines Experiments:
Ich arbeite an einem einfachen 2D-XOR-ähnlichen Klassifizierungsbeispiel, um die Auswirkungen der Initialisierung neuronaler Netze besser zu verstehen. Hier ist eine Visualisierung der Daten und der gewünschten Entscheidungsgrenze:
Jeder Blob besteht aus 5000 Datenpunkten. Das neuronale Netzwerk mit minimaler Komplexität zur Lösung dieses Problems ist ein Netzwerk mit einer verborgenen Schicht und zwei versteckten Neuronen. Da diese Architektur die minimal mögliche Anzahl von Parametern hat, um dieses Problem zu lösen (mit einem NN), würde ich naiv erwarten, dass dies auch am einfachsten zu optimieren ist. Dies ist jedoch nicht der Fall.
Ich fand heraus, dass diese Architektur bei zufälliger Initialisierung etwa die Hälfte der Zeit konvergiert, wobei die Konvergenz von den Vorzeichen der Gewichte abhängt. Insbesondere habe ich folgendes Verhalten beobachtet:
w1 = [[1,-1],[-1,1]], w2 = [1,1] --> converges
w1 = [[1,1],[1,1]], w2 = [1,-1] --> converges
w1 = [[1,1],[1,1]], w2 = [1,1] --> finds only linear separation
w1 = [[1,-1],[-1,1]], w2 = [1,-1] --> finds only linear separation
Das macht für mich Sinn. In den beiden letztgenannten Fällen bleibt die Optimierung in suboptimalen lokalen Minima stecken. Wenn jedoch die Anzahl der versteckten Neuronen auf Werte größer als 2 erhöht wird, entwickelt das Netzwerk eine Robustheit gegenüber der Initialisierung und beginnt zuverlässig für zufällige Werte von w1 und w2 zu konvergieren. Sie können immer noch pathologische Beispiele finden, aber mit 4 versteckten Neuronen ist die Wahrscheinlichkeit größer, dass ein "Pfadweg" durch das Netzwerk nicht pathologische Gewichte aufweist. Aber passiert mit dem Rest des Netzwerks, wird es dann einfach nicht verwendet?
Versteht jemand besser, woher diese Robustheit kommt, oder kann er vielleicht Literatur zu diesem Thema anbieten?
Weitere Informationen: Dies tritt in allen von mir untersuchten Trainingseinstellungen / Architekturkonfigurationen auf. Zum Beispiel wurden Aktivierungen = Relu, endgültige_Aktivierung = Sigmoid, Optimierer = Adam, Lernrate = 0,1, Kostenfunktion = Kreuzentropie, Verzerrungen in beiden Schichten verwendet.