Gefahr, dass alle Anfangsgewichte in Backpropagation auf Null gesetzt werden


30

Warum ist es gefährlich, Gewichte mit Nullen zu initialisieren? Gibt es ein einfaches Beispiel, das dies demonstriert?


Es scheint, dass das klassische XOR 2-1-Netz ein gutes Beispiel ist, aber ich würde einige theoretische Überlegungen begrüßen.
user8078

1
Eine sehr allgemeine Antwort, die hier angewendet werden kann oder auch nicht, lautet, dass immer dann, wenn neue Gewichte Vielfache alter Gewichte sind, keine Nullgewichte geändert werden können. Das ist fatal für das Lernen.
Nick Cox

Es gibt bereits gute Antworten, warum nicht Gewichte auf Null initialisieren. Wenn Sie dem Link folgen, erfahren Sie mehr über die Auswahl der Anfangsgewichte. staff.itee.uq.edu.au/janetw/cmc/chapters/BackProp/index2.html Hoffe, es hilft anderen Lesern.
doer_uvc

@NickCox Die hier angegebenen Gewichte sind ein Vielfaches der nächsten Gewichtungsebene, und die letzte Ebene ist kein Vielfaches aller anderen Gewichte. Dies gilt hier also nicht.
David Refaeli

Antworten:


21

edit siehe alfas kommentar unten. Ich bin kein Experte für neuronale Netze, daher schiebe ich mich zu ihm.

Mein Verständnis unterscheidet sich von den anderen Antworten, die hier gepostet wurden.

Ich bin mir ziemlich sicher, dass Backpropagation das Hinzufügen zu den vorhandenen Gewichten und nicht das Multiplizieren beinhaltet. Der Betrag, den Sie hinzufügen, wird durch die Delta-Regel festgelegt . Beachten Sie, dass wij nicht auf der rechten Seite der Gleichung angezeigt wird.

Meines Erachtens gibt es mindestens zwei gute Gründe, die anfänglichen Gewichte nicht auf Null zu setzen:

  • Erstens stecken neuronale Netze in der Regel in lokalen Minima fest. Daher ist es eine gute Idee, ihnen viele verschiedene Startwerte zuzuweisen. Sie können das nicht tun, wenn sie alle bei Null beginnen.

  • Zweitens, wenn die Neuronen mit den gleichen Gewichten beginnen, folgen alle Neuronen dem gleichen Gradienten und tun immer dasselbe.


6
"Der Betrag, den Sie hinzufügen, wird durch die Delta-Regel festgelegt. Beachten Sie, dass wij nicht auf der rechten Seite der Gleichung angezeigt wird." - Dies gilt nur für neuronale Netze ohne versteckte Schichten! Sie haben jedoch zwei weitere Punkte erwähnt, die gute Argumente gegen die Initialisierung einer ANN mit gleicher Gewichtung sind.
Alfa

1
Ich denke, dies ist in erster Linie der zweite Grund - z. B. in einem einfachen, vollständig verbundenen Feed-Forward-Netzwerk, wenn jede Schicht mit denselben Gewichten initialisiert wird, folgen, wie Sie vermuten, alle Knoten demselben Pfad und sind redundant. Mein Eindruck ist, dass die meisten Netzwerke mit mehr als einer Handvoll Features nicht mit lokalen Minima zu kämpfen haben. Auch die zufällige Initialisierung allein verhindert nicht, dass das Netzwerk hängen bleibt, aber die wiederholte Verwendung verschiedener zufälliger Initialisierungen zeigt an, ob bei einer bestimmten Iteration ein lokales Minima-Problem aufgetreten ist (ich denke, dies war impliziert, aber nicht explizit).
Tahlor

Der 2. Grund ist falsch? open.wolframcloud.com/env/…
user3180

Unterschiedliche Eingaben
unterbrechen die

Sie addieren die Ableitungen und die Ableitungen sind Multiplikationen, die durch die Kettenregel verwendet werden.
David Refaeli

