logo头像

人生之短,取该取舍该舍

DDPG论文总结

[TOC]

1 问题及创新点

应用层面

把强化学习应用在复杂控制问题上时,智能体必须在众多可选行动中找到合适的一个,这使得计算量非常大。而对于某些实际应用问题,如机器人控制,这时往往需要连续的控制来使智能体在随机选择动作时能够学到足够连续的动作,否则不连续的动作可能导致它们毁灭。过去的RL算法采用贪心算法,只解决了低维、离散行动空间问题,而高维、连续行动空间问题没有得到很好的解决。

DQN通过使用神经网络来表征 action-value function的方法,解决了高维观测(状态)空间问题,使得强化学习可以应用在更加现实的高维度问题上。为了使强化学习还可以应用于复杂控制问题,本文提出了使用控制策略来生成轨迹的DPAC方法,并结合DQN算法,使得强化学习可以应用在复杂控制的高维度问题上。特别地,在使用神经网络近似值函数时,对网络层使用了批标准化,且在控制策略中使用的是Ornstein Uhlenbeck 噪声过程,本文把这样的网络称为Deep DPG(DDPG)。

技术层面

当我们为加入探索能力,使用由target policy生成的behavior policy 时,需对action-value function在行动空间上进行greedy,此时行动空间必须是离散的、低维的。因此,DQN算法虽通过使用神经网络近似值函数,解决了高维观测(状态)空间问题,但它使用behavior policy 生成轨迹,所以被限制在了离散、低维的行动空间上。

为解决连续、高维的行动空间问题和算法学习效率低的问题,本文采用了4个方法:

  1. 使用control policy(控制策略)代替behavior policy生成轨迹,用于保证策略在连续、高维行动空间上可得到的前提下使轨迹具有一定的随机性,control policy通过在确定策略中加入随机噪声生成,为保证control policy在RL算法中可用,加入的随机噪声需具有一定性质。
  2. 使用确定策略方法中的DPAC算法进行策略评估和策略改进,用于学习得到control policy中的确定策略。
  3. 加权更新两个target network,用于保证off-policy下DPAC算法中两个网络在迭代过程中的稳定性。
  4. 使用批标准化,用于提高算法的学习效率和神经网络对样本的泛化能力。

通过在确定策略中加入从噪声过程采样得到的随机噪声就得到了control policy,我们需根据environment选择合适的噪声过程,一般希望噪声过程需满足以下条件:

  1. 噪声过程中不同时间点的噪声应同分布,且应独立或随机独立,从而不会影响样本中行动的独立同分布;
  2. 噪声随时间的流逝与初始噪声的相关程度一般会减弱,但我们希望它不减弱,避免因丢失信息而降低学习效率;
  3. 噪声应尽可能关于时间连续,以保证控制策略的连续性。

创新点总结

  1. 对表征值函数的神经网络进行批标准化,加强网络的泛化能力,提高学习效率;
  2. 使用在Deterministic Policy加入随机噪声而生成的control policy生成轨迹,确保探索能力;
  3. 加入噪声时使用的随机过程是Ornstein Uhlenbeck 过程,它具有和自相关噪声过程类似的优良性质;
  4. 在DQN算法基础上使用DPAC方法,因此针对Crtic和Actor使用了两个target network;
  5. 通过对新旧网络参数进行加权来减小target network的更新力度,稳定网络参数的收敛过程。

2 技术细节

2.1 控制策略

控制策略就是在确定策略上加入噪声过程,是具有随机性的一种策略,它和behavior policy的作用类似,只不过behavior policy由target policy生成,而control policy由deterministic policy生成。在DPG中有提到确定策略是随机策略在方差趋于0时的极限形式,确定策略和随机策略有以下关系:

$\pi(a_t|s_t)=\mu(s_t)\pm \sigma_t$,$\sigma_t^2=var(a_t,\mu(s_t))$

