【深度强化学习】确定性策略梯度算法 DDPG

news/2024/5/19 1:39:52 标签: 强化学习

前面讲到如 REINFORCE,Actor-Critic,TRPO,PPO 等算法,它们都是随机性策略梯度算法(Stochastic policy),在广泛的任务上表现良好,因为这类方法鼓励了算法探索,给出的策略是各个动作的概率分布。

实际上策略梯度方法分为两类:一类是随机性策略梯度算法,另一类是确定性策略梯度算法

确定性策略可能更适合需要精确控制的任务,在这些任务中,任何偏离最佳操作的行为都会对结果产生重大影响(如:下棋)。而随机策略可能更适合涉及不确定性或探索的任务,因为它们允许智能体尝试不同的行动并从其结果中学习。


DDPG 深度确定性策略梯度 Deep Deterministic Policy Gradient

直觉

DQN 挺好的,但是只能离散动作,不能连续动作,关键原因在于 max ⁡ a Q ( S , a ) \max_a Q(S,a) maxaQ(S,a),在无限多的动作下不适用。
解决方法:
max ⁡ a Q ( s , a ) = Q ( s , arg ⁡ max ⁡ a Q ( s , a ) ) → Q ( s , μ θ ( s ) ) \max_a Q(s,a) = Q(s,\arg \max_a Q(s,a)) \to Q(s, \mu_{\theta}(s)) amaxQ(s,a)=Q(s,argamaxQ(s,a))Q(s,μθ(s))
核心思想:既然在连续的时候从众多 a a a 里面选一个使得 Q Q Q 最大的 a a a 这么难,那我就用一个网络直接近似给出这个 a a a,代替这个 max操作,这个网络就叫 μ θ \mu_\theta μθ


图示

实际上是一种 Actor-Critic 方法

在这里插入图片描述
这里策略网络 μ ( s ; θ ) \mu(s;\theta) μ(s;θ)给出的动作 a a a 是确定的,而不是一个分布。


伪代码与解释

在这里插入图片描述

  • 动作 Clip : 在动作选择的时候,clip,因为动作是连续的,是由神经网络给出的,防止爆nan
  • (动作添加噪声 N ( 0 , σ 2 ) \mathcal{N}(0,\sigma^2) N(0,σ2)):探索 or 稳健
  • (动作输入之前批标准化):平衡连续动作量纲
  • 每得到一批数据,分别更新 Critic 、 Actor、慢 Critic、慢 Actor:
    • Critic Q ϕ ( ⋅ , ⋅ ) Q_{\phi}(\cdot,\cdot) Qϕ(,) 更新:利用 ( r , s ′ ) (r,s') (r,s) 计算 TD target,计算的时候都使用 target 参数( θ t a r g e t , ϕ t a r g e t \theta_{target}, \phi_{target} θtarget,ϕtarget) ,TD target 和 Q ( s , a ) Q(s,a) Q(s,a) 计算 TD loss, 最小化,梯度下降。
    • Actor μ θ ( ⋅ ) \mu_\theta(\cdot) μθ() 更新:我们假设 Critic 已经是一个良好的估计,那么就让 θ \theta θ 往能够使得 Critic 满意的方向走(选择使得 Critic 满意的连续动作 a a a),最大化,梯度上升。
    • 慢 Critic 和慢 Actor 更新:用移动平均更新即可(思想:类似于 DQN 目标网络,减少自举法带来的偏差)

DDPG 加特技

TD3:双延时 DDPG(Twin Delayed Deep Deterministic Policy Gradient)

在这里插入图片描述

截断双Q学习:Clipped Double Q-Learning

在这里插入图片描述


实验效果

在这里插入图片描述


变化路线

在这里插入图片描述


http://www.niftyadmin.cn/n/5271152.html

相关文章

jQuery Ajax 缓存

在jQuery中,Ajax请求的默认行为可能会根据浏览器和数据类型的不同而有所差异。通常,对于GET类型的请求,浏览器会缓存响应结果以提高性能。然而,在某些情况下,我们可能不希望使用缓存,特别是在需要获取实时数…

05 动态渲染数据

概述 实际上动态渲染数据&#xff0c;在《使用CDN开发Vue3项目》中就已经学习过了&#xff0c;核心代码如下&#xff1a; <div id"vue-app">{{text}}</div> <script src"https://cdn.staticfile.org/vue/3.0.5/vue.global.js"></sc…

Flink系列之:监控反压

Flink系列之&#xff1a;监控反压 一、反压二、Task 性能指标三、示例四、反压状态 Flink Web 界面提供了一个选项卡来监控正在运行 jobs 的反压行为。 一、反压 如果你看到一个 task 发生 反压警告&#xff08;例如&#xff1a; High&#xff09;&#xff0c;意味着它生产数…

你如何看待“前端已死”

随着人工智能和低代码的崛起&#xff0c;“前端已死”的声音逐渐兴起。前端已死&#xff1f;尊嘟假嘟&#xff1f;快来发表你的看法吧&#xff01; 一、你如何看待“前端已死” 对于Java是否已经死亡以及前端是否已经凉凉&#xff0c;我认为这样的说法是不准确的。 首先&#…

格密码:离散高斯与子高斯分布

高斯分布我们都很熟悉&#xff0c;但在格密码中会用到一种特殊的高斯分布&#xff0c;将其取名离散高斯分布&#xff08;discrete Gaussian)。 一. N维连续高斯分布 给定一个正整数n&#xff0c;代表维度。一个正实数&#xff0c;代表标准差&#xff08;高斯分布的标准差决定着…

87 GB 模型种子,GPT-4 缩小版,超越ChatGPT3.5,多平台在线体验

瞬间爆火的Mixtral 8x7B 大家好&#xff0c;我是老章 最近风头最盛的大模型当属Mistral AI 发布的Mixtral 8x7B了&#xff0c;火爆程度压过Google的Gemini。 缘起是MistralAI二话不说&#xff0c;直接在其推特账号上甩出了一个87GB的种子 随后Mixtral公布了模型的一些细节&am…

计算机入门了解

计算机入门了解 一&#xff0e; 语言方面学习 1. C/C: C是面向过程的语言&#xff0c;C是在C语言的基础上发展起来的语言&#xff0c;他兼容99%的C。C比C多了面向对象的开发思想&#xff0c;引入了类class等知识。C/C学习难度大。C更偏向于底层&#xff0c;C/C运行编译速度快…

MetaSploit工具的使用

在命令行输入&#xff1a;msfconsole 启动msf msfconsole 另外的方式 msfdb init msfdb run 查看数据库连接状态 db_status 扫描端口并存储 db_nmap 查看扫描到的数据信息 services MSF常用的模式和命令 搜索模块 search 模块名字 使用模块 use 编号 查看模块使用 sho…