Warum sollte die Initialisierung von Gewichten und Bias bei 0 gewählt werden?

12

Ich lese das:

Um unser neuronales Netzwerk zu trainieren, werden wir jeden Parameter W (l) ijWij (l) und jeden b (l) ibi (l) auf einen kleinen Zufallswert nahe Null initialisieren (sagen wir gemäß einem Normalen (0, ϵ2) Normalen (0)) , ϵ2) Verteilung für einige kleine ϵϵ, sagen wir 0,01)

von Stanford Deep Learning-Tutorials im siebten Absatz des Backpropagation-Algorithmus

Was ich nicht verstehe, ist, warum die Initialisierung des Gewichts oder der Vorspannung bei 0 liegen sollte ?

cinqS
quelle

Antworten:

11

Unter der Annahme einer ziemlich vernünftigen Datennormalisierung sollte die Erwartung der Gewichte Null sein oder nahe daran liegen. Es kann daher sinnvoll sein, alle anfänglichen Gewichte auf Null zu setzen, da ein positives anfängliches Gewicht noch weiter gehen muss, wenn es tatsächlich ein negatives Gewicht sein sollte, und umgekehrt. Dies funktioniert jedoch nicht. Wenn alle Gewichte gleich sind, haben sie alle den gleichen Fehler und das Modell lernt nichts - es gibt keine Quelle für Asymmetrie zwischen den Neuronen.

Stattdessen könnten wir die Gewichte sehr nahe an Null halten, sie jedoch durch Initialisieren auf kleine Zahlen ungleich Null unterscheiden. Dies wird in dem von Ihnen verknüpften Lernprogramm vorgeschlagen. Es hat den gleichen Vorteil der Nullpunktinitialisierung, da es in der Nähe des 'Best Guess'-Erwartungswerts liegt, aber die Symmetrie wurde auch so weit unterbrochen, dass der Algorithmus funktioniert.

Dieser Ansatz weist zusätzliche Probleme auf. Es ist nicht unbedingt richtig, dass kleinere Zahlen besser funktionieren, insbesondere wenn das neuronale Netzwerk tief ist. Die in Backpropagation berechneten Gradienten sind proportional zu den Gewichten; sehr kleine gewichte führen zu sehr kleinen steigungen und können dazu führen, dass das netzwerk viel, viel länger trainiert oder nie fertiggestellt wird.

sqrt(d)d[-1d,1d]

Eumenedies
quelle
3

Wenn Sie den Wert auf 0 setzen, weisen alle denselben Fehler auf, sodass durch backprop alle gleich sind. Daher sollten Sie eine zufällige Initialisierung haben.

Warum um 0? Ich denke, dieser Beitrag kann es gut beantworten: /stats/47590/what-are-good-initial-weights-in-a-neural-network

Landmeister
quelle