其中$\mu(s_t)$为确定策略,$\pi(a_t|s_t)$为随机策略,方差$\sigma_t$代表了随机策略的随机性,当$t$取定,$\sigma_t$为常数。在控制策略中,我们不使用确定的常数$\sigma_t$,而使用从随机过程$\mathcal{N}$采样得到的随机变量代替它,即$\forall t \in T$,用随机变量$x_t$代替确定的方差$\sigma_t$,从而加入探索能力。在确定的事物中加入随机过程相当于加入了噪声,因此我们也称随机过程$\mathcal{N}$为噪声过程,在确定策略中加入噪声过程就得到了控制策略(control policy)$c(s_t)$:

$c(s_t)=\mu(s_t)+\mathcal{N}=\mu(s_t)+x_t$

$c_\theta(s_t,x_t)=h_\theta(s_t,x_t)=\mu_\theta(s_t)+x_t$

我们需根据环境选择加入合适的噪声过程,下面介绍两种噪声过程,DDPG的implement部分使用的是Ornstein Uhlenbeck 过程,为便于大家对理解Ornstein Uhlenbeck 过程,先介绍和它类似的一种随机过程—自相关噪声过程,使用自相关噪声对连续动作进行修正的控制策略,保证了噪声的连续性和状态轨迹中适当的随机性,对机器人控制优化问题十分适用,它可使学到的行动连续,解决了机器人在学习过程中的抖动问题。

自相关噪声过程

J. Kober 和J. Peters在论文《Policy search for motor primitives in robotics》中提出了一种RL算法,以放弃MDP为代价克服了动作的不连续问题。P. Wawrzynski在论文《Reinforcement learning with experience replay for model-free humanoid walking optimization》中提出了一种基于MDP但没有解决action不连续问题的RL算法。而使用自相关噪声控制策略解决了MDP下action不连续的问题。

自相关噪声过程(Aurocorrelated Noise Process)实际上为高斯过程的移动平均,它的定义如下:设自相关噪声$x_t$服从自相关噪声过程,则$x_t$为M个正态随机向量的和:$x_t=\displaystyle \sum_{j=0}^{M-1}y_{t-j}$,其中$y_{t-j}\overset{iid}{\sim} N(0,I\sigma^2/M^2)$,故$x_t\sim N(0,I\sigma^2/M)$,且$x_t$具有以下性质:

  • $\forall t ,x_t$同分布
  • $对于|i|>M,M为一常数$,$x_t$随机独立于$x_{t+i}$
  • $E\parallel x_t-x_{t-i}\parallel^2=\frac{2i\sigma^2}{M}<E\parallel x_t-x_{t-i-1}\parallel^2=\frac{2(i+1)\sigma^2}{M}$
  • 对于$c_\theta(s_t)=h_\theta(s_t,x_t)=\mu_\theta(s_t)+x_t$,若$\mu$是连续的,则$h$也是连续的

前两点性质(独立同分布)保证了加入自相关噪声的控制策略可应用于一些著名的RL算法,后两点性质保证了由控制策略得到的动作的连续性。第三个性质显示出:噪声随机变量$x_t$与其更近的随机变量$x_{t-1}$更加相关,故$x_t$与$x_0$的自相关程度会随着时间的流逝而减小。

下面欲对自相关噪声过程中的参数$M$和$\sigma^2$进行分析,运用时间差分方法可推得状态条件方差$Var(s_{t+1}|s_t)$与噪声功效$P_\mathcal{N}$成比例:$Var(s_{t+1}|s_t)\propto P_\mathcal{N}=I\sigma^2\delta M$,其中$\delta$为时间差分程度,状态条件方差代表了控制策略生成的状态轨迹的随机性水平。$\delta$越小,按上式求得的状态条件方差就越准确,在传统策略控制算法中一般取$M=1$,此时若希望$\delta$越小,而又不增大状态条件方差,则需要增大噪声的方差$\sigma^2$,而增大$\sigma^2$会使得噪声(控制信号)$x_t$频繁地变化较大,从而控制策略也会频繁地发生大变化,使得控制策略不可行。下图对三个噪声过程进行了对比,其中上下两图为传统控制策略中使用的噪声过程($M=1$),中间的图为一个自相关噪声过程,三者的功率相等,都有$P_\mathcal{N}=I\sigma^2\delta M=0.02$。

