前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度确定性策略梯度DDPG详解

深度确定性策略梯度DDPG详解

作者头像
CristianoC
发布2020-06-02 11:18:04
3.9K1
发布2020-06-02 11:18:04
举报

目录

1.前言2.算法2.1 概念初识2.2 算法相关概念和定义2.2 DDPG实现框架和算法

1.前言

今天我们回来说说强化学习中的一种actor critic的提升方式Deep Deterministic Policy Gradient (DDPG),DDPG最大的优势就是能够在连续动作上更有效地学习。 关于DDPG的学习我相信看了莫烦教程能大概有个了解,但是有些细节会不清楚,特别是其中两个神经网络交互的部分,我这里找到kenneth_yu的blog中有个图很清晰地说明了这个关系,希望看完这篇文章的读者能对DDPG有个清晰的了解。

2.算法

2.1 概念初识

它吸收了Actor-CriticPolicy gradient单步更新的精华,而且还吸收让计算机学会玩游戏的DQN的精华,合并成了一种新算法,叫做Deep Deterministic Policy Gradient. 那 DDPG 到底是什么样的算法呢, 我们就拆开来分析。我们将DDPG分成'Deep'和'Deterministic Policy Gradient',然后'Deterministic Policy Gradient'又能细分为'Deterministic'和'Policy Gradient',接下来我们就开始一个个分析。

Deep顾名思义,就是走向更深层次,我们在DQN中提到过,我们使用一个经验池和两套结构相同,但参数更新频率不同的神经网络能有效促进学习。那我们也把这种思想运用到DDPG中,使DDPG也具备这种优良形式。但是DDPG的神经网络形式却比DQN的要复杂一点。

Policy Gradient我们也在之前提到过,相比其他的强化学习方法,它能被用来在连续动作上进行动作的筛选。而且筛选的时候是根据所学习到的动作分布随机进行筛选,而Deterministic有点看不下去,Deterministic说:我说兄弟,你其实在做动作的时候没必要那么不确定,反正你最终都只是要输出一个动作值,干嘛要随机。所以Deterministic就改变了输出动作的过程,只在连续动作上输出一个动作值。

现在我们来说说DDPG中所用到的神经网络(粗略)。它其实和我们之前提到的Actor-Critic形式差不多,也需要有基于策略Policy的神经网络基于价值Value的神经网络。但是为了体现DQN的思想,每种神经网络我们都需要再细分成两个,Policy Gradient这边,我们有估计网络和现实网络,估计网络用来输出实时的动作,供actor在现实中实行。而现实网络则是用来更新价值网络系统的。所以我们再来看看价值系统这边,我们也有现实网络和估计网络,他们都在输出这个状态的价值,而输入端却有不同,状态估计网络则是拿着当时Actor施加的动作当做输入。在实际运用中,DDPG这种做法确实带来了更有效的学习过程。

以上就是对DDPG的一个大概简介,看完大概了解整个DDPG包括什么就可以,接下来将会带大家探索DDPG的细节。

2.2 算法相关概念和定义

我们先复述一下DDPG相关的概念定义:

  1. 确定性行为策略μ:定义为一个函数,每一步的行为可以通过

计算获得。

  1. 策略网络:用一个卷积神经网络对

函数进行模拟拟合,这个网络我们就叫做策略网络,其参数为

;

  1. behavior policy

:在RL训练过程中,我们要兼顾两个e:exploration和exploit(也就是之前说过的探索和开发);exploration的目的是探索潜在的更优策略,所以训练过程中,我们为action的决策机制引入随机噪声:将action的决策从确定性的过程变为一个随机过程,再从这个随机过程中采样得到action,下达给环境执行,过程如下图所示

上述这个策略叫做behavior策略,用

来表示,这时RL的训练方式叫做off-policy。这里与

的思路是类似的。DDPG中,使用Uhlenbeck-Ornstein随机过程(下面简称UO过程),作为引入的随机噪声:UO过程在时序上具备很好的相关性,可以使agent很好的探索具备动量属性的环境。

注意

  • 这个

不是我们想要得到的最优策略,仅仅在训练过程中,生成下达给环境的action,从而获得我们想要的数据集,比如状态转换(transitions)、或者agent的行走路径等,然后利用这个数据集去训练策略

,以获得最优策略。

  • 在test和evaluation时,使用

,不会再使用

4.Q函数:即action-value函数,定义在状态

下,采取动作

后,且如果持续执行策略

的情况下,所获得的

期望值,用Bellman等式来定义:

