1. 什么是DDPG?

DDPG全称(Deep Deterministic Policy Gradient),基于Actor-Critic确定策略梯度(DPG),于2016年提出

DPG提出的文献为:

Silver et al. Deterministic policy gradient algorithms. In ICML, 2014.

之后Lillicrap等人将DPG应用到神经网络上面,就提出了DDPG

Lillicrap et al. Continuous control with deep reinforcement learning. In ICLR, 2016

DDPG模型包含4个神经网络

  • 策略网络(Policy Network)
  • 价值网络(Value Network)
  • 目标策略网络(Target Policy Network)
  • 目标价值网络(Target Value Network)

DDPG的目标就是:能够得到在固定State下的最优Action,接下来逐个介绍这四个神经网络

当然,DDPG也是基于Actor-Critic模型的,也就是如下,策略网络用于生成动作,而价值网络对动作进行评估

1.1 策略网络

与常规的Actor-Critic模型不同的是:DDPG的策略网络输出的是确定的动作,因此叫做确定策略梯度

DDPG的策略网络

而常规的Actor-Critic输出的是一个概率分布,我们最终所采取的动作是对概率分布进行抽样,而不是像DDPG一样输出的是确定的动作

Actor-Critic中的策略网络

1.2 价值网络

价值网络和Actor-Critic的类似,输入的值包括环境state动作action,输出Q(对动作的评价系数)

其中动作由上面的策略网络来生成的

具体意义就是:让策略网络给在固定state下采取决策action的好坏程度打个分

而这个评分就是策略网络的训练指标,我们要让策略网络的动作能被价值网络评分越大越好

而一开始的情况下价值网络根本不知道怎么打分,因此价值网络的训练对于策略网络来说很关键,下面我们会讲到如何使用TD算法训练价值网络

1.3 目标价值网络和目标策略网络

这两个网络结构和之前提到的结构一模一样(价值网络结构=目标价值网络结构,策略网络结构=目标策略网络结构),只是参数不一样

当然作用也不一样,下面的训练步骤会提到这两个网络的作用

可以提前说一下引入这个网络的原因是作者发现这样子可以相对不错的解决一个名字叫做BootStraping现象导致的高估,从而使价值网络"打分更加准确"


2. 训练策略网络

策略网络是依赖于价值网络的,因此训练的时候也需要价值网络的参与

我们的训练目标是:

因此需要使用到梯度上升,将q网络对θ求梯度以此来Maximum q

可以看见对q求梯度可以转化为对a求梯度,这样就形成了一种反向传播的方式来更新策略网络


3. 训练价值网络

对于价值网络的训练,我们使用TD算法来进行

TD算法简单解释

解释一下上面的图片:

价值网络使用来对动作进行类似于估分,也就是估计操作

假设我们从上海要到北京,使用价值网络来估计,得到Q=1000(如上图的最上面)

之后我们进行一个动作之后,State更新了,我们到了南京,并记录下来从上海到南京真实花费了300min,记作rt(reward)

之后再进行一次估计(PS:这次估计用的是目标价值网络,用原来的价值网络也可以但是会出现上面说的BootStraping现象导致高估),得到南京到上海为600min,我们记一个

TD target=300+600

因此TD target的准确性要比上面的Q要更高,因为TD target包含一部分真实的值,而Q是全部都是估计的

这中间就产生一个Loss,记作TD error(如上图)

我们的目标就是Minimize这个TD error,因此要使用到梯度下降,对Loss function关于价值网络参数w求梯度,并更新价值网络


4. 训练target network

Target Network主要用于对"南京-北京"阶段进行动作抽样和价值估计,参数记作w-和θ-

如3中所说的,target network作用就是用于TD算法来削减BootStraping现象导致的高估,因此训练相对来说比较简单

主要是引入一个超参数τ,这个是需要我们自己调的,然后按照τ指定的权重比来更新这两个网络


5. 总体算法步骤


6. 进一步优化与实例

除了使用Target Network来优化之外,我们还可以使用下面这两个经典方式来优化

  • Experience Replay(经验回放)
  • Multi-step TD target

其中经验回放在DQN算法优化中也是得到了广泛的应用的,在这里我们也可以使用

实例

单纯看文字可能不能够很好的理解,来跑几个代码也是很不错的选择,这里推荐几个GitHub上面的DDPG算法实例,有兴趣的大佬们可以去看一看

最后推荐一个强化学习的老师:Shusen Wang

这是他的YouTube频道:点我

Last modification:May 25th, 2021 at 10:09 pm