论文笔记之RL优化——高斯平滑的Q函数
学习目的:近期需要去学习下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点:
- 就是引入了一种经过高斯平滑的Q,记为Qπ∼(s,a)\mathop{Q^{\pi}}\limits^{\sim}(s,a)Qπ∼(s,a)。
- 我们都知道RL的目标函数J\boldsymbol{J}J是期望累计return,其对高斯策略的均值mean和协方差covarience的梯度可以用Qπ∼(s,a)\mathop{Q^\pi}\limits^{\sim}(s,a)Qπ∼(s,a)的梯度和Hessian矩阵来表示。
- 引入PPO中的KL散度这个Penalty项。
结论:这种学习均值和协方差的算法提升了连续控制RL任务的表现力。
Smoothed Q for Learning Gaussian Policies
- 1、Introduction
- Formulation
- 2.1 Policy Gradient for Generic Stochastic Policies
- 2.2.Deterministic Policy Gradient
- 3.Idea
- 4.Smoothed Actor Value Functions
- 4.1 Policy Improvement
- 4.2 Policy Evaluation
- 4.3 Proximal Policy Optimization
- 4.4 Compatible Function Approximation
- 5.Related Work
- 6.Experiments
- 6.1 Synthetic Task
- 6.2 Continuous Control
- 7.Conclusion
- 8.Acknowledgments
1、Introduction
RL的model-free系列算法是在策略评估和策略改善中交替进行的,作者指出选择不同形式的Q函数会产生不同的算法,比如Sarsa、Q-learning、Soft Q-learning、PCL都选择不同的Q函数。接下来作者借着2个问题引出普通Q与本文提出的新型Q——smoothed Q的区别::
- 普通Qπ(s,a)Q^\pi(s,a)Qπ(s,a)就是在状态s执行动作a,然后通过策略评估和策略提升最终求出最优Q。
- 新型Qπ∼(s,a)\mathop{Q^\pi}\limits^\sim(s,a)Qπ∼(s,a)是在状态s执行从以a为均值的高斯策略采样得到动作a∼\mathop{a}\limits^\sima∼,这个动作以很大概率在动作a附近,所从状态s开始的第一个动作并不是a。
这种经过高斯平滑的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有一点很相似,都是使用Q值(smoothed Q)来学习得到目标策略(高斯策略)。
- 但是有一点不同,就是DDPG使用确定性策略,而本文的算法使用的是高斯策略(随机)。确定性策略很不错,但是其在
探索性并不好
(比如DDPG采用增加一个OU或高斯噪声来增强探索性,这免不了需要调节超参数
)。而smoothie是随机策略算法,减弱了超参数调节的重任。 - 和REFORCEMENT算法相比,smoothie使用Q值(本质是个期望),可以有效减小方差,稳定性更强。
- smoothie比DDPG有一个很明显的优势就是其可以结合
PPO中KL散度的思想
(KL散度就是相对熵,是需要2个策略分布的,而DDPG是确定性策略,没有概率分布)。对于KL散度的加入,作者是根据经验以及后续的实验结果得出的,拥有KL散度加成的的训练拥有更好地算法表现力以及可以解决DDPG在训练中固有的不稳定性。
Formulation
这是正式算法之前的一些预备工作:
首先就是每一篇RL文章都会有的MDP开头。。。这里就不再赘述了。
其次,本文主要分析连续动作环境的RL任务,因此动作值都是实值而非离散,即A≡Rda\mathcal{A} \equiv \mathbb{R}^{d_a}A≡Rda,状态环境Φ(s)∈Rds\Phi(s)\in\mathbb{R}^{d_s}Φ(s)∈Rds。Smoothie是on-policy算法,因此只需要设置行为策略为π(a∣s)\pi(a|s)π(a∣s),这里就是高斯策略
。
多维(元)高斯策略:
均值μ(s):Rds→Rda方差Σ(s):Rds→Rda×RdaN(a∣μ,Σ)=∣2πΣ∣−12exp{−12∥a−μ∥Σ−12}其中∥v∥A2=vTAv(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()。
2.1 Policy Gradient for Generic Stochastic Policies
首先复习一下Policy Gradient的优化目标(不懂这个公式的可参考DPG):
OER(π)=∫Sρπ(s)∫Aπ(a∣s)Qπ(s,a)dads(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)=Er,s′[r+γ∫AQπ(s′,a′)π(a′∣s′)da](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的核心:
∇θOER(πθ)=∫SEa∼πθ(a∣s)[∇θlogπθ(a∣s)Qπ(s,a)]ds(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的分布比较分散,因此也会导致高方差的结果。
2.2.Deterministic Policy Gradient
首先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)da=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)da=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)∇aQμ(s,a)∣a=μθ(s)ds\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也就是该文中的:
∇θOER(πθ)=∫Sρπ(s)∂Qπ(s,a)∂a∣a=μθ(s)∇θμθ(s)ds(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)=Er,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)=∑buffer:D(Qwπ(s,a)−r−γQwπ(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的,参数www是神经网络的参数,那么这样的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训练的不稳定性
。
3.Idea
在正式用公式产生算法之前呢,作者用了一个简单的例子来说明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个参数呢,一个最直白的思想就是:
Δμ=dlogπ(ai)dμriΔσ=dlogπ(ai)dσri\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=μ其中ai=μ+εi,εi∼N(0,σ2)Δω=(ri+γQωπ(ai′)−Qωπ(ai))∇ωQωπ(ai)\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)这里说明一下:
- DPG可以看成:行为策略是均值为确定性策略,标准差为σ\sigmaσ的高斯策略π\piπ,目标策略为确定性策略,即均值μ\muμ就是确定性策略,把确定性策略当成是高斯策略的均值,这是个需要学习的量,由于目前的讨论是在单状态空间下,因此省略了“s”,而且Q中也只写了动作“a”。
- εi\varepsilon_iεi是高斯噪声,为了更好引出高斯平滑的smoothie算法们这里就不用OU噪声。
- QωπQ_\omega^\piQωπ是QπQ^\piQπ的值函数近似。
- 从ai=μ+εi,εi∼N(0,σ2)a_i=\mu+\varepsilon_i,\varepsilon_i\sim N(0,\sigma^2)ai=μ+εi,εi∼N(0,σ2)可以看出,这其实本质就是就是DPG在N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2)中采样动作,但这仅是行为策略,目标策略还是确定性的。
显然QωπQ^\pi_\omegaQωπ的引入减弱了高方差的影响,但是值函数近似也会引入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)=∫AN(a∼∣a,σ2)Qπ(a∼)da∼\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^\simQπ∼(a)=∫AN(a∼∣a,σ2)Qπ(a∼)da∼
所以,我们应该去估计Qπ∼\mathop{Q^\pi}\limits^\simQπ∼而不是QπQ^\piQπ。为什么呢?这是因为平滑能带来2个优势:
- 从Figure 1来看,显然紫红色线比绿色线更容易学习,特别是绿色线容易陷入局部最优,无法学习到使OERO_{ER}OER最大时候的a=0.5。
- 平滑在绝大多数场合下都具有可以无限次求导的优质特性并且Qπ∼\mathop{Q^\pi}\limits^\simQπ∼可以对
任意确定性动作a
求导。比如普通的Q在某个动作处曲线很抖或者在某个点不可导,那么算法就会无法收敛。在本算法中,我们需要用到Qπ∼\mathop{Q^\pi}\limits^\simQπ∼对任意连续动作a的一次、二次偏导。
这里需要注意的是,Qπ∼(a)\mathop{Q^\pi}\limits^\sim(a)Qπ∼(a)仍是符合贝尔曼等式的,且OER(π)=Qπ∼(a)O_{ER}(\pi)=\mathop{Q^\pi}\limits^\sim(a)OER(π)=Qπ∼(a)。
接下来,用Qωπ∼\mathop{Q^\pi_\omega}\limits^\simQωπ∼来近似Qπ∼\mathop{Q^\pi}\limits^\simQπ∼,ai∼πa_i\sim\piai∼π,可以得到:
Δμ=∂Qωπ∼∂a∣a=μΔσ=∂2Qωπ∼∂a2∣a=μΔw=(ri+γQwπ∼(μ′)−Qwπ∼(μ))∇ωQwπ∼(μ)\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(随机策略)的优点:
- 可以避免局部最优。
- Qπ∼\mathop{Q^\pi}\limits^\simQπ∼比QπQ^\piQπ更容易近似(Figure 1)。
- 他可以像DPG一样,用Q值来做参数的更新。只不过DPG是直接更新确定性目标策略的参数,而smoothie是直接更新随机策略的参数,间接更新随机目标策略。这种转换其实是可行的,他就是利用了在高斯噪声下的DPG的确定性目标策略等价于smoothie中高斯目标策略的均值,所以你更新确定性目标策略等同于更新高斯策略的均值μ\muμ。也就是说高斯策略
参数
μ、Σ\mu、\Sigmaμ、Σ的参数
θ、ϕ\theta、\phiθ、ϕ的更新是确定性
的,仿照了DPG中确定性策略μθ\mu_\thetaμθ的参数的更新。具体的可以看后面的4.3节的伪代码。 - 说到底smoothie还是随机策略下的RL算法,继承于传统PG。因此可以用来更新高斯策略的参数μ\muμ和σ\sigmaσ.况且Q的平滑使得二阶求导是有效的。关于σ\sigmaσ的求导后续会有证明。。
虽然上述讨论是基于Figure 1,但是smoothie是可以用于复杂的RL任务的。
4.Smoothed Actor Value Functions
这篇文章主要有2个重点:
- 引出了smoothed Q。
- 高斯平滑Q的梯度可以用来优化高斯策略的参数μ、Σ\mu、\Sigmaμ、Σ。
接下来作者给出smoothed Q是怎么来的。
Qπ∼\mathop{Q^\pi}\limits^\simQπ∼区别于普通的QπQ^\piQπ在于:
- 给你在某个状态s,让你去求Q(s,a)Q(s,a)Q(s,a),那么你会很明确知道接下去执行的第一个动作是a,然后通过算法不断迭代最后求出这个Q值。
- 但对于Qπ∼(s,a)\mathop{Q^\pi}\limits^\sim(s,a)Qπ∼(s,a),你很明确知道的是你接下来执行的第一个动作是
以a为均值的高斯策略
采样得到的动作值a∼\mathop{a}\limits^\sima∼,这个值以很大概率落在a附近(正态分布的基本知识),接下来去求Qπ(s,a∼)Q^\pi(s,\mathop{a}\limits^\sim)Qπ(s,a∼),然后你需要采样很多个这样的a∼\mathop{a}\limits^\sima∼,然后求Qπ(s,a∼)Q^\pi(s,\mathop{a}\limits^\sim)Qπ(s,a∼)的期望,这就是高斯平滑Q。
给出定义式:
Qπ∼(s,a)=∫AN(a∼∣a,Σ(s))Qπ(s,a∼)da∼=Ea∼∼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^\piQπ求取期望来近似。
接下来就可以写出smoothie版本的公式(2):
高斯策略π≡(μ,Σ)∇μ,ΣOER(π)=∫Sρπ(s)∇μ,ΣQπ∼(s,μ(s))ds(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^\simQπ∼来代替QπQ^\piQπ,是因为我们需要将带有Qπ∼\mathop{Q^\pi}\limits^\simQπ∼的TD目标值当成我们更新的目标,这样的话一般的QπQ^\piQπ就可以转变成smoothed Q了,故公式(7)可变为:
Qπ(s,a)=Er,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)=∫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)\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^\simQπ∼的优化。
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应该如何采集。
4.1 Policy Improvement
以往的策略优化是对策略π\piπ的参数的优化,但本文中是对高斯策略策略πθ,ϕ≡(μθ,Σϕ)\pi_{\theta,\phi}\equiv(\mu_\theta,\Sigma_\phi)πθ,ϕ≡(μθ,Σϕ)的参数μ、Σ\mu、\Sigmaμ、Σ的参数θ、ϕ\theta、\phiθ、ϕ的优化。
首先是对θ\thetaθ的优化,将公式(10)展开:
∇θOER(πθ,ϕ)=∫Sρπ(s)∂Qπ∼(s,a)∂a∣a=μθ(s)∇θμθ(s)ds(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:
- 这其实就是第3节后半段Δμ\Delta\muΔμ的进一步对μθ\mu_\thetaμθ的θ\thetaθ求导。
- 从对θ\thetaθ的梯度中看出,动作a直接来源于μ\muμ网路而非高斯策略,这是一个确定性策略。
然后就是对ϕ\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)=12∂2Qπ∼(s,a)∂a2(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):
∇ϕQER(πθ,ϕ)=12∫Sρπ(s)∂2Qπ∼(s,a)∂a2∣a=μθ(s)∇ϕΣϕ(s)ds(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)
4.2 Policy Evaluation
策略评估就是求Qπ∼\mathop{Q^\pi}\limits^\simQπ∼。
有2个办法:方法1是之前有的论文提出的,方法2是本文所采用的。
法1:
- 先用QωπQ_\omega^\piQωπ估计QπQ^\piQπ。minimize(Qωπ(s,a)−r−γQωπ(s′,a′))2a′∼N(μ(s′),Σ(s′))(类似于DPG)(16)minimize (Q^\pi_\omega(s,a)-r-\gamma Q^\pi_\omega(s',a'))^2 \\ a'\sim N(\mu(s'),\Sigma(s'))(类似于DPG)\tag{16}minimize(Qωπ(s,a)−r−γQωπ(s′,a′))2a′∼N(μ(s′),Σ(s′))(类似于DPG)(16)
- 然后利用公式(9)通过采样计算得到Qωπ∼\mathop{Q^\pi_\omega}\limits^\simQωπ∼来作为Qπ∼\mathop{Q^\pi}\limits^\simQπ∼的近似。minimize(Qωπ∼(s,a)−Ea∼[Qωπ(s,a∼))2a∼∼N(a,Σ(s))实际在计算的时候,期望用采样来估计(17)minimize(\mathop{Q^\pi_\omega}\limits^\sim(s,a)-\mathbb{E}_{\mathop{a}\limits^\sim}[Q^\pi_\omega(s,\mathop{a}\limits^\sim))^2\\ \mathop{a}\limits^\sim\sim N(a,\Sigma(s))\\实际在计算的时候,期望用采样来估计\tag{17}minimize(Qωπ∼(s,a)−Ea∼[Qωπ(s,a∼))2a∼∼N(a,Σ(s))实际在计算的时候,期望用采样来估计(17)
法2:
直接利用公式(12),smoothed Q的贝尔曼等式来计算。
具体的,我们将公式(12)稍微变化一下,结果就是:
Ea∼∼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^\sima∼不一定符合高斯策略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)。每次采样一个tuple(s,a∼,r∼,s′∼)tuple(s,\mathop{a}\limits^\sim,\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim)tuple(s,a∼,r∼,s′∼)。我们习惯性采样都是tuple(s,a,r,s′)tuple(s,a,r,s')tuple(s,a,r,s′),这其实是根据你优化目标需要什么tupletupletuple而言的,巧的是smoothie算法用了2个tupletupletuple(其实就是同一个),另一个就是我们熟悉的这个。
我们在作者提出的加权误差
的基础上增加目标采样概率N\mathcal{N}N:
1q(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)这么做的原因是:
- 进行采样修正:让不怎么符合高斯策略的样本在训练时加大偏倚,增加训练程度,变向朝着目标采样概率靠拢。
- 以此为基础,构造
重要性采样
。 - 需要注意的是,我们这里提出的是目标采样概率,类似于目标策略,但两者不等同。
重要性采样修正:
∫AN(a∼∣a,Σ(s))Er∼,s′∼[r∼+γQπ∼(s′∼,μ(s′∼))]da∼=∫AN(a∼∣a,Σ(s))q(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′∼))]\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进行训练,具体如下所示:
Eq(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个小细节
就是:
- r∼+γQωπ∼(s′∼,μ(s′∼))\mathop{r}\limits^\sim+\gamma \mathop{Q^\pi_\omega}\limits^\sim(\mathop{s'}\limits^\sim,\mu(\mathop{s'}\limits^\sim))r∼+γQωπ∼(s′∼,μ(s′∼))这个目标值应该使用Target network技术求出。
- a∼N(a∣a∼,Σ(s))a\sim N(a|\mathop{a}\limits^\sim,\Sigma(s))a∼N(a∣a∼,Σ(s))。
但是伪代码中未显示IS-factor,作者指出:
- 实践结果发现,重要性采样权重δ\deltaδ的作用不大,因此作者将之弃用了。
- 在其他论文中,舍弃IS因子会获得不错的效果。
- 作者指出,忽略IS的可能的原因之一是:我们的行为策略遵循高斯策略,故q(a∼∣s)≈N(a∼∣μθold(s),Σϕold(s))q(\mathop{a}\limits^\sim|s) \approx \mathcal{N}(\mathop{a}\limits^\sim|\mu_{\theta_{old}}(s), \Sigma_{\phi_{old}}(s))q(a∼∣s)≈N(a∼∣μθold(s),Σϕold(s)),这里的θold和ϕold\theta_{old}和\phi_{old}θold和ϕold可以用Target网络参数来表示。而Actor本身更新很慢,故IS因子趋于1,没啥大用,反而增加了复杂度。
- 实践中很难去获得具体的样本分布q(a∼∣s)q(\mathop{a}\limits^\sim|s)q(a∼∣s),但是我们可以近似认为这是一个近似均一策略的分布。这里需要注意这个分布q(a∼∣s)q(\mathop{a}\limits^\sim|s)q(a∼∣s)并不是我们遵循的去replay buffer采样的分布,而是replay buffer中动作关于状态sss的分布,具体如下图所示:
4.3 Proximal Policy Optimization
KL散度
是一种提升算法稳定性的技术,其在PPO算法中得到了很好的稳定性提升效果。由于这是一种基于概率分布的公式,因此其不适用于DDPG算法,因为DDPG算法的策略是确定性策略而不是一个概率分布。
我们在目标函数之后增加一项(类似于L2正则项以及A3C算法中添加的熵项):
OTR(π)=OER(π)−λ∫Sρπ(s)KL(π∣∣πold)dsπold≡(μold,Σold)是之前的高斯策略(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:
- 从公式(20)可以看出,KL散度的使用必须在随机策略下进行。
- Penalty项的积分是为了保持和OER(π)O_{ER}(\pi)OER(π)中的积分一致,用于转化成期望来做采样估计。
将策略评估、策略提升、KL惩罚三者结合起来就形成了off-policy的Actor-Critic形式的Smoothie算法,其伪代码如下:
note:
- 策略评估中关于实时奖励rrr,伪代码中有错误。
- tuple(s,a∼,r∼,s′∼)tuple(s,\mathop{a}\limits^\sim,\mathop{r}\limits^\sim,\mathop{s'}\limits^\sim)tuple(s,a∼,r∼,s′∼)是和Actor回放同一个replay buffer中的数据。因为根据原论文公式(12)下作者所说:r∼和s′∼都采样于R(s,a∼)和P(s,a∼),而R(s,a∼)和P(s,a∼)\mathop{r}\limits^\sim和\mathop{s'}\limits^\sim都采样于R(s,\mathop{a}\limits^\sim)和P(s,\mathop{a}\limits^\sim),而R(s,\mathop{a}\limits^\sim)和P(s,\mathop{a}\limits^\sim)r∼和s′∼都采样于R(s,a∼)和P(s,a∼),而R(s,a∼)和P(s,a∼)产生的数据都存入了buffer。另外采样的方式是一样的,通常使用均一策略或者PER。其实你存入buffer里的数据,就已经是带∼\sim∼的了,如r∼\mathop{r}\limits^\simr∼,而不是rrr,两者的区别在于带∼\sim∼的是基于高斯策略指定值的
附近值
,而我们存入buffer靠的就是行为策略——高斯策略π\piπ,这个行为策略就是直接产生“附近值”的。 - 绿色框是体现Qπ∼\mathop{Q^\pi}\limits^\simQπ∼的关键。普通的Q的策略评估过程的动作aka_kak是来自于replay buffer中的aka_kak,意味着我接下来要评估这对(sk,ak)(s_k,a_k)(sk,ak)。在smoothie算法中,我要直接评估(s,a)(s,a)(s,a),而不是
(s,a∼)(s,\mathop{a}\limits^\sim)(s,a∼),那么aaa怎么来呢?因此在已知a∼\mathop{a}\limits^\sima∼的情况下做了个反向操作
: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)) - 在策略提升中关于Σϕ\Sigma_\phiΣϕ的训练:首先我们目标策略是一个使smoothed Q最优时的高斯策略,包括2个需要训练的参数均值μθ、协方差Σϕ均值\mu_\theta、协方差\Sigma_\phi均值μθ、协方差Σϕ,这和DPG的目标策略是有本质区别的:在高斯策略下DPG是只要训练一个均值μθ均值\mu_\theta均值μθ,而方差σ→0方差\sigma\to0方差σ→0的
确定性的高斯策略
,而其行为策略的方差是个不需要训练的超参数
。 - Smoothie中,μθ\mu_\thetaμθ的训练公式是从DPG中
衍生
过来的,然后换上性能更好的高斯平滑Q即可。由于Qπ∼(s,a)\mathop{Q^\pi}\limits^\sim(s,a)Qπ∼(s,a)结构中直接带有均值,因此可以直接求偏导。然后就是要训练协方差了,Σϕ\Sigma_\phiΣϕ的训练仿照均值的训练——也是衍生于DPG,其目的也是在于提升Qπ∼\mathop{Q^\pi}\limits^\simQπ∼或者说OERO_{ER}OER。Qπ∼(s,a)\mathop{Q^\pi}\limits^\sim(s,a)Qπ∼(s,a)结构中并没有直接带有Σϕ\Sigma_\phiΣϕ,但通过公式(9)展开就有了。除此之外,根据Q值的定义式,Qπ∼\mathop{Q^\pi}\limits^\simQπ∼是在策略πθ、ϕ\pi_{\theta、\phi}πθ、ϕ下计算的,其协方差是个可训练参数。而DPG的πθ\pi_\thetaπθ中的协方差部分只是个超参数,不可训练,这也就暗示了Smoothie可以对Σϕ\Sigma_\phiΣϕ进行像对μθ\mu_\thetaμθ一样的求偏导计算。为了实现起来方便,进一步转为Hessians矩阵的形式。
作为对比,DDPG伪代码:
整体代码框架和DDPG的代码框架很类似,主要以下几点不同:
- DDPG无法训练方差(σ→0\sigma\to0σ→0)。
- 状态动作值函数的不同。
- 最终目标策略不同(确定 VSVSVS 随机)。
- KL散度项的有无。
4.4 Compatible Function Approximation
这部分并不影响理解这篇文章,故略。
5.Related Work
这部分是和本文相关的一些文献,不影响理解这篇文章,故略。
6.Experiments
作者将使用DDPG算法作为baseline体现Smoothie的性能。选择DDPG作为基准是因为:
- DDPG和Smoothie都是用QQQ来做策略提升。
- DDPG在连续动作RL任务上展现了不错的性能。
接下来作者进行3个实验说明Smoothie算法的性能。
6.1 Synthetic Task
第一个实验是对第三节的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跑多次产生的,其宽度反映了高斯策略协方差的大小。我们可以从这个从initial→convergenceinitial\to convergenceinitial→convergence的过程中得出以下信息:
- Smoothie算法最终学习到了使得算法收敛的均值a≈0.4a\approx0.4a≈0.4以及协方差。因为左图最终显示动作趋于稳定,说明到达了收敛(也有可能是局部收敛),其值大约在0.5不到一点,接近0.4。其方差区域宽度为0,说明协方差趋于0,这也符合我们认知中RL的目标策略必须得是确定性的,因为高斯策略的协方差决定了峰的宽度。
为什么阴影部分代表了高斯策略的协方差呢?我取了左图2个红点,2个红点对参数训练的程度不相同,参数大小也不同,故高斯策略也是不同的,其分别指向该训练阶段这几个Agent采取的行为策略a是多少。我们都知道采样点的离散程度代表着总体π\piπ的的方差,采样点中心到均值的距离代表着偏差。如左图的两个训练阶段所示,第一个阶段方差大,也就说其分布π\piπ的协方差比较大,同时bias也大。 - DDPG无法逃离局部最优(a=-0.5),而Smoothie达到了全局最优(a=0.5)。对DDPG而言,其阴影部分是由于行为策略的协方差造成的,是个恒定的值。左图一开始往全局最优方向前进,这可能是由于噪声引起的短暂上升,然后又下降了是因为DPG中均值μθ\mu_\thetaμθ(这里默认讨论高斯噪声下的DPG,故其确定性策略相当于是均值)是朝着QQQ上升的方向更新参数的,因此DDPG又会返回局部最优点,根本原因在于μ\muμ的更新只与QQQ值有关,均值μ\muμ必定会朝着QQQ值上升的方向而变化。
- Smoothie的Qπ∼\mathop{Q^\pi}\limits^\simQπ∼是经过平滑过的,因此Qπ∼\mathop{Q^\pi}\limits^\simQπ∼d的上升很容易使得μθ\mu_\thetaμθ朝向全局最优前进。
- Qπ∼\mathop{Q^\pi}\limits^\simQπ∼可以调控Σϕ\Sigma_\phiΣϕ的大小。当 Qπ∼\mathop{Q^\pi}\limits^\simQπ∼进入凹陷区的时候,Σϕ\Sigma_\phiΣϕ开始变小;在到达全局最优之前,随着Qπ∼\mathop{Q^\pi}\limits^\simQπ∼进入凸状区Σϕ\Sigma_\phiΣϕ开始变大。
6.2 Continuous Control
接下来作者将在OpenAI的Gym库中一个叫MuJoCo的仿真模拟器上实现Smmothie算法和DDPG算法。具体的一些实现细节,比如网络的设置、超参数的设置以及加速寻训练的小技巧见补充文档,关于超参数,
DDPG有一个单独的超参数是OU噪声的参数;Smoothie也有个单独的超参数——KL散度前的λ\lambdaλ。
如上图所示:
- 进行6种游戏,每种游戏设置6组不同的随机种子,即一共执行36次实验。
- 横坐标是以百万次为单位。纵坐标是打游戏的分数。
- 实现展现了6次实验的平均分数,阴影部分是最大分数与最小分数之间的差距。
- 每次实验都是在调整好最佳超参数下进行的。
- 从结果来看,Smoothie表现力明显强于DDPG,且越难的任务,Hopper、Walker2d、Humanoid,Smoothie表现越好。作者借这个实验还想表明:学习Σϕ\Sigma_\phiΣϕ这种非确定性策略也能有很好的效果,并不是非得要确定性策略。
作者从经验角度认为:提升算法稳定性的方法——KL散度加入目标函数中可以解决DDPG固有的训练不稳定现象。
如上图所示,有了KL散度加成的Smoothie比没有KL散度的Smoothie拥有更好的表现力。说明了KL散度的必要性。
7.Conclusion
文章总结:
- 提供了一种高斯平滑的动作值函数Qπ∼\mathop{Q^\pi}\limits^\simQπ∼。
- Qπ∼\mathop{Q^\pi}\limits^\simQπ∼可以对μ\muμ和Σ\SigmaΣ求导得到梯度与Hessian矩阵,而QπQ^\piQπ不行。
- 提出的Smoothie算法可以有效学习到均值与协方差,获取比DDPG更好的表现力,为确定性策略不一定是优先选择提供证据,尤其是它还可以添加KL散度来提升算法稳定性。
- 根据定义,Smoothed Q可以产生平滑的奖励曲线,使得学习更加容易。避免了陷入局部最优。
- Smoothie算法理论上应该属于
off-policy AC
算法。虽然从头至尾就一个策略π\piπ,可以说样本都是行为策略π\piπ产生,也可以说样本都是目标策略π\piπ产生,因为表达式都是π\piπ,但是和DDPG一样,目标策略是使得QQQ值最大(贪婪)时候的动作,Smoothie还会有一个小噪声(协方差Σ\SigmaΣ会在收敛过程逐渐减小,但不会完全等于0)。只不过目标策略和行为策略都是用一个字母表达而已。目标策略应该是趋近于确定性策略。
8.Acknowledgments
对文章贡献者的致谢,故略
论文笔记之RL优化——高斯平滑的Q函数相关推荐
- 论文研读笔记_基于优化的SVM心音信号分类算法的研究
论文研究_基于优化的SVM心音信号分类算法的研究 先存起来,持续更新 摘要 心音信号采集易混入杂音,影响判断: 经验式模态分解算法分析特征分布:心音信号集中于低频.噪音集中于高频: 利用切比雪夫滤波器 ...
- Tsai笔记:GPOPS学习笔记(1)—— 高斯伪谱法的最基本优化方程求解思路(例子介绍)
Tsai笔记:GPOPS学习笔记(1)-- 高斯伪谱法的最基本优化方程求解思路(例子介绍) Tsai三步.(第一步,基本说明.第二步,结果图显示.第三步,代码展示.) 第一步,基本说明. A.问题说明 ...
- c++ openvc4.5.5 学习笔记(五)图像平滑滤波几种基本方法(平均滤波blur、高斯平滑滤波GaussianBlur、中值滤波medianBlur、双边滤波bilateralFilter )
平滑,也称为模糊,是一种简单而经常使用的图像处理操作. 要执行平滑操作,我们将对我们的图像应用过滤器.最常见的滤波器类型是线性的,其中输出像素的值(i.e. g(i,j)),被确定为输入像素值的加权和 ...
- 光流 速度_[论文笔记] FlowNet 光流估计
[论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...
- 论文笔记:Autoregressive Tensor Factorizationfor Spatio-temporal Predictions
0 摘要 张量因子tensor factorization分解方法在时空数据分析领域很受欢迎,因为它们能够处理多种类型的时空数据,处理缺失值,并提供计算效率高的参数估计程序. 然而,现有的张量因子分解 ...
- 论文笔记(十六):Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning
Learning to Walk in Minutes Using Massively Parallel Deep Reinforcement Learning 文章概括 摘要 1 介绍 2 大规模并 ...
- 论文笔记之Stein变分梯度下降
论文地址:点这里.作者还提供了Stein变分梯度下降法的源码. Note: 源码不涉及深度学习,所以PyTorch用户或者TF用户都可以使用. Stein变分梯度下降(SVGD)可以理解是一种和随机梯 ...
- 【论文笔记】AVSM:结合了仿射配准和vSVF配准的医学图像配准模型
本文是论文<Networks for Joint Affine and Non-parametric Image Registration>的阅读笔记. 文章提出了一个名为AVSM(Aff ...
- 论文笔记(十七):Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation
Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation 文章概括 摘要 1 捐款摘要 2 动机 3 使 ...
- 论文笔记(十七):Brax — A Differentiable Physics Engine for Large Scale Rigid Body Simulation
Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation 文章概括 摘要 1 捐款摘要 2 动机 3 使 ...
最新文章
- CentOS7 service network start命令启动时报错解决方法
- 安装Windows Storage Server 2008 R2
- 目标检测,目标识别的SAR数据集构建和标注
- python数字求和输入完第一个数没反应_Python 数字求和
- nginx虚拟主机(基于域名虚拟主机、基于IP地址虚拟主机、基于端口虚拟主机设置)
- java虚拟机06-内存分区/新生代、老年代
- java word批注_编写Java批注
- WinForm支持拖拽效果
- segmenter.go
- 【乐畅】工作积累 ---- 设置一个弹窗的层
- nyoj 410 how many ones?
- Windows 10 20H2 微软MSDN官方正式版ISO镜像下载
- 代码参考--点击文本,即可复制
- 班级页面设计——【2-主界面部分】
- gunicorn flask的请求流程
- ps -ef | grep httpd | grep -v grep | wc -l
- Ubuntu音乐播放器
- Typecho重大漏洞
- java addservlet_servlet增删改查
- python爬取国家统计局数据并做简单的数据缺失值处理