深度确定性策略梯度 DDPG

深度确定性策略梯度 DDPG

    • 深度确定性策略梯度 DDPG
      • 模型结构
      • 目标函数
      • 算法步骤
      • 适合场景

 


深度确定性策略梯度 DDPG

A2C、A3C 都是在线策略,在与环境交互时,样本参数更新效率低,所以主要是应用在离散空间,计算量没那么大。

DDPG 专用于解决连续空间的问题。

设计思路结合了确定性策略(给定状态下,策略会产生一个特定动作,而不是动作的概率分布)和 演员-评论家 框架。

  • DDPG 类似 DQN(用神经网络去近似Q函数),再用一个 演员-评论家框架 去弥补 DQN 不能处理连续控制性问题的缺点。

适用于处理需要精细控制的问题,例如跑车的运动控制,它在连续动作空间中的确表现更好。

模型结构

DDPG 有 4 个神经网络。

  • 两个神经网络(Actor和Critic)
  • 及它们的对应目标网络(Target Actor和Target Critic)

四个网络可用一个舞台剧的比喻来解释:

  1. 演员(Actor网络):

    • 就像舞台上的主角,这个演员(Actor网络)需要决定在每个场景中应该做什么动作。比如,他可能需要决定是走向左边还是右边,或者是跳起来还是蹲下。
    • 这个网络就像一个深思熟虑的演员,通过学习和实践,慢慢找到在每个场景中的最佳表现方法。
  2. 评论家(Critic网络):

    • 然后有一个评论家坐在观众席中,观看演员的每一个动作,并评价这个动作的好坏。这个评论家(Critic网络)会告诉演员他的表演是否能帮助整个剧情的发展。
    • 这个网络就像一个专业的剧评人,它帮助演员理解哪些动作对整个剧情最有帮助。
  3. 备用演员(Target Actor网络):

    • 还有一个备用演员,他在幕后观察主演员的表演。这个备用演员(Target Actor网络)不会立刻模仿主演员的每一个新动作,而是慢慢地、稳定地学习他的风格。
    • 这个网络确保了学习过程不会因为主演员突然的改变而变得混乱。
  4. 备用评论家(Target Critic网络):

    • 最后,还有一个备用评论家,他也在评价演出,但更多地是基于过去的表演,而不仅仅是当前的表演。这个备用评论家(Target Critic网络)确保评价标准不会因为短期的变化而频繁变动。
    • 这个网络帮助保持评价的一致性和稳定性,确保演员不会因为短期的波动而偏离长期的学习目标。

