【深度强化学习】TD3算法:DDPG的进化

文章目录

  • 0)简述TD3
  • 1)Double Network
  • 2)Delayed
  • 3)Target Policy Smoothing Regularization
  • 算法流程
  • 总结

0)简述TD3

算法原文:Fujimoto, Scott, Herke van Hoof, and Dave Meger. “Addressing Function Approximation Error in Actor-Critic Methods.” arXiv preprint arXiv:1802.09477 (2018).

  • TD3:Twin Delayed Deep Deterministic Policy Gradient ,双延迟深度确定性策略梯度。
  • Deep Deterministic Policy Gradient, DDPG算法 不了解的可以看这里。
  • TD3算法是一个对DDPG优化的版本,即TD3也是一种基于AC架构的面向连续动作空间的DRL算法,主要包括三个非常主要的优化。

1)Double Network

  • DDPG源于DQN,是DQN解决连续控制问题的一种方法。然而DQN存在过估计问题

(1) 什么是过估计?

  • 过估计是指估计的值函数比真实的值函数大。

(2) 为什么DQN存在过估计的问题?

  • 因为DQN是一种off-policy的方法,每次学习时,不是使用下一次交互的真实动作,而是使用当前认为价值最大的动作来更新目标值函数,所以会出现对Q值的过高估计。通过基于函数逼近方法的值函数更新公式可以看出:
    θ t + 1 = θ t + α [ r + γ max ⁡ a ′ Q ( s ′ , a ′ ; θ − ) − Q ( s , a ; θ ) ] ▽ Q ( s , a ; θ ) \theta_{t+1}=\theta_t+\alpha\left[r+\gamma \max_{a^\prime}Q(s^\prime,a^\prime;\theta^-)-Q(s,a;\theta)\right]\bigtriangledown Q(s,a;\theta) θt+1=θt+α[r+γamaxQ(s,a;θ)Q(s,a;θ)]Q(s,a;θ)

(3) 怎么解决这个问题?

  • 为了解决过估计的问题,Hasselt提出了Double Q Learning方法,将此方法应用到DQN中,就是Double DQN,即DDQN
  • 所谓的Double Q Learning是将动作的选择动作的评估分别用不同的值函数来实现。
    动作的选择 a r g max ⁡ a Q ( S t + 1 , a ; θ t ) arg\max_aQ(S_{t+1},a;\theta_t) argmaxaQ(St+1,a;θt)
    动作的评估:选出 a ∗ a^* a后,利用 a ∗ a^* a处的动作值函数构造TD目标,TD目标公式为: Y t D o u b l e Q ≡ R t + 1 + γ Q ( S t + 1 , a r g max ⁡ a Q ( S t + 1 , a ; θ t ) ; θ t ′ ) Y^{DoubleQ}_t\equiv R_{t+1}+\gamma Q(S_{t+1},arg\max_aQ(S_{t+1},a;\bm{\theta}_t);\bm{\theta}^\prime _t) YtDoubleQRt+1+γQ(St+1,argamaxQ(St+1,a;θt);θt)
  • DDQN借鉴了Double Q-learning的思想,将选取action和估计value分别在predict network 和 target network网络上计算,有效优化了DQN的Q-Value过高估计问题。
  • 过估计这个问题也会出现在DDPG中。而要解决这个问题的思路,就在DQN的优化版本中——DDQN。
  • 在TD3中,使用 两套网络(Twin) 表示不同的Q值,通过选取最小的那个作为我们更新的目标(Target Q Value),抑制持续地过高估计。 ——TD3的基本思路

※有一点需要注意,DDPG算法涉及了4个网络,所以TD3需要用到6个网络。
1. 先看DDPG的网络结构:
【深度强化学习】TD3算法:DDPG的进化_第1张图片
2. 可看出在DDPG中,通过Critic网络估计动作值。一个Critic的估计可能较高,那么我们再加入一个:
【深度强化学习】TD3算法:DDPG的进化_第2张图片
上图目标网络Q1(A')和Q2(A')取最小值min(Q1,Q2),代替了DDPG的Q'(A')计算更新目标,即Ytarget = r + gamma * min(Q1, Q2)
Ytarget将作为Q1和Q2两个网络的更新目标

Q:既然更新目标是一样的,为什么还需要两个网络?
A:虽然更新目标一样,两个网络会越来越接近实际Q值。但由于网络参数初始值不同,计算的Q值也就有所不同,那么我们可以有空间选择较小的值去估算Q值,避免过估计


2)Delayed

  • 这里说的Dalayed ,是Actor更新的Delay。 也就是说相对于Critic可以更新多次后,Actor再进行更新。
  • 对于Actor来说,其实并不在乎Q值是否会被高估,其任务只是不断地做梯度上升,寻找最大的Q值。

想象一下,原本是最高点,当Actor好不容易到达最高点,Q值更新了,这里并不是最高点了。这是Actor只能转头再继续寻找新的最高点;更坏的情况是Actor被困在次高点,没能找到正确的最高点。

  • 如果Q能稳定下来再学习policy,应该就会减少一些错误的更新;所以,我们可以把Critic的更新频率,调的比Actor要高一点。让critic更加确定,actor再行动。

3)Target Policy Smoothing Regularization

  • 先看目标值
    y ← r + γ min ⁡ i = 1 , 2 Q θ i ′ ( s ′ , a ~ ) y\leftarrow r+\gamma \min_{i=1,2}Q_{\theta^\prime_i}(s^\prime,\bm{\tilde{a}}) yr+γi=1,2minQθi(s,a~)
  • TD3在目标网络估计Expected Return部分,对policy网络引入随机噪声,即:

a ~ ← π ϕ ′ ( s ′ ) + ϵ ,   ϵ ∼ clip ( N ( 0 , σ ~ ) , − c , c ) \tilde{a}\leftarrow\pi_{\phi^\prime}(s^\prime)+\epsilon, \ \epsilon\thicksim \text{clip}(\mathcal{N}(0,\tilde{\sigma}), -c, c) a~πϕ(s)+ϵ, ϵclip(N(0,σ~),c,c)
以期达到对policy波动的稳定性。

算法流程

【深度强化学习】TD3算法:DDPG的进化_第3张图片

总结

TD3对DDPG的优化,主要有以下三点:

  1. 用类似Double DQN的方式,解决了DDPG中Critic对动作Q值过估计的问题;
  2. 延迟Actor更新,使Actor的训练更加稳定;
  3. 在Actor目标网络输出动作A’加上噪声,增加算法稳定性。

相关参考:

  1. https://arxiv.org/pdf/1802.09477.pdf
  2. https://zhuanlan.zhihu.com/p/57206327
  3. https://blog.csdn.net/huibiannihao/article/details/106167522
  4. https://zhuanlan.zhihu.com/p/111334500
  5. https://zhuanlan.zhihu.com/p/47182584

你可能感兴趣的:(强化学习,Notes,强化学习,人工智能)