Gradienten-Clipping beim Training tiefer neuronaler Netze

10

Wann möchte man beim Training eines RNN oder CNN ein Gradienten-Clipping durchführen? Letzteres interessiert mich besonders. Was wäre ein guter Startwert für das Abschneiden? (es kann natürlich abgestimmt werden)

pir
quelle

Antworten:

4

Sie möchten ein Gradienten-Clipping durchführen, wenn Sie das Problem haben, dass Gradienten verschwinden oder Gradienten explodieren. Für beide Szenarien gibt es jedoch bessere Lösungen:

  • Ein explodierender Gradient tritt auf, wenn der Gradient zu groß wird und Sie einen numerischen Überlauf erhalten. Dies kann leicht behoben werden, indem die Netzwerkgewichte auf kleinere Werte initialisiert werden. Wenn dies nicht funktioniert, liegt wahrscheinlich ein Fehler im Code vor.

  • Ein verschwindender Gradient tritt auf, wenn die Optimierung in einem Sattelpunkt stecken bleibt. Der Gradient wird zu klein, als dass die Optimierung fortschreiten könnte. Dies kann durch Verwendung eines Gradientenabfalls mit Impuls oder RMS-Stütze oder beidem (auch als Adam-Optimierer bekannt) behoben werden.

Die Startwerte für die Obergrenze des Gradientenbeschneidens sind kleiner als die größte Zahl, die die Variable annehmen kann. Für die Untergrenze würde ich sagen, dass es problemspezifisch ist, aber vielleicht mit etwas wie 1e-10 beginnen.

Miguel
quelle
1
Ich bin nicht sicher, ob der Kontext dieser Antwort RNNs ausschließen soll, aber wenn dies nicht der Fall ist , sind beide vorgeschlagenen Lösungen nicht besser als das Abschneiden von Gradienten, insbesondere im Fall von RNNs.
Alex R.
Tut mir leid, ich habe mehr im Zusammenhang mit CNNs gedacht, zögern Sie nicht zu bearbeiten
Miguel