Loss Clipping im Tensor Flow (auf DeepMind's DQN)

Ich versuche meine eigene Implementierung des DQN-Papiers von Deepmind im Tensor Flow und habe Probleme mit dem Abschneiden der Verlustfunktion.

Hier ist ein Auszug aus dem Naturpapier, der den Verlustausschnitt beschreibt:

Wir fanden es auch hilfreich, den Fehlerausdruck aus dem Update auf −1 bis 1 zu beschränken. Da die Absolutwertverlustfunktion | x | hat eine Ableitung von –1 für alle negativen Werte von x und eine Ableitung von 1 für alle positiven Werte von x. Das Abschneiden des quadratischen Fehlers auf –1 bis 1 entspricht der Verwendung einer Absolutwertverlustfunktion für Fehler außerhalb von (- 1,1) Intervall. Diese Form der Fehlerbeschneidung hat die Stabilität des Algorithmus weiter verbesser

(Link zum vollständigen Artikel:http: //www.nature.com/nature/journal/v518/n7540/full/nature14236.htm)

as ich bisher ausprobiert habe, ist die Verwendung von

clipped_loss_vec = tf.clip_by_value(loss, -1, 1)

um den Verlust abzuschneiden, berechne ich zwischen -1 und +1. Der Agent lernt in diesem Fall nicht die richtige Richtlinie. Ich habe die Farbverläufe des Netzwerks ausgedruckt und festgestellt, dass die Farbverläufe plötzlich auf 0 fallen, wenn der Verlust unter -1 fällt!

ein Grund dafür ist, dass der abgeschnittene Verlust eine konstante Funktion in (-inf, -1) U (1, inf) ist, was bedeutet, dass er in diesen Regionen einen Gradienten von Null aufweist. Dies stellt wiederum sicher, dass die Gradienten im gesamten Netzwerk Null sind (unabhängig davon, welches Eingangsbild ich dem Netzwerk zur Verfügung stelle, bleibt der Verlust in der lokalen Umgebung bei -1, da er abgeschnitten wurde).

Also, meine Frage besteht aus zwei Teilen:

Was genau meinte Deepmind im Auszug? Bedeuteten sie, dass der Verlust unter -1 auf -1 und über +1 auf +1 begrenzt wird. Wenn ja, wie haben sie mit den Gradienten umgegangen (d. H. Was ist der ganze Teil über Absolutwertfunktionen?)

Wie sollte ich eine Verlustbegrenzung im Tensorfluss implementieren, sodass die Gradienten außerhalb des begrenzten Bereichs nicht auf Null gehen (aber möglicherweise bei +1 und -1 bleiben)? Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage