学习目的:近期需要去学习下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
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^\sim a∼,这个动作以很大概率在动作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
≡
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()。
2.1 Policy Gradient for Generic Stochastic Policies
首先复习一下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的分布比较分散,因此也会导致高方差的结果。
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
)
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训练的不稳定性
。
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个参数呢,一个最直白的思想就是:
Δ
μ
=
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)这里说明一下:
- DPG可以看成:行为策略是均值为确定性策略,标准差为 σ \sigma σ的高斯策略 π \pi π,目标策略为确定性策略,即均值 μ \mu μ就是确定性策略,把确定性策略当成是高斯策略的均值,这是个需要学习的量,由于目前的讨论是在单状态空间下,因此省略了“s”,而且Q中也只写了动作“a”。
- ε i \varepsilon_i εi是高斯噪声,为了更好引出高斯平滑的smoothie算法们这里就不用OU噪声。
- Q ω π Q_\omega^\pi Qωπ是 Q π Q^\pi Qπ的值函数近似。
- 从 a i = μ + ε 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_\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个优势:
- 从Figure 1来看,显然紫红色线比绿色线更容易学习,特别是绿色线容易陷入局部最优,无法学习到使 O E R O_{ER} OER最大时候的a=0.5。
- 平滑在绝大多数场合下都具有可以无限次求导的优质特性并且
Q
π
∼
\mathop{Q^\pi}\limits^\sim
Qπ∼可以对
任意确定性动作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(随机策略)的优点:
- 可以避免局部最优。
- Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼比 Q π Q^\pi Qπ更容易近似(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^\sim
Qπ∼区别于普通的
Q
π
Q^\pi
Qπ在于:
- 给你在某个状态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^\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应该如何采集。
4.1 Policy Improvement
以往的策略优化是对策略 π \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:
- 这其实就是第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
)
=
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)
4.2 Policy Evaluation
策略评估就是求
Q
π
∼
\mathop{Q^\pi}\limits^\sim
Qπ∼。
有2个办法:方法1是之前有的论文提出的,方法2是本文所采用的。
法1:
- 先用 Q ω π Q_\omega^\pi Qωπ估计 Q π Q^\pi Qπ。 m i n i m i z e ( Q ω π ( s , a ) − r − γ Q ω π ( s ′ , a ′ ) ) 2 a ′ ∼ N ( μ ( s ′ ) , Σ ( s ′ ) ) ( 类 似 于 D P G ) (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^\sim Qωπ∼来作为 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼的近似。 m i n i m i z e ( Q ω π ∼ ( s , a ) − E a ∼ [ Q ω π ( s , a ∼ ) ) 2 a ∼ ∼ 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)稍微变化一下,结果就是:
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个小细节
就是:
- 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 ∼ ∣ μ θ o l d ( s ) , Σ ϕ o l d ( 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)),这里的 θ o l d 和 ϕ o l d \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中动作关于状态
s
s
s的分布,具体如下图所示:
4.3 Proximal Policy Optimization
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:
- 从公式(20)可以看出,KL散度的使用必须在随机策略下进行。
- Penalty项的积分是为了保持和 O E R ( π ) O_{ER}(\pi) OER(π)中的积分一致,用于转化成期望来做采样估计。
将策略评估、策略提升、KL惩罚三者结合起来就形成了off-policy的Actor-Critic形式的Smoothie算法,其伪代码如下:
note:
- 策略评估中关于实时奖励 r r r,伪代码中有错误。
-
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′∼)是和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^\sim
r∼,而不是
r
r
r,两者的区别在于带
∼
\sim
∼的是基于高斯策略指定值的
附近值
,而我们存入buffer靠的就是行为策略——高斯策略 π \pi π,这个行为策略就是直接产生“附近值”的。 - 绿色框是体现
Q
π
∼
\mathop{Q^\pi}\limits^\sim
Qπ∼的关键。普通的Q的策略评估过程的动作
a
k
a_k
ak是来自于replay buffer中的
a
k
a_k
ak,意味着我接下来要评估这对
(
s
k
,
a
k
)
(s_k,a_k)
(sk,ak)。在smoothie算法中,我要直接评估
(
s
,
a
)
(s,a)
(s,a),而不是
( s , a ∼ ) (s,\mathop{a}\limits^\sim) (s,a∼),那么 a a a怎么来呢?因此在已知 a ∼ \mathop{a}\limits^\sim a∼的情况下做了个反向操作
: 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^\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的代码框架很类似,主要以下几点不同:
- DDPG无法训练方差( σ → 0 \sigma\to0 σ→0)。
- 状态动作值函数的不同。
- 最终目标策略不同(确定 V S VS VS 随机)。
- KL散度项的有无。
4.4 Compatible Function Approximation
这部分并不影响理解这篇文章,故略。
5.Related Work
这部分是和本文相关的一些文献,不影响理解这篇文章,故略。
6.Experiments
作者将使用DDPG算法作为baseline体现Smoothie的性能。选择DDPG作为基准是因为:
- DDPG和Smoothie都是用 Q Q Q来做策略提升。
- 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跑多次产生的,其宽度反映了高斯策略协方差的大小。我们可以从这个从
i
n
i
t
i
a
l
→
c
o
n
v
e
r
g
e
n
c
e
initial\to convergence
initial→convergence的过程中得出以下信息:
- Smoothie算法最终学习到了使得算法收敛的均值
a
≈
0.4
a\approx0.4
a≈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,故其确定性策略相当于是均值)是朝着 Q Q Q上升的方向更新参数的,因此DDPG又会返回局部最优点,根本原因在于 μ \mu μ的更新只与 Q Q Q值有关,均值 μ \mu μ必定会朝着 Q Q Q值上升的方向而变化。
- Smoothie的 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼是经过平滑过的,因此 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼d的上升很容易使得 μ θ \mu_\theta μθ朝向全局最优前进。
- Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼可以调控 Σ ϕ \Sigma_\phi Σϕ的大小。当 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼进入凹陷区的时候, Σ ϕ \Sigma_\phi Σϕ开始变小;在到达全局最优之前,随着 Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼进入凸状区 Σ ϕ \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^\sim Qπ∼。
- Q π ∼ \mathop{Q^\pi}\limits^\sim Qπ∼可以对 μ \mu μ和 Σ \Sigma Σ求导得到梯度与Hessian矩阵,而 Q π Q^\pi Qπ不行。
- 提出的Smoothie算法可以有效学习到均值与协方差,获取比DDPG更好的表现力,为确定性策略不一定是优先选择提供证据,尤其是它还可以添加KL散度来提升算法稳定性。
- 根据定义,Smoothed Q可以产生平滑的奖励曲线,使得学习更加容易。避免了陷入局部最优。
- Smoothie算法理论上应该属于
off-policy AC
算法。虽然从头至尾就一个策略 π \pi π,可以说样本都是行为策略 π \pi π产生,也可以说样本都是目标策略 π \pi π产生,因为表达式都是 π \pi π,但是和DDPG一样,目标策略是使得 Q Q Q值最大(贪婪)时候的动作,Smoothie还会有一个小噪声(协方差 Σ \Sigma Σ会在收敛过程逐渐减小,但不会完全等于0)。只不过目标策略和行为策略都是用一个字母表达而已。目标策略应该是趋近于确定性策略。
8.Acknowledgments
对文章贡献者的致谢,故略