可以看到,Q函数的定义是一个递归表达,在实际情况中,我们不可能每一步都递归计算Q的值,可行的方案是通过一个函数对Bellman等式表达进行模拟。

  1. Q网络:DDPG中,我们用一个卷积神经网络对Q进行模拟,这个网络我们就叫做Q网络,其参数为

,采用了DQN相同的方法。

  1. 如何衡量一个策略

的表现:用一个函数J来衡量,我们叫做performance objective,针对off-policy学习的场景,定义如下:

其中:

  • s是环境的状态,这些状态(或者说agent在环境中走过的状态路径)是基于agent的behavior策略产生的,他们的分布函数为

是在每个状态下,如果都按照

策略来选择action时,能够产生的Q值,也就是

是在s根据

分布时,

的期望值。

  1. 训练的目标:最大化

,同时最小化Q网络的Loss(下面会给出)。

  1. 最优行为策略

的定义:即最大化

的策略:

训练

网络的过程,就是寻找

网络参数

的最优解的过程,我们使用SGA的方法。

  1. 最优Q网络定义:具备最小化的Q网络Loss;训练Q网络的过程,就是寻找Q网络参数

的最优解的过程,我们使用SGD的方法。

2.2 DDPG实现框架和算法

online和target网络 以往的实践证明,如果只使用单个Q神经网络的算法,学习过程很不稳定,因为Q网络的参数在频繁梯度更新的同时,又用于计算Q网络和策略网络的gradient。基于此,DDPG分别为策略网络、Q网络各创建两个神经网络拷贝,一个叫做online,一个叫做target:

在训练完一个mini-batch的数据之后,通过SGA/SGD算法更新online网络的参数,然后通过soft update算法更新target网络的参数。soft update是一种running average的算法:

  • 优点:target网络参数变化小,用于在训练过程中计算online网络的gradient,比较稳定,训练易于收敛。
  • 代价:参数变化小,学习过程变慢。

DDPG实现框架

DDPG算法流程如下: 初始化actor/critic的online神经网络参数

; 将online网络的参数拷贝给对应的target网络参数

初始化replay memory buffer R; for each episode: 初始化UO随机过程; for t-1,T: 下面步骤与DDPG实现框架图中步骤编码对应:

  1. actor根据behavior策略选择一个

,下达给gym执行该

behavior策略是一个根据当前online策略

和随机UO噪声生成的随机过程, 从这个随机过程采样 获得

的值。

  1. gym执行

,返回reward

和新的状态

;

  1. actor将这个状态转换过程(transition):

存入replay memory buffer

中,作为训练online网络的数据集。

  1. 从replay memory buffer

中,随机采样

个 transition 数据,作为online策略网络、 online Q网络的一个mini-batch训练数据。我们用

表示mini-batch中的单个transition数据。

  1. 计算online Q网络的 gradient: Q网络的loss定义:使用类似于监督学习的方法,定义loss为MSE: mean squared error:

其中,

可以看做监督学习中的label:

基于标准的BP方法,就可以求得L针对

的gradient:

。 有两点需要注意:

的计算,使用的是target策略网络

和target Q网络

,这样做是为了Q网络参数的学习过程更加稳定,易于收敛。

  • 这个标签本身依赖于我们正在学习的target网络,这是区别于监督学习的地方。

6.update online Q:采用adam optimizer更新

;

7.计算策略网络的policy gradient: policy gradient的定义:表示performance objective的函数

针对

的 gradient。根据2015 D.Silver 的DPG 论文中的数学推导,在采用off-policy的训练方法时,policy gradient算法如下:

也就是policy gradient是在s根据

分布时,

的期望值。我们用Monte-carlo方法来估算这个期望值: 在replay memory buffer中存储的(transition):

, 是基于agent的behavior策略

产生的,它们的分布函数(pdf)为

,所以当我们从replay memory buffer中随机采样获得mini-batch数据时,根据Monte-carlo方法,使用mini-batch数据代入上述policy gradient公式,可以作为对上述期望值的一个无偏差估计 (un-biased estimate), 所以policy gradient 可以改写为:

8.update online策略网络:采用Adam optimizer更新

; 9.soft update target网络

: 使用running average的方法,将online网络的参数,soft update给target网络的参数:

end for time step end for episode

参考:

  1. https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow
  2. https://blog.csdn.net/kenneth_yu/article/details/78478356
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机视觉漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1.前言
  • 2.算法
    • 2.1 概念初识
      • 2.2 算法相关概念和定义
        • 2.2 DDPG实现框架和算法
        相关产品与服务
        批量计算
        批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档