强化学习DDPG:Deep Deterministic Policy Gradient解读

news2024/11/18 2:48:04

1. DDPG

DDPG方法相比于传统的PG算法,主要有三点改进:

A. off-policy策略

传统PG算法一般是采用on-policy方法,其将整体强化学习过程分为多个epoch,在每个epoch完成一次policy模型和value模型更新,同时在每轮epoch都需要根据决策模型重新采样得到该轮的训练样本。

但当同环境交互代价比较高时,这种on-policy的方式效率并不好。因此DDPG提出了一种off-policy的方法,其可以利用历史的样本,假设对于历史样本\{s,a,r,s'\},DDPG的off-policy策略会重新根据当前target policy重新估计价值。

G(s,a)=r + \gamma Q_{\phi _{targ}}(s', \mu_{\theta_{targ} }(s'))

因此DDPG的对于价值预估模型Q_{\phi }(s,a)目标为,B表示从所有历史样本上随机抽取的Batch

J(\phi )=\sum_{(s,a,r,s')\sim B} [Q_{\phi }(s,a) - (r +\gamma Q_{\phi _{targ}}(s', \mu_{\theta_{targ} }(s'))]^2

而传统on-policy策略的目标为,下式中R(s,a)可以是MC采样后累积收益,D表示当前epoch轮的采样结果。

J(\phi )=\sum_{(s,a,r)\sim D} [Q_{\phi }(s,a) - R(s,a)]^2

B. 更复杂的确定性连续动作策略场景建模

传统PG算法是通过一个动作分布\pi(a|s)来建模运作,这种动作分布一般是离散的,或者将动作建模高斯分布,通过一个神经网络拟合分布均值和标准差两个参数。

DDPG采用一个动作生成网络\mu(s)可以输出确定性且连续的动作值。

C. Target Networks

DDPG的off-policy策略会重新根据当前target policy重新估计价值,因此此处的估计值是通过另一个网络Target Networks进行计算的,主要是为了避免直接采用目标优化网络进行预估时,变化太大而影响效果。

传统的DQN会更隔一段时间,整体同步目标优化网络的参数给Target Network。而DDPG采用的是一种更为平滑的方式,帮助Target Network及时适配目标优化网络的参数。

\theta_{targ}=\rho \theta_{targ} + (1-\rho )\theta \\ \phi_{targ}=\rho \phi_{targ} + (1-\rho )\phi

D. Exploration

DDPG是确定性动作决策,所以为了保证探索,DDPG在采样动作后添加了一个高斯噪声,同时添加了截断来避免不合适的动作值。

a=clip(\mu_{\theta }(s)+\epsilon, a_{low}, a_{high}),\ \varepsilon \sim N

DDPG的算法整体流程

 2. Twin Delayed DDPG

Twin Delayed DDPG又被称为TD3算法,其主要在DDPG的基础上做了两点升级:

A. target policy smoothing

前文提到DDPG的off-policy策略会重新根据当前target policy重新估计价值,这里的target policy生成的动作没有加上噪声探索,因为这里只是用于估计价值,而不是要探索。

而TD3算法却对这里的target policy动作加上了噪声,其主要原因是为了正则化,这个正则化操作平滑了训练中可能会出现某些不正确的动作尖峰。

a'(s'|\mu_{\theta_{targ} })=clip(\mu_{\theta_{targ} }(s')+clip(\epsilon, -c, c), a_{low}, a_{high}),\ \varepsilon \sim N

B. clipped double-Q learning

DDPG是基于Q-learning的,其由于是取最大可能性的某个确定动作,因此可能会带来Maxinum偏差(简单理解为由于预估分布的存在,所以最大值一般都会偏移期望值),这个问题可能通过double Q-learning进行解决。

TD3在DDPG的基础上,应用了double Q-learning思路,引入了两个target价值预估模型,分别生成价值预估,并选择其中最小作为最终的预估值。

G_t(s,a)=r + \gamma \text{Max}_i\ Q_{\phi _{targ,i}}(s', a'(s'|\mu_{\theta_{targ} })),\ i=1,2

同时也存在两个目标价值模型:

J(\phi_i )=\sum_{(s,a,r,s')\sim D} [Q_{\phi_i }(s,a) - G(s,a)]^2,\ i=1,2

但是target决策模型只有一组,其也只根据某个一个目标价值模型优化:

J(\theta)=\sum_{(s)\sim D} Q_{\phi_1 }(s,\mu_\theta(s))

TD3的算法整体流程

3. Soft Actor-Critic

由于DDPG只能产出确定性动作,因此Soft Actor Critic (SAC) 实现产出概率性动作决策 stochastic policy,SAC算法相比于TD3主要有两点不同:

A. entropy regularization

entropy regularization熵正则是SAC最核心的内容,因为SAC实现产出概率性动作决策a'\sim \pi(a'|s'),概率性动作决策主要问题是生成动作概率可能过于分散,因此SAC通过熵正则来避免这种情况。

G_t(s,a)=r + \gamma \text{Min}_i\ [Q_{\phi _{targ,i}}(s', a')+\alpha H(\pi(\cdot |s'))],\ i=1,2\\G_t(s,a)=r + \gamma \text{Min}_i\ [Q_{\phi _{targ,i}}(s', a')-\alpha log(\pi(a'|s'))],\ i=1,2

同时policy模型更新目标也添加了熵正则,但是其把两个目标模型都应用了,这个同TD3是不同。

J(\theta)=\sum_{(s,a,r)\sim D} [\text{Min}_i\ Q_{\phi_i }(s,a_\theta )-\alpha log(\pi(a_\theta|s))],\ i=1,2

B. Exploration

SAC由于其动作决策函数是概率的,所以天然有exploration特性,因此对于动作决策模型其并没有target network。另外通过在训练中控制\alpha也可以控制动作决策模型的exploration特性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java高级语法】(五)字符串操作类String:几乎每天都会用到的String类,你还在踩坑吗?~

Java高级语法详解之字符串操作类String :one: 概念:two: 使用2.1 创建字符串对象2.2 字符串的比较2.3 字符串长度2.4 字符串连接2.5 字符串截取2.6 字符串的查找和替换2.7 字符串的切割和拆分2.8 字符串和其他类型的转换2.9 字符串的格式化2.10 字符串的判断2.11 手动入池2.12 …

202319读书笔记|《春之海终日优哉游哉:谢芜村俳句300》——远山峡谷间樱花绽放,宇宙在其中

202319读书笔记|《春之海终日优哉游哉:谢芜村俳句300》——远山峡谷间樱花绽放,宇宙在其中 与谢芜村,小林一茶,芭蕉,与谢野晶子,俳句都很赞,虽多本书中略有重复,但多多观…

【备战秋招】每日一题:4月15日美团春招第一题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第一题-字符串前缀 在线评测链接:P1235 题目内容 塔子哥是一名优秀的软件工程师,他的公司最近接到了一个新项目,需要在短时间内实现一个新的字符串…

微服务 springcloud 09.整合feign到项目一个子服务中

01.项目结构如下&#xff1a; 02.修改sp04-orderservice项目&#xff0c;添加feign&#xff0c;调用item service和user service 1.sp04-orderservice项目的pom.xml 添加以下依赖: actuator feign hystrix <?xml version"1.0" encoding"UTF-8"?>…

全链路压测演进之迭代式压测

目录 1.背景原因 2.压测流程改进分析 3.迭代式压测流程 4.全流程压测模式演进 5.压测模式对比 6.迭代式压测反馈效果 7.总结 1.背景原因 !! 做系统服务压测都是比较耗时耗人力的&#xff0c;特别是在生产环境上做压测&#xff0c;压测的时间都是在晚上23点后&#xff0c…

Linux之线程安全(上)

文章目录 前言一、预备知识1.线程的ID2.局部存储的验证3.线程的封装 二、线程安全问题1.抢票程序2.问题分析 三、Linux线程互斥1.概念临界资源临界区互斥原子性 2.互斥量概念接口 3.mutex的使用全局锁的使用局部锁的使用 总结 前言 本文从一个模拟生活中的抢票程序的例子引入线…

经典的设计模式22——职责链模式

文章目录 职责链模式 老感觉职责链模式和状态模式有点像&#xff0c;好像都能实现请假流程。百度来一波。 真是巧了&#xff0c;职责链&#xff0c;状态&#xff0c;策略&#xff0c;则三个长得好像。 职责链模式 定义&#xff1a; 使多个对象都有机会处理请求&#xff0c;从…

循环神经网络RNN用于分类任务

RNN是一类拥有隐藏状态&#xff0c;允许以前的输出可用于当前输入的神经网络&#xff0c; 输入一个序列&#xff0c;对于序列中的每个元素与前一个元素的隐藏状态一起作为RNN的输入&#xff0c;通过计算当前的输出和隐藏状态。当前的影藏状态作为下一个单元的输入... RNN的种类…

AMEYA:如何设计好DC-DC电源,注意事项有哪些

DC-DC变换器&#xff08;DC-DC converter&#xff09;是指在直流电路中将一个电压值的电能变为另一个电压值的电能的装置。DC-DC的layout非常重要&#xff0c;会直接影响到产品的稳定性与EMI效果。 DC-DC电源几点经验以及规则 1、处理好反馈环&#xff0c;反馈线不要走肖特基下…

基于JavaWeb的体育赛事平台的设计与实现

摘要 体育是随着社会生产力的发展而产生和发展的&#xff0c;在其漫长的历史中&#xff0c;由于社会、政治和经济发展的影响&#xff0c;其内容、形式、功能和操作方法不断变化。奥运会和世界杯等大型体育赛事代表着体育发展的顶峰&#xff0c;因为它们不仅给组织者带来了巨大…

【考研复习】李春葆新编C语言习题与解析(错误答案订正)持续更新

新编C语言习题与解析 做习题时发现有些错误答案&#xff0c;写篇博客进行改正记录。不对地方欢迎指正&#xff5e; 第二章 C. 其中b的表达形式错误&#xff0c;若加上0x1e2b则正确。所以C错误。 D. e后为整数。指数命名规则&#xff1a;e前有数&#xff0c;后有整数。所以D错…

实验篇(7.2) 15. 站对站安全隧道 - 多条隧道聚合(FortiGate-IPsec) ❀ 远程访问

【简介】虽然隧道冗余可以解决连接问题&#xff0c;但是当大量数据访问或要求访问不能中断时&#xff0c;隧道冗余就力不从心了。这种情况就要用到隧道聚合。但是对宽带的要求也高了&#xff0c;双端都至少需要二条宽带。 实验要求与环境 OldMei集团深圳总部部署了域服务器和ER…

C语言复合类型之结构(struct)篇(结构指针)

结构相关知识总结 什么是结构&#xff1f;结构的声明与简单使用结构的初始化结构中成员变量的访问结构的初始化器结构数组结构数组的声明结构数组的成员标识 结构的嵌套结构指针结构作为参数在函数中传递将结构成员作为参数进行传递将结构地址(指向结构的指针)作为参数进行传递…

AI数字人之语音驱动人脸模型Wav2Lip

1 Wav2Lip模型介绍 2020年&#xff0c;来自印度海德拉巴大学和英国巴斯大学的团队&#xff0c;在ACM MM2020发表了的一篇论文《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild 》&#xff0c;在文章中&#xff0c;他们提出一个叫做Wav2Lip的AI模…

面试题:完败的面试,被虐得体无完肤

经过上一轮的面试&#xff0c;我信心一下子就建立起来了&#xff0c;说巧不巧&#xff0c;前几周正好看到美团校招&#xff0c;想着试一下也不会怎样&#xff0c;就找了学长要了内推码&#xff0c;试着投递了一下&#xff0c;然后就通知周六参加笔试&#xff0c;结果惨不忍睹。…

flv 报错 Unsupported codec in video frame: 12

视频播放器播放 flv 报错 [TransmuxingController] > DemuxException: type CodecUnsupported, info Flv: Unsupported codec in video frame: 12 原因 主要是因为我们的播放器不支持 H.265 视频编码&#xff1b; 解决办法 方法一&#xff1a;将设备端的视频编码改为 …

FPGA实现USB3.0 UVC 相机HDMI视频输出 基于FT602驱动 提供工程源码和QT上位机源码

目录 1、前言2、UVC简介3、FT602芯片解读4、我这儿的 FT601 USB3.0通信方案5、详细设计方案基于FT602的UVC模块详解 6、vivado工程详解7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 目前USB3.0的实现方案很多&#xff0c;但就简单好用的角度而言&#xff0c;FT6…

基于多层感知机MLP的数据预测与误差分析的完整matlab代码分享

多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构。多层感知器(multilayer Perceptron,MLP)是指可以是感知器的人工神经元组成的多个层次。MPL的…

在Windows和Linux系统上,用C语言实现命令行下输入密码回显星号和完全隐藏密码

本篇目录 引子在Windows 上实现在Linux上实现回显星号代码解读运行 完全隐藏运行 引子 在Windows系统上&#xff0c;当我们使用命令行和MySQL进行交互时&#xff0c;第一步就是要输入密码&#xff1a; -p后面的参数紧跟着的就是相应用户的密码。然而这种方式并不安全&#xff…

【数学建模】2019 年全国大学生数学建模竞赛C题全国一等奖获奖论文

2021 年高教社杯全国大学生数学建模竞赛题目 机场的出粗车问题 大多数乘客下飞机后要去市区&#xff08;或周边&#xff09;的目的地&#xff0c;出租车是主要的交通工具之一。国内多数机场都是将送客&#xff08;出发&#xff09;与接客&#xff08;到达&#xff09;通道分开…