- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
本文为强化学习笔记第二篇,第一篇讲的是Q-learning和DQN 。
就是因为DDPG引入了Actor-Critic模型,所以比DQN多了两个网络,网络名字功能变了一下,其它的就是软更新之类的小改动而已 。
本文初编辑于2024.10.6 。
CSDN主页:https://blog.csdn.net/rvdgdsva 。
博客园主页:https://www.cnblogs.com/hassle 。
博客园本文链接:
真 · 图文无关 。
需要先看:
Deep Reinforcement Learning (DRL) 算法在 PyTorch 中的实现与应用【DDPG部分】【没有在选择一个新的动作的时候,给policy函数返回的动作值增加一个噪音】【critic网络与下面不同】 。
深度强化学习笔记——DDPG原理及实现(pytorch)【DDPG伪代码部分】【这个跟上面的一样没有加噪音】【critic网络与上面不同】 。
【深度强化学习】(4) Actor-Critic 模型解析,附Pytorch完整代码【选看】【Actor-Critic理论部分】 。
如果需要给policy函数返回的动作值增加一个噪音,实现如下 。
def select_action(self, state, noise_std=0.1):
state = torch.FloatTensor(state.reshape(1, -1))
action = self.actor(state).cpu().data.numpy().flatten()
# 添加噪音,上面两个文档的代码都没有这个步骤
noise = np.random.normal(0, noise_std, size=action.shape)
action = action + noise
return action
注意!!!这个图只展示了Critic网络的更新,没有展示Actor网络的更新 。
大白话解释:
1、DDPG实例化为actor,输入state输出action 2、DDPG实例化为actor_target 3、DDPG实例化为critic_target,输入next_state和actor_target(next_state)经DQN计算输出target_Q 4、DDPG实例化为critic,输入state和action输出current_Q,输入state和actor(state)【这个参数需要注意,不是action】经负均值计算输出actor_loss 。
5、current_Q 和target_Q进行critic的参数更新 6、actor_loss进行actor的参数更新 。
action实际上是batch_action,state实际上是batch_state,而batch_action != actor(batch_state) 。
因为actor是频繁更新的,而采样是随机采样,不是所有batch_action都能随着actor的更新而同步更新 。
Critic网络的更新是一发而动全身的,相比于Actor网络的更新要复杂要重要许多 。
Actor和Critic的角色:
更新逻辑:
个人理解:
DQN算法是将q_network中的参数每n轮一次复制到target_network里面 。
DDPG使用系数\(\tau\)来更新参数,将学习到的参数更加soft地拷贝给目标网络 。
DDPG采用了actor-critic网络,所以比DQN多了两个网络 。
最后此篇关于强化学习算法笔记之【DDPG算法】的文章就讲到这里了,如果你想了解更多关于强化学习算法笔记之【DDPG算法】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
下面的脚本 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
我是一名优秀的程序员,十分优秀!