论文笔记之TD3算法

TD3:Twin Delayed Deterministic Policy Gradient,是DDPG的一种优化算法。
参考文档:
知乎:强化学习论文笔记-精简版
知乎:强化学习论文笔记2-细化版
论文地址(包括补充材料)点这里
源代码点这里
DDPG存在的问题:

  1. 对超参数敏感,不同的超参数设置会产生不同的效果。
  2. DDPG会产生 Q Q Q值过估计的问题,我们知道 Q Q Q值是很重要的,他影响着Actor网络的更新,因此该问题必须得到解决。

TD3就是用来解决DDPG第二个问题的,不仅如此,TD3还顺带减弱了高方差的影响。

Abstract

引言部分说了4件事,基本上包含了整篇文章的内容:

  1. 众所周知,DQN中存在着过估计现象。作者将分析Actor-Critic中也存在着过估计。为了解决overestimate,提出了截断的双Q学习算法
  2. 提出延迟策略更新思想来降低每次更新的error。
  3. 提出了策略平滑操作,即对Target部分引入高斯噪声来平滑 Q Q Q值。
  4. 实验基于OpenAI的gym库,TD3的表现力强于当时最优的RL算法。

1. Introduction

文章总体分为2部分:第一部分是解决过估计问题,另一部分是解决高方差问题

过估计

过估计现象在离散动作空间的DQN中存在着很大的问题——产生次优策略,但是在Actor-Critic中同样也存在这overestimation。为此,作者将以连续动作空间的DPG为靶子来展现:

  1. TD算法中的过估计问题以及累积error问题在AC上的展现。
  2. 提出相应的解决办法,在游戏上展现当前最好的表现力。

过估计现象的根源并不是DQN,而是Q-learning的 M a x Max Max操作。由于TD算法基于DP,其值函数的更新是基于下个状态,一个状态接一个状态,直到整个Episode结束,单步更新产生的bias会被连续积累,产生累积误差
经过分析,基于AC算法也存在overestimation,比如DPG算法。故面前有2套算法可以用来参考:

  1. DDQN(Van Hasselt 2016)中使用当前策略的动作来作为目标策略中的动作,每隔一定的step,就会将当前策略网络复制给目标网络,其通过解耦来避开取得最大的 Q π ( s ′ ) Q^\pi(s') Qπ(s)。但是作者指出:AC算法中如果这样做的话,会因为其本身策略更新速度慢而使得估计网络和Target网络过于相似,这样的话就起不到避开最大 Q Q Q值的作用了。故DDQN的方法无法借鉴。
  2. 故只剩一条路了,就是更加久远的(Van Hasselt 2010年)Double Q-learning算法。这种算法采用2个完全独立的估计器来做,其解耦性更强。

但是这么做虽然有效果,但是还不保险,因为如果其中一个估计器方差较高的话(即取值不稳定),那么就算其是无偏估计,那么也会使得解耦失效,比如估计器A取得最大值时的动作刚好就是估计器B过估计的动作,这也是会发生的。因此为了避免这个情况,就引出了Clipped Double Q-learning算法,其核心思想就是:我不相信2个估计器都会同时出现上述这种情况,就算我 Q B ( s ′ , arg max ⁡ a Q A ( s ′ ) ) Q^B(s',\argmax_aQ^A(s')) QB(s,aargmaxQA(s))出现了过估计,那我 Q A ( s ′ , arg max ⁡ a Q B ( s ′ ) ) Q^A(s',\argmax_aQ^B(s')) QA(s,aargmaxQB(s))不会也出现过估计问题。算法上的实现就是通过取这两个值的最小值
CDQ的缺陷就是会产生欠估计,但是欠估计总比过估计好,因为欠估计的负bias不会用过传播而扩散。

高方差

在RL中经常会有方差低偏差高,偏差低方差高的情况。因此我们经常在这两者中trade-off。文章中提出了3个减弱方差的办法:

  1. DQN中的技巧——Target network,通过降低累积误差(error)来降低方差。
  2. 解耦Actor网络的更新和Critic网络的更新,让Actor更新的比Critic慢一点,知道Critic能有个比较准确的值的时候,来更新Actor的参数,即延迟策略更新
  3. 引入正则化策略,用于解决过拟合现象(方差较高),通过引入高斯平滑来达到近似动作有近似值函数的目的。

结合以上2点形成一套在DDPG上修改的off-policy的Actor-Critic算法——TD3算法。

2. Related Work

一些需要参考的文章,推荐看以下几篇:
Double Q-learning
DQN
DDQN
Smoothed Q
DPG
DDPG

3. Background

