Kann das Problem des verschwindenden Gradienten gelöst werden, indem die Eingabe von tanh mit einem Koeffizienten multipliziert wird?


7

Nach meinem Verständnis tritt das Problem des verschwindenden Gradienten beim Training neuronaler Netze auf, wenn der Gradient jeder Aktivierungsfunktion kleiner als 1 ist, so dass das Produkt dieser Gradienten sehr klein wird, wenn Korrekturen durch viele Schichten zurückpropagiert werden.

Ich weiß, dass es andere Lösungen wie eine Gleichrichteraktivierungsfunktion gibt , aber meine Frage ist, warum wir nicht einfach eine Variation der häufig verwendeten Tanh- Funktion verwenden können.

Wenn die Aktivierungsfunktion von der Form war tanh(nx) dann ist der maximal mögliche Gradient n. Also wennn>1Wir haben keinen Fall mehr, in dem das Produkt der Gradienten notwendigerweise auf 0 geht.

Gibt es einen Grund, warum eine solche Aktivierungsfunktion sonst fehlschlagen würde?


Nun, wenn Sie Mini-Batches - wie jetzt üblich - beim Training von DNN verwenden, wird Wahrscheinlichkeit / Statistik / Zufälligkeit definitiv eintreten. Eine leicht verständliche Quelle hierfür ist Nielsens Buch Neural Networks and Deep Learning. Wie wäre es, wenn Sie mehrere Experimente durchführen, um dies selbst zu überprüfen und zu berichten, was Sie danach hier gefunden haben?
Tuyen

Meta-Frage hier - Ich glaube, ich habe diese Frage jetzt gelöst (siehe meine Antwort unten), aber es gibt immer noch ein Kopfgeld - wenn es eine Option wäre, würde ich sie gerne den Leuten geben, die sie zuvor beantwortet haben, aber Ich frage mich, ob es hier eine Konvention gibt - wenn jemand meine Antwort auffrischen und ausarbeiten möchte, ist er auch dazu willkommen!
Zephyr

1
Es gibt einige Ressourcen, die die Verwendung vorschlagen 1.7159tanh(23x). . . Ich bin immer davon ausgegangen, dass dies eine ähnliche Idee wie bei der Batch-Normalisierung ist - eine nahezu ideale Verteilung von Features in verborgenen Ebenen, einschließlich der Auswirkung auf Farbverläufe.
Neil Slater

@NeilSlater - irgendwelche Referenzen, die Sie sich ansehen würden?
Zephyr

Nicht wirklich, aber suchen Sie nach "1.7159 tanh" und Sie werden sehen, dass es eine häufig verwendete Variante ist
Neil Slater

Antworten:


9

Du hast Recht. Zumn>1Die Multiplikation von Ableitungen geht nicht unbedingt auf Null, da jede Ableitung möglicherweise größer als eins sein kann (bis zun).

Aus praktischen Gründen sollten wir uns jedoch fragen, wie einfach es ist, diese Situation aufrechtzuerhalten (die Multiplikation von Derivaten von Null fernzuhalten). Welche erweist sich als ziemlich hart im Vergleich zu relu, die 1 - Derivat = gibt, speziell jetzt, wo es auch eine Chance Gefälle Explosion .

Einführung

Angenommen, wir haben K Derivate (stehen für Tiefe K) wie folgt multipliziert

g=f(x)x|x=x1f(x)x|x=xK
jeweils mit unterschiedlichen Werten bewertet x1 zu xK. In einem neuronalen Netzwerk jeweilsxi ist eine gewichtete Summe der Ausgaben h aus der vorherigen Schicht, z x=wth.

Wie K erhöht, wollen wir wissen, was es braucht, um das Verschwinden von zu verhindern g. Zum Beispiel für den Fall von

f(x)=tanh(x)
wir können das nicht verhindern, weil jede Ableitung kleiner als eins ist, außer für x=0dh
f(x)x=tanh(x)x=1tanh2(x)<1 for x0
Es gibt jedoch eine neue Hoffnung, die auf Ihrem Vorschlag basiert. Zumf(x)=tanh(nx), Derivat könnte bis gehen n>1dh
f(x)x=tanh(nx)x=n(1tanh2(nx))<n for x0.

