了解教程《Using Keras and Deep Deterministic Policy Gradient to play TORCS》教程的训练阶段

数据挖掘 神经网络 深度学习 张量流 强化学习 训练
2022-01-22 09:46:21

我正在尝试了解Ben Lau 于 2016 年 10 月 11 日发布的教程Using Keras and Deep Deterministic Policy Gradient to play TORCS ( mirror , code ) 的训练阶段。

教程说:

然后使用采样的策略梯度更新参与者策略:

θĴ=θ(s,一种)一种μ(s|θ)θ

代码中对应于:actor.train(states, grads).

actor.train()方法中,我看不到在哪里θ(s,一种)一种乘以μ(s|θ)θ.

我确实读过

self.params_grad = tf.gradients(self.model.output, self.weights, -self.action_gradient)

self.action_gradient对应于哪里θ(s,一种)一种,并且tf.gradients(self.model.output, self.weights)对应于μ(s|θ)θ,但我看不到乘法。

在哪里做θ(s,一种)一种乘以μ(s|θ)θ?

1个回答

查看文档,tf.gradients你会看到第三个参数是用来对第一个参数 wrt 到第二个参数的梯度计算进行加权的。这在文档中被表述为

用户可以提供他们自己的初始 grad_ys 以使用每个 y 的不同初始梯度来计算导数(例如,如果想要为每个 y 中的每个值不同地加权梯度)。

所以它本质上使用grad_ys参数作为元素乘法。

项目代码中的参数更新梯度计算是输入已经计算的值μ(s|θ)θ作为占位符,并将其用于第三个参数。

所以两个梯度因子的乘积发生在 内 tf.gradients