Meta Learning for Better RL
Online Meta-Critic Learning for Off-Policy Actor-Critic Methods
一般的元学习是用来在任务分布上学习,通过以往的大量任务训练过程来总结出经验指导分布中未曾见过的新任务的学习。然而这篇论文关注的是一般的single-task强化学习任务,即利用元学习的思想提高model-free, off-policy强化学习算法的性能。
核心的idea就是利用采样数据学习一个元损失函数(meta-critic),能根据数据online生成辅助损失,从而促进强化学习过程。
Formulation
Bi-level Optimization
将单个强化学习过程看做bi-level优化问题:
ω
=
arg
min
ω
L
m
e
t
a
(
d
v
a
l
;
ϕ
∗
)
s.t.
ϕ
∗
=
arg
min
ϕ
L
m
a
i
n
(
d
t
r
;
ϕ
)
+
L
ω
a
u
x
(
d
t
r
;
ϕ
)
\begin{aligned} \omega& = \arg\min_\omega L^{meta}(d_{val};\phi^*)\\ \text{s.t.}\quad \phi^*&=\arg\min_{\phi}L^{main}(d_{tr};\phi)+L^{aux}_{\omega}(d_{tr};\phi) \end{aligned}
ωs.t.ϕ∗=argωminLmeta(dval;ϕ∗)=argϕminLmain(dtr;ϕ)+Lωaux(dtr;ϕ)这里参数
ϕ
\phi
ϕ是策略参数,
ω
\omega
ω是元损失函数参数。
L
m
a
i
n
L^{main}
Lmain表示一般强化学习中的损失函数,即长期回报期望的负值。
L
m
e
t
a
L^{meta}
Lmeta损失主要目标是判断
L
ω
a
u
x
L^{aux}_{\omega}
Lωaux的加入,是否有效提升了策略的性能表现,所以原文中将其定义为:
L
m
e
t
a
=
t
a
n
h
(
L
m
a
i
n
(
d
v
a
l
;
ϕ
n
e
w
)
−
L
m
a
i
n
(
d
v
a
l
;
ϕ
o
l
d
)
)
L^{meta} = tanh(L^{main}(d_{val};\phi_{new})-L^{main}(d_{val};\phi_{old}))
Lmeta=tanh(Lmain(dval;ϕnew)−Lmain(dval;ϕold))这里需要注意的是,
ϕ
n
e
w
\phi_{new}
ϕnew是利用了
L
m
a
i
n
+
L
ω
a
u
x
L^{main}+L^{aux}_{\omega}
Lmain+Lωaux联合损失更新的策略参数,
ϕ
o
l
d
\phi_{old}
ϕold则是传统的只利用
L
m
a
i
n
L^{main}
Lmain损失更新的参数。所以
L
m
e
t
a
L^{meta}
Lmeta的目的就是让
ϕ
n
e
w
\phi_{new}
ϕnew的性能尽可能的比
ϕ
o
l
d
\phi_{old}
ϕold的性能好,这样就说明通过元损失函数得到的辅助损失有利于策略的学习。这里用一个单调增函数
t
a
n
h
tanh
tanh作用在其差值上。
Meta-critic Design
关键就是如何设计meta-critic网络(记为 h ω ( d t r ; ϕ ) h_{\omega}(d_{tr};\phi) hω(dtr;ϕ)),使其能生成理想的辅助损失。同时需要满足以下条件:
- 输入必须与策略参数 ϕ \phi ϕ有关,因为要通过 L ω a u x L^{aux}_{\omega} Lωaux传递梯度去更新 ϕ \phi ϕ;
- 对于输入样本要保持排序不变性(permutation invariant);
本文采用的方法是将策略网络作为输入样本的特征提取网络,取策略网络的倒数第二层输出作为提取的输入特征,记为
π
ˉ
ϕ
(
s
i
)
\bar{\pi}_{\phi}(s_i)
πˉϕ(si)。将提取的特征再输入一个多层MLP(
ω
\omega
ω参数化),用于生成最终的辅助损失,根据输入的不同设计两种网络:
h
ω
(
d
t
r
;
ϕ
)
=
1
N
∑
i
=
1
N
MLP
ω
(
π
ˉ
ω
(
s
i
)
)
;
h
ω
(
d
t
r
;
ϕ
)
=
1
N
∑
i
=
1
N
MLP
ω
(
π
ˉ
ω
(
s
i
)
,
s
i
,
a
i
)
;
\begin{aligned} h_{\omega}(d_{tr};\phi)&=\frac{1}{N}\sum^{N}_{i=1}\text{MLP}_{\omega}(\bar{\pi}_{\omega}(s_i));\\ h_{\omega}(d_{tr};\phi)&=\frac{1}{N}\sum^{N}_{i=1}\text{MLP}_{\omega}(\bar{\pi}_{\omega}(s_i),s_i, a_i); \end{aligned}
hω(dtr;ϕ)hω(dtr;ϕ)=N1i=1∑NMLPω(πˉω(si));=N1i=1∑NMLPω(πˉω(si),si,ai);
总结
实验的话主要在DDPG,TD3,SAC框架下进行改进和对比,DDPG框架下提升效果明显,TD3相对还行,SAC的效果提升不是很明显。论文没有理论分析,多是实验结果分析,这也是iclr20拒绝的原因之一,可以期待是否有后续改进说明。当然利用meta的bi-level结构做理论上的分析确实不容易,大部分元学习也只是框架上的创新,并无实际理论推导。以往的元学习多用于解决同分布(多)任务,用来促进单任务强化学习这类应用也很有意思,CoRL上也有相关的研究,研究方向很有意思。疑问的是,传统的元学习需要大量的任务和采样样本才能学到很好的meta参数,这里是针对single task,任务多样性不足的情况下是否真的能学到很好的meta-critic来促进学习?
Learning to Explore via Meta-Policy Gradient
这篇论文早于上一篇论文,同样的是利用元学习的思想来促进强化学习算法。这篇论文关注点是有效的探索。之前的RL算法的探索方法都很简单,在动作上随机加(高斯或OU)噪声,或者 ϵ − g r e e d y \epsilon-greedy ϵ−greedy探索策略。这些探索策略都是在接近policy的局部探索,有时候当策略陷入局部最优的时候,可能这样的探索噪声不足以使其逃离局部最优。有时候一个与当前策略 π \pi π很不同的探索策略 π e \pi_e πe反而更能探索到之前未见过的状态空间,从而提升策略。
核心思想
因为是基于off-policy的算法,所以可以将目标策略和探索策略解耦。探索策略的目的就是生成新的经验样本对训练目标策略具有一定的益处,即使得目标策略尽可能快的得到提升,再利用策略梯度对探索策略进行更新。可以理解为探索策略
π
e
\pi_e
πe是“老师策略”,目标策略
π
\pi
π是“学生策略“。老师策略传授的知识(
π
e
\pi_e
πe生成的数据样本),能够被学生策略利用(策略梯度)从而极大地提高学生的水平(更高的长期Reward)。
那么目的就很明确了,即学生策略的目标仍然是通过PG学习到有更好性能的策略,而老师策略的目标则是如果传授更好的知识给学生,使得利用老师传授的知识能比学生自学(传统的PG利用的数据)的效果更好。则形象的表示有
“老师策略的目标 = 利用老师给的知识学习后的性能 - 学生自学后的性能”
具体的数学公式为:
J
(
π
e
)
=
E
D
0
∼
π
e
[
R
(
π
,
D
0
)
]
=
E
D
0
∼
π
e
[
R
π
′
−
R
π
]
\begin{aligned} \mathcal{J}(\pi_e)&=\mathbb{E}_{D_0\sim\pi_e}[\mathcal{R}(\pi,D_0)]\\ &=\mathbb{E}_{D_0\sim\pi_e}[R_{\pi'}-R_{\pi}] \end{aligned}
J(πe)=ED0∼πe[R(π,D0)]=ED0∼πe[Rπ′−Rπ]这里面
R
(
π
,
D
0
)
\mathcal{R}(\pi,D_0)
R(π,D0)是教师策略
π
e
\pi_e
πe的目标,
R
π
′
R_{\pi'}
Rπ′是利用
D
0
D_0
D0更新后的策略实际的累计奖励,而
R
π
R_{\pi}
Rπ指的是不利用
D
0
D_0
D0的replay buffer数据更新后的策略实际的累计奖励。假设
π
e
\pi_e
πe利用参数
θ
π
e
\theta^{\pi_e}
θπe参数化,那么用策略梯度方法,可知:
∇
θ
π
e
J
=
E
D
0
∼
π
e
[
R
(
π
,
D
0
)
∇
θ
π
e
log
P
(
D
0
∣
π
e
)
]
=
E
D
0
∼
π
e
[
R
(
π
,
D
0
)
∑
t
=
1
T
∇
θ
π
e
log
π
e
(
a
t
∣
s
t
)
]
\begin{aligned} \nabla_{\theta^{\pi_e}}\mathcal{J}&=\mathbb{E}_{D_0\sim\pi_e}[\mathcal{R}(\pi,D_0)\nabla_{\theta^{\pi_e}}\log\mathcal{P}(D_0|\pi_e)]\\ &=\mathbb{E}_{D_0\sim\pi_e}[\mathcal{R}(\pi,D_0)\sum^{T}_{t=1}\nabla_{\theta^{\pi_e}}\log\pi_e(a_t|s_t)] \end{aligned}
∇θπeJ=ED0∼πe[R(π,D0)∇θπelogP(D0∣πe)]=ED0∼πe[R(π,D0)t=1∑T∇θπelogπe(at∣st)]其实就把
R
(
π
,
D
0
)
\mathcal{R}(\pi,D_0)
R(π,D0)作为奖励信号,作为梯度的幅值,增强
D
0
D_0
D0中能使提升最明显的轨迹样本,同时
R
π
R_\pi
Rπ可以看做是一种baseline,从而降低
R
π
′
R_{\pi'}
Rπ′的方差。
除此之外,本问的教师策略框架提供了三种选择:
- 在 π \pi π的基础上加一个均值为零,方差为 σ 2 \sigma^2 σ2的噪声,那么训练 π e \pi_e πe就代表着训练这个方差参数 σ \sigma σ;
- 训练一个完全独立的 π e \pi_e πe;
- 在一般的状态 s s s上加额外的“算术状态”,例如正则 Q Q Q函数或者的贝尔曼残差等(类似 π ( a ∣ s , z ) \pi(a|s, z) π(a∣s,z)这种?);
疑问: 这里不同于一般策略梯度的是,普通的pg是在样本级别上的提高,这里应该是轨迹级别上的提高,也就是说不能确定
D
0
D_0
D0中哪些样本更好,而是作为整体判断
D
0
D_0
D0的价值,价值高,通过策略更新使
D
0
D_0
D0中所有样本概率都提高,反之则降低。那么是否有方法想传统的pg一样对每个样本的贡献作出判断?
Model-Based Reinforcement Learning via Meta-Policy Optimization
这篇论文的核心思想,是利用元学习的方法解决model-based这类方法中模型估计不准确的问题,从而提升model-based方法的性能达到一般model-free方法的渐进性能,同时利用还具有model-based方法的样本有效性高的优点。
Motivation
Model-based方法有很高的样本效率, 但是最大的问题就是通过样本数据估计的dynamic模型精度不高,如何避免策略利用模型的误差去训练是一大挑战。一个解决这类模型偏差(model-bias)问题的办法就是学习一个关于模型的分布或者是学会自适应模型来替代学习单个dynamic模型。利用robust policy optimization方法学习一个在这些模型上表现都很好的策略输出。但是通常这个策略会很保守。文章提出的MB-MPO在模型一致的区域学习稳健策略,在模型产生显著不同预测的区域学习自适应策略。
Model Learning
MB-MPO方法关键是维护一组dynamic模型
{
f
^
1
,
f
^
2
,
⋯
,
f
^
k
}
\left\{\hat{f}_1,\hat{f}_2, \cdots,\hat{f}_k\right\}
{f^1,f^2,⋯,f^k},作为真实环境的集成。为了保证模型的不相关性,其模型随机初始化和更新用的样本随机采样。每个模型训练目标为:
min
ϕ
k
1
∣
D
k
∣
∑
(
s
t
,
a
t
,
s
t
+
1
)
∈
D
k
∣
∣
s
t
+
1
−
f
^
ϕ
k
(
s
t
,
a
t
)
∣
∣
2
2
\min_{\phi_k}\frac{1}{|\mathcal{D}_k|}\sum_{(s_t,a_t, s_{t+1})\in\mathcal{D}_k}||s_{t+1}-\hat{f}_{\phi_k}(s_t,a_t)||^2_2
ϕkmin∣Dk∣1(st,at,st+1)∈Dk∑∣∣st+1−f^ϕk(st,at)∣∣22其中
ϕ
k
\phi_k
ϕk是每个模型的参数。
Meta-RL on Learned Models
有了特定环境的一组集成dynamic模型
{
f
^
ϕ
1
,
f
^
ϕ
2
,
⋯
,
f
^
ϕ
k
}
\left\{\hat{f}_{\phi_1},\hat{f}_{\phi_2}, \cdots,\hat{f}_{\phi_k}\right\}
{f^ϕ1,f^ϕ2,⋯,f^ϕk},那么就可以元学习一个策略,使得能快速的适应其中任一model。文章采用的元学习方法是MAML。根据每个模型构建不同的MDP环境
M
k
=
(
S
,
A
,
f
^
ϕ
k
,
r
,
γ
,
p
0
)
\mathcal{M}_k=(S,A,\hat{f}_{\phi_k},r,\gamma,p_0)
Mk=(S,A,f^ϕk,r,γ,p0),并构建成均匀的任务分布供MAML采样学习:
max
θ
1
K
∑
k
=
0
K
J
k
(
θ
k
′
)
s
.
t
.
θ
k
′
=
θ
+
α
∇
θ
J
k
(
θ
)
J
k
(
θ
)
=
E
a
t
∼
π
θ
(
a
t
∣
s
t
)
[
∑
t
=
0
H
−
1
r
(
s
t
,
a
t
)
∣
s
t
+
1
=
f
^
ϕ
k
(
s
t
,
a
t
)
]
\begin{aligned} &\max_{\boldsymbol{\theta}}\frac{1}{K}\sum^K_{k=0}J_k(\boldsymbol{\theta}'_k)\quad s.t.\boldsymbol{\theta}'_k=\boldsymbol{\theta}+\alpha\nabla_{\boldsymbol{\theta}}J_k(\boldsymbol{\theta})\\ &J_k(\boldsymbol{\theta})=\mathbb{E}_{a_t\sim\pi_{\boldsymbol{\theta}}(a_t|s_t)}\left[\sum^{H-1}_{t=0}r(s_t,a_t)|s_{t+1}=\hat{f}_{\phi_k}(s_t, a_t)\right] \end{aligned}
θmaxK1k=0∑KJk(θk′)s.t.θk′=θ+α∇θJk(θ)Jk(θ)=Eat∼πθ(at∣st)[t=0∑H−1r(st,at)∣st+1=f^ϕk(st,at)]这里的元学习步骤完全是在学习到的dynamic模型下进行交互的,不从真实模型中采样。奖励函数
r
(
s
t
,
a
t
)
r(s_t,a_t)
r(st,at)假定给定。最终目的是学到一个最优的初始化策略参数
θ
∗
\boldsymbol{\theta}^*
θ∗。
注意上述算法过程,与真实环境交互产生的数据只用来更新,策略学习完全是在学习到的dynamic模型环境下进行的。再对
θ
∗
\boldsymbol\theta^*
θ∗在真实环境中进行采样和策略更新,能快速收敛到当前任务。
总结
这篇文章的巧妙之处是将model-based的模型不确定性看成是任务分布,也就是将对环境动态模型的不同置信看做不同任务,再结合元学习学习到针对不确定模型更加鲁棒的元策略。从而使学习到的元策略经过fine-tuning能快速地收敛到当前真实环境的最优策略。
问题:奖励函数怎么给定?这一组动态模型,不断更新后的后验模型是否准确反映真实模型及其不确定性?计算量的问题,模型太多计算太复杂,模型太少不能很好的评估不确定性。