Introduction
层次强化学习(Hierarchical reinforcement learning, HRL)需要学习low-level和high-level的policy。low-level policy的训练往往需要hand-specification或者subgoal information。本文提出一种基于VAE的轨迹自编码方法(Self-consistent trajectoy autoencoder, SeCTAR),同时学习一个state doceder和policy decoder, 从而利用latent space控制low-level policy
SeCTAR
SeCTAR包含3个部分:trajectory-level encoder
q
ϕ
(
z
∣
τ
)
q_\phi(z|\tau)
qϕ(z∣τ), state decoder
p
θ
S
D
(
τ
∣
z
)
p_{\theta_{SD}}(\tau|z)
pθSD(τ∣z)和 policy decoder
p
θ
P
D
(
a
∣
s
,
z
)
p_{\theta_{PD}}(a|s,z)
pθPD(a∣s,z)。目标是最大化
l
o
g
p
(
τ
)
logp(\tau)
logp(τ)的同时,使得state decoder 和 policy decoder得到的轨迹尽可能接近,这样就能实现在state space上进行plan,然后生成能够得到相应state trajectory的actions。这个objective可以写成下面的式子
max
l
o
g
p
(
τ
)
\max \mathop{log} p(\tau)
maxlogp(τ)
subject to
E
q
ϕ
[
D
K
L
(
p
θ
P
D
(
τ
∣
z
)
∣
∣
p
θ
S
D
(
τ
∣
z
)
)
]
=
0
E_{q_\phi}[D_{KL}(p_{\theta_{PD}}(\tau|z)||p_{\theta_{SD}}(\tau|z))]=0
Eqϕ[DKL(pθPD(τ∣z)∣∣pθSD(τ∣z))]=0
将constraint转化为penalty并利用ELBO估计
l
o
g
p
\mathop{log} p
logp得到
E
q
ϕ
[
l
o
g
p
θ
S
D
(
τ
∣
z
)
]
−
D
K
L
(
q
ϕ
(
z
∣
τ
)
∣
∣
p
(
z
)
)
+
λ
[
E
q
ϕ
,
p
θ
P
D
(
τ
∣
z
)
[
l
o
g
p
θ
S
D
(
τ
∣
z
)
]
+
H
(
p
θ
P
D
(
τ
∣
z
)
)
]
E_{q_\phi}[\mathop{log}p_{\theta_{SD}}(\tau|z)] -D_{KL}(q_\phi(z|\tau)||p(z))+\\ \lambda [E_{q_\phi,p_{\theta_{PD}}(\tau|z)}[\mathop{log} p_{\theta_{SD}}(\tau|z)]+H(p_{\theta_{PD}}(\tau|z))]
Eqϕ[logpθSD(τ∣z)]−DKL(qϕ(z∣τ)∣∣p(z))+λ[Eqϕ,pθPD(τ∣z)[logpθSD(τ∣z)]+H(pθPD(τ∣z))]
trajectory encoder和state decoder就是一个关于trajectory的VAE,而policy decoder则要求通过该policy生成的trajectory和state decoder的接近。policy decoder可以用state decoder的log likelyhood作为reward,并加上正则项,进行传统的RL训练。用trajectory进行behavior cloning能提供较好的初始化。
Hierarchical Control
SeCTAR训练完之后,根据一个latent variable z z z就可以解码得到一定步长的trajectory,之后利用random sampling和MPC(model predictive control)的方法选择z,然后解码出相应的policy,就可以进行control。这里可以类比latent space为搜索空间,state decoder为dynamic。假设总步长H,每次解码步长T,则搜索H/T个不同的 z z z作为high-level policy,而low-level policy由policy decoder得到。
Exploration for SeCTAR
在训练SeCTAR时,trajectory如果固定不变,那么decoder覆盖的范围有限,不能很好的进行探索。为此,引入探索策略 π e \pi_e πe,其优化目标为最大化trajectory的熵即 − E p θ ( τ ) [ l o g p θ ( τ ) ] -E_{p_\theta}(\tau)[\mathop{log} p_\theta(\tau)] −Epθ(τ)[logpθ(τ)],而 − p θ ( τ ) -p_\theta(\tau) −pθ(τ)可以用ELBO估计,作为reward对 θ \theta θ进行更新即可。每次从MPC中经历过的某个state出发,用 π e \pi_e πe采样,重新训练SeCTAR,迭代进行。