Keras DDPG(深层确定性策略梯度),参与者如何更新?
我目前正在尝试在Keras中实现DDPG。我知道如何更新批评家网络(正常的DQN算法),但我目前一直在更新演员网络,它使用以下等式: 因此,为了将参与者网络wrt的损失减少到其权重dJ/dtheta,它使用链式规则来获得dQ/da(来自评论网络)*da/dtheta(来自参与者网络)Keras DDPG(深层确定性策略梯度),参与者如何更新?,keras,reinforcement-learning,Keras,Reinforcement Learning,我目前正在尝试在Keras中实现DDPG。我知道如何更新批评家网络(正常的DQN算法),但我目前一直在更新演员网络,它使用以下等式: 因此,为了将参与者网络wrt的损失减少到其权重dJ/dtheta,它使用链式规则来获得dQ/da(来自评论网络)*da/dtheta(来自参与者网络) 这看起来不错,但我很难理解如何从这两个网络中导出梯度。有人能给我解释一下这一部分吗?主要的直觉是,在这里,J是你想要最大化而不是最小化的东西。因此,我们可以称之为目标函数,而不是损失函数。方程式简化为: dJ/d
这看起来不错,但我很难理解如何从这两个网络中导出梯度。有人能给我解释一下这一部分吗?主要的直觉是,在这里,J是你想要最大化而不是最小化的东西。因此,我们可以称之为目标函数,而不是损失函数。方程式简化为: dJ/dTheta=dQ/da*da/dTheta=dQ/dTheta 这意味着你想改变参数θ来改变Q。因为在RL中,我们想最大化Q,对于这部分,我们想做梯度上升。要做到这一点,您只需执行梯度下降,除了将梯度作为负值输入 要导出渐变,请执行以下操作:
j / batch size
我希望这是有意义的!我也很难理解这个概念,老实说,我在某些方面还有些模糊。如果我能澄清任何事情,请告诉我 它从两个梯度方法返回“None”。我们应该将值传递给该函数还是需要传递一些显式表达式?嗨,Roberto,这可能取决于您使用的Tensorflow的版本。但要传递的参数不是值,它们是DDPG中使用的神经网络的可训练参数(更具体地说,是在线确定性策略梯度网络)。在指定可训练参数后,Tensorflow将对每个参数的损失进行导数,并给出损失函数梯度。如何将两个不同维数的向量相乘?通常,dQ/dA和dA/dTheta是不同的