DDQN + DDPG ==> TD3
1. DDPG
DDPG由David Silver在2014年提出的DPG改进而来
-
DPG:on-policy算法
(1)critic更新
(2)actor更新
- DDPG:off-policy算法
(1)Target Network(软更新)
(2)Replay Memory(off-policy)
(3)Batch Normalization on Q network
(4)连续动作上加噪声
2. DDQN
DDQN由DQN改进而来,为了解决overestimate的问题
- DQN:Q-learning + Target Q Network + Replay Memory
-
DDQN:
(1)更新公式做了改进
(2)如果Q过估计,Target Q'会给出一个合理的值,如果Q'过估计,那对应的action不会被Q选中。
3. TD3
-
在DDPG的基础上优化,一共有6个网络,分别是value network1、value network2、policy network、target value network1、target value network2以及target policy network。对于计算策略神经网络参数更新时,只通过value network1进行估计计算
(1)Clipped Double-Q Learning:为了防止Q过估计,TD3学习两个Q网络,Q1和Q2,分别都有对应的target Q1和target Q2,计算Q Target的时候直接使用两个Q网络中更小的那个。
(2)“Delayed” Policy Updates:Target Network更新也是采用软更新,而且TD3更新Policy神经网络(和target神经网络)的频率低于Q网络,一般建议每两次Q网络更新,更新一次Policy神经网络,所以说是有delayed的更新
(3)Target Policy Smoothing:为了实现相似的action有相似的Q value这一点,在Target policy上增加random noise(实质上是一种正则化,万一有一个不正确的Q尖峰,可以通过action的noise平滑掉)。可以得到更加平滑的效果,也是为了提升其exploration的能力
(4)TD3算法伪代码 -
关于第(3)点的补充,如何平滑Q:在强化学习中一个很自然的想法就是:对于相似的action,他们应该有着相似的value。所以我们希望能够对action空间中target action周围的一小片区域的值能够更加平滑,从而减少误差的产生。paper中的做法是对target action的Q值加入一定的噪声
附一些不错的文章:
- 与策略相关的算法简介:http://xuleek.tech/2020/02/20/%E5%9F%BA%E4%BA%8Epolicy-gradient%E7%9A%84RL%E7%AE%97%E6%B3%95%E5%AE%9E%E7%8E%B0/
- Spinning Up:http://studyai.com/spinup/algorithms/td3.html
- 对TD3的3个技巧做更详细的解释:https://zhuanlan.zhihu.com/p/55307499
TD3代码:https://github.com/sfujim/TD3
关于uncertainty:https://arxiv.org/abs/1805.12114
网友评论