联系方式:860122112@qq.com

传统的DQN只适用于离散动作控制,而DDPG和NAF是深度强化学习在连续动作控制上的拓展。

一、存在的问题

DQN是一个面向离散控制的算法,即输出的动作是离散的。对应到Atari 游戏中,只需要几个离散的键盘或手柄按键进行控制。

然而在实际中,控制问题则是连续的,高维的,比如一个具有6个关节的机械臂,每个关节的角度输出是连续值,假设范围是0°~360°,归一化后为(-1,1)。若把每个关节角取值范围离散化,比如精度到0.01,则一个关节有200个取值,那么6个关节共有 2006 200^6个取值,若进一步提升这个精度,取值的数量将成倍增加,而且动作的数量将随着自由度的增加呈指数型增长。所以根本无法用传统的DQN方法解决。

解决方法
使用Policy-Based方法,通过各种策略梯度方法直接优化用深度神经网络参数化表示的策略,即网络的输出就是动作。

二、DDPG

深度确定性策略梯度(Deep Deterministic Policy Gradient, DDPG)算法是Lillicrap 等人利用 DQN 扩展 Q 学习算法的思路对确定性策略梯度(Deterministic Policy Gradient, DPG)方法进行改造,提出的一种基于行动者-评论家(Actor-Critic,AC)框架的算法,该算法可用于解决连续动作空间上的 DRL 问题。

随机性策略和确定性策略:

  • 随机性策略,策略输出的是动作的概率,比如上一篇A3C博客提到的连续动作控制,使用的是一个正态分布对动作进行采样选择,即每个动作都有概率被选到;优点,将探索和改进集成到一个策略中;缺点,需要大量训练数据。
  • 确定性策略,策略输出即是动作;优点,需要采样的数据少,算法效率高;缺点,无法探索环境。

在真实场景下机器人的操控任务中,在线收集并利用大量训练数据会产生十分昂贵的代价, 并且动作连续的特性使得在线抽取批量轨迹的方式无法达到令人满意的覆盖面, 这些问题会导致局部最优解的出现。

然而使用确定性策略无法探索环境,如何解决?
利用off-policy学习方法。off-policy是指采样的策略和改进的策略不是同一个策略。类似于DQN,使用随机策略产生样本存放到经验回放机制中,训练时随机抽取样本,改进的是当前的确定性策略。整个确定性策略的学习框架采用AC的方法。

DDPG公式
在DDPG中,分别使用参数为 θμ \theta^\mu 和 θQ \theta^Q 的深度神经网络来表示确定性策略 a=π(s|θμ) a=\pi(s|\theta^\mu) 和动作值函数 Q(s,a|θQ) Q(s,a|\theta^Q)。其中,策略网络用来更新策略,对应 AC 框架中的行动者;值网络用来逼近状态动作对的值函数, 并提供梯度信息, 对应 AC 框架中的评论家。目标函数被定义为带折扣的总回报:

J(θμ)=Eθμ[r1+γr2+γ2r3+⋯]

J(\theta^\mu)=E_{\theta^\mu}[r_1+\gamma r_2 + \gamma^2 r_3+\cdots]
通过随机梯度法对目标函数进行端对端的优化( 注意,目标是提高总回报 J J)。Silver等人证明了目标函数关于 θμ\theta^\mu 的梯度等价于Q值函数关于 θμ \theta^\mu 的期望梯度:

∂J(θμ)∂θμ=Es[∂Q(s,a|θQ)∂θμ]

\frac{\partial J(\theta^\mu)}{\partial \theta^\mu} = E_s[\frac{\partial Q(s,a|\theta^Q)}{\partial \theta^\mu} ]根据确定性策略 a=π(s|θμ) a=\pi(s|\theta^\mu) 可得:

∂J(θμ)∂θμ=Es[∂Q(s,a|θQ)∂a∂π(s|θμ)∂θμ]

\frac{\partial J(\theta^\mu)}{\partial \theta^\mu} = E_s[\frac{\partial Q(s,a|\theta^Q)}{\partial a} \frac{\partial \pi(s|\theta^\mu)}{\partial\theta^\mu} ]沿着 提升 Q 值的方向更新策略网络的参数。

通过 DQN中更新值网络的方法来更新评论家网络,梯度信息为:

∂L(θQ)∂θQ=Es,a,r,s′∼D[(TargetQ−Q(s,a|θQ))∂Q(s,a|θQ)∂θQ]