在DDPG算法中,这四个网络协同工作:演员决定动作,评论家评价这些动作,而备用演员和备用评论家则帮助保持整个学习过程的平稳和连续性。

 
完整流程图:

  1. 环境交互:

    • Agent(Actor和Critic)在环境中执行动作,获得新的状态、奖励和是否结束的信息。这些信息被表示为一个四元组 ( s i , a i , r i , s i + 1 ) (s_i, a_i, r_i, s_{i+1}) (si,ai,ri,si+1)
  2. 经验回放:

    • 这些四元组被存储在经验回放内存中。这样做可以帮助算法学习更稳定,因为它减少了样本间的相关性,并且可以重复使用旧的经验来训练。
  3. 批样本抽取:

    • 从经验回放内存中随机抽取一批四元组来进行学习。这个批量的数据用于更新 Actor 和 Critic 网络。
  4. Critic(评价家):

    • Critic网络使用抽取的样本来评估动作的价值。它有两个组件:
      • Critic网络 ( θ Q ) (θ^Q) (θQ): 上图的在线Q网络,使用当前策略和状态来估计Q值(动作的价值)。
      • 目标Critic网络 ( θ ′ Q ) (θ'^Q) (θQ): 使用相同的输入,这是Critic网络的复制品,参数更新也比在线Critic网络慢,用于生成一个稳定的目标,以便优化在线Critic网络。
  5. Actor(演员):

    • Actor网络决定给定状态下的最优动作。它也有两个组件:
      • Actor网络 ( θ μ ) (θ^μ) (θμ): 上图的在线策略网络,它直接计算当前策略下的动作。
      • 目标Actor网络 ( θ ′ μ ) (θ'^μ) (θμ): 这是Actor网络的复制品,其参数更新比在线Actor网络慢。它用于计算目标Q值,以稳定训练过程。
  6. 优化器:

    • 每个网络(Actor和Critic)都有一个优化器。优化器使用梯度下降方法来调整网络的权重,从而最小化损失函数。
      • Actor优化器:使用策略梯度来更新在线Actor网络的参数,目的是最大化Critic网络预测的Q值。
      • Critic优化器:更新在线Critic网络的参数,目的是最小化预测Q值和目标Q值之间的差异。
  7. 软更新:

    • 在线网络的权重通过软更新的方式被用来逐渐更新目标网络的权重。这样可以保证目标网络的参数变化不会太大,从而保持训练的稳定性。

整个流程是一个循环过程,Actor和Critic网络的参数通过与环境的交互和优化器的更新不断地进行调整,以此来提升策略的性能。通过这种方式,DDPG算法能够让Agent学会在连续的动作空间内做出决策。

目标函数

价值网络目标函数 = 目标值网络(Target-Q)+ 当前值网络(Current-Q),均分误差最小化俩者之间的差异。

  • J t ω = MSE ( r t + γ Q w ( s t + 1 , μ θ ( s t + 1 ) ) ⏟ Target-Q − Q w ( s t , a t ) ⏟ Current-Q ) J_{t}^{\omega}=\text{MSE}(\underbrace{r_{t}+\gamma Q^{w}\left(s_{t+1},\mu_{\theta}\left(s_{t+1}\right)\right)}_{\text{Target-Q}}-\underbrace{Q^{w}\left(s_{t},a_{t}\right)}_{\text{Current-Q}}) Jtω=MSE(Target-Q rt+γQw(st+1,μθ(st+1))Current-Q Qw(st,at))

DDPG 使用了目标策略网络

J t θ = − Q w ( s t , μ θ ( s t ) ) J_{t}^{\theta}=-Q^{w}\left(s_{t},\mu_{\theta}\left(s_{t}\right)\right) Jtθ=Qw(st,μθ(st))

  • Q w ( s t + 1 , μ θ ( s t + 1 ) ) ⏟ μ -Target \underbrace{Q^{w}\left(s_{t+1},\mu_{\theta}\left(s_{t+1}\right)\right)}_{\mu\text{-Target}} μ-Target Qw(st+1,μθ(st+1))

选 Q 函数负值为目标函数,使策略朝着增加 Q 值的方向进化

  • 策略优化的目标是使 Q 函数的值最大化,即选择能带来最高回报的动作。

使用目标策略网络,减少 Q 函数波动,提升训练稳定性和收敛性

  • 目标策略网络是一种技术,用于稳定学习过程。通过使用稍微落后于最新策略的目标策略,可以减少 Q 函数的波动,从而提高训练过程的稳定性和收敛速度。

算法步骤

DDPG的算法步骤:

  1. 初始化网络:在DDPG中,有四个主要的神经网络 - Actor网络和Critic网络及它们各自的目标网络(Target Actor和Target Critic)。Actor网络负责确定给定状态下的动作,而Critic网络则评估这个动作的好坏(即动作的价值)。

  2. 收集经验:算法通过与环境交互来收集经验。在每一步,根据当前状态和Actor网络来选择动作,然后执行这个动作,观察结果(新的状态、奖励等),并将这些信息存储在经验回放缓冲区中。

  3. 随机抽样学习:从经验回放缓冲区中随机抽取一批经验。这种随机抽样可以减少样本间的相关性,增强学习的稳定性。

  4. 更新Critic网络:使用抽样出来的经验来更新Critic网络。Critic网络通过比较预测的价值和实际获得的奖励来调整其参数,使预测更准确。

  5. 更新Actor网络:使用Critic网络的反馈来更新Actor网络。Actor网络的目标是选择能够带来最大预期回报的动作,因此它根据Critic网络的反馈调整自己的策略。

  6. 更新目标网络:为了增加学习过程的稳定性,DDPG使用了目标网络。这些网络的参数定期(而不是每步)更新为主网络的参数。这样可以保证学习过程中的目标保持一定的稳定性。

  7. 重复并迭代:重复上述过程,逐渐改善Actor和Critic网络的性能,直到算法性能达到一定的标准或者迭代次数达到预设的限制。

DDPG的核心思想是使用深度学习方法来逼近一个最优策略,同时通过经验回放和目标网络技术来解决数据相关性和学习过程中的不稳定问题,解决连续动作空间的问题。

适合场景

深度确定性策略梯度(DDPG)算法适用于以下条件:

  1. 连续动作空间:

    • DDPG非常适合于动作空间是连续的问题。例如,控制机器人的关节角度或者车辆的加速度,这些动作可以取任何在一定范围内的值。
  2. 高维状态空间:

    • DDPG可以处理具有高维状态空间的问题,尤其是当状态空间可以通过传感器数据如图像输入到深度神经网络时。
  3. 离散时间决策:

    • DDPG适用于需要在离散时间点做决策的场景,即决策步骤是离散的,虽然动作本身是连续的。
  4. 需要策略梯度的场景:

    • 当问题需要通过策略梯度方法来优化策略时,DDPG是一个适用的选择。这是因为DDPG结合了策略梯度和函数逼近的优点,可以处理高维动作空间。
  5. 长期依赖的任务:

    • 对于需要考虑长期回报的任务,DDPG通过使用时间差分(TD)学习和贝尔曼方程,可以有效地学习策略。
  6. 充分的计算资源:

    • DDPG算法需要足够的计算资源来训练深度神经网络,这通常意味着有高性能的CPU/GPU和足够的内存。
  7. 稳定的环境模型:

    • DDPG算法假设环境是固定不变的,或者变化是相对缓慢的,这样学习到的策略才能在实际环境中有效。
  8. 足够的探索机会:

    • 由于DDPG是一种基于梯度的优化算法,它需要足够的探索机会来避免陷入局部最优。这通常通过噪声添加机制来实现,如在算法中使用

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

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

相关文章

「2023年终总结,这就是我的成长见证」有奖征集活动!

2023年已去,2024年已至。总结这一年的成绩,大家都想到了什么呢?是在工作中取得了长足的进步,还是在生活中喜结良缘;是离梦想挥挥手变得更近,还是在现实的道路上更上一层楼。 一叶荣华春秋意,年月…

封装(static的性质、代码块)

目录 前言: 封装: 包: 什么是包? 导入包中的静态方法: 定义包: 访问修饰限定符: private: default: static: static成员变量: sta…

[UUCTF 2022 新生赛]ez_rce

[UUCTF 2022 新生赛]ez_rce wp 在做这道题时&#xff0c;我参考了这篇博客&#xff1a; https://www.cnblogs.com/bkofyZ/p/17594549.html 认识到了自己的一些不足。 题目代码如下&#xff1a; <?php ## 放弃把&#xff0c;小伙子&#xff0c;你真的不会RCE,何必在此纠…

突显网页设计优势:不可忽视的四项关键要素

网页网站设计要点 一、主题清晰 在明确目标的基础上&#xff0c;完成网站的创意是整体设计方案。定位网站的整体风格和特点&#xff0c;规划网站的组织结构。网站应根据不同的服务对象&#xff08;机构或人员&#xff09;有不同的形式。有些网站只提供简单的文本信息&#xf…

【程序员的自我修养08】精华!!!动态库的由来及其实现原理

绪论 大家好&#xff0c;欢迎来到【程序员的自我修养】专栏。正如其专栏名&#xff0c;本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度&#xff0c;我会尽自己最大的努力&#xff0c;争…

穷举vs暴搜vs深搜vs回溯vs剪枝

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;全排列&#x1f449;&#…

微信小程序使用echarts报错 ReferenceError: Image is not defined 解决

报错 ReferenceError: Image is not defined 在用uni-app开发微信小程序时&#xff0c;使用到了echarts&#xff08;V4.6.0&#xff09;配置项中的icon属性&#xff0c;微信开发者工具报错如下&#xff1a; 定位问题 定位问题到了压缩echarts文件中的new Image 使用非压缩…

【LabVIEW FPGA入门】创建第一个LabVIEW FPGA程序

本教程仅以compactRIO&#xff08;FPGA-RT&#xff09;举例 1.系统配置 1.1软件安装 FPGA-RT 1. LabVIEW Development System (Full or Professional) 2. LabVIEW Real-Time Module 3. LabVIEW FPGA Module 4. NI-RIO drivers 1.2硬件配置 1.使用线缆连接CompactRIO至主机…

解决json.decoder.JSONDecodeError: Extra data: line 1 column 721 (char 720)问题

python中将字符串序反列化成json格式时报错 fn result_json[0].decode(utf-8).strip(\00) json_object json.loads(fn) print(type(json_object))排查了以下原因应该是序列化的字符串全都在一行&#xff0c;json库不能一次性处理这么长的序列

jsavascript

JavaScript获取当前时间 效果图当前时间 效果图 当前时间 var now new Date();var year now.getFullYear();var month (now.getMonth() 1) <10 ? "0"(now.getMonth() 1) : (now.getMonth() 1);var day now.getDate() <10 ? "0"now.getDate() :…

【Linux 内核源码分析】GPIO子系统软件框架

Linux内核的GPIO子系统是用于管理和控制通用输入输出&#xff08;GPIO&#xff09;引脚的软件框架。它提供了一套统一的接口和机制&#xff0c;使开发者能够方便地对GPIO进行配置、读写和中断处理。 主要组件&#xff1a; GPIO框架&#xff1a;提供了一套API和数据结构&#x…

纯血鸿蒙 App 上线,目前已超 150 款!

做鸿蒙应用开发到底学习些啥&#xff1f;鸿蒙生态&#xff0c;正在极速扩大&#xff01; 上月底&#xff0c;包括荣耀 V30、30 系列及 Play 4 Pro 六款老机型&#xff0c;获得了鸿蒙 4.0 正式版更新。 前不久&#xff0c;华为 P30 系列、Mate 20 系列、荣耀 20 系列、荣耀 V2…

第7章 表格和表单

学习目标 掌握创建表格的方法&#xff0c;能够在网页中创建表格。 熟悉表格相关标签的属性&#xff0c;能够运用这些属性设置不同形态的表格。 掌握CSS控制表格样式的方法&#xff0c;能够使用CSS设置表格样式。 了解表单的构成&#xff0c;能够说出表单的构成部分。 掌握创…

C#编程-递归

递归 您知道方法可以调用其他方法。但是,方法也可以调用自己。从函数主体调用函数的过程称为递归。 递归的主要优点是在编写清晰、简短和简单的程序方面非常有用。 要理解此概念,请考虑阶乘函数定义为: n != 1 * 2 * 3 * 4 * ... * n此同阶乘函数可定义为: n! = (n-1)!*…

专业服务新篇章:ToB行业运营达人的能力与策略

又逢年底&#xff0c;这两天冷空气南袭&#xff0c;深圳的天气也转为湿冷&#xff0c;又到了年终总结复盘的时候了&#xff0c;其实这样的天气挺适合做深度的思考&#xff0c;清冷的空气&#xff0c;可以让人保持清醒。 月初市场同事希望我写点东西&#xff0c;题目内容自拟&a…

初始py和py开发工具

前言&#xff1a;上一章节给友友们讲解了如何安装py环境&#xff0c;这一章节就来练习一下如何写py的程序以及注意事项。 目录 一.你好世界 1.因为主播liunx用习惯的缘故所以所有的操作都在liunx上面执行&#xff0c;下面我们来看怎么写py的程序&#xff0c; 1.1首先打开liu…

Windows 7 虚拟机的安装以及解决安装VMVMware tools问题

1.Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 参考&#xff1a;Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 注意&#xff1a;下载官方补丁&#xff1a;Microsoft Update Catalog在智慧联想浏览器中打不开&#xff0c;要在火狐中才能打开下载。 2.win7如…

如何区分接口测试和功能测试

接口测试和功能测试的区别&#xff1a; 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为…

opencv期末练习题(5)附带解析

根据R、G、B的值实时修改图像的颜色 import cv2 import numpy as np""" 滑动块调整图像灰度1. 读取图片&#xff0c;并转为灰度图 2. 定义启动滑块和R、G、B滑块 3. 只有启动滑块的值为1时&#xff0c;拖动R、G、B滑块才生效 4. 根据R、G、B的值实时对修改图片的…

STC进阶开发(三)蜂鸣器、RTC时钟、I2C总线、外部中断、RTC闹钟设置、RTC计时器设置

前言 这一期我们首先学习如何让蜂鸣器响起来&#xff0c;并且如何让蜂鸣器发出简单的歌曲&#xff0c;然后我们介绍RTC时钟&#xff0c;要想明白RTC时钟&#xff0c;我们还需要先介绍I2C总线和外部中断。接下来就开始这一期的学习吧&#xff01; 蜂鸣器 简单介绍 蜂鸣器是一种…