DDPG(深度确定性策略梯度),actor是如何更新的?

2023-12-25

我目前正在尝试在 Keras 中实现 DDPG。我知道如何更新批评家网络(正常的 DQN 算法),但我目前坚持更新演员网络,它使用以下方程:

因此,为了减少演员网络对其权重 dJ/dtheta 的损失,它使用链式法则来获取 dQ/da(来自批评者网络)* da/dtheta(来自演员网络)。

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


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

dJ/d'Theta = dQ / da * da / d'Theta = dR/dTheta

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

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

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

    对于 J 中的 j,

     j / batch size
    
  9. 通过首先使用网络参数压缩梯度 J 来应用梯度下降的变体。这可以使用 tf.apply_gradients(zip(J, network_params)) 来完成
  10. 砰,你的演员正在训练其参数以最大化 Q。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDPG(深度确定性策略梯度),actor是如何更新的? 的相关文章

随机推荐

  • 如何为 Python 设置 LIBSVM

    I built libsvm http www csie ntu edu tw cjlin libsvm 在 Mac OS X 上使用 Make tar xzfv libsvm 3 17 tar gz cd libsvm 3 17 make
  • 如何在SQL Server 2008中检查字符串是否是阿拉伯语言

    如何检查字符串是否为阿拉伯语 我必须将语言 ID 列更新为英语或阿拉伯语 IF PATINDEX RTRIM STRING 0 BEGIN SET RETURNVALUE A END ELSE IF PATINDEX A Za z RTRI
  • Android Retrofit 预期为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $ 处为 STRING

    我在 Android 应用程序中使用 okhttp Retrofit 来发出网络请求 在其中一个请求中 我收到此错误 com google gson JsonSyntaxException java lang IllegalStateExc
  • PEG 和 CFG 有什么区别?

    由此维基百科 http en wikipedia org wiki Parsing expression grammar Semantics page 之间的根本区别 上下文无关语法和解析 表达式语法是 PEG 的 选择运算符是有序的 如果
  • Google Analytics - 使用两个帐户进行异步跟踪

    我目前正在同一页面上使用两个不同的跟踪代码来测试 GA 新的异步代码片段 gaq push setAccount UA XXXXXXXX 1 trackPageview b setAccount UA XXXXXXXX 2 b trackP
  • 将闭包更新到 Swift 3 - @escaping

    我已将代码更新到 Xcode 8 0 beta 6 但我陷入了似乎与新的非转义闭包默认值有关的问题 在下面的代码中 Xcode 建议添加 escaping在 前面completion 在下面代码的第一行中 但仍然无法编译并继续循环 EDIT
  • “向‘日期时间’列添加值导致溢出。”

    In the MSDN明确表示 日期参数不能递增到其数据类型范围之外的值 在以下语句中 与日期值相加的数值超出了日期数据类型的范围 返回以下错误消息 向 日期时间 列添加值导致溢出 以及例子 SELECT DATEADD year 2147
  • 将 JSON 对象反序列化为 C# 对象

    我正在尝试使用 RestSharp 读取一些 json 数据 但我在读取 json 对象时遇到一些问题 我有这样的回应 expand html self
  • jquery 函数根本不触发

    真正的愚蠢问题 我想我现在应该已经明白了这一点 但我显然错过了一些东西 我希望我的函数在页面加载后立即触发 以检查变量的值 并根据该值使按钮出现或消失 但我写的函数永远不会被调用 我将该函数放置在 Load 和 document ready
  • 容器管理的事务无法回滚

    我正在玩交易 我配置了 JPA 来处理我的实体 并希望将它们保存在数据库中 问题是 当我的程序抛出runtimeException时 CMT不会回滚 这个 容器事物 背后的想法很难理解 而且记录也很少 transactional 托管事务
  • 如何使用 Java 更有效地反转数字

    我编写了一些代码来反转数字 如下所示 long num 123456789 char arr String valueOf num toCharArray List
  • 当线程被中断/终止时,finally 块可能不会被执行吗?

    In Java 教程 http docs oracle com javase tutorial essential exceptions finally html它说的是try finally 注意 如果在执行 try 或 catch 代码
  • JPA动态持久性单元名称

    我需要一种方法来动态指定 EJB 中的持久性单元 简化示例 我有一个使用多个数据库作为数据存储的应用程序 每个数据存储在结构上都是相同的 根据连接到应用程序的客户端 我需要从中访问数据 特定的数据存储 因此 我想使用相同的EJB 这样业务逻
  • 将私有方法设为最终方法?

    将私有方法设为final有好处吗 这会提高性能吗 我认为 private final 没有多大意义 因为私有方法不能被重写 因此 方法查找应该与使用 Final 时一样高效 将私有辅助方法设置为静态 如果可能 会更好吗 最好用什么 priv
  • 从 Spring Boot 中的基本身份验证中删除 WWW-authenticate 标头

    我正在使用 SpringBoot 设计 REST API 与此同时 我正在构建一个使用该 API 的 SPA 为了安全起见 我选择了基本身份验证 它很容易设置 我现在面临401挑战问题 当我的 SPA 向我的 API 发出请求时 如果身份验
  • 为什么 Python easy_install 无法在我的 Mac 上运行?

    我有一台运行 Python 2 6 的 Mac 当我尝试使用时easy install我收到这条消息 usr bin easy install 2 6 7 UserWarning Module pkg resources was alrea
  • scrapy 不会添加所有项目中不存在的字段?

    我从链接获取字段 a b c 并生成 OrderedDict 但是 如果满足条件 我还不会屈服 首先我对另一个链接发出请求 将 a b c 字典传输到该请求 通过部分 并从第二个链接获取字段 d e 并屈服d e a b c 所以有些项目应
  • 在 CAML 查询中使用部分日期

    我的列表中的标题列仅包含年份 我想做一个视图 只显示过去 3 年的情况 我尝试在列表定义中使用 CAML 查询
  • 从左连接中选择时出现 NullReferenceException

    我正在尝试进行 2 个左连接 我已经在 SQL Server 中测试了查询 它可以工作 但我无法在 linq 中重新创建查询 查询 select Master InvoiceId Consumer ConsumerId ConsumerCh
  • DDPG(深度确定性策略梯度),actor是如何更新的?

    我目前正在尝试在 Keras 中实现 DDPG 我知道如何更新批评家网络 正常的 DQN 算法 但我目前坚持更新演员网络 它使用以下方程 因此 为了减少演员网络对其权重 dJ dtheta 的损失 它使用链式法则来获取 dQ da 来自批评