\frac{\partial L(\theta^Q)}{\partial \theta^Q}=E_{s,a,r,s'\sim D}[(TargetQ - Q(s,a|\theta^Q))\frac{\partial Q(s,a|\theta^Q)}{\partial \theta^Q}]

TargetQ=r+γQ′(s′,π(s′|θμ′)|θQ′)

TargetQ=r+\gamma Q'(s',\pi(s'|\theta^{\mu'})|\theta^{Q'})

其中 θμ′ \theta^{\mu'} 和 θQ′ \theta^{Q'} 分别表示目标策略网络和目标值网络的参数,用梯度下降方式更新值网络。

算法伪代码

区别于DQN,DQN每隔一定的迭代次数后,将MainNet参数复制给TargetNet;而DDPG中TargetNet的参数每次迭代都以微小量逼近MainNet的参数。

网络训练流程图

实验表明, DDPG 不仅在一系列连续动作空间的任务中表现稳定,而且求得最优解所需要的时间步也远远少于 DQN。与基于值函数的 DRL 方法相比, 基于 AC 框架的深度策略梯度方法优化策略效率更高、 求解速度更快。

DDPG缺点:
不适用于随机环境的场景

三、NAF

Shixiang等人的论文中共有两个算法,第一个是NAF,第二个是基于模型(Model-based)加速的NAF。这里只介绍简单的NAF。

DDPG的问题:
需要训练两个网络即策略网络和值网络

解决方法
归一化优势函数(normalized advantage functions ,NAF)只需要训练一个网络。

NAF公式:
NAF的目的之一是要将深度神经网络Q-Learning应用于连续动作空间,而要用Q-Learing进行训练必须要知道目标Q值(TargetQ)。

和前面博客Dueling-DDQN介绍的dueling net思想类似,动作值函数可以表示为状态值函数 V V 与动作价值函数 AA 的和,即

Q(x,u|θQ)=V(x|θV)+A(x,u|θA)

Q(x,u|\theta^Q)=V(x|\theta^V)+A(x,u|\theta^A)
其中 x x 表示状态State,uu 表示动作Action, θ \theta 是对应的网络参数, A(x,u|θA) A(x,u|\theta^A) 可以看成动作 u u 在状态 xx 下的优势。我们的目的就是要使策略网络输出的动作 u u 所对应的Q值最大。
如果能使 ∀x,uA(x,u|θA)⩽0\forall_{x,u}A(x,u|\theta^A)\leqslant0,则 ∀x,uQ(x,u|θQ)⩽V(x|θV) \forall_{x,u}Q(x,u|\theta^Q)\leqslant V(x|\theta^V)。在状态 x x 下最优的动作 uu 的动作优势函数 A(x,u|θA)=0 A(x,u|\theta^A)=0,所以对应最优动作的值函数 Q(x,u|θQ)=V(x|θV) Q(x,u|\theta^Q)=V(x|\theta^V),这样就很容易构造出TargetQ值了。具体的做法是令

A(x,u|θA)=−12(u−μ(x|θμ))TP(x|θP)(u−μ(x|θμ))

A(x,u|\theta^A)=-\frac{1}{2}(u-\mu(x|\theta^\mu))^T P(x|\theta^P)(u-\mu(x|\theta^\mu))
P(x|θP) P(x|\theta^P)是一个关于状态的正定矩阵,因为正定矩阵可以进行楚列斯基(Cholesky)分解,即

P(x|θP)=L(x|θP)L(x|θP)T

P(x|\theta^P)=L(x|\theta^P)L(x|\theta^P)^T L(x|θP) L(x|\theta^P)是对角线都是正数的下三角矩阵,且是唯一的。

最终算法的Loss Function为

L(θQ)=E[(TargetQ−Q(xt,ut|θQ))2]

L(\theta^Q)=E[(TargetQ-Q(x_t,u_t|\theta^Q))^2]

TargetQ=rt+γV′(xt+1|θQ′)

TargetQ=r_t+\gamma V'(x_{t+1}|\theta^{Q'})

Q(xt,ut|θQ)=V(xt|θV)+A(xt,ut|θA)

Q(x_t,u_t|\theta^Q)=V(x_t|\theta^V)+A(x_t,u_t|\theta^A)

使用DQN的训练方式训练。

算法伪代码

网络训练流程图

网络输出的是下三角矩阵 L L,动作 uu,状态值函数 V <script type="math/tex" id="MathJax-Element-42">V</script>

异步NAF训练机械臂
Shixiang等人还使用了异步NAF训练机械臂开门。

该算法具有一个训练线程(trainer thread)和多个收集样本线程(collector thread),collector thread将收集到的样本存于经验回放机制中,供trainer thread训练。

这个异步NAF算法和A3C算法的不同之处在于:
异步NAF是off-policy,collector thread不提供梯度信息;
A3C是on-policy,每个线程agent都提供梯度信息。

参考文献
[1]Continuous control with deep reinforcement learning
[2]Continuous Deep Q-Learning with Model-based Acceleration
[3]Deterministic Policy Gradient Algorithm
[4]Deep Reinforcement Learning for Robotic Manipulation with Asynchronous Off-Policy Updates
[5]深度强化学习综述_刘全等


