Learning Neural Network Policies with Guided Policy Search under Unknown Dynamics
概述与定位
建议与GPS一起阅读,两者本质上相同,只是setting从Known Dynamics变成Unknown Dynamics。
这一篇文章与上一篇的GPS非常像,因为GPS理解有点难,附一下参考的资源链接
https://michaelrzhang.github.io/model-based-rl
https://michaelrzhang.github.io/gps
https://people.eecs.berkeley.edu/~pabbeel/cs287-fa15/slides/lecture20-guided-policy-search.pdf(强推这个,讲的很清楚了)
Paper 链接:https://dl.acm.org/doi/10.5555/2968826.2968946
一、GPS简略回顾
可以从GPS的训练可以看出呀,它需要一个known dynamics!GPS可以看成是将一堆专家数据得到的局部controllers,跑dynamics model得到比原有专家数据更多的trajectories,然后把这些trajectories变成一个experssive controller即
π
θ
\pi_\theta
πθ神经网络了啦~
然后,这篇文章就是将Guied Policy Search与Trajectory Optimization结合,并在Unknown Dynamics的Setting下,优化一个global expressive的NN policy
二、GPS + Trajectory Optimization的基础知识
2.1 GPS
注:
x
t
,
u
t
x_t,u_t
xt,ut分别表示状态与动作。
我们想要的是一个全局的policy即
π
θ
(
u
t
∣
x
t
)
\pi_\theta(u_t|x_t)
πθ(ut∣xt),优化目标为
E
π
θ
[
∑
t
=
1
T
c
(
x
t
,
u
t
)
]
=
E
π
θ
(
τ
)
[
c
(
τ
)
]
E_{\pi_\theta}[\sum_{t=1}^Tc(x_t,u_t)]=E_{\pi_\theta(\tau)}[c(\tau)]
Eπθ[t=1∑Tc(xt,ut)]=Eπθ(τ)[c(τ)]
对dynamics model即
f
(
x
t
,
u
t
)
f(x_t,u_t)
f(xt,ut)进行一阶线性近似,有:
f
x
t
x
t
+
f
u
t
u
t
f_{x_t}x_t+f_{u_t}u_t
fxtxt+futut然后当作均值,放进Gaussian里称为local linear-Gaussian approximation to the dynamics即:
N
(
f
x
t
x
t
+
f
u
t
u
t
,
F
t
)
N(f_{x_t}x_t+f_{u_t}u_t,F_t)
N(fxtxt+futut,Ft)
然后对cost function二阶近似,结合上面一阶近似的local linear-Gaussian dynamics model,进行优化得到一个linear controller:
g
(
x
t
)
=
u
^
t
+
k
t
+
K
t
(
x
t
−
x
^
t
)
g(x_t) = \hat u_t + k_t +K_t(x_t-\hat x_t)
g(xt)=u^t+kt+Kt(xt−x^t)其中
x
^
t
,
u
^
t
\hat x_t,\hat u_t
x^t,u^t表示current trajectory的states与actions。
同样地,放进高斯的均值中,得到 linear Gaussian controller:
p
(
u
t
∣
x
t
)
=
N
(
u
ˉ
t
+
k
t
+
K
t
(
x
t
−
x
ˉ
t
)
,
Q
u
t
,
u
t
−
1
)
p(u_t|x_t) = N(\bar u_t + k_t +K_t(x_t-\bar x_t),Q_{u_t,u_t}^{-1})
p(ut∣xt)=N(uˉt+kt+Kt(xt−xˉt),Qut,ut−1)
其中
u
ˉ
t
,
x
ˉ
t
\bar u_t,\bar x_t
uˉt,xˉt来自用
g
(
x
t
)
g(x_t)
g(xt)与
f
x
t
x
t
+
f
u
t
u
t
f_{x_t}x_t+f_{u_t}u_t
fxtxt+futut解出来的值。
换成trajectory的说法,这个弄出来的linear-Gaussian controller等同于解下面优化问题:
p
(
τ
)
=
arg min
p
(
τ
)
E
p
[
c
(
τ
)
]
−
H
(
p
(
τ
)
)
s
.
t
p
(
x
t
+
1
∣
x
t
,
u
t
)
=
N
(
f
x
t
x
t
+
f
u
t
u
t
,
F
t
)
p(\tau)=\argmin_{p(\tau)}E_p[c(\tau)]-H(p(\tau))\\ s.t\quad p(x_{t+1}|x_t,u_t)=N(f_{x_t}x_t+f_{u_t}u_t,F_t)
p(τ)=p(τ)argminEp[c(τ)]−H(p(τ))s.tp(xt+1∣xt,ut)=N(fxtxt+futut,Ft)
在一阶线性高斯的dynamics的约束下,优化这个带entropy term的轨迹目标,就可以得到linear controller了即 p ( u t ∣ x t ) p(u_t|x_t) p(ut∣xt)
有一个点必须得关注:
对于优化问题的表述有两种,一种是根据policy的表述,一种是根据轨迹trajectory的表述,容易混淆。
本质上,trajectory 就是一个policy在dynamics下rollout形成的,因此上面就是说,在dynamics是由一阶线性高斯dynamicsmodel近似时,对这个maximum enrtopy objective的轨迹表达进行轨迹优化,得到的policy就是在这个policy表述的目标身上
E
π
θ
[
∑
t
=
1
T
c
(
x
t
,
u
t
)
]
E_{\pi_\theta}[\sum_{t=1}^Tc(x_t,u_t)]
Eπθ[∑t=1Tc(xt,ut)]进行优化得到的policy。
2.2 Trajectory Optimization
正常的已知dynamics model后的轨迹优化步骤如下:
- Fits local time-varying linear dynamics models即 N ( f x t x t + f u t u t , F t ) N(f_{x_t}x_t+f_{u_t}u_t,F_t) N(fxtxt+futut,Ft)
- 用上面的model来optimize a time-varying linear-Gaussian Controller即 g ( x t ) = u ^ t + k t + K t ( x t − x ^ t ) g(x_t) = \hat u_t + k_t +K_t(x_t-\hat x_t) g(xt)=u^t+kt+Kt(xt−x^t)即解一个优化目标
然后在Unknown Dynamics的轨迹优化步骤如下:
- 初始化一个linear-Gaussian controller p ( u t ∣ x t ) p(u_t|x_t) p(ut∣xt),然后在Unknown Dynamics下收集一些trajectories即 { ( x t , u t , x t + 1 ) } \{(x_t,u_t,x_{t+1})\} {(xt,ut,xt+1)}
- 利用这些trajectories去估计一个linear-Gaussian dynamics Model
- 然后用估计的dynamics model以及Objective与Constrain解出一个新的linear-Gaussian controller
- 迭代这个过程,得到一个较优的linear-Gaussian Controller
公式表达一下Unknown Dynamics的第三步:
min
p
(
τ
)
E
p
[
c
(
τ
)
]
s
.
t
D
K
L
(
p
(
τ
)
∣
∣
p
^
(
τ
)
)
≤
ϵ
\min_{p(\tau)}E_p[c(\tau)]\\ s.t \quad D_{KL}(p(\tau)||\hat p(\tau))\le \epsilon
p(τ)minEp[c(τ)]s.tDKL(p(τ)∣∣p^(τ))≤ϵ
(此处使用了轨迹的表述,一个轨迹 = dynamics(fit拟合得到) + 一个待求的policy/controller)
之前在GPS中已经说过有Dual Gradient Desent去求解这个问题了,回顾一下:
原问题变为:
min p max λ ∑ t = 1 T E p ( x t , u t ) [ c ( x t , u t ) ] + λ ( D K L ( p ( τ ) ∣ ∣ p ˉ ( τ ) ) − ϵ ) \min_p\max_\lambda \sum_{t=1}^TE_{p(x_t,u_t)}\Big[c(x_t,u_t)\Big]+\lambda(D_{KL}(p(\tau)||\bar p(\tau))-\epsilon) pminλmaxt=1∑TEp(xt,ut)[c(xt,ut)]+λ(DKL(p(τ)∣∣pˉ(τ))−ϵ)
对偶问题变为:
max λ min p ∑ t = 1 T E p ( x t , u t ) [ c ( x t , u t ) ] + λ ( D K L ( p ( τ ) ∣ ∣ p ˉ ( τ ) ) − ϵ ) \max_\lambda \min_p\sum_{t=1}^TE_{p(x_t,u_t)}\Big[c(x_t,u_t)\Big]+\lambda(D_{KL}(p(\tau)||\bar p(\tau))-\epsilon) λmaxpmint=1∑TEp(xt,ut)[c(xt,ut)]+λ(DKL(p(τ)∣∣pˉ(τ))−ϵ)
然后固定
λ
\lambda
λ优化内项:
min
p
∑
t
=
1
T
E
p
(
x
t
,
u
t
)
[
c
(
x
t
,
u
t
)
−
λ
l
o
g
p
ˉ
(
u
t
∣
x
t
)
−
λ
H
(
p
(
u
t
∣
x
t
)
)
]
−
λ
ϵ
=
min
p
∑
t
=
1
T
E
p
(
x
t
,
u
t
)
[
1
λ
c
(
x
t
,
u
t
)
−
l
o
g
p
ˉ
(
u
t
∣
x
t
)
−
H
(
p
(
u
t
∣
x
t
)
)
]
−
ϵ
=
min
p
∑
t
=
1
T
E
p
(
x
t
,
u
t
)
[
c
ˉ
(
x
t
,
u
t
)
−
H
(
p
(
u
t
∣
x
t
)
)
]
−
ϵ
\begin{aligned} &\min_p\sum_{t=1}^TE_{p(x_t,u_t)}\Big[c(x_t,u_t)-\lambda log\bar p(u_t|x_t)-\lambda H(p(u_t|x_t))\Big]-\lambda\epsilon\\ &= \min_p \sum_{t=1}^TE_{p(x_t,u_t)}[\frac{1}{\lambda}c(x_t,u_t)-log\bar p(u_t|x_t)-H(p(u_t|x_t))]-\epsilon\\ &= \min_p \sum_{t=1}^TE_{p(x_t,u_t)}[\bar c(x_t,u_t)-H(p(u_t|x_t))]-\epsilon \end{aligned}
pmint=1∑TEp(xt,ut)[c(xt,ut)−λlogpˉ(ut∣xt)−λH(p(ut∣xt))]−λϵ=pmint=1∑TEp(xt,ut)[λ1c(xt,ut)−logpˉ(ut∣xt)−H(p(ut∣xt))]−ϵ=pmint=1∑TEp(xt,ut)[cˉ(xt,ut)−H(p(ut∣xt))]−ϵ对这个Objective 跑一个iLQR,得到一个新的controller policy
p
∗
(
u
t
∣
x
t
)
p^*(u_t|x_t)
p∗(ut∣xt)
然后将
p
∗
(
u
t
∣
x
t
)
p^*(u_t|x_t)
p∗(ut∣xt)代入目标,优化外项
λ
\lambda
λ:
λ
←
+
α
(
D
K
L
(
p
(
τ
)
∣
∣
p
ˉ
(
τ
)
)
−
ϵ
)
\lambda \leftarrow + \alpha (D_{KL}(p(\tau)||\bar p(\tau))-\epsilon)
λ←+α(DKL(p(τ)∣∣pˉ(τ))−ϵ)
三、算法流程
这是算法的示意图,分为Trajectory Optimization与GPS两部分:
其中Trajectory Optimization的部分为:
GPS的部分最为关键是那个监督学习的Global Network的Objective:
最后算法流程如下,就是多了一个Global Policy Network来做监督学习。
四、总结
GPS是在Known Dynamics且Dyanmics是很复杂的情况进行学习的,因此controller的更新不需要迭代。
本文是GPS + Trajectory Optimization在Unknown Dynamics下进行学习的,因此controller的更新需要迭代。
其余关于Global Policy Network的学习流程相差无几,就是Objective不一样。
一句话总结:对于Unknown Dynamics,对dynamics model进行迭代来获得一个比较好的controller(Trajectory Optimization),再设定Objective进行Guided Policy Search获得一个Global Expressive的Policy