本专栏按照 https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html 顺序进行总结 。
斯坦变分策略梯度
S V P G \color{red}SVPG SVPG :[ paper:Stein Variational Policy Gradient | code ]
原理解析
这是一种 应用Stein变分梯度下降法更新策略参数的算法。
在最大熵策略优化设置中,
θ
\theta
θ 被认为是一个随机变量,服从于:
θ
∼
q
(
θ
)
\theta \sim q(\theta)
θ∼q(θ),模型期望学到 分布
q
(
θ
)
q(\theta)
q(θ);假设我们知道一个先验知识,即
q
q
q 看起来像
q
0
q_0
q0,我们想要引导学习过程使得
θ
\theta
θ 这套参数的分布 接近于
q
0
q_0
q0,即优化以下目标函数
J
^
(
θ
)
=
E
θ
∼
q
[
J
(
θ
)
]
−
α
D
KL
(
q
∥
q
0
)
\hat{J}(\theta) = \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0)
J^(θ)=Eθ∼q[J(θ)]−αDKL(q∥q0)
其中,当 θ ∼ q ( θ ) \theta \sim q(\theta) θ∼q(θ) 时, E θ ∼ q [ R ( θ ) ] \mathbb{E}_{\theta \sim q} [R(\theta)] Eθ∼q[R(θ)] 是 期望回报; D K L D_{KL} DKL 是 KL 散度。
如果我们没有任何先验信息,我们可以将
q
0
q_0
q0 设为均匀分布,将
q
0
(
θ
)
q_0(\theta)
q0(θ) 设为常数。那么上述目标函数即为 SAC,其中熵这一个项鼓励探探索:
J
^
(
θ
)
=
E
θ
∼
q
[
J
(
θ
)
]
−
α
D
KL
(
q
∥
q
0
)
=
E
θ
∼
q
[
J
(
θ
)
]
−
α
E
θ
∼
q
[
log
q
(
θ
)
−
log
q
0
(
θ
)
]
=
E
θ
∼
q
[
J
(
θ
)
]
+
α
H
(
q
(
θ
)
)
\begin{aligned} \hat{J}(\theta) &= \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0) \\ &= \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha \mathbb{E}_{\theta \sim q} [\log q(\theta) - \log q_0(\theta)] \\ &= \mathbb{E}_{\theta \sim q} [J(\theta)] + \alpha H(q(\theta)) \end{aligned}
J^(θ)=Eθ∼q[J(θ)]−αDKL(q∥q0)=Eθ∼q[J(θ)]−αEθ∼q[logq(θ)−logq0(θ)]=Eθ∼q[J(θ)]+αH(q(θ))
把
J
^
(
θ
)
=
E
θ
∼
q
[
J
(
θ
)
]
−
α
D
KL
(
q
∥
q
0
)
\hat{J}(\theta) = \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0)
J^(θ)=Eθ∼q[J(θ)]−αDKL(q∥q0) 关于
q
q
q 求导:
∇
q
J
^
(
θ
)
=
∇
q
(
E
θ
∼
q
[
J
(
θ
)
]
−
α
D
KL
(
q
∥
q
0
)
)
=
∇
q
∫
θ
(
q
(
θ
)
J
(
θ
)
−
α
q
(
θ
)
log
q
(
θ
)
+
α
q
(
θ
)
log
q
0
(
θ
)
)
=
∫
θ
(
J
(
θ
)
−
α
log
q
(
θ
)
−
α
+
α
log
q
0
(
θ
)
)
=
0
\begin{aligned} \nabla_q \hat{J}(\theta) &= \nabla_q \big( \mathbb{E}_{\theta \sim q} [J(\theta)] - \alpha D_\text{KL}(q\|q_0) \big) \\ &= \nabla_q \int_\theta \big( q(\theta) J(\theta) - \alpha q(\theta)\log q(\theta) + \alpha q(\theta) \log q_0(\theta) \big) \\ &= \int_\theta \big( J(\theta) - \alpha \log q(\theta) -\alpha + \alpha \log q_0(\theta) \big) \\ &= 0 \end{aligned}
∇qJ^(θ)=∇q(Eθ∼q[J(θ)]−αDKL(q∥q0))=∇q∫θ(q(θ)J(θ)−αq(θ)logq(θ)+αq(θ)logq0(θ))=∫θ(J(θ)−αlogq(θ)−α+αlogq0(θ))=0
最优分布是:
log
q
∗
(
θ
)
=
1
α
J
(
θ
)
+
log
q
0
(
θ
)
−
1
thus
q
∗
(
θ
)
⏟
"posterior"
∝
exp
(
J
(
θ
)
/
α
)
⏟
"likelihood"
q
0
(
θ
)
⏟
prior
\log q^{*}(\theta) = \frac{1}{\alpha} J(\theta) + \log q_0(\theta) - 1 \text{ thus } \underbrace{ q^{*}(\theta) }_\textrm{"posterior"} \propto \underbrace{\exp ( J(\theta) / \alpha )}_\textrm{"likelihood"} \underbrace{q_0(\theta)}_\textrm{prior}
logq∗(θ)=α1J(θ)+logq0(θ)−1 thus "posterior"
q∗(θ)∝"likelihood"
exp(J(θ)/α)prior
q0(θ)
温度 α α α 决定开发和探索之间的权衡。当 α → 0 \alpha \rightarrow 0 α→0 时, θ \theta θ 仅根据期望回报 J ( θ ) J(\theta) J(θ) 进行更新;当 α → ∞ \alpha \rightarrow \infty α→∞ 时, θ \theta θ 始终遵循先验信念。
当 利用SVGD方法估计目标的后验分布
q
(
θ
)
q(\theta)
q(θ)的时候,它依赖于 一组:
{
θ
i
}
i
=
1
n
\{\theta_i\}_{i=1}^n
{θi}i=1n,(independently trained policy agents),每一个是这么更新:
θ
i
←
θ
i
+
ϵ
ϕ
∗
(
θ
i
)
where
ϕ
∗
=
max
ϕ
∈
H
{
−
∇
ϵ
D
KL
(
q
[
θ
+
ϵ
ϕ
(
θ
)
]
′
∥
q
)
s.t.
∥
ϕ
∥
H
≤
1
}
\theta_i \gets \theta_i + \epsilon \phi^{*}(\theta_i) \text{ where } \phi^{*} = \max_{\phi \in \mathcal{H}} \{ - \nabla_\epsilon D_\text{KL} (q'_{[\theta + \epsilon \phi(\theta)]} \| q) \text{ s.t. } \|\phi\|_{\mathcal{H}} \leq 1\}
θi←θi+ϵϕ∗(θi) where ϕ∗=ϕ∈Hmax{−∇ϵDKL(q[θ+ϵϕ(θ)]′∥q) s.t. ∥ϕ∥H≤1}
其中:
- ϵ \epsilon ϵ 是学习率
- ϕ ∗ \phi^{*} ϕ∗ 是 θ型值向量的 RKHS H \mathcal{H} H 的单位球;极大地降低了粒子与目标分布之间的KL散度。
比较不同的基于梯度的更新方法: