【确定性策略梯度类】 DPG,DDPG,TD3,D4PG

参考

【强化学习】确定性策略强化学习-DPG&DDPG算法推导及分析

Deep Reinforcement Learning - 1. DDPG原理和算法

一、确定性策略梯度

​ Deepmind的D.Silver等在2014年提出DPG: Deterministic Policy Gradient, 即确定性的行为策略,每一步的行为通过函数$μ$直接获得确定的值:

​ 这个函数$μ$即最优行为策略,不再是一个需要采样的随机策略。为何需要确定性的策略?简单来说,PG方法有以下缺陷:

​ 即使通过PG学习得到了随机策略之后,在每一步行为时,我们还需要对得到的最优策略概率分布进行采样,才能获得action的具体值;而action通常是高维的向量,比如25维、50维,在高维的action空间的频繁采样,无疑是很耗费计算能力的。在PG的学习过程中,每一步计算policy gradient都需要在整个action space进行积分:

​ 这个积分我们一般通过Monte Carlo 采样来进行估算,需要在高维的action空间进行采样,耗费计算能力。如果采取简单的Greedy策略,即每一步求解$ argmax_a Q(s,a)$也不可行,因为在连续的、高维度的action空间,如果每一步都求全局最优解,太耗费计算性能。
​ 将DPG算法融合进actor-critic框架,结合Q-learning或者Gradient Q-learning这些传统的Q函数学习方法,经过训练得到一个确定性的最优行为策略函数。

二、DPG

DPG算法本身采用的是PG方法,且是Off-Policy方法(也可以是On-Policy),因而直接对轨迹的价值回报进行求导。如下式求导,其中$\mu_\theta (s)$为生成确定性行动的策略函数。

根据链式法则,由于$\mu_\theta(s)$与确定性策略价值函数$q_\mu$有关,因而:

由于是确定性策略,在价值函数$q(s,μ_\theta(s))$中有策略参数$\theta$,因此需要将价值函数对策略求导。

相较于随机策略梯度算法而言,如下是随机性策略梯度的目标函数梯度:

在DPG这个梯度公式中,没有了与动作有关的期望项,因此相对于随机性策略,确定性策略需要的学习数据少,算法效率高,尤其对于动作空间维数很大的情况。


三、策略模型参数的一致性

​ 在DPG中为了更好地使用Off-policy,并使用TD降低方差,定义函数 $Q^\omega (s,a):S×A→R$ 用来拟合真实的状态动作值函数$\hat{Q}^\pi(s,a)$,如果$Q^\omega$收敛,那么L2范数梯度将满足如下公式:

​ 在计算梯度时可以使用$Q^ω:S×A→R $代替真实的动作状态值函数$Q(s,a) $。并且神经网络满足这个性质,因此可以使用神经网络拟合动作状态值函数。这样价值模型不需要遵循某个具体的策略,因此可以使用off-policy的方式进行学习更新。


四、DPG目标函数

  • on-policy的确定性策略梯度算法

  • off-policy的确定性策略梯度算法(Replay buffer中的数据是通过$\beta$采样得到的)

​ 上两式的区别就是使用了不同的数据采样分布。可以看到off-policy缺少了重要性采样,这是由于确定性策略的动作是固定值,不是一个分布;其次是因为确定性策略值函数的评估采用的是Q-learning的方法,即使用TD(0)估计动作值函数并忽略重要性权重,值函数不依赖于任何策略,并贪心获取下一个动作。

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


  • [Actor]衡量一个策略网络的表现(策略网络目标函数),最大化策略目标: (根据上面推导的DPG)

​ $s$是环境的状态,这些状态(或者说agent在环境中走过的状态路径)是基于agent的behavior策略产生的,它们的分布函数(pdf) 为$ρ^β$;
​ $Q^\omega(s,μ(s))$ 是在每个状态下,如果都按照$μ$策略选择acton时,能够产生的$Q$值。 也即,$J_β(μ)$是在$s$根据$ρ^β$分布时,$Q^\omega(s,μ(s))​$ 的期望值。

  • [Critic]最小化值网络目标:

最终DPG的目标函数为:($\omega$是值网络(SGD优化),$\theta$是策略网络(SGA优化))

参数更新为:


五、DDPG

DDPG借用了target net还有滑动平均方法更新behavior网络参数

其更新方法如下:

对比一下DQN

img

六、TD3

参考:TD3

TD3(Twin Delayed Deep Deterministic policy gradient algorithm )主要对DDPG做了一些改进:

  1. 引入DoubleDQN的思想,来消除过拟合问题(两个Critic, 一个Actor)

    DoubleDQN中使用Current Net(Behavior net)来代替TargetNet,以减小Bias。

    映射到DPG过程中,其中$\pi_φ(s’)$是CurrentNet:

    即critic用更新较慢的target network,actor还是更新快的;但由于本身actor更新也不快,所以没啥效果。

    如果类比double Q-learning,使用两个actor、两个critic写出来的更新目标为

    img

    本着“宁可低估,也不要高估”的想法(因为actor会选择高的,因此高估的会累积起来),再把目标改写成

    img

    最后发现两个actor也没啥用,就用一个actor,这个actor根据 $Q_{\theta_1}​$ 来更新。两个critic的更新目标都是一样的,即 $y_2 = y_1​$ 。这样的算法相比于改变之前的就等于多了一个和原来critic同步更新的辅助critic $Q_{\theta_2} ​$,在更新target的时候用来取min。

  2. 使用TargetNet

    实验结果表明,当policy固定不变的时候,是否使用target network其价值函数都能最后收敛到正确的值;但是actor和critic同步训练的时候,不用target network可能使得训练不稳定或者发散。因此算法的中critic的更新目标都由target network计算出来

    img

    并且,价值函数估计准确之后再来更新policy会更好,因此采用了delayed policy update,即以较高的频率更新价值函数,以较低的频率更新policy。

  3. 使用Target Policy 平滑正则

    希望学到的价值函数在action的维度上更平滑,因此价值函数的更新目标每次都在action上加一个小扰动

    img

七、D4PG

论文 DISTRIBUTED DISTRIBUTIONAL DETERMINISTIC
POLICY GRADIENTS

总体框架与DDPG相同,引入了一些trick:

  1. 支持分布式,由于是off-policy的算法,因此可以使用多个actor去分布式地采样,然后存储在同一个replay buffer中,learner从buffer中采样,更新之后再将权重同步到各个actor上

  2. critic使用价值函数分布,损失函数变为(d是距离度量):

    其中$(T_\pi Z)(x, a)=r(x,a)+\gamma\mathbb{E}[Z(x’,\pi(x’))|x,a]$ 为 distributional Bellman operator, $Z$是用来估计Q的, $Q_\pi(x,a) = \mathbb{E}Z_\pi(x,a)$

  3. 引入n-step TD error:这样可以减少更新的variance

  4. 使用prioritized experience replay:可以加速学习

本文标题:【确定性策略梯度类】 DPG,DDPG,TD3,D4PG

文章作者:zhkmxx930

发布时间:2019年03月27日 - 16:03

最后更新:2019年04月20日 - 11:04

原始链接:https://zhkmxx9302013.github.io/post/dad17569.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

一分钱也是爱,mua~