- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
问题
我的目标是应用强化学习来预测 3D 环境中物体在已知力作用下的下一个状态(该方法将简化为监督学习、离线学习)。
我的方法的细节
当前状态是表示对象在环境中的位置(3 维)和对象速度(3 维)的向量。起始位置以及起始速度在环境中随机初始化。
Action 是表示从状态 t 到状态 t+1 的移动的向量。
奖励只是预测的下一状态和真实的下一状态(我已经有了目标位置)之间的欧氏距离。
到目前为止我做了什么?
我一直在寻找很多方法来做到这一点。 Deep Deterministic Policy Gradients 适用于连续的 Action 空间,但在我的例子中,我还有一个连续的状态空间。如果您对这种方法感兴趣,请参阅 DeepMind 的原始论文: http://proceedings.mlr.press/v32/silver14.pdf
Actor-Critic 方法应该可行,但它通常(或总是)应用于离散和低维状态空间。
Q-Learning 和 Deep-Q Learning 无法处理高维状态空间,因此即使对状态空间进行离散化,我的配置也无法正常工作。
反向强化学习(模仿学习的一个实例,具有行为克隆和直接策略学习)在找到奖励时近似奖励函数函数比找到策略函数更复杂。有趣的方法,但我还没有看到任何实现,在我的例子中,奖励函数非常简单。是否有我尚未探索过的处理我的配置的方法?
最佳答案
在你的问题中,我相信可能存在很多困惑和误解。
首先,深度确定性策略梯度 (DDPG) 可以肯定地处理连续的状态和 Action 。它之所以如此出名,只是因为它。此外,它是第一个这样做的稳定架构。另外,您链接的论文实际上是 DPG,而不是 DDPG。然而,DDPG 和 DPG 都可以处理连续的状态和 Action ,只是后者不稳定得多。这篇论文实际上是我在 UofA 的“前辈”发表的。这是 DDPG 的链接:https://arxiv.org/pdf/1509.02971.pdf .
Actor-critic RL 不是一种算法,而是一系列 RL 算法,其中 actor 将状态映射到 Action ,而 critic 则“预处理”反馈信号,以便 actor 可以更有效地学习它. DDPG 是 Actor 评论家设置的一个例子。在 DDPG 中,DQN 被用作 critic 来预处理确定性策略梯度(actor)的反馈信号。
回到最初的问题。
我几乎可以保证您可以使用 DDPG 解决您的问题。事实上,DDPG 仍然是仅有的可用于在连续状态、连续 Action 空间中控制代理的算法之一。
另一种可以做到这一点的方法称为信任区域策略优化 (TRPO)。它由 UC Bekelery 团队(以及 OpenAI?)开发。 TRPO 和 DDPG 的基本结构相同(都是 actor-critic),但是训练方式不同。 DDPG 使用目标网络方法来保证收敛和稳定性,而 TRPO 对网络的更新施加 Kullerback-Leibler 散度约束以确保网络的每次更新不会太大(即网络在 t 的最优策略不会相差太大)从 t - 1)。 TRPO 非常难以编码,因此,OpenAI 发表了另一篇名为 Proximal Policy Gradient (PPO) 的论文。该方法类似于TRPO,但更容易实现。
长话短说,我建议您尝试使用 DDPG,因为如果您的任务如您所说的那样简单,那么 DDPG 肯定会奏效。
关于python - 连续状态和 Action 空间的强化学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54051499/
下面的脚本 test.php 旨在放置在我所有 wordpress 站点的特定目录中。它的作用是抓取下面$source地址的文件,解压到它所在的目录下。这就是它的全部意图。 例如,我将在我的中央服务器
我有以下代码,并且在 copyMessages() 处遇到资源注入(inject)问题。 我不知道如何解决这个问题? Abstract: Attackers are able to control t
上个学期我介绍了 Java 中的面向对象编程,下学期我将学习 Java 计算机科学 2,它基本上学习用 Java 实现的各种算法和数据结构,例如链表、二叉树等。 ..我可以通过哪些方法来巩固在面向对象
我很好奇 Fortify 规则集在 Android 应用程序中寻找哪些漏洞。不幸的是,我找不到任何相关文件。我知道他们四处寻找 Java 特定的漏洞以及组件的权限检查——还有其他吗? SQL注入(in
我在 fortify 报告中收到第 4 行的 XML 外部实体注入(inject)安全警告。不知道如何解决它。我对 SOAP、JAXB 和 Marshaller 还很陌生。 1 private
查找以“#PermitRootLogin yes”开头的行并替换为“PermitRootLogin no” 在底部添加一行“AllowUsers user1@test.com” 重新启动 sshd 守
我正在尝试强化我的 session 并找到了下面的代码。我的问题是这一行 isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']。 当我回显比较
当我在 Java 8 中包含以下代码时,我在 fortify 中遇到 Null Dereference 问题: String name = statusList.stream() .map(s
我有一个强化漏洞:跨站点脚本:DOM。 在我的应用程序(asp.net)中,我们动态构建 html 并将其分配给一个 div 标签,它在其中提示问题。 str += '
强化安全运行不合规代码 public static A read(String path) throws IOException, ClassNotFoundException { try (
出于安全考虑,我计划不允许 Azure 服务与 Azure 服务进行通信,而只允许与它正在使用的服务进行通信。 例如,我有一些使用 Azure SQL 数据库的 Web 应用程序。我应该只在 Azur
出于安全考虑,我计划不允许 Azure 服务与 Azure 服务进行通信,而只允许与它正在使用的服务进行通信。 例如,我有一些使用 Azure SQL 数据库的 Web 应用程序。我应该只在 Azur
早上好,我在 Android 项目上使用 native 库,它只是包签名的简单 md5hash,但是我在具有 JNI 功能的 64 位设备上遇到问题: char *getSignatureMd5(JN
我正在开发一个基于 struts 的 Web 应用程序。在该应用程序中,我们从 Jsp 生成并下载 xls 文件。在Jsp文件和web.xml中,我将内容类型设置为“application/vnd.m
我正在处理遗留系统,我们只是用 HP Fortify 扫描了它并得到了JavaScript Hijacking: Vulnerable Framework,代码如下。我能做些什么来确保这一点?我并不完
大家好,我有一个由 fopen 使用产生的强化问题“路径操作”。根据 fortify,我可以实现一个白名单来修复它,所以有我的白名单验证器: white_list.c #define BUFF_WHI
我们正在使用 Fortify 扫描我的 Android 源代码,但我无法解决这个问题: Category: Android Bad Practices: Missing Google Play Ser
我是一名优秀的程序员,十分优秀!