学习目的:近期需要去学习下TD3算法,一种在连续动作空间比DDPG更好的policy-based算法。其中需要用到smoothed-Q。TD3论文中reference了这篇Smoothed Q for Learning Gaussian Policies(还有补充材料)。
在当时而言,这是一种比较新的思想,因为以往的Policy-based算法通过分别训练Actor网络 μ θ \mu_\theta μθ和Critic网络 ω \omega ω来寻找最优策略 μ \mu μ。但是这篇文章并没有直接训练Actor网络的参数,而是训练高斯策略的均值 μ θ \mu_\theta μθ和协方差 Σ ϕ \Sigma_\phi Σϕ以及Critic的 ω \omega ω。
文章的核心
思想有3点:
结论:这种学习均值和协方差的算法提升了连续控制RL任务的表现力。
RL的model-free系列算法是在策略评估和策略改善中交替进行的,作者指出选择不同形式的Q函数会产生不同的算法,比如Sarsa、Q-learning、Soft Q-learning、PCL都选择不同的Q函数。接下来作者借着2个问题引出普通Q与本文提出的新型Q——smoothed Q的区别::
这种经过高斯平滑的Q函数的结构有利于学习高斯策略的均值,因为从后面就知道,smoothed Q,即 Q π ∼ ( s , a ) \mathop{Q^\pi}\limits^\sim(s,a) Qπ∼(s,a),其中的动作a直接由高斯策略 π \pi π的均值
μ θ ( s ) \mu_\theta(s) μθ(s)而来,故平滑Q可以很直接对均值求偏导;但对于协方差
Σ \Sigma Σ而言,平滑Q里并没有直接显示,需要转化到对均值的偏导上——对于高斯策略协方差的学习可以通过smoothed Q的Hessian矩阵来求出。因此目标函数对于mean和covarience的学习就可以分别使用smoothed Q的梯度和Hessian矩阵求出——这就是Smoothie算法的核心了。
Smoothie算法:
探索性并不好
(比如DDPG采用增加一个OU或高斯噪声来增强探索性,这免不了需要调节超参数
)。而smoothie是随机策略算法,减弱了超参数调节的重任。PPO中KL散度的思想
(KL散度就是相对熵,是需要2个策略分布的,而DDPG是确定性策略,没有概率分布)。对于KL散度的加入,作者是根据经验以及后续的实验结果得出的,拥有KL散度加成的的训练拥有更好地算法表现力以及可以解决DDPG在训练中固有的不稳定性。这是正式算法之前的一些预备工作:
首先就是每一篇RL文章都会有的MDP开头。。。这里就不再赘述了。
其次,本文主要分析连续动作环境的RL任务,因此动作值都是实值而非离散,即 A ≡ R d a \mathcal{A} \equiv \mathbb{R}^{d_a} A≡Rda,状态环境 Φ ( s ) ∈ R d s \Phi(s)\in\mathbb{R}^{d_s} Φ(s)∈Rds。Smoothie是on-policy算法,因此只需要设置行为策略为 π ( a ∣ s ) \pi(a|s) π(a∣s),这里就是高斯策略
。
多维(元)高斯策略:
均 值 μ ( s ) : R d s → R d a 方 差 Σ ( s ) : R d s → R d a × R d a N ( a ∣ μ , Σ ) = ∣ 2 π Σ ∣ − 1 2 e x p { − 1 2 ∥ a − μ ∥ Σ − 1 2 } 其 中 ∥ v ∥ A 2 = v T A v (1) 均值\mu(s):\mathbb{R}^{d_s}\to\mathbb{R}^{d_a}\\ 方差\Sigma(s):\mathbb{R}^{d_s}\to\mathbb{R}^{d_a}\times\mathbb{R}^{d_a}\\ N(a|\mu,\Sigma)=|2\pi\Sigma|^{\frac{-1}{2}}exp\{-\frac{1}{2}\lVert a-\mu\rVert^2_{\Sigma^{-1}}\} \tag1 \\其中\lVert v\rVert^2_{A}=v^TAv 均值μ(s):Rds→Rda方差Σ(s):Rds→Rda×RdaN(a∣μ,Σ)=∣2πΣ∣2−1exp{−21∥a−μ∥Σ−12}其中∥v∥A2=vTAv(1)
关于多维高斯策略,点这里
关于一维如何到多维正太分布,点这里
=Note:
在写代码时,要区分多维度的一维正态采样结果与多维正态采样结果的区别。比如,如果在实现过程中误使用多维度的一维高斯:
new_policy = torch.normal(self.mu(state), self.Sigma()) # (batch, action_num)
old_policy = torch.normal(self.target_mu(state).detach(), self.Sigma())
那么你输出的高斯采样结果对于每个动作(通常是向量)离散化了,就是说以动作向量的每个特征为mean进行采样,这不是我们的初衷。我们需要实现的是多维高斯分布,其应该是以整个动作向量作为1个mean来进行采样的,以二维高斯为例,它会按照协方差以一定概率在 μ \mu μ附近取值,这个附近是变量(X,Y)共同决定的,如果进行一维离散实现,则是取X的附近,取Y的附近值,然后拼接成 μ \mu μ的附近值。后者显然是不对的,实现过程中需要注意这点。
因此比如我们再用Pytorch实现的时候,就不能用一维的高斯分布的sample(),而应该用多维的高斯分布的sample()。
首先复习一下Policy Gradient的优化目标(不懂这个公式的可参考DPG):
O E R ( π ) = ∫ S ρ π ( s ) ∫ A π ( a ∣ s ) Q π ( s , a ) d a d s (2) O_{ER}(\pi)=\int_{\mathcal{S}}\rho^\pi(s)\int_{\mathcal{A}}\pi(a|s)Q^\pi(s,a)\mathrm{d}a\mathrm{d}s \tag2 OER(π)=∫Sρπ(s)∫Aπ(a∣s)Qπ(s,a)dads(2)其中 ρ π \rho^\pi ρπ是在策略 π \pi π下Agent访问的状态分布。
然后给出Q值关于贝尔曼等式的另一种形式(看不懂的可参考Q的贝尔曼原式):
Q π ( s , a ) = E r , s ′ [ r + γ ∫ A Q π ( s ′ , a ′ ) π ( a ′ ∣ s ′ ) d a ] (3) Q^\pi(s,a)=\mathbb{E}_{r,s'}[r+\gamma \int_\mathcal{A}Q^\pi(s',a')\pi(a'|s')\mathrm{d}a]\tag3 Qπ(s,a)=Er,s′[r+γ∫AQπ(s′,a′)π(a′∣s′)da](3)
接下来就是对目标函数求梯度了,然后我们的目标就是朝着梯度上升的方向,这就是Policy Gradient的核心:
∇ θ O E R ( π θ ) = ∫ S E a ∼ π θ ( a ∣ s ) [ ∇ θ log π θ ( a ∣ s ) Q π ( s , a ) ] d s (4) \nabla_\theta O_{ER}(\pi_\theta)= \\\int_\mathcal{S} \mathbb{E}_{a\sim\pi_\theta(a|s)}[\nabla_\theta \log\pi_\theta(a|s)Q^\pi(s,a)]\mathrm{d}s \tag4 ∇θOER(πθ)=∫SEa∼πθ(a∣s)[∇θlogπθ(a∣s)Qπ(s,a)]ds(4)
这个式子是怎么计算的呢?通过不断地采样来求取 E \mathbb{E} E,然后积分所得。在求取 E \mathbb{E} E的过程中,如果 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s)分布比较分散,那么就会引起高方差的结果。此外早期的一些Policy Gradient算法的 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)并不是动作值函数,而是累计折扣奖励 G \mathbf{G} G,由于实时奖励 r \mathbf{r} r的分布比较分散,因此也会导致高方差的结果。
首先DPG这篇文章告诉我们:确定性策略是随机策略在协方差趋于0时候的特殊策略,也就是当我们的高斯策略 π ( a ∣ s ) \pi(a|s) π(a∣s)的 Σ → 0 \Sigma\to0 Σ→0的时候,我们的高斯策略就是确定性策略 μ ( s ) \mu(s) μ(s),此时策略的采样来自于高斯均值附近即:
lim Σ → 0 ∫ A π ( s ∣ a ) Q π ( s , a ) d a = Q π ( s , μ ( s ) ) (5) \lim_{\Sigma\to0}\int_\mathcal{A}\pi(s|a)Q^\pi(s,a)\mathrm{d}a=Q^\pi(s,\mu(s))\tag5 Σ→0lim∫Aπ(s∣a)Qπ(s,a)da=Qπ(s,μ(s))(5)这里也可以将确定性策略 π ( a ∣ s ) 看 出 一 个 冲 激 函 数 \pi(a|s)看出一个冲激函数 π(a∣s)看出一个冲激函数,那么上述式子就可以写成 ∫ A π ( s ∣ a ) Q π ( s , a ) d a = Q π ( s , μ ( s ) ) \int_\mathcal{A}\pi(s|a)Q^\pi(s,a)\mathrm{d}a=Q^\pi(s,\mu(s)) ∫Aπ(s∣a)Qπ(s,a)da=Qπ(s,μ(s))。注意一下,在本文中, μ \mu μ只有在这一节是确定性策略的意思,其余时候都是指高斯策略的均值mean。
在DPG原文中作者Silver用正式和非正式的两种方法证明了目标函数梯度的表达式:
∇ θ J ( μ θ ) = ∫ S ρ μ ( s ) ∇ θ μ θ ( s ) ∇ a Q μ ( s , a ) ∣ a = μ θ ( s ) d s \nabla_\theta J(\mu_\theta )=\int_{\mathcal{S}}\rho^\mu(s)\nabla_\theta\mu_\theta(s)\nabla_aQ^\mu(s,a)|_{a=\mu_\theta(s)}\mathrm{d}s ∇θJ(μθ)=∫Sρμ(s)∇θμθ(s)∇aQμ(s,a)∣a=μθ(s)ds也就是该文中的:
∇ θ O E R ( π θ ) = ∫ S ρ π ( s ) ∂ Q π ( s , a ) ∂ a ∣ a = μ θ ( s ) ∇ θ μ θ ( s ) d s (6) \nabla_\theta O_{ER}(\pi_\theta)=\\\int_{\mathcal{S}}\rho^\pi(s)\frac{\partial Q^\pi(s,a)}{\partial a}|_{a=\mu_\theta(s)}\nabla_\theta\mu_\theta(s)\mathrm{d}s \tag6 ∇θOER(πθ)=∫Sρπ(s)∂a∂Qπ(s,a)∣a=μθ(s)∇θμθ(s)ds(6)
然后做梯度上升就行了,这就是DPG算法。从DPG中算法可以看出,其中一个好处就是DPG并没有对动作 A \mathcal{A} A使用蒙特卡洛采样,因此减弱了2.1节出现的因策略分布较离散而引起的高方差问题以及不用再花很多很多采样数据去减小bias,从而提升采样效率。基于这个启发式思想,Smoothie算法也将使用Q(smoothed Q)来提升采样效率。
但没有十全十美的算法,DPG一个缺陷在于确定性策略本身会导致较为差劲的探索能力以及训练的不稳定性。
结合公式(5),DPG的贝尔曼公式(3)就写成(这也就是将贝尔曼公式展开的原因):
Q π ( s , a ) = E r , s ′ [ r + Q π ( s ′ , μ ( s ′ ) ) ] (7) Q^\pi(s,a)=\mathbb{E}_{r,s'}[r+Q^\pi(s',\mu(s'))]\tag7 Qπ(s,a)=Er,s′[r+Qπ(s′,μ(s′))](7)因此,对于Q值的策略评估就可以通过最小化Q估计值和目标值之差,即:
E ( w ) = ∑ b u f f e r : D ( Q w π ( s , a ) − r − γ Q w π ( s ′ , μ θ ( s ′ ) ) ) 2 (8) E(w)=\sum_{buffer:\mathcal{D}}(Q^\pi_w(s,a)-r-\gamma Q^\pi_w(s',\mu_\theta(s')))^2\tag8 E(w)=buffer:D∑(Qwπ(s,a)−r−γQwπ(s′,μθ(s′)))2(8)
如果这个策略评估算法是基于DQN的,参数 w w w是神经网络的参数,那么这样的DPG就是DDPG
。策略评估根据公式(8),策略提升根据公式(6)。DPG论文中指出了2种形式,一种是以Sarsa为Critic的on-policy DPG算法Critic部分。状态s采样于 ρ π ( s ) \rho^\pi(s) ρπ(s),另一种是以Q-learning为Critic的off-policy DPG算法,状态s采样于行为策略 β \beta β下的 ρ β ( s ) \rho^\beta(s) ρβ(s)组成的replay buffer。显然后者会引起一定的bias。PPO的核心思想之一就是改on-polict为off-policy,为的就是采样效率的提升。因此基于这个启发式的思想,Smoothie算法也将采用off-policy。
Smoothie不仅取DDPG的长,还补DDPG的短:Smoothie基于确定性策略探索性差
的缺陷,从而使用高斯策略。并且随机性策略还可以使用KL散度来解决DDPG训练的不稳定性
。
在正式用公式产生算法之前呢,作者用了一个简单的例子来说明smoothed Q和之前的Q有何不同,然后引出smoothie算法,为后续做铺垫。
初步分析Figure 1:
上图是一个单状态空间单动作空间的RL任务,因此纵坐标可以理解成累计奖励,也可以看成是 Q ( a ) Q(a) Q(a)。我们这里把他看成Q值。紫红色的是smoothed Q,在大约0.4左右达到最优Q值。而绿色线是普通的Q值,可以看出其存在2个极大值点,因此可以看出,smoothed Q可以使得Agent避免陷入局部最小
。
在这里smoothed Q是经过高斯策略平滑的(具体如何平滑见后面公式),高斯策略 π \pi π由均值 μ \mu μ和标准差 σ \sigma σ组成。为了学习这2个参数呢,一个最直白的思想就是:
Δ μ = d log π ( a i ) d μ r i Δ σ = d log π ( a i ) d σ r i \Delta\mu=\frac{\mathrm{d}\log\pi(a_i)}{\mathrm{d}\mu}r_i\\ \Delta\sigma=\frac{\mathrm{d}\log\pi(a_i)}{\mathrm{d}\sigma}r_i Δμ=dμdlogπ(ai)riΔσ=dσdlogπ(ai)ri容易看出这其实就是早期的Policy Gradient思想,直接使用实施奖励这种方式会引起较大的方差,导致训练不稳定。
那么怎么办呢?如果我们采用DPG算法
的思想,那就可以解决高方差问题:
Δ μ = ∂ Q ω π ( a ) ∂ a ∣ a = μ 其 中 a i = μ + ε i , ε i ∼ N ( 0 , σ 2 ) Δ ω = ( r i + γ Q ω π ( a i ′ ) − Q ω π ( a i ) ) ∇ ω Q ω π ( a i ) \Delta\mu=\frac{\partial Q^\pi_\omega(a)}{\partial a}|_{a=\mu}\\ 其中a_i=\mu+\varepsilon_i,\varepsilon_i\sim N(0,\sigma^2) \\\Delta_\omega=(r_i+\gamma Q^\pi_\omega(a'_i)-Q^\pi_\omega(a_i))\nabla_\omega Q^\pi_\omega(a_i) Δμ=∂a∂Qωπ(a)∣a=μ其中ai=μ+εi,εi∼N(0,σ2)Δω=(ri+γQωπ(ai′)−Qωπ(ai))∇ωQωπ(ai)这里说明一下:
显然 Q ω π Q^\pi_\omega Qωπ的引入减弱了高方差的影响,但是值函数近似也会引入bias,因此也要合理的控制bias。
这里还有个关键的问题就是, σ \sigma σ无法学习,其根本原因在于DPG是方差趋于0的算法,在目标策略参数更新的地方无法更新 σ \sigma σ,因此只能当做超参数处理,毫无疑问这增加了算法的复杂度。
进一步分析Figure 1:就是用smoothed Q替换Q
我们可以将紫红色看出是在某个状态s处经过高斯函数平滑过的 Q π ∼ ( a ) \mathop{Q^\pi}\limits^\sim(a) Qπ∼(a);绿色的看成是DPG算法中的 Q π ( a ) Q^\pi(a) Qπ(a)。紫红色的曲线每一段都是经过平滑过的曲线。而绿色线由于只是单纯的使用采样近似得到的,故不会有紫红线的平滑度。那是因为紫红线的得出是通过在估计 Q π ∼ ( a ) \mathop{Q^\pi}\limits^\sim(a) Qπ∼(a)的公式内部直接使用高斯函数进行平滑而不是通过采样而来,即 Q π ∼ ( a ) = ∫ A N ( a ∼ ∣ a , σ 2 ) Q π ( a ∼ ) d a ∼ \mathop{Q^\pi}\limits^\sim(a)=\int_\mathcal{A}N(\mathop{a}\limits^\sim|a,\sigma^2)Q^\pi(\mathop{a}\limits^\sim)\mathrm{d}\mathop{a}\limits^\sim Qπ∼(a)=∫AN(a∼∣a,σ2)Qπ(a∼)da∼
所以,我们应该去估计 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼而不是 Q π Q^\pi Qπ。为什么呢?这是因为平滑能带来2个优势:
任意确定性动作a
求导。比如普通的Q在某个动作处曲线很抖或者在某个点不可导,那么算法就会无法收敛。在本算法中,我们需要用到 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼对任意连续动作a的一次、二次偏导。这里需要注意的是, Q π ∼ ( a ) \mathop{Q^\pi}\limits^\sim(a) Qπ∼(a)仍是符合贝尔曼等式的,且 O E R ( π ) = Q π ∼ ( a ) O_{ER}(\pi)=\mathop{Q^\pi}\limits^\sim(a) OER(π)=Qπ∼(a)。
接下来,用 Q ω π ∼ \mathop{Q^\pi_\omega}\limits^\sim Qωπ∼来近似 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼, a i ∼ π a_i\sim\pi ai∼π,可以得到:
Δ μ = ∂ Q ω π ∼ ∂ a ∣ a = μ Δ σ = ∂ 2 Q ω π ∼ ∂ a 2 ∣ a = μ Δ w = ( r i + γ Q w π ∼ ( μ ′ ) − Q w π ∼ ( μ ) ) ∇ ω Q w π ∼ ( μ ) \Delta\mu=\frac{\partial \mathop{Q^\pi_\omega}\limits^\sim}{\partial a}|_{a=\mu}\\ \Delta\sigma=\frac{\partial^2\mathop{Q^\pi_\omega}\limits^\sim}{\partial a^2}|_{a=\mu}\\ \Delta w=(r_i+\gamma \mathop{Q^\pi_w}\limits^\sim(\mu')-\mathop{Q^\pi_w}\limits^\sim(\mu))\nabla_\omega \mathop{Q^\pi_w}\limits^\sim(\mu) Δμ=∂a∂Qωπ∼∣a=μΔσ=∂a2∂2Qωπ∼∣a=μΔw=(ri+γQwπ∼(μ′)−Qwπ∼(μ))∇ωQwπ∼(μ)
综上所述:这样的算法结合了DPG和传统PG(随机策略)的优点:
参数
μ 、 Σ \mu、\Sigma μ、Σ的参数
θ 、 ϕ \theta、\phi θ、ϕ的更新是确定性
的,仿照了DPG中确定性策略 μ θ \mu_\theta μθ的参数的更新。具体的可以看后面的4.3节的伪代码。虽然上述讨论是基于Figure 1,但是smoothie是可以用于复杂的RL任务的。
这篇文章主要有2个重点:
接下来作者给出smoothed Q是怎么来的。
Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼区别于普通的 Q π Q^\pi Qπ在于:
以a为均值的高斯策略
采样得到的动作值 a ∼ \mathop{a}\limits^\sim a∼,这个值以很大概率落在a附近(正态分布的基本知识),接下来去求 Q π ( s , a ∼ ) Q^\pi(s,\mathop{a}\limits^\sim) Qπ(s,a∼),然后你需要采样很多个这样的 a ∼ \mathop{a}\limits^\sim a∼,然后求 Q π ( s , a ∼ ) Q^\pi(s,\mathop{a}\limits^\sim) Qπ(s,a∼)的期望,这就是高斯平滑Q。给出定义式:
Q π ∼ ( s , a ) = ∫ A N ( a ∼ ∣ a , Σ ( s ) ) Q π ( s , a ∼ ) d a ∼ = E a ∼ ∼ N ( a ∼ ∣ a , Σ ( s ) ) Q π ( s , a ∼ ) (9) \mathop{Q^\pi}\limits^\sim(s,a)=\int_\mathcal{A}N(\mathop{a}\limits^\sim|a,\Sigma(s))Q^\pi(s,\mathop{a}\limits^\sim)\mathrm{d}\mathop{a}\limits^\sim \\=\mathbb{E}_{\mathop{a}\limits^\sim\sim N(\mathop{a}\limits^\sim|a,\Sigma(s))}Q^\pi(s,\mathop{a}\limits^\sim)\tag9 Qπ∼(s,a)=∫AN(a∼∣a,Σ(s))Qπ(s,a∼)da∼=Ea∼∼N(a∼∣a,Σ(s))Qπ(s,a∼)(9)这个公式体现了求取smoothed Q的一种方法,就是在采样动作a附近的动作值
,对一大堆 Q π Q^\pi Qπ求取期望来近似。
接下来就可以写出smoothie版本的公式(2):
高 斯 策 略 π ≡ ( μ , Σ ) ∇ μ , Σ O E R ( π ) = ∫ S ρ π ( s ) ∇ μ , Σ Q π ∼ ( s , μ ( s ) ) d s (10) 高斯策略\pi\equiv(\mu,\Sigma)\\ \nabla_{\mu,\Sigma}O_{ER}(\pi)=\int_{\mathcal{S}}\rho^\pi(s)\nabla_{\mu,\Sigma}\mathop{Q^\pi}\limits^\sim(s,\mu(s))\mathrm{d}s\tag{10} 高斯策略π≡(μ,Σ)∇μ,ΣOER(π)=∫Sρπ(s)∇μ,ΣQπ∼(s,μ(s))ds(10)
以往的的算法是采用公式9的采样来求的,但本文用了另一种方式:可以这样来理解,我们用 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼来代替 Q π Q^\pi Qπ,是因为我们需要将带有 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼的TD目标值当成我们更新的目标,这样的话一般的 Q π Q^\pi Qπ就可以转变成smoothed Q了,故公式(7)可变为:
Q π ( s , a ) = E r , s ′ [ r + γ Q π ∼ ( s ′ , μ ( s ′ ) ) ] (11) Q^\pi(s,a)=\mathbb{E}_{r,s'}[r+\gamma \mathop{Q^\pi}\limits^\sim(s',\mu(s'))]\tag{11} Qπ(s,a)=Er,s′[r+γQπ∼(s′,μ(s′))](11)
结合公式(9)和(11)可以的出smoothed Q的贝尔曼等式:
Q π ∼ ( s , a ) = ∫ A N ( a ∼ ∣ a , Σ ( s ) ) E r ∼ , s ′ ∼ [ r ∼ + γ Q π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ] d a ∼ 其 中 r ∼ , s ′ ∼ 采 样 于 R ( s , a ∼ ) , P ( s , a ∼ ) a ∼ ∼ N ( a ∼ ∣ a , Σ ( s ) ) (12) \mathop{Q^\pi}\limits^\sim(s,a)=\\ \int_{\mathcal{A}}N(\mathop{a}\limits^\sim|a,\Sigma(s))\mathbb{E}_{\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}[\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))]\mathrm{d}\mathop{a}\limits^\sim \\其中\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim采样于R(s,\mathop{a}\limits^\sim),P(s,\mathop{a}\limits^\sim)\\ \mathop{a}\limits^\sim\sim N(\mathop{a}\limits^\sim|a,\Sigma(s))\tag{12} Qπ∼(s,a)=∫AN(a∼∣a,Σ(s))Er∼,s′∼[r∼+γQπ∼(s′∼,μ(s′∼))]da∼其中r∼,s′∼采样于R(s,a∼),P(s,a∼)a∼∼N(a∼∣a,Σ(s))(12)
接下来作者将说明 μ 、 Σ \mu、\Sigma μ、Σ是如何学习的以及如何使用smoothed Q的贝尔曼等式做 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼的优化。
note:公式(12)中隐含了一个信息就是:
a ∼ ∼ N ( a ∼ ∣ a , Σ ( s ) ) ⇔ a ∼ N ( a ∣ a ∼ , Σ ( s ) ) \mathop{a}\limits^\sim\sim N(\mathop{a}\limits^\sim|a,\Sigma(s))\Leftrightarrow a\sim N(a|\mathop{a}\limits^\sim,\Sigma(s)) a∼∼N(a∼∣a,Σ(s))⇔a∼N(a∣a∼,Σ(s))暗示了a应该如何采集。
以往的策略优化是对策略 π \pi π的参数的优化,但本文中是对高斯策略策略 π θ , ϕ ≡ ( μ θ , Σ ϕ ) \pi_{\theta,\phi}\equiv(\mu_\theta,\Sigma_\phi) πθ,ϕ≡(μθ,Σϕ)的参数 μ 、 Σ \mu、\Sigma μ、Σ的参数 θ 、 ϕ \theta、\phi θ、ϕ的优化。
首先是对 θ \theta θ的优化,将公式(10)展开:
∇ θ O E R ( π θ , ϕ ) = ∫ S ρ π ( s ) ∂ Q π ∼ ( s , a ) ∂ a ∣ a = μ θ ( s ) ∇ θ μ θ ( s ) d s (13) \nabla_\theta O_{ER}(\pi_{\theta,\phi}) \\=\int_{\mathcal{S}}\rho^\pi(s)\frac{\partial\mathop{Q^\pi}\limits^\sim(s,a)}{\partial a}|_{a=\mu_\theta(s)}\nabla_\theta\mu_\theta(s)\mathrm{d}s\tag{13} ∇θOER(πθ,ϕ)=∫Sρπ(s)∂a∂Qπ∼(s,a)∣a=μθ(s)∇θμθ(s)ds(13)
Note:
然后就是对 ϕ \phi ϕ的优化,但是 ϕ \phi ϕ的优化没有 θ \theta θ这么直接,因为 Q π ∼ ( s , a ) \mathop{Q^\pi}\limits^\sim(s,a) Qπ∼(s,a)中含有 μ \mu μ(即a),但并没有直接关于 Σ \Sigma Σ。
给出定理Theorem 1:
∀ s , a ∂ Q π ∼ ( s , a ) ∂ Σ ( s ) = 1 2 ∂ 2 Q π ∼ ( s , a ) ∂ a 2 (14) \forall s,a \,\,\,\,\frac{\partial\mathop{Q^\pi}\limits^\sim(s,a)}{\partial\Sigma(s)}=\frac{1}{2}\,\frac{\partial^2\mathop{Q^\pi}\limits^\sim(s,a)}{\partial a^2}\tag{14} ∀s,a∂Σ(s)∂Qπ∼(s,a)=21∂a2∂2Qπ∼(s,a)(14)
关于定理1的证明:主要利用的是公式(9)中带有的 Σ \Sigma Σ参数,具体见补充材料
根据定理1与公式(10):
∇ ϕ Q E R ( π θ , ϕ ) = 1 2 ∫ S ρ π ( s ) ∂ 2 Q π ∼ ( s , a ) ∂ a 2 ∣ a = μ θ ( s ) ∇ ϕ Σ ϕ ( s ) d s (15) \nabla_\phi Q_{ER}(\pi_{\theta,\phi}) \\=\frac{1}{2}\int_\mathcal{S}\rho^\pi(s)\frac{\partial^2\mathop{Q^\pi}\limits^\sim(s,a)}{\partial a^2}|_{a=\mu_\theta(s)}\nabla_\phi\Sigma_\phi(s)\mathrm{d}s\tag{15} ∇ϕQER(πθ,ϕ)=21∫Sρπ(s)∂a2∂2Qπ∼(s,a)∣a=μθ(s)∇ϕΣϕ(s)ds(15)
策略评估就是求 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼。
有2个办法:方法1是之前有的论文提出的,方法2是本文所采用的。
法1:
法2:
直接利用公式(12),smoothed Q的贝尔曼等式来计算。
具体的,我们将公式(12)稍微变化一下,结果就是:
E a ∼ ∼ N ( a ∼ ∣ a , Σ ( s ) ) , r ∼ , s ′ ∼ [ r ∼ + γ Q π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ] \mathbb{E}_{{\mathop{a}\limits^\sim}\sim N(\mathop{a}\limits^\sim|a,\Sigma(s)),\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}[\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))] Ea∼∼N(a∼∣a,Σ(s)),r∼,s′∼[r∼+γQπ∼(s′∼,μ(s′∼))]
也就是说这样采样出来的才是正确的策略评估结果
。但事实是我们从replay buffer中采样出的 a ∼ \mathop{a}\limits^\sim a∼不一定符合高斯策略 N ( a ∼ ∣ a , Σ ( s ) ) N(\mathop{a}\limits^\sim|a,\Sigma(s)) N(a∼∣a,Σ(s)),而且绝大多数情况不是,那不就不准确了吗?这样的情况就和off-policy下我们手上只有不准确的行为策略 b ( a ∣ s ) b(a|s) b(a∣s)一样,故我们参考off-policy中常见的做法——重要性采样。
设replay buffer的采样概率为 q ( a ∼ ∣ s ) q(\mathop{a}\limits^\sim|s) q(a∼∣s)。每次采样一个 t u p l e ( s , a ∼ , r ∼ , s ′ ∼ ) tuple(s,\mathop{a}\limits^\sim,\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim) tuple(s,a∼,r∼,s′∼)。我们习惯性采样都是 t u p l e ( s , a , r , s ′ ) tuple(s,a,r,s') tuple(s,a,r,s′),这其实是根据你优化目标需要什么 t u p l e tuple tuple而言的,巧的是smoothie算法用了2个 t u p l e tuple tuple(其实就是同一个),另一个就是我们熟悉的这个。
我们在作者提出的加权误差
的基础上增加目标采样概率 N \mathcal{N} N:
1 q ( a ∼ ∣ s ) ( Q ω π ∼ ( s , a ) − r ∼ − γ Q ω π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ) 2 → N ( a ∼ ∣ a , Σ ( s ) ) q ( a ∼ ∣ s ) ( Q ω π ∼ ( s , a ) − r ∼ − γ Q ω π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ) 2 (18) \frac{1}{q(\mathop{a}\limits^\sim|s)}(\mathop{Q^\pi_\omega}\limits^\sim(s,a)-\mathop{r}\limits^\sim-\gamma \mathop{Q^\pi_\omega}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim)))^2 \\ \to \frac{\mathcal{N}(\mathop{a}\limits^\sim|a,\Sigma(s))}{q(\mathop{a}\limits^\sim|s)}(\mathop{Q^\pi_\omega}\limits^\sim(s,a)-\mathop{r}\limits^\sim-\gamma \mathop{Q^\pi_\omega}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim)))^2 \tag{18} q(a∼∣s)1(Qωπ∼(s,a)−r∼−γQωπ∼(s′∼,μ(s′∼)))2→q(a∼∣s)N(a∼∣a,Σ(s))(Qωπ∼(s,a)−r∼−γQωπ∼(s′∼,μ(s′∼)))2(18)这么做的原因是:
重要性采样
。重要性采样修正:
∫ A N ( a ∼ ∣ a , Σ ( s ) ) E r ∼ , s ′ ∼ [ r ∼ + γ Q π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ] d a ∼ = ∫ A N ( a ∼ ∣ a , Σ ( s ) ) q ( a ∼ ∣ s ) q ( a ∼ ∣ s ) E r ∼ , s ′ ∼ [ r ∼ + γ Q π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ] d a ∼ = ∫ A δ q ( a ∼ ∣ s ) E r ∼ , s ′ ∼ [ r ∼ + γ Q π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ] d a ∼ = E a ∼ ∼ q ( a ∼ ∣ s ) , r ∼ , s ′ ∼ δ [ r ∼ + γ Q π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ] \int_{\mathcal{A}}N(\mathop{a}\limits^\sim|a,\Sigma(s))\mathbb{E}_{\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}[\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))]\mathrm{d}\mathop{a}\limits^\sim \\= \int_{\mathcal{A}}\frac{N(\mathop{a}\limits^\sim|a,\Sigma(s))}{q(\mathop{a}\limits^\sim|s)}q(\mathop{a}\limits^\sim|s)\mathbb{E}_{\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}[\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))]\mathrm{d}\mathop{a}\limits^\sim \\= \int_{\mathcal{A}}\delta q(\mathop{a}\limits^\sim|s)\mathbb{E}_{\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}[\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))]\mathrm{d}\mathop{a}\limits^\sim \\ =\mathbb{E}_{{\mathop{a}\limits^\sim}\sim q(\mathop{a}\limits^\sim|s),\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}\delta[\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))] ∫AN(a∼∣a,Σ(s))Er∼,s′∼[r∼+γQπ∼(s′∼,μ(s′∼))]da∼=∫Aq(a∼∣s)N(a∼∣a,Σ(s))q(a∼∣s)Er∼,s′∼[r∼+γQπ∼(s′∼,μ(s′∼))]da∼=∫Aδq(a∼∣s)Er∼,s′∼[r∼+γQπ∼(s′∼,μ(s′∼))]da∼=Ea∼∼q(a∼∣s),r∼,s′∼δ[r∼+γQπ∼(s′∼,μ(s′∼))]
重要性采样因子可以放在目标上,也可以放在误差上(即目标-预测)。这里我们选择将IS因子放在误差上。接下来也就很容易了,利用MSE进行训练,具体如下所示:
E q ( a ∼ ∣ s ) , r ∼ , s ′ ∼ [ δ ( Q ω π ∼ ( s , a ) − r ∼ − γ Q ω π ∼ ( s ′ ∼ , μ ( s ′ ∼ ) ) ) 2 ] (19) \mathbb{E}_{q(\mathop{a}\limits^\sim|s),\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim}[\delta(\mathop{Q^\pi_\omega}\limits^\sim(s,a)-\mathop{r}\limits^\sim-\gamma \mathop{Q^\pi_\omega}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim)))^2]\tag{19} Eq(a∼∣s),r∼,s′∼[δ(Qωπ∼(s,a)−r∼−γQωπ∼(s′∼,μ(s′∼)))2](19)
其 中 δ = N ( a ∼ ∣ a , Σ ( s ) ) q ( a ∼ ∣ s ) 其中\delta=\frac{N(\mathop{a}\limits^\sim|a,\Sigma(s))}{q(\mathop{a}\limits^\sim|s)} 其中δ=q(a∼∣s)N(a∼∣a,Σ(s))
note:
这里有2个小细节
就是:
但是伪代码中未显示IS-factor,作者指出:
KL散度
是一种提升算法稳定性的技术,其在PPO算法中得到了很好的稳定性提升效果。由于这是一种基于概率分布的公式,因此其不适用于DDPG算法,因为DDPG算法的策略是确定性策略而不是一个概率分布。
我们在目标函数之后增加一项(类似于L2正则项以及A3C算法中添加的熵项):
O T R ( π ) = O E R ( π ) − λ ∫ S ρ π ( s ) K L ( π ∣ ∣ π o l d ) d s π o l d ≡ ( μ o l d , Σ o l d ) 是 之 前 的 高 斯 策 略 (20) O_{TR}(\pi)=O_{ER}(\pi)-\lambda\int_\mathcal{S}\rho^\pi(s) KL(\pi||\pi_{old})\mathrm{d}s \\ \pi_{old}\equiv(\mu_{old},\Sigma_{old})是之前的高斯策略\tag{20} OTR(π)=OER(π)−λ∫Sρπ(s)KL(π∣∣πold)dsπold≡(μold,Σold)是之前的高斯策略(20)
note:
将策略评估、策略提升、KL惩罚三者结合起来就形成了off-policy的Actor-Critic形式的Smoothie算法,其伪代码如下:
note:
附近值
,而我们存入buffer靠的就是行为策略——高斯策略 π \pi π,这个行为策略就是直接产生“附近值”的。反向操作
: a ∼ ∼ N ( a ∼ ∣ a , Σ ( s ) ) ⇔ a ∼ N ( a ∣ a ∼ , Σ ( s ) ) \mathop{a}\limits^\sim\sim N(\mathop{a}\limits^\sim|a,\Sigma(s))\Leftrightarrow a\sim N(a|\mathop{a}\limits^\sim,\Sigma(s)) a∼∼N(a∼∣a,Σ(s))⇔a∼N(a∣a∼,Σ(s))确定性的高斯策略
,而其行为策略的方差是个不需要训练的超参数
。衍生
过来的,然后换上性能更好的高斯平滑Q即可。由于 Q π ∼ ( s , a ) \mathop{Q^\pi}\limits^\sim(s,a) Qπ∼(s,a)结构中直接带有均值,因此可以直接求偏导。然后就是要训练协方差了, Σ ϕ \Sigma_\phi Σϕ的训练仿照均值的训练——也是衍生于DPG,其目的也是在于提升 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼或者说 O E R O_{ER} OER。 Q π ∼ ( s , a ) \mathop{Q^\pi}\limits^\sim(s,a) Qπ∼(s,a)结构中并没有直接带有 Σ ϕ \Sigma_\phi Σϕ,但通过公式(9)展开就有了。除此之外,根据Q值的定义式, Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼是在策略 π θ 、 ϕ \pi_{\theta、\phi} πθ、ϕ下计算的,其协方差是个可训练参数。而DPG的 π θ \pi_\theta πθ中的协方差部分只是个超参数,不可训练,这也就暗示了Smoothie可以对 Σ ϕ \Sigma_\phi Σϕ进行像对 μ θ \mu_\theta μθ一样的求偏导计算。为了实现起来方便,进一步转为Hessians矩阵的形式。整体代码框架和DDPG的代码框架很类似,主要以下几点不同:
这部分并不影响理解这篇文章,故略。
这部分是和本文相关的一些文献,不影响理解这篇文章,故略。
作者将使用DDPG算法作为baseline体现Smoothie的性能。选择DDPG作为基准是因为:
接下来作者进行3个实验说明Smoothie算法的性能。
第一个实验是对第三节的Figure 1对应的例子进一步研究(这里其实只有一个状态和一个动作)。
首先是要明确的是这两幅图是如何产生的:你拿着Smoothie这个算法直接运行,从头到尾跟踪Agent做出的动作,就能画出左图。训练完成后,提取出网络,对每一个(s,a)输出 Q π ( s , a ) 和 Q π ∼ ( s , a ) Q^\pi(s,a)和\mathop{Q^\pi}\limits^\sim(s,a) Qπ(s,a)和Qπ∼(s,a)就能得到右图。
然后用画图工具展现出来就是这个样子:阴影部分是让Agent跑多次产生的,其宽度反映了高斯策略协方差的大小。我们可以从这个从 i n i t i a l → c o n v e r g e n c e initial\to convergence initial→convergence的过程中得出以下信息:
接下来作者将在OpenAI的Gym库中一个叫MuJoCo的仿真模拟器上实现Smmothie算法和DDPG算法。具体的一些实现细节,比如网络的设置、超参数的设置以及加速寻训练的小技巧见补充文档,关于超参数,
DDPG有一个单独的超参数是OU噪声的参数;Smoothie也有个单独的超参数——KL散度前的 λ \lambda λ。
如上图所示:
作者从经验角度认为:提升算法稳定性的方法——KL散度加入目标函数中可以解决DDPG固有的训练不稳定现象。
如上图所示,有了KL散度加成的Smoothie比没有KL散度的Smoothie拥有更好的表现力。说明了KL散度的必要性。
文章总结:
off-policy AC
算法。虽然从头至尾就一个策略 π \pi π,可以说样本都是行为策略 π \pi π产生,也可以说样本都是目标策略 π \pi π产生,因为表达式都是 π \pi π,但是和DDPG一样,目标策略是使得 Q Q Q值最大(贪婪)时候的动作,Smoothie还会有一个小噪声(协方差 Σ \Sigma Σ会在收敛过程逐渐减小,但不会完全等于0)。只不过目标策略和行为策略都是用一个字母表达而已。目标策略应该是趋近于确定性策略。对文章贡献者的致谢,故略