深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG

A2C & A3C

Actor-Critic一般简称AC算法。针对它的一般用法参见《机器学习(三十五)》。

AC算法也可用于DRL领域,具体的做法和DQN类似:

  • 一个Actor网络,用来近似V值。

  • 一个Critic网络,用来近似Q值。

这里有个小技巧:

Actor网络和Critic网络可以共享网络参数,两者仅最后几层使用不同结构和参数。(参见下图A3C的图)

针对AC的改进,衍生出了A2C和A3C。

Advantage Actor-Critic(A2C):advantage function + AC

Asynchronous Advantage Actor-Critic(A3C):Async + A2C

A3C

论文:

《Asynchronous Methods for Deep Reinforcement Learning》

在《机器学习(三十三)》的Experience Replay一节,我们指出训练数据间的相关性会影响算法收敛到最优解。

除了Experience Replay之外,异步更新也是一种有效的消除训练数据间相关性的方法。

深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG

上图是A3C的网络结构图。它实际上就是将A2C放在了多个线程中进行同步训练。可以想象成几个人同时在玩一样的游戏,而他们玩游戏的经验都会同步上传到一个*大脑。然后他们又从*大脑中获取最新的玩游戏方法。

A3C的原始论文运行在CPU上,这里还有一个GPU版本:

《GA3C: Reinforcement Learning through Asynchronous Advantage Actor-Critic on a GPU》

代码:

https://github.com/NVlabs/GA3C

深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG

这是GA3C的网络结构图。

AC vs. GAN

论文:

《Connecting Generative Adversarial Networks and Actor-Critic Methods》

深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG
深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG

上图是GAN,下图是AC。

Method GANs AC
Freezing learning yes yes
Label smoothing yes no
Historical averaging yes no
Minibatch discrimination yes no
Batch normalization yes yes
Target networks n/a yes
Replay buffers no yes
Entropy regularization no yes
Compatibility no yes

参考

https://zhuanlan.zhihu.com/p/51645768

强化学习AC、A2C、A3C算法原理与实现!

https://mp.weixin.qq.com/s/c4xoy4CJ_hsVdmGe1n3rTQ

A3C——一种异步强化学习方法

https://mp.weixin.qq.com/s/5kI72vg4JNAZWD93EYAUWA

直观的强化学习算法(A2C)

https://blog.csdn.net/u013236946/article/details/73195035

A3C

https://zhuanlan.zhihu.com/p/70360272

最前沿:深度解读Soft Actor-Critic算法

https://mp.weixin.qq.com/s/R308ohdMU8b7Ap4CLofvDg

OpenAI开源算法ACKTR与A2C:把可扩展的自然梯度应用到强化学习

DDPG

论文:

《Continuous control with deep reinforcement learning》

DDPG主要从:PG->DPG->DDPG发展而来。

Policy Gradient的概念参见《机器学习(三十四)》,这里不再赘述。

DPG

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

at=μ(stθμ)a_{t} = \mu(s_{t} | \theta^{\mu})

换句话说就是:PG的action是采样出来的,而DPG是算出来的。

为何需要确定性的策略?简单来说,PG方法有以下缺点:

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

  • 在PG的学习过程中,每一步计算policy gradient都需要在整个action space进行积分:

θ=SAρ(s)πθ(as)Qπ(s,a)dads\triangledown_{\theta} = \int_{\mathcal{S}} \int_{A} \rho(s) \pi_{\theta}(a|s)Q^{\pi} (s,a)\mathrm{d}a \mathrm{d}s

这个积分我们一般通过Monte Carlo 采样来进行估算,需要在高维的action空间进行采样,耗费计算能力。

  • 如果采取简单的Greedy策略,即每一步求解argmaxaQ(s,a)\arg\max_a Q(s,a)也不可行,因为在连续的、高维度的action空间,如果每一步都求全局最优解,太耗费计算性能。

当然,反过来说,DPG也有一个缺点:无法探索环境。因此,在DPG的实际使用中,我们要采用其他策略来弥补这个缺点。

Noisy

在介绍Rainbow的时候,我们提到了NoisyNet,但没有展开,这里可以说说Noisy在DRL中的作用。

Noisy在DRL中的用法主要有:

  • Noise on Action。就是随机乱选。

  • Noise on Parameters。这种方法由于网络结构不变,参数也不是全换,因此相当于是有约束的随机选择,或者说是有系统的尝试。

在DPG中,一般采用第二种方法。

需要注意的是,参数的改变意味着策略的改变,因此,Noise在episode中需要保持不变,这样才能检测随机策略的真正效果。否则就是无目的的乱抖了。(类似帕金森症)

产生噪声的方法有:

  • Independent Gaussian noise。

  • Factorised Gaussian noise。

DDPG

Deepmind在2016年提出了DDPG(Deep Deterministic Policy Gradient)。从通俗角度看:DDPG=DPG+A2C+Double DQN

深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG

上图是DDPG的网络结构图。仿照Double DQN的做法,DDPG分别为Actor和Critic各创建两个神经网络拷贝,一个叫做online,一个叫做target。即:

  • Actor(策略网络) online network(动作估计网络)

  • Actor(策略网络) target network(动作现实网络)

  • Critic(Q网络) online network(状态估计网络)

  • Critic(Q网络) target network(状态现实网络)

简单来说就是,Actor online network和Critic online network组成一对Actor-Critic;而Actor target network和Critic target networ组成另一对Actor-Critic。

当然,DDPG实际的步骤远比示意图复杂的多,可参见下图,这里不再赘述。

深度学习(四十一)——深度强化学习(4)A2C & A3C, DDPG

DDPG还有一个分布式版本。

论文:

《Distributed Distributional Deterministic Policy Gradients》

参考

https://mp.weixin.qq.com/s/dgLJrn3omUKMqmqTIEcoyg

Tensorflow实现DDPG

https://github.com/jinfagang/rl_atari_pytorch

ReinforcementLearning Learn Play Atari Using DDPG and LSTM.

https://zhuanlan.zhihu.com/p/65931777

强化学习-基于pytorch的DDPG实现

https://mp.weixin.qq.com/s/p2jF2Awmgeem-XGCkix-Lg

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

https://mp.weixin.qq.com/s/_dskX5U8gHAEl6aToBvQvg

从Q学习到DDPG,一文简述多种强化学习算法

https://www.zhihu.com/question/323420831

强化学习中A3C/DDPG/DPPO哪个效果更好?

https://blog.csdn.net/gsww404/article/details/80403150

从确定性策略(DPG)到深度确定性策略梯度(DDPG)算法的原理讲解及tensorflow代码实现

https://blog.csdn.net/qq_39388410/article/details/88828548

强化学习(DDPG,AC3,DPPO)

https://blog.csdn.net/qq_30615903/article/details/80776715

DDPG(Deep Deterministic Policy Gradient)算法详解

https://blog.csdn.net/kenneth_yu/article/details/78478356

DDPG原理和算法

https://zhuanlan.zhihu.com/p/27699682

荐译一篇通俗易懂的策略梯度(Policy Gradient)方法讲解