都是关于MDP、DPG、Q-learning、DQN的一些基础知识,老生常谈了,简要说一下。
DPG策略的更新是基于值函数的:
∇ ϕ J ( ϕ ) = E s ∼ ρ π [ ∇ a Q π ( s , a ) ∣ a = π ( s ) ∇ ϕ π ϕ ( s ) ] (1) \nabla_\phi J(\phi)=\mathbb{E}_{s\sim\rho^\pi}[\nabla_aQ^\pi(s,a)|_{a=\pi(s)}\nabla_\phi\pi_\phi(s)]\tag1 ϕJ(ϕ)=Esρπ[aQπ(s,a)a=π(s)ϕπϕ(s)](1)
RL的算法都是基于MDP背景基础下的,其中一类算法Q-learning作为近年来多种Model-free算法的基础,这是一种基于贝尔曼等式的TD算法。其更新的目标是: Q π ( s , a ) = r + γ E s ′ , a ′ [ Q π ( s ′ , a ′ ) ] , a ∼ π ( s ′ ) (2) Q^\pi(s,a)=r+\gamma \mathbb{E}_{s',a'}[Q^\pi(s',a')],\\a\sim \pi(s')\tag2 Qπ(s,a)=r+γEs,a[Qπ(s,a)],aπ(s)(2)
DQN有2大法宝,其中之一就是推出了Target Q Network,用于作为TD目标值更新 Q Q Q估计值: y = r + γ Q θ ′ ( s ′ , a ′ ) , a ′ ∼ π ϕ ′ ( s ′ ) (3) y=r+\gamma Q_{\theta'}(s',a'),\\a'\sim\pi_{\phi'}(s')\tag3 y=r+γQθ(s,a),aπϕ(s)(3)DDQN就是改变了 a ′ a' a的来源—— a ′ ∼ π ϕ ( s ′ ) a'\sim\pi_\phi(s') aπϕ(s)
Target网络通过估计网络的软更新实现,一般有2种方式,一种是以固定次数的step,另一种是 θ ′ ← τ θ + ( 1 − τ ) θ ′ \theta'\gets\tau\theta+(1-\tau)\theta' θτθ+(1τ)θ τ \tau τ一般取值较小。

4. Overestimation Bias

Q-learning在离散动作空间下产生overesitimation的原因,在Double Q-learning这篇文章中用数学公式解释过,这里用一个比较简单的方式说明一下过估计原因:
E [ m a x a ′ Q ( s ′ , a ′ ) + ϵ ] ≥ m a x a ′ Q ( s ′ , a ′ ) \mathbb{E}[max_{a'}Q(s',a')+\epsilon]\ge max_{a'}Q(s',a') E[maxaQ(s,a)+ϵ]maxaQ(s,a),其中 ϵ \epsilon ϵ来自于网络估计中的噪声或者样本噪声,这样一来,TD目标值就显得偏大,因此连续的过估计将会通过贝尔曼等式扩散,误差被不断累积。具体来说:(参考曾伊言:强化学习算法TD3论文的翻译与解读)
在这里插入图片描述
接下来作者要在DPG算法中分析在连续动作空间下overestimation的原因(4.1节),以及引出CDQ算法去解决(4.2节)

4.1. Overestimation Bias in Actor-Critic

使用连续动作空间下的算法DPG作为研究目标并说明在Critic网络中的过估计。

ϕ a p p r o x \phi_{approx} ϕapprox实际过程中Actor网络参数,其更新来源于 Q θ ( s , a ) Q_\theta(s,a) Qθ(s,a) ϕ t r u e \phi_{true} ϕtrue真实值(或者说理想值),下面证明AC过估计的 π a p p r o x \pi_{approx} πapprox π t r u e \pi_{true} πtrue同理。其更新来源于真值 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a):(做标准化)
ϕ a p p r o x = ϕ + α Z 1 E s ∼ ρ π [ ∇ ϕ π ϕ ( s ) ∇ a Q θ ( s , a ) ∣ a = π ϕ ( s ) ] , ϕ t r u e = ϕ + α Z 2 E s ∼ ρ π [ ∇ ϕ π ϕ ( s ) ∇ a Q π ( s , a ) ∣ a = π ϕ ( s ) ] Z − 1 ∣ ∣ E [ ⋅ ] ∣ ∣ = 1 (4) \phi_{approx}=\phi+\frac{\alpha}{Z_1}\mathbb{E}_{s\sim\rho^\pi}[\nabla_\phi\pi_\phi(s)\nabla_aQ_\theta(s,a)|_{a=\pi_\phi(s)}],\\ \phi_{true}=\phi+\frac{\alpha}{Z_2}\mathbb{E}_{s\sim\rho^\pi}[\nabla_\phi\pi_\phi(s)\nabla_aQ^\pi(s,a)|_{a=\pi_\phi(s)}]\\ Z^{-1}||\mathbb{E[\cdot]}||=1\tag4 ϕapprox=ϕ+Z1αEsρπ[ϕπϕ(s)aQθ(s,a)a=πϕ(s)],ϕtrue=ϕ+Z2αEsρπ[ϕπϕ(s)aQπ(s,a)a=πϕ(s)]Z1E[]=1(4)如果没有标准化 Z Z Z,那么在稍微严格的条件下高偏估计仍然保证会发生,在补充材料中进一步说明。

AC中出现过估计的原因

在这里插入图片描述
Smoothed-Q论文中可知:在DDPG算法中很容易出现多个极大峰,有时候你的结果很可能就是局部最大。过估计就是要比较 Q e v a l Q_{eval} Qeval Q 真 值 Q_{真值} Q之间的关系,因此我们要注意尽量要把比较限制在同一个极大峰之内,否则比较是没有意义的。如何限制呢?作者用2个足够小的参数 ϵ 1 、 ϵ 2 \epsilon_1、\epsilon_2 ϵ1ϵ2来限制学习率 α \alpha α
α < ϵ 1 \alpha<\epsilon_1 α<ϵ1时,因为同个学习率下两种策略网络参数更新情况不同,所以可能存在下列情况,如下图所示:
在这里插入图片描述
故:
E [ Q θ ( s , π a p p r o x ( s ) ) ] ≥ E [ Q θ ( s , π t r u e ( s ) ) ] (5) \mathbb{E}[Q_\theta(s,\pi_{approx}(s))]\ge\mathbb{E}[Q_\theta(s,\pi_{true}(s))]\tag5 E[Qθ(s,πapprox(s))]E[Qθ(s,πtrue(s))](5)
同理,当 α < ϵ 2 \alpha<\epsilon_2 α<ϵ2时,可能存在下列情况,如下图所示:
在这里插入图片描述
故:
E [ Q π ( s , π t r u e ( s ) ) ] ≥ E [ Q π ( s , π a p p r o x ( s ) ) ] (6) \mathbb{E}[Q^\pi(s,\pi_{true}(s))]\ge\mathbb{E}[Q^\pi(s,\pi_{approx}(s))]\tag6 E[Qπ(s,πtrue(s))]E[Qπ(s,πapprox(s))](6)
又因为存在可能: E [ Q θ ( s , π t r u e ( s ) ) ] ≥ E [ Q π ( s , π t r u e ( s ) ) ] \mathbb{E}[Q_\theta(s,\pi_{true}(s))]\ge\mathbb{E}[Q^\pi(s,\pi_{true}(s))] E[Qθ(s,πtrue(s))]E[Qπ(s,πtrue(s))],因此当 α ≤ min ⁡ ( ϵ 1 , ϵ 2 ) \alpha\leq\min(\epsilon_1,\epsilon_2) αmin(ϵ1,ϵ2)(这个条件意思就是满足上述2种情况)时,存在:
E [ Q θ ( s , π a p p r o x ( s ) ) ] ≥ E [ Q π ( s , π a p p r o x ( s ) ) ] (7) \mathbb{E}[Q_\theta(s,\pi_{approx}(s))]\ge\mathbb{E}[Q^\pi(s,\pi_{approx}(s))]\tag7 E[Qθ(s,πapprox(s))]E[Qπ(s,πapprox(s))](7)公式7的意思就是我在实际训练过程中,在动作 π a p p r o x \pi_{approx} πapprox处出现了过估计。
在AC中过估计的根本原因在于策略网络直接对 Q Q Q值训练,对 Q Q Q值的提升没有严格的界限,因此就可能会造成将 Q Q Q值提升到超出真值的大小。

尽管每次单步更新的过估计很小,但多步更新之后的累计误差会很大。其次,Actor网络和Critic网络是互相连接影响的,一个不准确的 Q Q Q值会导致错误的策略更新,因为一个次优的Critic会产生一个次优的策略(次优的Actor参数 ϕ \phi ϕ),然后这个次优的策略将会产生2大危害

  1. 在之后的值函数更新过程中生成不准确 Q Q Q值。
  2. 这个次优策略 a a a将会在下次策略更新中得到强化(DPG本质还是起源于传统的PG算法),这就是强化学习的“强化”

接下来用实践来验证:
在这里插入图片描述
这幅图是怎么画的呢?具体细节如下:

  1. 实验分为训练与评估(测试),一共训练100万个steps,评价准则是 Q π Q^\pi Qπ值。一共测试1000个Episodes,也就是说每过1000个steps就测试一次,一共采样1000个试验点。测试就是用当前策略作为暂时的目标策略,让Agent用这个策略去跑这个游戏,记下每一步的奖励 r r r,最后计算出折扣累计奖励作为 Q 真 值 Q_{真值} Q
  2. 因为代码在实验过程中,有一个experience replay过程,需要累计到一定数量才开始训练,因此测试的时候就从开始从经验池采集trans开始。
  3. 这里真实值的计算和我们以往不一样,比如在DQN这篇文章中实验的真值是一条横线,那是因为他画的是完全训练结束之后策略下的 Q 真 值 Q_{真值} Q,是完全训练好的策略,等效于Figure 1中的最后一个试验点的值。

从结果来看:

  1. DDPG存在着很严重的过估计现象。
  2. CDQ算法可以有效减弱overestimation。

4.2. Clipped Double Q-Learning for Actor-Critic

DDQN抑制过估计的思想适合在离散动作空间下,但不适合在Actor-Critic算法中。因此作者提出了基于Double Q-learning算法的Clipped Double Q-learning算法用于有效解决AC中的过估计问题。将CDQ分为Double Q-learning和Clipped两部分来看。

Double Q-learning

这里和Double Q-learning论文中的实现是大体上一样的,用2个独立的估计器 ( Q θ 1 , Q θ 2 ) (Q_{\theta1,}Q_{\theta2}) (Qθ1,Qθ2)来解耦值函数更新中的 M a x Max Max操作(详见我的另一篇笔记)。但是和Double Q-learning的实现上还有一点区别:

  1. 因为CDQ大多用在连续状态空间下,因此需要借鉴DQN中的Target网络技术。
  2. 借鉴DDQN中的做法,即Target中使用当前策略在 s ′ s' s下的动作,而非目标策略在 s ′ s' s下的动作。

借鉴DDQN的实现上的Critic更新: y = r + γ Q θ ′ ( s ′ , π ϕ ( s ′ ) ) (8) y=r+\gamma Q_{\theta'}(s',\pi_\phi(s'))\tag8 y=r+γQθ(s,πϕ(s))(8)在这里带 ′ ' 的就是Target网络的参数,否则就是当前策略网络(估计网络)的参数。
但在实际实现过程中,发现DDQN的方法并不适用与Actor-Critic,因为AC算法更新忒慢了,以至于当前网络和目标网络过于相近,无法成功解耦,等效于DQN,并且实际提升只有一丢丢,因此放弃DDQN,转向Double Q-learning。
基于Double Q-learning的AC算法需要用到1对估计器以及对应的1对策略参数: ( Q θ 1 , π θ 1 ) (Q_{\theta1},\pi_{\theta1}) (Qθ1,πθ1) ( Q θ 2 , π θ 2 ) (Q_{\theta2},\pi_{\theta2}) (Qθ2,πθ2),Critic更新如下:
y 1 = r + γ Q θ 2 ′ ( s ′ , π ϕ 1 ( s ′ ) ) y 2 = r + γ Q θ 1 ′ ( s ′ , π ϕ 2 ( s ′ ) ) (9) y_1=r+\gamma Q_{\theta'_2}(s',\pi_{\phi1}(s'))\\ y_2=r+\gamma Q_{\theta'_1}(s',\pi_{\phi2}(s'))\tag9 y1=r+γQθ2(s,πϕ1(s))y2=r+γQθ1(s,πϕ2(s))(9)可以看出其结合了Double Q-learning的强解耦性+DQN的Target网络+DDQN技术(注意目前还没有clipped操作),我们称之为DQ-AC算法
DDQN-AC和DQ-AC的实验结果如下:
在这里插入图片描述
可以看出:

  1. DDQN-AC出现了和Figure 1中DDPG类似的overestimation。
  2. 虽然基于Double Q-learning的AC算法一定程度上削弱了正偏差,但是并没有达到我们的预期,仍有部分正偏差残留着。

这是因为其实两个Critic并不完全独立

Clipped

  1. 我们在Double Q-learning论文中的 Q Q Q使用Q表来存储,对于估计器A,我们只需要查询获得估计器B的 Q Q Q值即可。但是在DQ-AC中,目标值 y 1 、 y 2 y_1、y_2 y1y2的计算包含了另一个Critic的网络参数 θ \theta θ,这是一个会变化可学习的参数。因此不能说2个Critic网络是独立的。
  2. 两个Critic共用一个replay buffer

不独立就意味着解耦性变弱了,因此对于某些状态,解耦失效,那么双估计器就是个空壳—— Q θ 2 ( s , π ϕ 1 ( s ) ) > Q θ 1 ( s , π ϕ 1 ( s ) ) Q_{\theta_2}(s,\pi_{\phi_1}(s))>Q_{\theta_1}(s,\pi_{\phi_1}(s)) Qθ2(s,πϕ1(s))>Qθ1(s,πϕ1(s))。而后者(DDQN-AC)本来就一般都会产生正偏差,这么一来,偏差进一步拉大了!
为了缓解这个问题,作者引入Clipped Double Q-learning算法:
y 1 = r + γ min ⁡ i = 1 , 2 Q θ i ′ ( s ′ , π ϕ 1 ( s ′ ) ) y 2 = r + γ min ⁡ j = 1 , 2 Q θ j ′ ( s ′ , π ϕ 2 ( s ′ ) ) (10) y_1=r+\gamma \min_{i=1,2}Q_{\theta'_i}(s',\pi_{\phi_1}(s'))\\ y_2=r+\gamma \min_{j=1,2}Q_{\theta'_j}(s',\pi_{\phi_2}(s'))\tag{10} y1=r+γi=1,2minQθi(s,πϕ1(s))y2=r+γj=1,2minQθj(s,πϕ2(s))(10)可以看出这其实是一个缓解过估计而非消除的办法,意思就是既然2种情况下都可能产生过估计,那我就挑一个两个正偏差较小的那个作为我的目标值。
Note
CDQ只是缓解,其只是不会引入比标准Q-learning更新更多的正bias,也就是说,最坏的情况才和标准Q-learning引入的过估计量相等。
总结
AC更新慢 ⇒ \Rightarrow 弃DDQN-AC用DQ-AC;
DQ-AC做不到完全独立 ⇒ \Rightarrow 弃DQ-AC用CDQ

CDQ缓解过估计的效果很好(见Figure 1)。但其会产生欠估计,但欠估计总好过overestimation,因为欠估计不会通过策略更新而传播出去。
在TD3算法中,为了节省计算消耗,进行了2处改动:
y ← r + γ min ⁡ i = 1 , 2 Q θ i ′ ( s ′ , π ϕ ( s ′ ) ) y\gets r+\gamma \min_{i=1,2}Q_{\theta'_i}(s',\pi_\phi(s')) yr+γi=1,2minQθi(s,πϕ(s))这里和伪代码中有点出入,伪代码中是 π ϕ ′ \pi_{\phi'} πϕ,那是因为TD3是建立在DDPG的,DDPG最初的源码是基于DQN,自然没有使用DDQN的消除过估计技巧。

  1. 不使用2个策略网络,而使用单个策略网络 π ϕ \pi_\phi πϕ,其更新只于 Q θ 1 Q_{\theta_1} Qθ1有关,因此我们需要最后 Q θ 1 Q_{\theta_1} Qθ1收敛。
  2. 使用一个目标值 y y y,即令 y 1 = y 2 y_1=y_2 y1=y2,此时 Q θ 1 和 Q θ 2 Q_{\theta_1}和Q_{\theta_2} Qθ1Qθ2共用一个TD目标值来更新 θ 1 、 θ 2 \theta_1、\theta_2 θ1θ2。这里看起来可能对 Q θ 2 Q_{\theta_2} Qθ2不太公平且不好理解,但最后收敛性证明中确实证明了这种做法可以导致CDQ算法收敛,即 Q θ 1 ( s , a ) → Q ∗ Q_{\theta_1}(s,a)\to Q^* Qθ1(s,a)Q

实际操作

  1. 如果 Q θ 2 > Q θ 1 Q_{\theta_2}>Q_{\theta_1} Qθ2>Qθ1,那么根据公式(10),我们就按标准的Q-learning更新,以防止正bias变得更大。
  2. 如果 Q θ 2 < Q θ 1 Q_{\theta_2}<Q_{\theta_1} Qθ2<Qθ1,那么根据公式(10),那就是DQ-AC,即像Double Q-learning一样减小过估计。

作者还指出公式(10)的minimize操作可以有效降低 Q Q Q值的方差,使得学习过程更加稳定。具体来说,将公式(10)的 Q Q Q看成R.V.,因为一群随机变量的最小值越小,则整体分布的方差越大。而在公式(10)中,随机变量 Q Q Q本身就是比较大的值(有可能存在过估计的,因为CDQ是减弱而不是消除,最差情况就是Q-learning,这里上面分析过的),其通过最小化获得一个比原本很大的值更小的一个值,因此公式(10)的最小化运算使得 Q Q Q值分布的方差就得到了减小,也就是说训练过程的稳定性得到了提升。

CDQ收敛性证明

这就是Clipped Double Q-learning算法的全部过程了,还缺少一个其收敛性证明。证明的总体过程和Double Q-learning的收敛性证明一样的。区别在于

  1. Q A 、 Q B Q^A、Q^B QAQB的更新的TD目标值共用,都是 y y y
  2. Q A 、 Q B Q^A、Q^B QAQB都是同是更新,而Double Q-learning单个step要么只更新A,要么只更新B。(其实CDQ本质也是这样的,但是为了节约计算资源,只好共用1个目标值,我证明过不经节约资源时候的CDQ也是会收敛的,那个时候就是个Double Q-learning,只不过多了一个clip)。

证明细节见补充材料,如果要见更详细的过程,可以参考我的另一篇论文笔记之Double Q-learning中关于收敛性证明。或者可以见下图,我在公式(21)之后增加了详细的过程:在这里插入图片描述

5. Addressing Varience

这一节用3中方式去解决高方差问题,众所周知,高方差主要的危害:

  1. 降低学习速率。
  2. 降低学习表现力
  3. 学习过程不稳定。

5.1. Accumulating Error

TD算法是一种用下一个状态估计值估计当前状态估计值的过程,整个Episode由每一个step连接起来,而每一个step都必然会有error,即TD误差。因此整个Episode就会有累积误差出现。虽然我们的算法在缩小每一步的TD误差 δ \delta δ,但是其仍会累积,可能会导致较大的正偏差,从而产生次优策略。
TD算法的单步更新:
Q θ = r + γ E [ Q θ ( s ′ , a ′ ) ] − δ ( s , a ) (11) Q_\theta=r+\gamma\mathbb{E}[Q_\theta(s',a')]-\delta(s,a)\tag{11} Qθ=r+γE[Qθ(s,a)]δ(s,a)(11)
⇒ \Rightarrow
Q θ ( s , a ) = r + γ E [ Q θ ( s ′ , a ′ ) ] − δ = r + γ E [ r ′ + γ E [ Q θ ( s ′ ′ , a ′ ′ ) − δ ′ ] ] − δ = E s i ∼ ρ π , a i ∼ π [ ∑ i = t T γ i − t ( r i − δ i ) ] (12) Q_\theta(s,a)=r+\gamma\mathbb{E}[Q_\theta(s',a')]-\delta\\ =r+\gamma\mathbb{E}[r'+\gamma\mathbb{E}[Q_\theta(s'',a'')-\delta']]-\delta\\ =\mathbb{E}_{s_i\sim\rho^\pi,a_i\sim\pi}[\sum^T_{i=t}\gamma^{i-t}(r_i-\delta_i)]\tag{12} Qθ(s,a)=r+γE[Qθ(s,a)]δ=r+γE[r+γE[Qθ(s,a)δ]]δ=Esiρπ,aiπ[i=tTγit(riδi)](12)
从这个式子可知:

  1. Q Q Q值的方差正比于实时奖励与TD-error的方差。
  2. 如果单步的 δ \delta δ不去控制的话,衰减因子 γ \gamma γ越大,则 Q Q Q值的方差增长越快。
  3. 累积误差 ∑ i δ i \mathop{\sum}\limits_i\delta_i iδi存在于 Q Q Q值的估计中。
  4. 可以看出,累计误差足以影响 Q Q Q值估计的准确性,因此我们在设计算法的时候就要想办法解决这个累计误差,而累计误差又来源于单步更新的TD-error,故我们的目标就是想办法减小单步的误差,后文的Target网络技术就可以减缓单步累计误差。

另外每次单步更新只减小了一个mini-batch的error,除此之外的error并没有得到减小。

5.2. Target Networks and Delayed Policy Updates

在这一节主要3件事:

  1. 展示Target Network和值函数估计误差之间的关系。
  2. Target网络技术对于方差的影响。
  3. 提出策略延迟算法来减小error(bias和var)。

Note:
值函数估计误差(error)包含了bias和var。

Target Network和值函数估计误差之间的关系

Target Network在DQN中取得了很好的效果,其被当做“标签”称为几乎固定的值,这么做的好处在于提升了学习的稳点性,试想一下,如果每个step,目标值都随着估计网络变动而变动(NIPS DQN),那么势必会造成不稳定的学习,简单的理解就是你的目标一直在移动,他在前面四处跑,你在后面四处追,既无法收敛,而且学习过程极不稳定,因此Target network在DQN中起到了提升稳定性,减小方差的作用。
如果没有固定的Target Network的话,每个单步更新都会有一定的TD-error。这些累积起来的error不仅本身就是有害的,并且当使用 M a x Max Max策略时,还会造成过估计而 Q Q Q值发散,得到次优策略。

Target网络技术对于方差的影响

接下来作者将会在AC算法上探究Target网络的作用
在这里插入图片描述
如上图所示的实验配置:

  1. 作者用① τ = 1 \tau=1 τ=1 τ = 0.01 \tau=0.01 τ=0.01 τ = 0.1 \tau=0.1 τ=0.1,分别对应于无Target网络,较为固定的Target网络以及处于二者中的Target网络。
  2. 左图是固定的策略网络,也就是说是一个已经训练完成的策略下,训练Critic网络。Agent在环境中开始游戏,然后跟踪在某个状态上的 Q 值 Q值 Q,红色线是累计衰减奖励,因此是个固定值。右图是正在训练中的策略网络下,同时也要训练Critic。Agent开始游戏,其实就是我们平时的训练过程,Critic和Actor互相作用,然后跟踪某个状态上的 Q Q Q值。

实验结果分析:

  1. 首先从左图来看,由于策略本身就是最优策略,因此都3种配置都很快达到了收敛。相对而言,无Target网络“缓冲”最快,但是稳定性是三者中最差的,初步来看,Target网络对于稳定训练,控制方差有帮助。
  2. 其次从右图来看,无Target网络或者 τ = 0.1 \tau=0.1 τ=0.1的目标网络稳定性很差,阴影部分是方差大小。而 τ = 0.01 \tau=0.01 τ=0.01这种人如其名的Target网络虽然收敛速度较慢,但其稳定性秒杀其余2个。

综上所述
Target网络确实提升训练的稳定性,降低方差。

提出策略延迟算法来减小error

Figure 3引发了作者提出的一个问题:AC算法会发散的原因是什么?

  1. 在无Target网络或者Target网络不那么固定的时候,显然 Q Q Q值的方差较大,因此直接会导致策略更新的不稳定
  2. 4.1节的后半段以及Figure 3中右图表现这么不稳定均是因为:AC算法由于是一个Critic和Actor网络相互联系的算法。由于Critic的过估计会产生糟糕的策略,而这个策略会在Actor的策略更新中得到加强。换句话说,当Critic的估值不准确的时候,Actor就会朝着错误的方向更新。而错误的Acton会参与到Critic的训练中,会产生错误的 Q Q Q值。
    在这里插入图片描述

因此让这种不稳定的糟糕循环结束的一个方式就是让Actor的更新速率低于Critic的更新速率,让Critic先更新,在TD-error优化到比较小的时候再更新Actor网络的参数,即策略延迟更新

  1. TD3算法中, 用一个固定参数 d d d作为延迟更新的时长。
  2. 为了确保TD-error足够的小,Critic的Target网络就得足够“固定”( τ \tau τ足够的小) θ ′ ← τ θ + ( 1 − τ ) θ ′ \theta'\gets\tau\theta+(1-\tau)\theta' θτθ+(1τ)θ
  3. 这种目标策略延迟更新的最大好处在于:提升表现力的同时缩短了训练时间,因为以前Critic和Actor总是同时更新,而现在Actor几乎有一半的时间都不用训练,Actor网络就在那边啥都不做就行了,这大大提升了训练效率,在第6节Experiments可以看到训练速度的提升。

Note
经典的算法DDPG(包括DPG)是AC算法中的一种,因此DDPG在训练过程中就不稳定,方差较大,容易过拟合。

5.3. Target Policy Smoothing Regularization

本节的核心就是:DPG容易过拟合,并且其 Q Q Q值容易产生尖峰(尖峰可能是由于过估计导致的,使得在一个局部范围内,某个动作的 Q Q Q值可能特别大)。因此我们引入一种正则化技术专门用于解决过拟合问题。这种正则化技术就是策略平滑,它通过引入高斯噪声来实现。通过正则化技术解决高方差问题的核心就是:动作值相近应该具有相近的 Q Q Q值。试想一下,如果两个动作相似但 Q Q Q值相差很大,那结果自然就很不稳定。

具体分析如下:
在DPG中,我们在更新Critic的时候,需要用到确定性策略 μ θ \mu_\theta μθ,其对 Q Q Q值的不准确很敏感。因为 μ \mu μ的更新来自于 Q Q Q值,当 Q Q Q值如果不准确的话,甚至有较大方差的时候,那么直接会导致确定性策略的方差很大,那么自然Critic更新中TD目标值的方差就很大,很不稳定。
那么TD目标值这么不稳定,咋办呢?——引入正则化技术。这种正则化技术使得 Q Q Q值变得平滑,一定程度上也缓解了确定性策略对 Q Q Q值不准确而敏感的问题,平滑前后的 Q θ ′ Q_{\theta'} Qθ如下:在这里插入图片描述

策略平滑的公式如下:
y = r + E ϵ [ Q θ ′ ( s ′ , π ϕ ′ ( s ′ ) + ϵ ) ] (13) y=r+\mathbb{E}_\epsilon[Q_{\theta'}(s',\pi_{\phi'}(s')+\epsilon)]\tag{13} y=r+Eϵ[Qθ(s,πϕ(s)+ϵ)](13)
这里补充下Smoothed这篇文章中的平滑做法,其是平滑 Q θ Q_\theta Qθ,而不是 Q θ ′ Q_{\theta'} Qθ,本文中是平滑目标网络,所以才叫目标策略平滑:
在这里插入图片描述
两者其实本质都是相同的
关于平滑的理论基础见我的平滑论文笔记

在TD3的算法中是这样的:
y = r + γ Q θ ′ ( s ′ , π ϕ ′ ( s ′ ) + ϵ ) ϵ ∼ c l i p ( N ( 0 , σ ) , − c , c ) (14) y=r+\gamma Q_{\theta'}(s',\pi_{\phi'}(s')+\epsilon)\\ \epsilon\sim clip(\mathcal{N}(0,\sigma),-c,c)\tag{14} y=r+γQθ(s,πϕ(s)+ϵ)ϵclip(N(0,σ),c,c)(14)在补充材料中,为了避免出现不可能的动作,还可以再加一个 c l i p clip clip
y = r + γ Q θ ′ ( s ′ , c l i p ( π ϕ ′ ( s ′ ) + ϵ , a c t i o n m i n , a c t i o n m a x ) ) ϵ ∼ c l i p ( N ( 0 , σ ) , − c , c ) y=r+\gamma Q_{\theta'}(s',clip(\pi_{\phi'}(s')+\epsilon,action_{min},action_{max}))\\ \epsilon\sim clip(\mathcal{N}(0,\sigma),-c,c) y=r+γQθ(s,clip(πϕ(s)+ϵ,actionmin,actionmax))ϵclip(N(0,σ),c,c)

6. Experiments

综合第四节和第五节
基于DDPG,用上本节5.2、5.3的2种技巧——策略平滑策略延迟,再加4.2节的技巧——Clipped Double Q-learning,就形成了我们的TD3算法,这种算法用于解决值函数估计误差(bias+var),在连续动作空间游戏上获得了不错的表现力,算是DDPG的强化版本。
在这里插入图片描述

6.1 Evaluation

这是一个通过评估TD3和其他算法表现力和学习速率来体现TD3算法的强大,实验的具体细节如下:

  1. 在OpenAI的 Gym库中的MuJoCo仿真模拟器作为训练测试平台,在7款游戏中进行较量,如HalfCheetah、Hopper、Walker2d等游戏。
  2. 进行7种算法的对比,分别是TD3、DDPG、our DDPG、PPOTRPO(OpenAI学习库标准算法,PPO的前身)、ACKTRSAC
  3. our DDPG算法,不同于标准的DDPG算法,它改变了一些网络的结构,比如Critic网络的输入为状态和动作,而非只是状态,具体的可见补充材料C;还有超参数以及探索噪声( O U → N OU\to\mathcal{N} OUN)。
  4. 平滑参数 ϵ ∼ N ( 0 , 0.2 ) \epsilon\sim\mathcal{N}(0,0.2) ϵN(0,0.2),其中限制的上限 c = 0.5 c=0.5 c=0.5
  5. Target策略延迟d=2,Target网络更新参数 τ = 0.005 \tau=0.005 τ=0.005
  6. 行为策略的噪声 N ( 0 , 0.1 ) \mathcal{N}(0,0.1) N(0,0.1)
  7. 实验总体分为训练与测试。其中训练为100万个steps,每5000个steps进行一次Evaluation(测试),也就是说Figure 5一共包含200个采样点。评估是进行10个Episode(就是 s t a r t → e n d start\to end startend),每一个Episode都设置一个随机种子(gym库可以配置的),由于是测试,因此行为策略必须是确定性策略,即不包含高斯噪声,最后评估的准则是这10次的平均奖励,也就是 1 10 ∑ i 10 Q i π \frac{1}{10}\mathop{\sum}\limits^{10}_i Q^\pi_i 101i10Qiπ

最后的实验结果如下所示Figure 5Table 1在这里插入图片描述
结论

  1. Figure 5中每一幅图均为某个游戏的7种算法的学习曲线。纵坐标为测试的平均奖励,横坐标为时间步。阴影部分为10次中最大奖励曲线与最小奖励曲线之间的差距,可以用方差来衡量,为了避免果条曲线的阴影部分重合而影响观察,作者取了一半的方差(原来阴影宽度的一半)呈现出来。
  2. 从曲线结果来看,TD3的表现力几乎碾压了其余6种算法,并且学习速率也是碾压。
  3. 图中可以看出两种DDPG各自的表现力都不相同,好像和两种算法似的,故可以看出DDPG对超参数敏感,如Table 3所示:在这里插入图片描述
  4. Table 1是取了测试时候的最大平均奖励,如下所示:在这里插入图片描述在这个评价指标上,TD3也是呈现了碾压态势。这里需要注意的是,表中作者对于TD3的最大值是用 + + +来表示的,它还表示了最小值是多少。

6.2 Ablation Studies

关于什么是Ablation Studies,可以看看网友SleepyBag的回答简单来说就是基于控制变量法来研究TD3每个成分的性能
在我们的实验中,由于TD3属于多个技巧堆叠而成,因此使用Ablation studies最为合适,具体的存在以下关系:
T D 3 = A H E + D P + T P S + C D Q 或 者 : T D 3 = D D P G + D P + T P S + C D Q TD3=AHE+DP+TPS+CDQ\\ 或者:TD3=DDPG+DP+TPS+CDQ TD3=AHE+DP+TPS+CDQTD3=DDPG+DP+TPS+CDQ
实验结果见Table 2在这里插入图片描述

Figure 8
在这里插入图片描述
我们通过这一节来检测TD3各个技巧的表现力,主要进行2组实验:

  1. 实验一:包括完整的TD3算法、AHE(our DDPG)算法(改变了结构、超参数、探索策略)、DDPG算法、AHE+DP(策略延迟更新)、AHE+TPS(目标策略平滑)、AHE+CDQ(截断的双Q)、TD3-DP、TD3-TPS、TD3-CDQ。
  2. 实验二:DQ-AC、DDQN-AC。

实验一

Table 2上的实验数据就是Ablation studies实验,其记录的是10次随机种子测试中最大的平均奖励,和Table 1类似。从该表格中我们可知:

  1. 增加一个技巧的对表现力的提升不够明显,比如 ③ ↔ ( ④ 、 ⑤ 、 ⑥ ) ③\leftrightarrow(④、⑤、⑥) ()
  2. 增加一对组合技巧对表现力的提升还是较为明显,比如 ③ ↔ ( ⑦ 、 ⑧ 、 ⑨ ) ③\leftrightarrow(⑦、⑧、⑨) ()
  3. 增加三个组合的TD3表现力最强,比如①几乎在四组实验中表现力最高(黑体标粗)。其实个人认为这里的Ablation实验有一点不是很严谨,可能作者也没说清楚,这里TD3根据源码来看,其DDPG架构部分只是网络结构和探索策略一致,超参数的配置是不同的,这点不严谨。
  4. 从上述三点可知,TD3作为技巧的堆叠,不仅仅单单是堆叠,而是有实际效果的,因此这些堆叠是有必要的。

实验二

我们之前在第4节中指出了CDQ算法对过估计的处理强于DQ、DDQN的,然后在实验二中我们进一步比较这三者对表现力的影响。由于这三者的不同是和overestimation相关的,因此我们对DQ-AC、DDQN-AC都配上DP和TPS技巧,并且使用AHE作为AC结构,我们可以从①、⑨、DQ-AC、DDQN-AC这四个对比得出以下结论:

  1. ⑨ ↔ ( D Q − A C 、 D D Q N − A C ) ⑨ \leftrightarrow (DQ-AC、DDQN-AC) (DQACDDQNAC)可知DQ和DDQN这两种由于独立性不够、解耦性差而使得过估计的削弱作用不明显,除了Ant实验除外。
  2. 另外要特别指出的是 ① ↔ ⑨ ①\leftrightarrow⑨ :表明了解决过估计对于提升表现力的重大作用

7. Conclusion

总结

  1. 证明了过估计不仅存在于DQN中,也存在于Actor-Critic系列算法中。
  2. 提出Clipped Double Q-learning算法缓解AC的过估计。
  3. 提出延迟策略更新来减小error,Actor网络和Critic不同时更新,让Actor稍微慢一点。
  4. 提出目标策略平滑来减小方差,即加入噪声。
  5. TD3主要是(2)(3)(4)三个技巧的堆叠。
  6. 这几个技巧同时也可以用在其他算法上。
  7. TD3的表现力以及学习速率强于DDPG算法。
  8. 在这篇文章中,很清晰的向我们介绍了这些大佬发的文章如会如何进行实验分析的。首先是环境的选择,这里选择的是MUJOCO环境;其次是训练与测试的方式:训练100W个steps,每隔5000个steps进行测试,一共测试200个采样点,每个采样点用10次随机种子设定,输出期望累计奖励、最大累计奖励、最小累计奖励,三个数据都算的无折扣(一般只有当估计 Q Q Q值和真实值关系的时候才会计算折扣,比如DQN那篇文章采取的实验)。期望累计奖励反映真实水平——用实线表示,后面2个数据用于反映方差大小——用阴影表示,即稳定性(是否过拟合)。
  • 19
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值