Wann sind die Kräfte ausgeglichen?

Hier ist der Kern meiner Analyse:

Wie weit x muss weg von 0 eine Ableitung kleiner als haben 1n aufheben n Welches ist die maximal mögliche Ableitung?

Der Vater x muss weg von 0desto schwieriger ist es, unten ein Derivat herzustellen 1nJe einfacher es ist, zu verhindern, dass die Multiplikation verschwindet. Diese Frage versucht die Spannung zwischen Gut zu analysieren xist nahe Null und schlecht xist weit von Null entfernt. Zum Beispiel, wenn gut und schlechtx's sind ausgeglichen, sie würden eine Situation wie schaffen

g=n×n×1n×n×1n×1n=1.
Im Moment versuche ich optimistisch zu sein, indem ich nicht willkürlich groß betrachte xi's, da kann auch einer von ihnen bringen g willkürlich nahe Null.

Für den Sonderfall von n=1, irgendein |x|>0 führt zu einer Ableitung <1/1=1Daher ist es fast unmöglich, das Gleichgewicht zu halten (zu verhindern g vom Verschwinden) als Tiefe K erhöht sich z

g=0.99×0.9×0.1×0.9950.

Für den allgemeinen Fall von n>1Wir gehen wie folgt vor

tanh(nx)x<1nn(1tanh2(nx))<1n11n2<tanh2(nx)11n2<|tanh(nx)|x>t1(n):=1ntanh1(11n2)or x<t2(n):=t1(n)=1ntanh1(11n2)
So für |x|>t1(n)ist die Ableitung kleiner als 1n. In Bezug auf die Größe kleiner als eins ergibt sich daher die Multiplikation zweier Ableitungen mitx1R und |x2|>t1(n) zum n>1 entspricht einer beliebigen Ableitung für n=1dh
(tanh(nx)x|x=x1R×tanh(nx)x|x=x2,|x2|>t1(n))tanh(x)x|x=z,zR{0}.
Mit anderen Worten,

K erwähnte Paare von Derivaten für n>1 ist so problematisch wie K Derivate für n=1.

Nun, um zu sehen, wie einfach (oder schwer) es ist zu haben |x|>t1(n), lasst uns planen t1(n) und t2(n) (Schwellenwerte sind für eine kontinuierliche aufgetragen n).

Wie Sie sehen können, um eine Ableitung zu haben 1/nwird das größte Intervall bei erreicht n=2, was immer noch eng ist! Dieses Intervall ist[0.658,0.658]Bedeutung für |x|>0.658ist die Ableitung kleiner als 1/2. Hinweis: Ein etwas größeres Intervall ist erreichbar, wennn darf kontinuierlich sein.

Basierend auf dieser Analyse können wir nun zu einer Schlussfolgerung gelangen:

Verhindern gvom Verschwinden, etwa die Hälfte oder mehr vonximuss innerhalb eines Intervalls wie sein [0.658,0.658]

Wenn also ihre Ableitungen mit der anderen Hälfte gepaart sind, würde die Multiplikation jedes Paares bestenfalls über eins liegen (erforderlich, dass neinx ist weit in große Werte), dh

(f(x)x|x=x1R×f(x)x|x=x2[0.658,0.658])>1
In der Praxis dürfte es jedoch mehr als die Hälfte davon gebenxist außerhalb von [0.658,0.658] oder ein paar xist mit großen Werten, die verursachen gauf Null verschwinden. Es gibt auch ein Problem mit zu vielenxist nahe Null, was ist

Zum n>1, zu viele xnahe Null könnte zu einem großen Gefälle führen g1 (möglicherweise bis zu nK), der die Gewichte in größere Werte verschiebt (explodiert) (wt+1=wt+λg), die die xist in größere Werte (xt+1=wt+1tht+1) das Gute umwandeln xsteht auf (sehr) schlechte.

