この質問は、DDPGに関するディープマインドペーパー(https://arxiv.org/pdf/1509.02971v5.pdf)に関するものです。
私が見たほとんどの(すべて?)実装のDDPGアルゴリズムは、、ここではアクターネットワークのパラメーターを表し、はアクターネットワークを表し、は批評家ネットワークを表し、は状態を表します入力。これを式1と呼びます。
論文に示されている式1は、チェーンルールをことで得られます。これにより、。
私の質問は、auto-gradソフトウェアパッケージ(Theano / Tensorflow / Torch / etc)を使用して、 wrt出力の勾配を直接計算できなかった理由があるのですか?何らかの理由で、すべての実装は、最初に wrtの出力の勾配を計算してから、チェーンルールに従って wrtからへ勾配を乗算します。彼らがこれを行う理由がわかりません- 代わりに wrt勾配を直接計算しないのはなぜですか?これができない理由はありますか?つまり、ほとんどの更新がこれを行うように見えるのはなぜですか。
Q_grad = gradients( Q(s, mu(s|theta)), mu(s|theta) )
mu_grad = gradients( mu(s|theta), theta )
J_grad = Q_grad * mu_grad
これの代わりに:
J_grad = gradients( Q(s, mu(s|theta)), theta )
「勾配」への最初の入力は、区別したい関数であり、2番目の入力は、区別する対象です。
明確にするために、が方程式1とは異なる更新である理由はわかりません。連鎖ルールをですが、ある種の繊細さを見逃さないようにしたいと思います。