深度强化学习主流算法介绍(二):DPG系列

2023-11-15

之前的文章可以看这里

深度强化学习主流算法介绍(一):DQN系列

相关论文在这里

图片

开始介绍DPG之前,先回顾下DQN系列

DQN直接训练一个Q Network 去估计每个离散动作的Q值,使用时选择Q值大的动作去执行(贪婪策略)

DQN可以处理每个离散的动作,对于连续动作空间上,虽然可以细分步长转化为更多的离散动作来做,但效果不好且训练成本倍增,由此学者们想到了Policy Gradient 确定策略梯度。

一、PG Policy Gradient

在这里插入图片描述

策略梯度算法是一种更为直接的方法,它让神经网络直接输出策略函数 π(s),即在状态s下应该执行何种动作。对于非确定性策略,输出的是这种状态下执行各种动作的概率值,即如下的条件概率

图片

对于连续性动作来说,一般使用随机高斯策略,网络的输入是智能体当前状态,网络的输出的高斯策略的均值和标准差,网络是一个拟合网络。

无论是连续动作还是离散动作,在使用PG时,必须先弄清下面公式,离散动作和连续动作最大的不同就在于

图片

连续动作PG算法网络模型如下

在这里插入图片描述

二、DPG Deterministic Policy Gradient Algorithms确定性策略梯度算法

DPG是最早的一篇文章,主要从理论的角度提出了一种deterministic、off-policy的policy gradient算法,并给出了policy gradient的计算公式和参数更新方法。

DQN在DPG后一年发表,主要是解决了用神经网络拟合Q函数(也就是action-value函数)导致的训练不稳定的问题。在DQN出现之前,神经网络被认为是不适合做Q函数的近似的,而DQN则使得这个“不可能”成为了现实。

在这两个work的基础上,DDPG结合了DPG和DQN,也就是将DQN中用来拟合Q函数的神经网络用在了DPG的框架中,并加入了batch normalization的trick,形成了一套真正可用的、基于深度神经网络的(这也是DDPG名字中Deep的来源)的DPG算法。

在这里插入图片描述

图片

相对于stochastic function随机函数,用deterministic function确定函数表示policy有其优点和缺点。

优点就是,从理论上可以证明,deterministic policy的梯度就是Q函数梯度的期望,这使得deterministic方法在计算上比stochastic方法更高效;

但缺点也很明显,对于每个state,下一步的action是确定的。这就导致只能做exploitation而不能做exploration。

这可能也是为什么policy gradient一开始就采用stochastic算法的原因。为了解决不能做exploration的问题,DPG采用了off-policy的方法。也就是说,采样的policy和待优化的policy是不同的:其中采样的policy是stochastic的,而待优化的policy是deterministic的。采样policy的随机性保证了充分的exploration。

详细地说DPG公式如下

图片

图片

一句话说就是:用确定性的策略来选择每次的动作,即给定当前状态可以通过函数确定该做什么动作

三、AC 行动者评论家(Actor-Critic)框架

图片

图片

有一点像生成对抗网络GAN的感觉,对抗网络和强化学习的AC框架,都是采用两个网络(Adversarial hebavior)的双层优化算法。

AC框架 在每次actor做完动作后,critic对其进行评价并引导改进方向,两边同时都在学习

四、soft target update(软更新)

算是一个技巧,在更新参数的时候,不是同步更新(这样训练不稳定),也不是像DQN那样设置时间间隔更新,而是每步以小步长进行更新,称为软更新。

图片

五、DDPG (Deep DPG) 深度确定策略梯度

集DPG和DQN之大成者——DDPG

在DQN的loss function中:

图片

有一个求最大value的action的操作。如果action space非常大,甚至是连续的action space(例如实数空间),那么这个求最大的操作是不可能完成的。即使是将连续的space离散化,也会导致非常低的算法效率。而DPG的policy gradient则没有上述的寻找最大化的操作

图片

所以将两者优势结合起来,并运用刚刚提到的AC框架,actor探索,critic修正,既避免了找最大化的过程,能有较强的探索能力。