上图中,横轴为时间$t$,纵轴为噪声$x_t$,也称控制信号。由上图可知,中间的自相关噪声过程更加连续,且对于传统控制策略有:$\sigma^2$越大,噪声过程越不连续(图中上面的过程比下面的过程更不连续),控制策略越不稳定。

在实验中使用结合了控制策略的Actor-Critic算法,对两个模拟和一个真正的机器人学习控制问题进行了implement。其中,对实验a)Half-Cheetah采用的是经典ACER算法,对实验b)Cart-Pole Swing-Up采用的是经典Actor-Critic算法,对实验c)Bioloid Walking采用的是一种Actor-Critic算法,实验参数见下表,算法效果见下图:

实验 $\delta$ $\sigma$ $M$ $\gamma$ $\lambda$ $\alpha_\theta$ $\alpha_v$
a) (实线) 0.02 5 1 0.99 0.9 $10^{-5}$ $10^{-5}$
a) (虚线) 0.02 3 3 0.99 0.9 $10^{-5}$ $10^{-5}$
b) (实线) 0.1 2 1 0.95 0.5 0.003 0.003
b) (虚线) 0.01 2 10 0.995 0.95 0.0003 0.0003
c) (实线) 0.03 10 1 0.99 0.9 / /
c) (虚线) 0.03 7 3 0.99 0.9 / /

注:实验b)中时间差分程度$\delta$的不同,导致了参数$\gamma,\lambda,\alpha_\theta,\alpha_v$的不同,这是为了确保reward在单位时间内的权重保持相同,实验c)中应用的算法自动计算了步长,所以参数$\alpha_\theta,\alpha_v$没有取值。

上图中,横轴为episode number,纵轴为average reward。实线和虚线分别表示使用了上表中所示的不同噪声过程参数。

通过上述实验,在保证一定随机性水平(状态条件方差相等)的条件下,即对于具有相同功效$P_\mathcal{N}=I\sigma^2\delta M$的自相关噪声过程,有以下结论:

  • $\delta$相等时,增大$M$,同时需减小$\sigma^2$,自相关噪声过程会更加连续,且不会降低算法的学习效率或最终表现
  • $\sigma^2$相等时,增大$M$,同时需减小$\delta$,不会使算法的最终性能变差,但会降低学习效率,这是因为时间差分得越细,控制策略对动作的调整越频繁,每一次调整就需要生成一个噪声$x_t$,$x_t$与$x_0$是自相关的,而这种自相关会随着时间的流逝而减少,造成信息的丢失,从而导致学习速度变慢。

基于自相关噪声的控制策略使得连续的控制动作只是随机地依赖于状态,从而保证了状态轨迹具有一定的随机性。由于时间差分得越细,学得的确定策略越精确(更不具随机性),每个特定动作的重要性就越小,为保证状态轨迹的随机性水平,加入的噪声就应越大。

The Ornstein Uhlenbeck 噪声过程

The Ornstein Uhlenbeck 过程是和自相关噪声过程具有类似性质的一种随机过程,在介绍Ornstein Uhlenbeck过程之前,先回顾一下随机过程中的一些基础知识,再介绍Ornstein Uhlenbeck过程的定义,并给出实例。

随机过程:就是关于时间变化的一族随机变量。

平稳随机过程:是在固定时间和位置的概率分布与所有时间和位置的概率分布相同的随机过程,即随机过程的统计特性不随时间的推移而变化,因此数学期望和方差这些参数不随时间和位置变化。严平稳:n维随机变量$(x_{t_1},x_{t_2},…,x_{t_n})$ 和$(x_{t_1+h},x_{t_2+h},…,x_{t_n+h})$具有相同的分布函数。