Wie groß ist zu groß?

Hier führe ich eine ähnliche Analyse durch, um zu sehen

Wie weit x muss weg von 0 eine Ableitung kleiner als haben 1nK1 den anderen aufzuheben K1 xNehmen wir an, sie sind sehr nahe bei Null und haben den maximal möglichen Gradienten erreicht?

Um diese Frage zu beantworten, leiten wir die folgende Ungleichung ab

tanh(nx)x<1nK1|x|>1ntanh1(11nK)

das zeigt zum Beispiel für die Tiefe K=50 und n=2, ein Wert außerhalb [9.0,9.0] erzeugt eine Ableitung <1/249. Dieses Ergebnis gibt eine Vorstellung davon, wie einfach es für ein paar istxist um 5-10, um die Mehrheit der guten aufzuheben x's.

Einbahnstraßen-Analogie

Basierend auf den vorherigen Analysen konnte ich eine qualitative Analogie unter Verwendung einer Markov-Kette aus zwei Zuständen liefern [g0] und [g0] das modelliert grob das dynamische Verhalten des Gradienten g wie folgt

Wenn das System in den Status wechselt [g0]Es gibt nicht viel Gefälle, um die Werte wieder in den Zustand zu versetzen (zu ändern) [g0]. Dies ähnelt einer Einbahnstraße, die irgendwann passiert wird, wenn wir ihr genügend Zeit geben (ausreichend große Epochen), da keine Konvergenz des Trainings stattfindet (andernfalls haben wir eine Lösung gefunden, bevor ein verschwindender Gradient auftritt).

Eine weitergehende Analyse des dynamischen Verhaltens des Gradienten wäre möglich, indem eine Simulation an tatsächlichen neuronalen Netzen durchgeführt wird (die möglicherweise von vielen Parametern wie Verlustfunktion, Breite und Tiefe des Netzes und Datenverteilung abhängt) und erstellt wird

  1. Ein Wahrscheinlichkeitsmodell, das anhand einer Gradientenverteilung angibt, wie oft das Verschwinden auftritt g oder eine gemeinsame Verteilung (x, g) oder (w, g), oder
  2. Ein deterministisches Modell (Karte), das angibt, welche Anfangspunkte (Anfangswerte der Gewichte) zum Verschwinden des Gradienten führen. möglicherweise begleitet von Trajektorien von Anfangs- bis Endwerten.

Explodierendes Gradientenproblem

Wir haben den Aspekt "Verschwindender Gradient" von behandelt tanh(nx). Im Gegenteil, für den Aspekt " explodierender Gradient " sollten wir uns Sorgen machen, zu viele zu habenxist nahe Null, was möglicherweise einen Gradienten erzeugen könnte nK, was zu numerischer Instabilität führt. Für diesen Fall eine ähnliche Analyse basierend auf Ungleichheit

tanh(nx)x>1|x|<1ntanh1(11n)
shows that for n=2, around half or more of xi's should be outside of [0.441,0.441] to have g around O(1) away from O(nK). This leaves an even smaller region on RK in which K tanh(nx) functions would work well together (neither vanished, nor exploded); reminding that tanh(x) does not have the exploding gradient problem.


this is a lovely answer - enjoyed reading it! - that said I'm left with one lingering question: as a neural network is trained, and weights and biases vary, is it fair to still see this as a random sample of gradients? - if we limit the starting state to one where the product of gradients is close to unity, is it clear that the network will naturally move away from such a harmonious configuration?
Zephyr

1
@Zephyr Thanks! I think you are pointing toward a probabilistic or dynamical analysis of the gradient. I do not have a well-articulated answer to these questions, nonetheless I have added some directions in this regard.
Esmailian

that's alright - I think this is a beautiful mapping out of one step to the answer - it pays forward :)
Zephyr

3

