verschwindender Gradient und Gradient Null
Es gibt ein bekanntes Problem vanishing gradientbeim BackPropagationTraining von Feedforward Neural Network (FNN)(hier berücksichtigen wir nicht den verschwindenden Gradienten des wiederkehrenden neuronalen Netzwerks).
Ich verstehe nicht, warum verschwindender Gradient nicht den Nullgradienten bedeutet, nämlich die optimale Lösung, die wir wollen? Ich habe eine Antwort gesehen, die besagt, dass der verschwindende Gradient nicht genau der Nullgradient ist, sondern nur bedeutet, dass die Aktualisierung der Parameter sehr langsam ist. Im anständigen Gradienten wollen wir jedoch nicht den exakten Gradienten Null erreichen und wir hören auf, wenn sich der Parameter innerhalb ändert$\epsilon,$ Das ist der gleiche Fall eines verschwindenden Gradienten.
Kann mir jemand eine klare Antwort geben?
Antworten
Ein relativ geringer Gradient bedeutet nicht immer, dass wir einen kritischen Punkt erreicht haben
Ein niedriger Wert in einer Komponente des Gradienten bedeutet nicht unbedingt, dass wir uns einem kritischen Punkt für diesen Parameter nähern. Dies bedeutet, dass sich die Funktion kaum ändert, wenn wir eine Aktualisierung vornehmen, die ausschließlich auf dieser Verlaufskomponente basiert.
Denken Sie zum Beispiel an die Funktion $f(w_1,w_2) = 0.001w_1^2 + w_2^2\rightarrow$ Für einen Punkt mit ähnlichen Koordinaten haben wir eine Gradientenkomponente $1000$ mal größer in der $w_2$ Richtung als in der $w_1$ Richtung.
Wenn wir also in dieser Funktion (die wir als unsere Kostenfunktion interpretieren können) unsere Parameter auf einen ähnlichen Wert initialisieren, führt dies zu einer langsameren Verbesserung der $w_1$ Richtung, wie wir im nächsten Konturdiagramm für eine Lernrate von sehen können $0.5$::
Wie wir sehen können, sogar weit vom Minimum entfernt $(0, 0)^T$, die Verbesserungen an $w_1$ sind sehr klein, daher brauchen wir viele Iterationen, um das Minimum zu erreichen $w_1$. Und es erreichte das Minimum danach$1000$Iterationen! Wenn wir den Algorithmus also mit einem weiter entfernten Punkt initialisiert hätten, hätte er das Minimum überhaupt nicht erreicht.
Jetzt verstehen wir also, dass selbst wenn wir einen niedrigen Wert des Gradienten haben, unsere Parameter nicht unbedingt nahe an dem Wert liegen müssen, der das Minimum (oder einen kritischen Punkt im Allgemeinen) der Kostenfunktion erreicht. Im Gegensatz dazu kann es sein, dass sich ihr Lernprozess stark verlangsamt .
In der Praxis können wir dieses unerwünschte Verhalten durch einige Änderungen an der Gradientenabstiegsmethode vermeiden. Zum Beispiel siehe Adagrad . Bei diesem Verfahren werden die Komponenten des Gradienten basierend auf den aktuellen und vorherigen Werten der Gradientengröße in jeder Richtung normalisiert. Dabei haben wir für jede Dimension eine spezifische Lernrate.
Argumentation mit Backpropagation unter Verwendung eines einfachen NN
Um zu sehen, warum diese kleineren Gradientenkomponenten auch in neuronalen Netzen auftreten können, können wir ein einfaches NN verwenden, das genau wie das nächste nur aus einem Neuron pro Schicht besteht:
Wie wir wissen, ist das Element des Gradienten, das durch die Ableitung der Kostenfunktion gegeben ist, $C$in Bezug auf ein Gewicht $w^l$ der Schicht $l$, in einem vollständig verbundenen NN ist durch den linken Begriff gegeben: $$\frac{\partial C}{\partial w^l}= \delta^l (a^{l-1})^T \,\,\,\,\,\,\,\,\xrightarrow[]{\text{in our simple NN}}\,\,\,\,\,\,\,\, \frac{\partial C}{\partial w^l}=\delta^l a^{l-1}$$
Wo $\delta^l$ ist der Begriff "Fehler" ($\partial C/\partial z^l$), und $a^{l-1}$ stellt den Aktivierungsvektor der Neuronen aus der vorherigen Schicht dar ($l-1$). Beachten Sie, dass wir in dem oben dargestellten einfachen NN keine Transponierung benötigen$a^{l-1}$ da es ein Skalar ist (ein Neuron pro Schicht $\rightarrow$ eine Aktivierung pro Schicht).
In der Regel können wir den "Fehler" -Term der letzten Schicht leicht berechnen ($\delta^L$), aber wir wissen nicht, wie wir es für die vorherigen Ebenen berechnen sollen, also verwenden wir die Backpropagation :
$$\delta^l = \left((w^{l+1})^T\,\,\delta^{l+1}\right)\odot g(z^l) \,\,\,\,\,\,\,\,\xrightarrow[]{\text{in our simple NN}}\,\,\,\,\,\,\,\, \delta^l=w^{l+1} \,g(z^l) \,\,\delta^{l+1} $$
Wo $g(z^l)$ repräsentiert die Aktivierungsfunktion des Neurons unter Berücksichtigung des Begriffs $z^l$.
Also für jede Schicht $l$, wie ist der Begriff $\partial C/ \partial w^l$berechnet?. Unter Verwendung der vorherigen Argumentation für das einfache NN wissen wir jetzt, dass:
$$ \begin{align} \delta^{l} &= w^{l+1} \,g(z^{l}) \,\,\color{blue}{\delta^{l+1}}\\ \\ & = w^{l+1} \,g(z^{l}) \,\,\color{blue}{w^{l+2} \,g(z^{l+1}) \,\,\delta^{l+2}}\\ \\ &= w^{l+1}\color{blue}{w^{l+2}...w^{L}}\,\,g(z^{l})\color{blue}{g(z^{l+1})...g(z^{L})\,\,\delta^L} \end{align} $$ Wo die blauen Begriffe gleich sind $\delta^{l+1}$.
Wie wir bereits gesehen haben, ist dieser Begriff $\delta^l$ multipliziert mit der Aktivierung des Neurons aus der vorherigen Schicht $a^{l-1}$gibt uns unser gewünschtes $\partial C/\partial w^l$::
$$ \frac{\partial C}{\partial w^l} = \delta^{l}a^{l-1} = w^{l+1}\color{blue}{w^{l+2}...w^{L}}\,\,g(z^{l})\color{blue}{g(z^{l+1})...g(z^{L})\,\,\delta^L} \,\,a^{l-1}$$
So können wir jetzt deutlich sehen, dass die Aktualisierungen an einem Gewicht vorgenommen werden $w^l$ hängen direkt von den Werten aller Gewichte und Aktivierungen der nachfolgenden Schichten ab.
Dies bedeutet, dass für jeden Wert von$w^l$ (es könnte sehr weit vom Optimum entfernt sein, wie in der zu Beginn dargestellten Situation), seine Komponente des Gradienten kann gegen Null tendieren, wenn eines der Gewichte oder Aktivierungen, $g(z)$(oder eine Kombination davon) der nachfolgenden Schichten tendieren zu Null. Dieser unerwünschte Effekt wird, wie Sie in der Frage sagten, als verschwindender Gradient bezeichnet .
Jetzt verstehen wir, dass selbst wenn ein Gewicht einen Wert von darstellt $\partial C/\partial w^l$nahe Null bedeutet dies nicht, dass wir einen kritischen Punkt für dieses Gewicht erreicht haben. Darüber hinaus wird das Lernen dieser Parameter erheblich verlangsamt, da ihre Aktualisierungen proportional zu ihrer jeweiligen Komponente des Gradienten sind. So können sie in einem Wert stecken bleiben, der weit von einem Minimum entfernt ist!
Beachten Sie schließlich, dass dieser unerwünschte Effekt mit zunehmender Anzahl nachfolgender Schichten an Bedeutung gewinnen kann.