7

Wenn Sie sich die Gewichte wie in einem Bayesianischen Netzwerk als vorrangig angesehen haben, haben Sie jede Möglichkeit ausgeschlossen, dass diese Eingaben möglicherweise das System beeinflussen könnten. Eine andere Erklärung ist, dass die Rückübertragung die Menge von Gewichten identifiziert, die die gewichtete quadratische Differenz zwischen dem Ziel- und dem beobachteten Wert (E) minimiert. Wie könnte dann ein Algorithmus zur Gradientenabsenkung in Bezug auf die Bestimmung der Richtung des Systems ausgerichtet sein? Sie setzen sich auf einen Sattelpunkt des Parameterraums.


1
Das ist die beste Antwort. Es ist ein Sattelpunkt. Backpropagation-basierte Optimierungsalgorithmen werden normalerweise sofort beendet. Um den Gradienten zu berechnen, multiplizieren wir Deltas mit Gewichten und das Ergebnis ist immer Null.
Alfa

Ich denke, dies ist eine gute Antwort, warum ein bestimmtes Gewicht nicht bei 0 initialisiert werden sollte. Aber die Deltas breiten sich wahrscheinlich immer noch aus - die Gewichte in der Ausgabeebene hängen nicht von den Gewichten ab, sodass wir hier Gewichte ungleich Null haben nach dem ersten update. Nach der nächsten Aktualisierung werden diese Nicht-Null-Gewichte mit einem Delta verwendet, um die Gewichte der vorherigen Ebene anzupassen und so weiter. Ich denke, das größere Problem bei der Initialisierung eines Netzwerks mit allen Nullen ist, dass sie alle das gleiche Gewicht haben, was in Ihrem grundlegenden, vollständig verbundenen Feed-Forward-Netzwerk einem Knoten pro Schicht entspricht.
Tahlor

6

In jeder Iteration Ihres Backpropagation-Algorithmus aktualisieren Sie die Gewichte, indem Sie das vorhandene Gewicht mit einem Delta multiplizieren, das durch Backpropagation bestimmt wird. Wenn der anfängliche Gewichtungswert 0 ist, wird das Gewicht durch Multiplizieren mit einem beliebigen Wert für Delta nicht geändert, was bedeutet, dass jede Iteration keine Auswirkung auf die zu optimierenden Gewichte hat.


2
> Sie aktualisieren die Gewichte, indem Sie das vorhandene Gewicht mit einem Wert multiplizieren, der durch Backpropagation bestimmt wird - ich glaube nicht, es ist nicht nur Multiplikation.
User8078

1
Mein allgemeiner Punkt ist, dass wenn die anfänglichen Gewichte Null sind, sie nach jeder Iteration der Rückausbreitung bei Null bleiben.
Idr

Der durch Backpropagation ermittelte Wert ist ein Delta (siehe zB Originalarbeit "Repräsentationen durch Backpropagationsfehler lernen", Gleichung 7). Die Antwort ist schlecht formuliert, aber nicht ganz falsch.
Alfa

1
Dies ist nur eine falsche Antwort. Die Gewichte werden sich ändern, aber sie werden sich gemeinsam ändern. Dies ist schlecht, da alle versteckten Einheiten während des Trainings identisch sind und kein Lernen stattfinden kann.
Amin Sammara

θ(0)=0,5

2

Es scheint mir, dass ein Grund, warum es schlecht ist, Gewichtungen auf die gleichen Werte (nicht nur auf Null) zu initialisieren, darin besteht, dass dann für eine bestimmte verborgene Ebene alle Knoten in dieser Ebene genau die gleichen Eingaben haben und daher jeweils gleich bleiben würden andere.


1

Die Antwort darauf ist nicht ganz "Local Minima / Maxima".

Wenn Sie mehr als eine ausgeblendete Ebene haben und alle Gewichte Nullen sind, bewirkt eine Änderung von Weight_i keine Änderung der Ausgabe, unabhängig davon, wie groß oder klein sie ist.

Dies liegt daran, dass Delta Weight_i von der nächsten ausgeblendeten Ebene absorbiert wird.

Wenn es keine Änderung in der Ausgabe gibt, gibt es keine Steigung und damit keine Richtung.

Dies hat die gleichen Eigenschaften wie ein lokales Minima / Maxima, liegt jedoch an den 0en, was technisch anders ist


0

Das Hauptproblem bei der Initialisierung aller Gewichte auf Null führt mathematisch dazu, dass entweder die Neuronenwerte Null sind (für Mehrfachschichten) oder das Delta Null wäre. In einem der Kommentare von @alfa in den obigen Antworten wird bereits ein Hinweis gegeben, dass das Produkt aus Gewicht und Delta Null sein muss. Dies würde im Wesentlichen bedeuten, dass sich die Steigung auf der Spitze des Hügels befindet und die Symmetrie nicht durchbrochen werden kann. Zufälligkeit wird diese Symmetrie durchbrechen und man würde das lokale Minimum erreichen. Selbst wenn wir die Gewichte ein wenig stören würden, wären wir auf der Strecke. Referenz: Aus Daten lernen Vorlesung 10.


0

Es ist aus zwei Gründen eine schlechte Idee:

  1. Wenn Sie Sigmoid-Aktivierung haben oder irgendetwas, wo G(0)0 dann bewegen sich die Gewichte "zusammen", wodurch die Kraft der Rückübertragung begrenzt wird, um den gesamten Raum zu durchsuchen, um die optimalen Gewichte zu finden, die den Verlust / die Kosten senken.

  2. Wenn Sie haben Tanh oder ReLu Aktivierung oder irgendetwas wo G(0)=0 dann werden alle Ausgänge 0 sein und die Steigungen für die Gewichte werden immer 0 sein. Daher werden Sie überhaupt kein Lernen haben.

Lassen Sie uns dies demonstrieren (der Einfachheit halber nehme ich eine letzte Ausgabeschicht von 1 Neuron an):

Vorwärtsvorschub : Wenn alle Gewichte Nullen sind, ist die Eingabe für die 2. Ebene für alle Knoten gleich. Die Ausgaben der Knoten sind die gleichen, obwohl sie mit der nächsten Menge von Gewichten multipliziert werden, die 0 ist, und daher sind die Eingaben für die nächste Schicht Null usw. usw. Also alle Eingaben (mit Ausnahme der ersten) Die Ebene, die die tatsächlichen Eingaben annimmt, ist 0, und alle Ausgaben sind gleich (0,5 für Sigmoid-Aktivierung und 0 fürTanh und ReLu Aktivierung).

Rückausbreitung : Untersuchen wir nur die letzte Schicht. Der endgültige Verlust (L) hängt von der endgültigen Ausgabe des Netzwerks ab (einL, wobei L die letzte Ebene bezeichnet), die von der letzten Eingabe vor der Aktivierung abhängt (zL=WLeinL-1), abhängig vom Gewicht der letzten Schicht (WL). Jetzt wollen wir finden:

dWL: =LWL=LeinLeinLzLzLWL
Lein ist die Ableitung der Kostenfunktion, einzist die Ableitung der Aktivierungsfunktion. Unabhängig davon, was ihre (Leineinz) Wert ist, zW entspricht einfach den vorherigen Ebenenausgaben, d. h einL-1, aber da sie alle gleich sind, erhalten Sie das Endergebnis dWList ein Vektor, bei dem alle Elemente gleich sind. Also, wenn Sie aktualisierenWL=WL-αdWLes wird sich in die gleiche Richtung bewegen. Gleiches gilt für die vorherigen Schichten.

Punkt 2 lässt sich daran ablesen, dass einL-1wird gleich Null sein. Daher deindWL Der Vektor ist voller Nullen, und es kann kein Lernen erreicht werden.

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.