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
论文:
《Asynchronous Methods for Deep Reinforcement Learning》
在《机器学习(三十三)》的Experience Replay一节,我们指出训练数据间的相关性会影响算法收敛到最优解。
除了Experience Replay之外,异步更新也是一种有效的消除训练数据间相关性的方法。
上图是A3C的网络结构图。它实际上就是将A2C放在了多个线程中进行同步训练。可以想象成几个人同时在玩一样的游戏,而他们玩游戏的经验都会同步上传到一个中央大脑。然后他们又从中央大脑中获取最新的玩游戏方法。
A3C的原始论文运行在CPU上,这里还有一个GPU版本:
《GA3C: Reinforcement Learning through Asynchronous Advantage Actor-Critic on a GPU》
代码:
https://github.com/NVlabs/GA3C
这是GA3C的网络结构图。
论文:
《Connecting Generative Adversarial Networks and Actor-Critic Methods》
上图是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:把可扩展的自然梯度应用到强化学习
论文:
《Continuous control with deep reinforcement learning》
DDPG主要从:PG->DPG->DDPG发展而来。
Policy Gradient的概念参见《机器学习(三十四)》,这里不再赘述。
Deterministic Policy Gradient是Deepmind的D.Silver等在2014年提出的,即确定性的行为策略,每一步的行为通过函数 μ \mu μ直接获得确定的值:
a t = μ ( s t ∣ θ μ ) a_{t} = \mu(s_{t} | \theta^{\mu}) at=μ(st∣θμ)
换句话说就是:PG的action是采样出来的,而DPG是算出来的。
为何需要确定性的策略?简单来说,PG方法有以下缺点:
即使通过PG学习得到了随机策略之后,在每一步行为时,我们还需要对得到的最优策略概率分布进行采样,才能获得action的具体值;而action通常是高维的向量,比如25维、50维,在高维的action空间的频繁采样,无疑是很耗费计算能力的;
在PG的学习过程中,每一步计算policy gradient都需要在整个action space进行积分:
▽ θ = ∫ S ∫ A ρ ( s ) π θ ( a ∣ s ) Q π ( s , a ) d a d s \triangledown_{\theta} = \int_{\mathcal{S}} \int_{A} \rho(s) \pi_{\theta}(a|s)Q^{\pi} (s,a)\mathrm{d}a \mathrm{d}s ▽θ=∫S∫Aρ(s)πθ(a∣s)Qπ(s,a)dads
这个积分我们一般通过Monte Carlo 采样来进行估算,需要在高维的action空间进行采样,耗费计算能力。
当然,反过来说,DPG也有一个缺点:无法探索环境。因此,在DPG的实际使用中,我们要采用其他策略来弥补这个缺点。
在介绍Rainbow的时候,我们提到了NoisyNet,但没有展开,这里可以说说Noisy在DRL中的作用。
Noisy在DRL中的用法主要有:
Noise on Action。就是随机乱选。
Noise on Parameters。这种方法由于网络结构不变,参数也不是全换,因此相当于是有约束的随机选择,或者说是有系统的尝试。
在DPG中,一般采用第二种方法。
需要注意的是,参数的改变意味着策略的改变,因此,Noise在episode中需要保持不变,这样才能检测随机策略的真正效果。否则就是无目的的乱抖了。(类似帕金森症)
产生噪声的方法有:
Independent Gaussian noise。
Factorised Gaussian noise。
Deepmind在2016年提出了DDPG(Deep Deterministic Policy Gradient)。从通俗角度看:DDPG=DPG+A2C+Double DQN。
上图是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实际的步骤远比示意图复杂的多,可参见下图,这里不再赘述。
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)方法讲解