Diese Frage bezieht sich auf das Deepmind-Papier zu DDPG: https://arxiv.org/pdf/1509.02971v5.pdf .
Die meisten (alle?) Implementierungen des DDPG-Algorithmus, die ich gesehen habe, berechnen die Gradientenaktualisierung für das Akteursnetzwerk durch , wo stellt die Parameter des Akteursnetzwerks dar, repräsentiert das Akteursnetzwerk, repräsentiert das Kritikernetzwerk und repräsentiert die Zustandseingabe. Ich werde diese Gleichung 1 nennen.
Gleichung 1 wird, wie in der Veröffentlichung gezeigt, durch Anwenden der Kettenregel auf abgeleitet . Das gibt.
Meine Frage ist, ob ich mit einem Auto-Grad-Softwarepaket (Theano / Tensorflow / Torch / etc) einen Grund habe, warum ich nicht einfach den Gradienten der Ausgabe von berechnen konnte wrt direkt? Aus irgendeinem Grund scheinen alle Implementierungen zuerst den Gradienten der Ausgabe von zu berechnen wrt und multiplizieren Sie es dann mit dem Gradienten von wrt zu gemäß der Kettenregel. Ich verstehe nicht, warum sie das tun - warum nicht einfach den Gradienten von direkt berechnen wrt stattdessen? Gibt es einen Grund, warum Sie dies nicht tun können? Dh warum scheinen die meisten Updates dies zu tun:
Q_grad = gradients( Q(s, mu(s|theta)), mu(s|theta) )
mu_grad = gradients( mu(s|theta), theta )
J_grad = Q_grad * mu_grad
An Stelle von:
J_grad = gradients( Q(s, mu(s|theta)), theta )
Wobei die erste Eingabe für "Farbverläufe" die Funktion ist, die Sie unterscheiden möchten, und die zweite Eingabe die Funktion ist, in Bezug auf die Sie unterscheiden möchten.
Um klar zu sein, ich sehe keinen Grund warum ist eine andere Aktualisierung als Gleichung 1, da Gleichung 1 buchstäblich durch Anwenden der Kettenregel auf abgeleitet wird , aber ich möchte sicherstellen, dass mir keine Subtilität fehlt.