随机漫步(Random walk):也称随机游走,是一种数学统计模型,它由一连串轨迹所组成,其中每一次都是随机的,它能用来表示不规则的变动形式,如同一个人乱步所形成的随机记录。通常,我们可假设随机漫步以马尔可夫链或马尔可夫过程形式出现,但比较复杂的随机漫步则不一定以这种形式出现。

维纳过程(布朗运动):是一个初值为0的具有独立高斯增量的时间连续过程,是随机游走的极限形式。在应用数学中,由于维纳过程具有独立高斯增量,故被用来表示白噪声高斯过程的积分。

The Ornstein Uhlenbeck过程:在数学中,Ornstein Uhlenbeck过程是一个随机过程,粗略地说,它模拟了一个带有摩擦的布朗粒子的速度,具有以0为中心的时间相关值。这个过程是一个平稳高斯马尔可夫过程,这意味着它既是一个高斯过程,又是一个马尔科夫过程,并且是暂时的齐次的。Ornstein Uhlenbeck过程是满足这三个条件的唯一非平凡的过程,它允许空间和时间变量的线性变换。随着时间的推移,这个过程趋向于向长期均值偏移,这样的过程称为均值回归。该过程可以被看作是修改到连续时间上的随机漫步,或是一个过程性质已经改变了的维纳过程(布朗运动),这样漫步就会有回到中心位置的倾向,且当过程是远离中心时,中心会有更大的吸引力。Ornstein Uhlenbeck过程还可以被认为是离散时间自回归(AR)过程的在连续时间上的类比。

Ornstein Uhlenbeck过程实例

$x_t$是一Ornstein Uhlenbeck过程,则$dx_t=\theta(\mu-x_t)dt+\sigma dW_t$,其中,$\theta>0,\sigma>0,\mu$是参数,$W_t$是一维纳过程(布朗运动)。求解微分方程得$x_t=x_0e^{-\theta t}+\mu(1-e^{-\theta t})+\sigma\int_0^te^{-\theta(t-s)}dW_s$ ,故$var(x_t)=\frac{\sigma^2}{2\theta}$ 。下图显示了给定参数下的Ornstein Uhlenbeck过程

注:横坐标为$t$,纵坐标为$x_t$,参数:$\theta=1,\mu=1.2,\sigma=0.3$,绿、红、蓝线分别表示取$x_0=2、x_0\sim N(\mu,\frac{\sigma^2}{2\theta})、x_0=0$情形下的Ornstein Uhlenbeck过程。

分析可发现Ornstein Uhlenbeck过程具有和自相关噪声过程相似的性质,且可能比其拥有更多优良的性质。

2.2 RL算法

论文中使用的核心算法,就是在DPAC算法的基础上,使用了DQN算法中的经验回放和利用神经网络表征 action-value function的方法,然后进行了改进:

  1. 在神经网络中加入批标准化,提高泛化能力和学习效率;
  2. 在生成轨迹时,没有使用behavior policy,而是使用在高维连续行动空间上可得的具有一定随机性的control policy,确保探索能力。
  3. 在更新target网络时,没有采取延迟更新,而是采取对新旧网络加权的方式,减小参数更新力度,增加off-policy下网络的稳定性。

对于以上三点改进,本节只对第一点进行着重讨论。因为第二点在上节中已经进行了详细介绍,而第三点类似于DQN中的延迟更新,只是方式有些许不同,但效果基本一样。

因此,DDPG算法的主要逻辑为:第一,进行探索以获取经验,使用control policy生成轨迹进行探索,通过在确定策略中加入从随机过程采样得到的噪声,确保了轨迹的随机性;第二,采样,使用DQN中的replay buffer进行经验回放和bootstrapping,以使样本更加独立同分布;第三,迭代更新,使用off-policy DPAC算法更新确定策略,并使用两个target网络,通过加权方法小幅度更新Critic和Actor中两个网络的参数,以增加网络的稳定性。下图展示了完整的算法过程。