详细的算法过程如下

图片

图片

DDPG 算法中的 actor 和 critic 都使用两个网络:online network 和 target network。

图片

图片

图片

图片

一句话说就是:结合DQN和DDPG,利用AC框架,actor在确定性策略得到动作的同时,加入噪声保证探索能力,并用critic进行评价修正

六、TD3 Twin Delay DDPG

图片

简而言之就是用两个评论家,选小的作为评价结果,避免Q值高估

七、A3C :Asynchronous Advantage Actor-Critic 异步的优势行动者评论家算法

具体地,A3C 算法利用 CPU 多线程的功能并行、异步地执行多个 agent.

因此在任意时刻,并行 的 agent 都将会经历许多不同的状态,去除了训练 过程中产生的状态转移样本之间的关联性.因此这种低消耗的异步执行方式可以很好地替代经验回放机制. 一个critic多个actor和复制的环境进行交互

降低了随机策略梯度算法估计Q值的难度

缺陷:不是任何时刻 action 都会影响 state的转移

八、A2C Advantage Actor-Critic

A2C是A3C的同步、确定版本;这也是为什么要把A3C的第一个”A“(”异步“)去掉。

在A3C中,每个演员独立地与(保存)全局参数(的服务器)进行交互,因此有时不同线程中的演员将使用不同版本的策略,因此累积更新的方向将不是最优的。

图片

为了解决上述执行策略不一致问题,A2C中引入协调器,在更新全局参数之前等待所有并行的演员完成其工作,那么在下一次迭代中并行的演员将均执行同一策略。同步的梯度更新使得训练过程更加耦合因而有可能使得算法具有更快的收敛速度。

A2C已被证明在能够实现与A3C相同或更好的性能的同时,更有效地利用GPU,并且能够适应更大的批量大小。

总结:

DPG系列是利用基于策略的方法,直接尝试找到当前状态下的最佳策略,并在DDPG中引入AC框架和软更新技巧,这两者在后续的算法中基本算是标配了。

在处理连续动作空间问题的时候,虽然可以细分成离散动作强行用DQN,但还是推荐用现成的连续动作空间的算法。

DDPG算是连续动作的入门算法,如果擅长调参用TD3,不擅长的话可以用后续将要介绍的的PPO或者SAC。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度强化学习主流算法介绍(二):DPG系列 的相关文章

