Was ist der Vorteil der abgeschnittenen Normalverteilung beim Initialisieren von Gewichten in einem neuronalen Netzwerk?


13

Beim Initialisieren von Verbindungsgewichtungen in einem vorwärtsgerichteten neuronalen Netzwerk ist es wichtig, sie zufällig zu initialisieren, um Symmetrien zu vermeiden, die der Lernalgorithmus nicht unterbrechen könnte.

Die Empfehlung, die ich an verschiedenen Stellen gesehen habe (z. B. in TensorFlows MNIST-Tutorial ), ist die Verwendung der abgeschnittenen Normalverteilung unter Verwendung einer Standardabweichung von , wobei die Anzahl der Eingaben in die gegebene Neuronenschicht.1NN

Ich glaube, dass die Standardabweichungsformel sicherstellt, dass sich rückpropagierte Farbverläufe nicht zu schnell auflösen oder verstärken. Aber ich weiß nicht, warum wir eine verkürzte Normalverteilung im Gegensatz zu einer regulären Normalverteilung verwenden. Soll man seltene Ausreißergewichte vermeiden?


Können Sie die Quelle dieser Empfehlung und / oder das direkte Angebot angeben?
Tim

+ Tim Guter Punkt, ich habe einen Link zu einem Beispiel hinzugefügt. Ich glaube, ich habe diese Empfehlung auch in einem Artikel über bewährte Verfahren für neuronale Netze gesehen (kann sie jedoch nicht finden).
MiniQuark

Antworten:


13

Ich denke, es geht um die Sättigung der Neuronen. Denken Sie daran, Sie haben eine Aktivierungsfunktion wie Sigmoid.

Bildbeschreibung hier eingeben

Wenn Ihr Gewichtswert> = 2 oder <= - 2 ist, lernt Ihr Neuron nicht. Wenn Sie also Ihre Normalverteilung abschneiden, tritt dieses Problem (zumindest ab der Initialisierung) aufgrund Ihrer Varianz nicht auf. Ich denke, deshalb ist es im Allgemeinen besser, abgeschnittenes Normal zu verwenden.


Ja, das macht Sinn, danke. Ich denke, Sie meinten "Wert> = 2", nicht 1.
MiniQuark

Ja, es wird angenommen, Wert> = 2
Güngör Basa

4

Die Verwendung der abgeschnittenen Normalverteilung hat den Vorteil, dass aufgrund der verwendeten relu_logits keine "toten Neuronen" generiert werden. Dies wird hier erläutert .

Man sollte Gewichte im Allgemeinen mit einem geringen Rauschanteil initialisieren, um Symmetrie zu brechen und 0-Gradienten zu vermeiden. Da wir ReLU-Neuronen verwenden, empfiehlt es sich auch, sie mit einer leicht positiven anfänglichen Tendenz zu initialisieren, um "tote Neuronen" zu vermeiden.


Ich bin nicht sicher, wie die Verwendung von "truncated_normal" tote Neuronen verhindert: Es wird keine "leicht positive anfängliche Verzerrung" hinzugefügt. Können Sie bitte näher darauf eingehen?
MiniQuark

1
weil die Backpropagation nur "lebende" Neuronen aktualisiert, mit einem Beitrag ungleich Null zur Propagation
Jason
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.