注意:

  • TD target:$y_i=r_i+\gamma Q’(s_{i+1},\mu’(s_{i+1}|\theta^{\mu‘}))$中使用的不是$a_{i+1}$,而是$\mu’(s_{i+1})$,故为off-policy;
  • The Critic通过最小化TD target和$Q(s,a|\theta^Q)$的均方误差更新价值,进行策略评估;
  • The Actor通过策略梯度更新确定策略,进行策略改进;
  • 关于如何加入噪声过程,具体请参考上一小节控制策略。

批标准化

(此部分参考Ioffe和Szegedy的论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》)

对高维观测空间问题,我们在RL算法中使用了神经网络从观测中提取状态特征,而当这些观测有不同的物理单位,且取值范围随环境变化时,会使得神经网络的泛化能力大大降低。为解决该问题,可以人为使观测在不同的环境和单位上处于类似的范围,一种更好的方法是使用批标准化,该方法将采样得到的小批次样本的每个维度进行标准化,使其具有单位均值和方差。而且,在探索或评估(测试)过程中,采用的是移动平均的方法。对高维行动空间问题,批标准化被用于保证每层的输入都经过了白化处理,以此来最小化协方差。对于低维行动空间,优先于标准化行动输入,先对观测输入、$\mu$网络和$Q$网络中的所有层进行批标准化。下图展示了对神经网络进行批标准化的过程:

NFQCA算法

NFQCA算法:即原始DPG算法,它使用DPG算法进行更新,并使用神经网络近似值函数,且在神经网络中使用了批标准化。NFQCA算法的局限性:由于DPG算法只有策略评估,没有策略改进,而在大型网络中需使用批方法,即对一批一批的样本进行策略评估,故此时若不使用target network,就无法针对每个样本及时更新策略,使得学到的策略不可行。

iLQG方法

iLQG方法:即迭代线性二次高斯方法,是一种基于控制约束的非线性随机系统的局部最优反馈控制方法。该方法通过最小化最优成本函数的二次逼近,得到了一种新的反馈控制法则。本文将其看做一个模型预测控制器:从系统的真实状态开始,在每一步中,进行一次单一的轨迹优化迭代。迭代方式为:通过对动态向前(向前传递)进行积分,选择最佳轨迹,保存动作序列,然后在动作序列空间中对轨迹方向进行无衍生的线搜索。

说明:DDPG能在许多任务中学得很好的策略,且实验发现在很多情况下,DDPG进行5次实验学得的某些策略要优于使用iLQG方法找到的那一个策略,直接从像素图片进行学习的情况下也是如此。

DDPG算法拓展

  • TRPO:Schulman, John, Levine, Sergey, Moritz, Philipp, Jordan, Michael I, and Abbeel, Pieter. Trust region policy optimization.
  • GPS:Levine, Sergey, Finn, Chelsea, Darrell, Trevor, and Abbeel, Pieter. End-to-end training of deep visuomotor policies.
  • PILCO:Deisenroth, Marc and Rasmussen, Carl E. Pilco: A model-based and data-efficient approach to policy search.

2.3 数据处理

类似于DQN中的数据处理方式,为了使问题能够近似地被完全观测,本文使用重叠3个时间步的观测图片作为输入,下采样为6464\8的大小,并对像素进行了白化处理。

2.4 训练细节

本文中针对低维观测空间(人为获取)和高维像素观测空间对多个任务进行implement时使用的神经网络结构见下面两表。此外,训练神经网络使用的是Adam优化器,Actor和Crtic中两个神经网络的学习率分别为$10^{-4}$和$10^{-3}$,且对$Q$网络使用参数为$10^{-2}$的$L_2$权重衰减,折扣因子$\gamma=0.99$。在通过加权更新target网络时,使用的权重为:$\tau=0.001$。控制策略中使用的Ornstein Uhlenbeck 噪声过程的参数为:$\theta=0.15,\sigma=0.2$ 。