I have plotted what you are referring in the following picture. As you can see, by employing a coefficient as the input of the tanh function, you are limiting the range of changes of the function with respect to x axis. This has a negative effect. The reason is that although you are making the slope sharper for a very small region in the domain, you are making the differentiation of the other points in the domain more close to zero. The vanishing problem occurs due to the fact that the outputs of neurons go far from the zero and they will be biased to each of the two directions. After that, the differentiation value is so much small and due to begin smaller than one and bigger than zero, it gets even smaller after being multiplied by the other differentiations which are like itself.

enter image description here

Another nice question can be this that you have a coefficient value smaller than one. I've illustrated that In the following picture. In this figure, you are changing the function in a way that you have a differentiation which is larger than before in more points of the domain, but again it is smaller than one. This is not valuable for deep networks.

enter image description here

As I have mentioned, in both cases which you employ coefficient, the derivative would be smaller than one and is not valuable for deep networks.


1
the links don't work
oW_

i understand your argument - and i think it makes good sense - but it's not clear to me that it's the same problem. With the tanh(x) function the product of many gradients always diminishes, while with (for example) tanh(2x) the product of gradients certainly can dissapear, but they can also take any value (up to 2^n where n is the number of hidden layers)
Zephyr

The point is that for tanh(n) it vanishes at 1 but for tanh(2n) it vanishes at 1/2. You are limiting the function. After some steps your neurons would be biased to each of the diretions.
Media

this seems an incomplete argument - with a gradient <1 always a single near zero value in the product ensures that the total is close to zero - when the gradient can be greater than 1 a near-zero value can be offset with multiple >1 values - and argument about the tanh(x) case is based on a hard upper limit, but for a tanh(2x) case we fall back on averages, a much less strong logical statement - I'm not saying the above conclusion is incorrect, just that it requires deeper justification - are you aware of any relevant research or examples?
Zephyr

I didn'r understand what you want to convey.
Media

1

The derivative of tanh(x) is sech(x)^2, where sech(x)=2e^x/(1+e^(2x)). Hence, when you see the gradient decreases to 0, that means x converges to +/- infinity . If you consider tanh(nx), then the derivative is n sech(nx)^2, and sech(nx)^2 converges to 0 faster than n converging to infinity, when x converges to +/- infinity. Therefore, heuristically, multiplying the argument by bigger n will make things worse.


0

Thanks to everyone for their great answers - they've really helped in thinking about this problem - and I recommend anyone interested in the problem having a look - but there's a much simpler route to an answer:

When we replace tanh(x) with tanh(nx) as an activation function we have changed nothing about the performance of the activation function.

All we have done is rescaled all the weights and biases of the network - which we are free to do arbitrarily. This will not affect the performance of the network, but certainly will the initialization. Previously I had stated that it will not affect the training either - but I'm now not sure I can state this with full confidence.


If DNN actually computes the global minimum of the cost function then Yes, probably you are correct. However, in practice, you use gradient descent, and if you use the standard way then you fix a learning rate. Then your claim needs explanation. (Except if you also rescale learning rate and the initial point of the gradient descent process.)
Tuyen

More detail on what I meant: If f(\alpha ) is the cost function provided by the DNN when your activation function is tanh(x), then f(n\alpha ) is the corresponding cost function for the activation function tanh (nx). Here \alpha is the set of parameters of the DNN. Now if you run the (standard) gradient descent method, with learning rate \delta and initial point \alpha _0, then the first two steps are as follows: \alpha _1 = \alpha _0 -\delta n \nabla f(n\alpha _0), and \alpha _2 = \alpha _1-\delta n \nabla f(n\alpha _1). Thus, it is clear that the behaviour of the new cost function ...
Tuyen

... is not the same as that of the old cost function. Except if you only look at global minima, then it is true that your claim is correct. Otherwise, I don't see how your claim is justified, and more explanation is needed. Even if you rescale the learning rate by n, things are still very much different.
Tuyen

this is an interesting argument and I'm looking into it - will unmark this as the answer for the moment - quick question though - how is this not the same as just rescaling the learning rate, \delta?
Zephyr

1
I was indeed getting my derivatives wrong - thanks to Tuyen for their patience!
Zephyr
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.