gpt4 book ai didi

keras - DDPG(Deep Deterministic Policy Gradients),actor是如何更新的?

转载 作者:行者123 更新时间:2023-12-03 16:40:35 27 4
gpt4 key购买 nike

我目前正在尝试在 Keras 中实现 DDPG。我知道如何更新评论家网络(普通 DQN 算法),但我目前坚持更新 Actor 网络,它使用等式:

equation

因此,为了将 Actor 网络 wrt 的损失减少到其权重 dJ/dtheta,它使用链式法则来获得 dQ/da(来自评论家网络)* da/dtheta(来自 Actor 网络)。

这看起来不错,但我无法理解如何从这两个网络中推导出梯度。有人可以向我解释这部分吗?

最佳答案

所以主要的直觉是,在这里,J 是你想要最大化而不是最小化的东西。因此,我们可以称其为目标函数而不是损失函数。该等式简化为:

dJ/dTheta = dQ/da * da/dTheta = dQ/dTheta

这意味着你想要改变参数 Theta 来改变 Q。因为在 RL 中,我们想要最大化 Q,对于这部分,我们想要做梯度上升。为此,您只需执行梯度下降,除了将梯度作为负值输入。

要导出梯度,请执行以下操作:

  • 使用在线参与者网络,发送从重放内存中采样的一批状态。 (用于训练评论家的同一批)
  • 计算每个状态的确定性 Action
  • 将用于计算这些 Action 的状态发送到在线评论家网络,以将这些确切状态映射到 Q 值。
  • 根据步骤 2 中计算的 Action 计算 Q 值的梯度。我们可以使用 tf.gradients(Q value, actions) 来执行此操作。现在,我们有 dQ/dA。
  • 再次将状态发送给 Actor 在线评论家并将其映射到 Action 。
  • 再次使用 tf.gradients(a, network_weights) 计算 Action 相对于在线参与者网络权重的梯度。这会给你 dA/dTheta
  • 将 dQ/dA 乘以 -dA/dTheta 得到 梯度上升 .我们剩下目标函数的梯度,即梯度 J
  • 将梯度 J 的所有元素除以批量大小,即

    对于 j 中的 j,
     j / batch size
  • 通过首先使用网络参数压缩梯度 J 来应用梯度下降的变体。这可以使用 tf.apply_gradients(zip(J, network_params))
  • 来完成
  • 呸,你的 Actor 正在训练它的参数以最大化 Q。

  • 我希望这是有道理的!我也很难理解这个概念,说实话,在某些部分仍然有点模糊。如果我能澄清任何事情,请告诉我!

    关于keras - DDPG(Deep Deterministic Policy Gradients),actor是如何更新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496159/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com