使用低维观测空间时,具体神经网络参数见下表:

层类型 尺寸 初始化参数使用的分布 激活函数
输入层 6464\8 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ /
隐藏层 400 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ ReLU
隐藏层 300 $U(-310^{-3},310^{-3})$ tanh
输出层 action action范围见table 2 /

使用原始像素作为观测时,具体神经网络参数见下表:

层类型 尺寸 初始化参数使用的分布 激活函数
输入层 6464\8 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ /
卷积层 6464\32 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ ReLU
卷积层 6464\32 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ ReLU
卷积层 6464\32 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ ReLU
全连接层 200 $U(\frac{-1}{\sqrt{f}},\frac{1}{\sqrt{f}})$ ReLU
全连接层 200 $U(-310^{-4},310^{-4})$ tanh
输出层 action action范围见table 2 /

备注:$f$表示该层的扇入数(fall-in),各个任务环境的状态、行动及观测维度见下表。

2.5 训练结果

在一些简单的任务中,使用高维观测(像素图片)和低维的状态描述学习得一样快,可能是动作重叠使得问题更简单了,也可能是卷积层将状态空间在各个维度上的表示划分得足够分明,使得更深的layer可以学得很快。针对不同的目的,本文进行了以下4个实验:

  1. 为证明DDPG算法的有效性,将其应用到了Torcs上,实验表明,在低维观测空间和高维像素观测空间上,DDPG都能学到合理的策略。

  1. 为比较target network和批标准化的重要性,基于原始DPG算法进行以下对照实验,效果如下图:

上图中,横轴表示step,纵轴表示标准化后的reward。浅灰色代表使用了批标准化的minibatch NFQCA算法,深灰色代表使用了target 网络的minibatch NFQCA算法,绿色代表同时使用批标准化和target网络的minibatch NFQCA算法,蓝色代表使用target网络且神经网络输入仅为像素的minibatch NFQCA算法。由上图可知,target network是关键。

  1. 为验证DDPG策略评估的准确性(由于过估计等问题,通过策略评估学得准确的value往往是有困难的),对3个任务使用DDPG算法进行了5次重复实验,其中前两个任务比较简单,最后一个任务较难。本文通过比较在轨迹中看到的真实return和用训练得到的Q估计的value来在线检测DDPG的评估是否准确,策略评估的value和真实return的关系见下图:

上图中,横轴表示在轨迹中看到的真实return,纵轴表示用DDPG策略评估得到的value,是对真实return的估计。由上图可知,对于简单任务,DDPG对return的估计比较准确,没有系统偏差;而对于较难的任务,DDPG的策略评估虽然很不准确,但学得的策略仍然较好。

  1. 为讨论DDPG在低维观测空间和高维像素观测空间上的表现,进行如下对照实验:从以下环境中分别获得低维观测空间(人为获取)和高维像素观测空间表示,使用DDPG算法和 NFQCA算法在两种观测空间下训练最多2.5亿个step,得到5次重复实验下的平均标准得分和最佳标准得分,其中NFQCA算法为使用了reply buffer和批标准化的minibatch NFQCA算法,两种算法的表现见下表。

上表中,$R_{av}$ 代表Average Return,$R_{best}$ 代表Best Return,$R_{lowd}$代表使用:输入为低维观测空间的DDPG算法,$R_{lowd}$代表使用:输入为高维像素观测空间的DDPG算法,$R_{cntrl}$代表使用:使用了reply buffer和批标准化的minibatch NFQCA算法。注意,除torcs外,其它实验的得分都进行了标准化。实际上,针对DDPG和iLQG方法有不同的标准化方式,DDPG是计算navie policy 的平均return,navie policy为行动空间上的均匀分布,如此进行标准化后navie policy的得分期望为0;而iLQG方法进行标准化后的得分期望为1。