深度强化学习——连续动作控制DDPG、NAF相关推荐

  1. dqn在训练过程中loss越来越大_深度强化学习——从DQN到DDPG

    想了解更多好玩的人工智能应用,请关注公众号"机器AI学习 数据AI挖掘","智能应用"菜单中包括:颜值检测.植物花卉识别.文字识别.人脸美妆等有趣的智能应用.. ...

  2. DeepMind成功使用深度强化学习技术完美控制核聚变反应堆!

    本文经AI新媒体量子位(公众号ID:qbitai)授权转载,转载请联系出处. 本文约1400字,建议阅读5分钟 DeepMind开发出世界上第一个深度强化学习AI. DeepMind在蛋白质折叠问题上 ...

  3. 深度丨深度强化学习研究的短期悲观与长期乐观(长文)

    文章来源:机器之心 深度强化学习是最接近于通用人工智能(AGI)的范式之一.不幸的是,迄今为止这种方法还不能真正地奏效.在本文中,作者将为我们解释深度强化学习没有成功的原因,介绍成功的典型案例,并指出 ...

  4. 变革尚未成功:深度强化学习研究的短期悲观与长期乐观

    深度强化学习是最接近于通用人工智能(AGI)的范式之一.不幸的是,迄今为止这种方法还不能真正地奏效.在本文中,作者将为我们解释深度强化学习没有成功的原因,介绍成功的典型案例,并指出让深度强化学习奏效的 ...

  5. 【强化学习】变革尚未成功:深度强化学习研究的短期悲观与长期乐观

    选自alexirpan 机器之心编译 参与:Nurhachu Null.刘晓坤 深度强化学习是最接近于通用人工智能(AGI)的范式之一.不幸的是,迄今为止这种方法还不能真正地奏效.在本文中,作者将为我 ...

  6. 深度强化学习1——强化学习到深度强化学习

    从事深度强化学习有一段时间了,整理了网上的一些资料,写几篇博客作为知识的梳理和总结. 开讲前,先给大家看个深度强化学习的例子,下面是深度学习cnn和强化学习结合玩吃豆人的游戏 看图像我们会发现吃豆人会 ...

  7. 【李宏毅深度强化学习笔记】5、Q-learning用于连续动作 (NAF算法)

    [李宏毅深度强化学习笔记]1.策略梯度方法(Policy Gradient) [李宏毅深度强化学习笔记]2.Proximal Policy Optimization (PPO) 算法 [李宏毅深度强化 ...

  8. 基于深度强化学习的智能船舶航迹跟踪控制

    基于深度强化学习的智能船舶航迹跟踪控制 人工智能技术与咨询 昨天 本文来自<中国舰船研究> ,作者祝亢等 关注微信公众号:人工智能技术与咨询.了解更多咨询! 0.   引 言 目前,国内外 ...

  9. 深度强化学习系列(16): 从DPG到DDPG算法的原理讲解及tensorflow代码实现

    1.背景知识 在前文系列博客第二篇中讲解了DQN(深度强化学习DQN原理),可以说它是神经网络在强化学习中取得的重大突破,也为强化学习的发展提供了一个方向和基础,Sliver等人将其应用在Atari游 ...

最新文章

  1. perl 连接mysql_perl如何连接mysql数据库?
  2. MATLAB报错“Integers can only be raised to positive integral powers.“
  3. gdb 调试core 文件
  4. Ubuntu 12.04下关闭图形界面
  5. 使用Python解压zip、rar文件
  6. ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css
  7. matlab s函数_matlab结构体 rmfield,arrayfun,structfun,struct2cell,cell2struct
  8. AndroidTelephony学习大纲
  9. socket 远程主机强迫关闭了一个现有的连接_Python 之 后门程序编写与远程控制
  10. 1064. 朋友数(20)-PAT乙级真题 Java
  11. 用户的大量数据保存在计算机的,计算机基础理论复习题
  12. Pragma Directives
  13. 【eNSP】入门介绍(很详细)
  14. QCC3020呼吸灯设计
  15. 清华大学马少平:一款智能硬件背后的“AI争霸”...
  16. 面试java工程师,面试官一般问什么问题?
  17. win7一激活就蓝屏
  18. 安卓怎么打开html游戏,安卓手机如何打开.xapk文件
  19. 关于论文查重的相关知识
  20. 迷茫与远方,IT人的技术之路

热门文章

  1. splint选项介绍
  2. 菜鸟学习Jmock测试-全解(四)
  3. python实现将小时转为分钟数
  4. 怎样在echarts里面调整标题的位置
  5. 国内外第三方代码托管平台(2019最新整理)
  6. 2019年第一场雪,北京美翻了!上海还在为入冬倒计时操心,初雪继续“缺货中”...
  7. Entrez ID 和 gene symbol 和 Ensembl ID转换
  8. 存储芯片厂商美光第三财季净利润8.4亿美元 仅上一财年同期两成
  9. ESL 学习笔记 000
  10. 越疆科技dobot(magician)机械臂在ROS moveit下gazebo仿真控制和真实控制功能包 有兴趣的可以下载来玩