随机推荐

  • Python 对加减乘除分别封装一个函数进行计算,参数是两个数,返回值是计算结果

    1 对加减乘除分别封装一个函数进行计算 参数是两个数 返回值是计算结果 def add x y param x param y return 返回结果 print x y return add 3 4 def sub x y param x
  • 动态菜单/权限管理的实现

    权限管理 序 现在基本上大大小小的系统都由权限分配这一基础功能 不同的用户看到的界面不一样 能够使用的功能也不会尽然相同 所以我要让我的系统做到超级管理员可以看到 操作所有界面 而新闻管理员只能看到新闻管理模块 仓库管理员只能看到仓库管理模
  • 基于openwrt,aria2下载器安装与配置

    迅雷下载不好用 所以用这个下载器aria2 需要安装软件 在可用软件列表中安装aria2和luci app aria2 安装完后有可能需要重启路由器 需要注意的问题 1 aria2只是一个下载工具 并没有图形界面 2 文件下载的位置 在ar
  • 在传统公司干IT是一种什么体验(六)

    不要轻视任何一家传统公司 传统公司能够在激烈的竞争中活下来 都有自己的绝活 表哥语录 表哥虽然经常吐槽自己的公司 但是大部分都是对传统公司的文化和风格的不适应 任何一家传统公司 能够在长达十几年甚至几十年的市场竞争中活下来 一定有自己的独门
  • 数据库开发之MySql(下)(多表查询)

    多表查询 介绍 多表查询就是指从多张表中查询数据 笛卡尔积 笛卡尔乘积是指在数学中 两个集合A集合 和 B集合的所有组合情况 在多表查询时 需要消除无效的笛卡尔积 怎么做多表查询的需求 要查询的数据涉及到哪些表 找出关联条件 外键 主键 其
  • STM32---独立看门狗

    文章目录 前言 一 看门狗概述 1 背景 2 工作原理 二 使用步骤 1 添加复位检测代码 2 喂狗时间设置 3 喂狗 4 喂狗技巧 三 应用领域 四 源码地址 总结 前言 STM32 独立看门狗 提示 以下是本篇文章正文内容 下面案例可供
  • RuntimeError: expected scalar type Long but found Float

    通过检查打印数据格式 发现数据是 torch int64 将数据转换成 float即可 torch tensor data dtype torch float
  • jwt生成token和验证token以及获取playload的数据,实现token拦截

    jwt实现流程 1 添加依赖
  • 常用性能测试工具介绍

    市面上常用的两款性能测试工具 1 LoadRunner 2 Jmeter Loadrunner 特点 1 工业化的性能测试工具 能支持大量用户 提供详细的报表来提供测试分析的数据 2 支持的协议多 3 使用 C 语言来编写的 优点 1 支持
  • kettle数据迁移

    kettle数据迁移 此处是将mysql数据库中的表修改表名与字段名迁移至另一个mysql数据库 1 kettle安装 1 1 kettle下载 8 3 0 0 371版本 Kettle各个版本下载地址 1 2 下载连接驱动包 mysql驱
  • QT QtableView的使用示例(设置item背景颜色的方法)

    1 创建表格内容 QStandardItemModel m standardItemModel new QStandardItemModel this QStandardItem item new QStandardItem 李四 m st
  • 解析数组里面包含数组的json格式的数据代码

    格式如图所示 操作代码如下 public class ActivityJuankuanInfoPost 获取捐款详情 public static JuankuanInfoMessageActivity applyactivityPost S
  • SmartRefreshLayout 嵌套reycleview 长按排序下拉刷新

    布局文件
  • 如何判断数码管是共阴极还是共阳极

    开发环境 蓝色粗体字为特别注意内容 1 硬件环境 8位数码管 引脚排布如下 方法一 限流电阻 简单 用5V电源接一个限流电阻 假一定个是阳极或是阴极 另一个挨个引脚试就行了 方法二 使用万用表 1 指针表 1 前提是你的万用表最好是用3V以
  • Keil(MDK-ARM)的调试步骤

    Keil MDK ARM 的调试步骤 1 编译 调试 在线调试分类 软件在线调试和硬件在线调试 由于现在硬件成本 较便宜 般我们都使 硬件在线调试 也就是软件直接下载到芯 打开软件 程 gt 编译 gt 下载 gt 调试 如下图1 2 3
  • 计蒜客 挑战难题 第8题:字符串长度

    第8题 字符串长度 内存限制 10000 K 时间限制 1000 ms 在右侧我们给出了一个已经基本完成的程序 读入了一个字符串 调用了一个叫str len的函数来计算这个字符串的长度 并输出 聪明的你应该已经发现了 这个叫str len的
  • Mybaits中collection的用法详解

    作用 在Mybaits中collection标签是用来实现连表查询的 使用的场景 collection的使用场景为1 n和n n两种情况 添加的内容 使用collection的时候需要在类中添加关联集合 查询哪个类就在哪个类中添加 一 第一
  • linux c socket之异步IO

    cpp view plain copy File UDPEchoClient TimeOut c Author 云守护 include
  • 国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

    文章目录 toc 1 开发板硬件资源 2 开发板硬件电路 3 GW1NSR 4C芯片资源 4 关于高云半导体 5 开发工具和资料 6 总结 7 参考资料 8 声明 近两年 国外厂商的FPGA芯片价格飙升 由于价格 货期 出口管制等多方面因素
  • 深度强化学习主流算法介绍(二):DPG系列

    之前的文章可以看这里 深度强化学习主流算法介绍 一 DQN系列 相关论文在这里 开始介绍DPG之前 先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值 使用时选择Q值大的动作去执行 贪婪策略 DQN可以处理每