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

2020-06-02 11:18:04 浏览数 (1)

目录

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

0 人点赞