Meta-RL

  • 概述
  • 一、问题定义
    • 1.1 监督学习
    • 1.2 元学习
    • 1.3 Meta-Learning的数据集设定与学习方式
      • 1.3.1 元学习的数据集是怎样的?
      • 1.3.2 Meta-Learning的学习方式
    • 1.4 Meta-Learning的一些理解
  • 二、Meta-RL
    • 2.1 问题描述:
    • 2.2 Recurrence (fff为RNN,LLL为PG——Policy Gradient)
    • 2.3 Optimization-Based(fff为PG,LLL为PG)
    • 2.4 Meta-Imitation Learning
      • 2.4.1 fff为Behavior Cloning,LLL为PG
      • 2.4.2 fff为Learned loss,LLL为PG
    • 2.5 Meta-MBRL(fff为SL with model,LLL为MPC)
    • 2.6 Inference-Based (fff为Stochastic Encoder,LLL为SAC)
      • 2.6.1 Meta-RL
      • 2.6.2 POMDP
      • 2.6.3 SAC
      • 2.6.4 Inference-Based Method
  • 三、总结
  • 后记

概述

Meta-Learning为元学习,也称为Learning to learn,其目的是希望能从过去的任务经验中习得学习技巧,然后将学习技巧放在新任务上实现快速学习。
所以Meta-Learning的数据集设置,与standrad RL、标准的监督学习都不同。

Meta-Learning的一些定位:

  1. Transfer Learning的第三种方法,从Multi-Task中学习一些东西,然后Transfer到New Task
  2. 主要从Multi-Task中提炼知识,因此其数据集的设定非常特殊
  3. 对于New Task而言,只需要少量样本数据就能快速学习

本文介绍Meta-Learning从CV开始再到RL,在此之前先说清楚问题定义、Meta的来源。

一、问题定义

先记住几个符号:

  1. ϕ\phiϕ为任务模型的参数,θ\thetaθ为Meta模型的参数
  2. DDD为训练数据

1.1 监督学习

D={(x1,y1),⋯,(xk,yk)}D=\{(x_1,y_1),\cdots,(x_k,y_k)\}D={(x1,y1),,(xk,yk)}xxx为image,yyy为label

新任务目标为:
arg max⁡ϕlogp(ϕ∣D)=arg max⁡ϕlogp(D,ϕ)p(D)=arg max⁡ϕlogp(ϕ)p(D∣ϕ)=arg max⁡ϕlogp(ϕ)+logp(D∣ϕ)=arg max⁡ϕ∑ilogp(yi∣xi,ϕ)+logp(ϕ)\begin{aligned} \argmax_{\phi}logp(\phi|D)&=\argmax_\phi log\frac{p(D,\phi)}{p(D)}\\ &=\argmax_\phi log p(\phi)p(D|\phi)\\ &=\argmax_\phi logp(\phi)+logp(D|\phi)\\ &=\argmax_\phi \sum_ilogp(y_i|x_i,\phi)+logp(\phi)\\ \end{aligned} ϕargmaxlogp(ϕD)=ϕargmaxlogp(D)p(D,ϕ)=ϕargmaxlogp(ϕ)p(Dϕ)=ϕargmaxlogp(ϕ)+logp(Dϕ)=ϕargmaxilogp(yixi,ϕ)+logp(ϕ)

总结:监督学习是,在一个任务的数据集D上,最大化MAP学习模型参数ϕ\phiϕ(点估计,后续会引入Bayes)

1.2 元学习

Dmeta−train={D1,...,Dn},Di={(x1i,y1i),⋯,(xki,yki)}D_{meta-train}=\{D_1,...,D_n\},D_i=\{(x_1^i,y_1^i),\cdots,(x_k^i,y_k^i)\}Dmetatrain={D1,...,Dn},Di={(x1i,y1i),,(xki,yki)}
Dnew−task={(x1,y1),⋯,(xk,yk)}D_{new-task}=\{(x_1,y_1),\cdots,(x_k,y_k)\}Dnewtask={(x1,y1),,(xk,yk)}

加入多任务后的新任务目标为:
arg max⁡ϕlogp(ϕ∣Dnew−task,Dmeta−train)=arg max⁡ϕlog∫p(ϕ∣Dnew−task,θ)p(θ∣Dmeta−train)dθ≈arg max⁡ϕlogp(ϕ∣Dnew−task,θ∗)+logp(θ∗∣Dmeta−train)=arg max⁡ϕp(ϕ∣Dnew−task,θ∗)\begin{aligned} &\argmax_\phi logp(\phi|D_{new-task},D_{meta-train})\\ &=\argmax_\phi log\int p(\phi|D_{new-task},\theta)p(\theta|D_{meta-train})d\theta\\ &\approx \argmax_\phi log p(\phi|D_{new-task},\theta^*)+logp(\theta^*|D_{meta-train})\\ &=\argmax_\phi p(\phi|D_{new-task},\theta^*) \end{aligned} ϕargmaxlogp(ϕDnewtask,Dmetatrain)=ϕargmaxlogp(ϕDnewtask,θ)p(θDmetatrain)dθϕargmaxlogp(ϕDnewtask,θ)+logp(θDmetatrain)=ϕargmaxp(ϕDnewtask,θ)

解释一下:
1. 目标为结合多任务的训练集Dmeta−trainD_{meta-train}Dmetatrain来学习新任务Dnew−taskD_{new-task}Dnewtask的模型参数 ϕ\phiϕ
2. 目标近似分解成两部分:从多任务中Meta-Learning的元模型参数θ∗\theta^*θ,在元参数θ∗\theta^*θ的条件下最大化新任务Dnew−taskD_{new-task}Dnewtask的MAP目标

因此称θ∗=arg max⁡θlogp(θ∣Dmeta−train)\theta^*=\argmax_\theta logp(\theta|D_{meta-train})θ=θargmaxlogp(θDmetatrain)为Meta-Learning Problem
ϕ∗=arg max⁡ϕlogp(ϕ∣Dnew−task,θ∗)\phi^*=\argmax_\phi logp(\phi|D_{new-task},\theta^*)ϕ=ϕargmaxlogp(ϕDnewtask,θ)为Adaptation Problem

1.3 Meta-Learning的数据集设定与学习方式

1.3.1 元学习的数据集是怎样的?

为了更好评价元模型参数,我们得对数据集设定清楚:
n个任务的Dmeta−train={(D1tr,D1ts),...,(Dntr,Dnts)}D_{meta-train}=\{(D_1^{tr},D_1^{ts}),...,(D_n^{tr},D_n^{ts})\}Dmetatrain={(D1tr,D1ts),...,(Dntr,Dnts)},每一个任务DiD_iDi都分为训练集DitrD_i^{tr}Ditr与测试集DitsD_i^{ts}Dits有,其中训练集有kkk个样本,测试集有lll个样本,具体而言:
Ditr={(x1i,y1i),⋯,(xki,yki)}Dits={(x1i,y1i),⋯,(xli,yli)}D_i^{tr}=\{(x_1^i,y_1^i),\cdots,(x_k^i,y_k^i)\}\\ D_i^{ts}=\{(x_1^i,y_1^i),\cdots,(x_l^i,y_l^i)\} Ditr={(x1i,y1i),,(xki,yki)}Dits={(x1i,y1i),,(xli,yli)}

于是每一个任务,现在简记为Ti={Ditr,Dits}\Tau_i=\{D_i^{tr},D_i^{ts}\}Ti={Ditr,Dits},或者DiD_iDi,如下所示:

1.3.2 Meta-Learning的学习方式

为了评价θ\thetaθ,必须得通过ϕ\phiϕ,记住,在Meta-Train这一步我们只想要θ∗=arg max⁡θlogp(θ∣Dmeta−train)\theta^*=\argmax_\theta logp(\theta|D_{meta-train})θ=θargmaxlogp(θDmetatrain),但是却没有关于θ\thetaθ的明确标签,因为一个样本(x,y)(x,y)(x,y)的问题模型参数ϕ\phiϕ是由任务设定的,而θ\thetaθ是多任务的知识提取,因此需要用到多任务中的具体任务标签来进行评价,即通过ϕ\phiϕ来调整θ\thetaθ
总结一句:多任务共有的元学习参数θ\thetaθ得通过第i个任务中设定的模型参数ϕi\phi_iϕi进行评价并进行调整,因为只有每一个任务的label,而没有多任务的label

在用公式表述前,记Dtr={D1tr,...,Dntr},Dts={D1ts,...,Dnts},Dmeta−train={Dtr,Dts}D_{tr}=\{D_1^{tr},...,D_n^{tr}\},D_{ts}=\{D_1^{ts},...,D_n^{ts}\},D_{meta-train}=\{D^{tr},D^{ts}\}Dtr={D1tr,...,Dntr},Dts={D1ts,...,Dnts},Dmetatrain={Dtr,Dts}(在训练θ\thetaθ的时候,不需要使用到Dnew−taskD_{new-task}Dnewtask)

Meta-Learning的General Form:
θ∗=arg max⁡θlogp(θ∣Dtr,Dts)ϕ∗=arg max⁡ϕlogp(ϕ∣Dtr,θ∗)\theta^*=\argmax_\theta logp(\theta|D^{tr},D^{ts})\\ \phi^*=\argmax_\phi logp(\phi|D^{tr},\theta^*) θ=θargmaxlogp(θDtr,Dts)ϕ=ϕargmaxlogp(ϕDtr,θ)

目标是学习一个多任务共有的θ\thetaθ使得单一任务上的ϕ=fθ(Ditr)\phi=f_\theta(D^{tr}_i)ϕ=fθ(Ditr),与测试集DtsD^{ts}Dts差不多,所以最重要的是下面的这个形式!一定要理解透!

θ∗=max⁡θ∑i=1nlogp(ϕi∣Dits)ϕi=fθ(Ditr)\theta^*=\max_\theta \sum_{i=1}^nlogp(\phi_i|D_i^{ts})\\ \phi_i=f_\theta(D_i^{tr}) θ=θmaxi=1nlogp(ϕiDits)ϕi=fθ(Ditr)

解释一下:

  1. 将第iii个任务的训练集DitrD^{tr}_iDitr输入元模型fθf_\thetafθ,得到第iii个任务的问题模型参数ϕi\phi_iϕi,然后根据测试集DitsD^{ts}_iDits在第iii个任务上进行指标验证即p(ϕi∣Dits)p(\phi_i|D_i^{ts})p(ϕiDits)
  2. 要学习的参数θ\thetaθ,应该要使n个任务的似然指标∑i=1nlogp(ϕi∣Dits)=∑i=1nlogp(Dits∣ϕi)+logp(ϕi)\sum_{i=1}^nlogp(\phi_i|D_i^{ts})=\sum_{i=1}^nlogp(D_i^{ts}|\phi_i)+logp(\phi_i)i=1nlogp(ϕiDits)=i=1nlogp(Ditsϕi)+logp(ϕi)最大
  3. 多任务共有的θ\thetaθ,通过单一任务DitrD_i^{tr}Ditr得到specified 任务的模型参数ϕi\phi_iϕi,目的是找到这个θ\thetaθ使得到多任务的距离最短

对比一下,Meta-Learning与Multi-Task Learning中一种去学习多任务共同模型参数的方法相似:

  1. fθ(Ditr)=θf_\theta(D_i^{tr})=\thetafθ(Ditr)=θ即n个任务用一个模型参数θ\thetaθ去学,使n个任务评价最好,为multi-task Learning;
  2. fθ(Ditr)=ϕif_\theta(D_i^{tr})=\phi_ifθ(Ditr)=ϕi即n个任务,每一个任务的模型参数ϕi\phi_iϕi都不同,学习一个θ\thetaθϕi\phi_iϕi的映射使得,n个任务的评价最好
  3. 所以Multi-task的这种方法是Meta-Learning的一个Special Case

1.4 Meta-Learning的一些理解

  1. 一个网络的权重参数为ϕ\phiϕ,一个网络的超参数(batch、learning rate等)为θ\thetaθ
  2. 一个网络的权重参数为ϕ\phiϕ,一个网络的结构为θ\thetaθ

二、Meta-RL

2.1 问题描述:

  • Standrad RL:学习一个policy即πθ\pi_\thetaπθ
    θ∗=arg max⁡θEπθ(τ)[r(τ)]=fRL(MDP)=fRL(M)\theta^*=\argmax_\theta E_{\pi_\theta(\tau)}[r(\tau)]=f_{RL}(MDP)=f_{RL}(M) θ=θargmaxEπθ(τ)[r(τ)]=fRL(MDP)=fRL(M)

  • Meta-RL:学习一个Adaptation Rule即fθf_\thetafθ
    θ∗=arg max⁡θEπϕi(τ)[r(τ)]ϕi=fθ(MDPi)=fθ(Mi)\theta^*=\argmax_\theta E_{\pi_{\phi_i}(\tau)}[r(\tau)]\\ \phi_i=f_\theta(MDP_i)=f_\theta(M_i) θ=θargmaxEπϕi(τ)[r(τ)]ϕi=fθ(MDPi)=fθ(Mi)

RL中一个task为一个MDP={S,A,P,r}MDP=\{S,A,P,r\}MDP={S,A,P,r},因此有(Mtrain={M1,M2,...,Mn},Mtest)(M_{train}=\{M_1,M_2,...,M_n\},M_{test})(Mtrain={M1,M2,...,Mn},Mtest),如下:

于是Meta-RL有两个值得记住的循环:

  • Meta-Training Outer Loop:
    θ∗=arg max⁡θEπϕi(τ)[r(τ)]\theta^*=\argmax_\theta E_{\pi_{\phi_i}(\tau)}[r(\tau)]θ=θargmaxEπϕi(τ)[r(τ)]
  • Adaptation Inner Loop
    ϕi=fθ(Mi)\phi_i=f_\theta(M_i)ϕi=fθ(Mi)

解释一下:

  • Adaptation Rule就是指fθf_\thetafθ,利用来自MiM_iMi的轨迹τ\tauτ来Adapt出MiM_iMi的policy parameters,可以Adapt几步
  • 然后利用n个任务的轨迹各自Adapt出来了Policy以后即πϕi(τ)\pi_{\phi_i}(\tau)πϕi(τ),根据LLL(如最大expected reward)再对fθf_\thetafθ进行调整

Meta-RL的General Form:

  1. 从n个任务中Sample一个任务iii,收集该任务的真实轨迹DiD_iDi(可以是专家数据,也可以是该任务的真实数据)
  2. 利用DiD_iDi来对θ\thetaθ进行Adapt获得任务iii策略参数ϕi=fθ(Di)\phi_i=f_\theta(D_i)ϕi=fθ(Di)
  3. 利用Adapted Policy即πϕi\pi_{\phi_i}πϕi来当前Adapted的轨迹Di′D_i'Di
  4. 根据Di′D_i'Diϕi\phi_iϕi来更新参数θ\thetaθθ=L(Di′,ϕi)\theta=L(D_i',\phi_i)θ=L(Di,ϕi)

因此下面围绕怎么选择Adaptation Rule即函数fff与损失函数LLL来对算法类别进行划分:

2.2 Recurrence (fff为RNN,LLL为PG——Policy Gradient)


具体而言,Adaptation Model即元学习的模型参数为θ\thetaθ,用RNN模型来建模,然后用任务iii真实数据expert demons Adapt出策略的参数ϕi\phi_iϕi,再根据Adapted Policy在任务中的表现来调整θ\thetaθ


具体模型的输入,图上已经很清楚了,值得注意的是:

  1. 同一任务的不同Episode之间的信息都通过一个hidden state传递的
  2. 不同任务之间同使用一个RNN进行任务信息的存储
  3. 评价的指标是调整θ\thetaθ,使得多个任务在用专家数据Adapted出来的Policy的累积Reward最大,即θ∗=arg max⁡θEπϕi(τ)[r(τ)]\theta^*=\argmax_\theta E_{\pi_{\phi_i}(\tau)}[r(\tau)]θ=θargmaxEπϕi(τ)[r(τ)]

要注意的是,从始至终我们要调整的都是RNN中的参数θ\thetaθ,而没有变动过关于问题的模型ϕ\phiϕ,只是利用它作为一个中间的桥梁对Meta Parameters即θ\thetaθ进行更新。

具体算法流程

还是得说明一下:

  1. 对于一个task iii,一开始DiD_iDi中就放着任务iii真实数据,进行Adapt,可以进行几次,得一个Adapted Policy πht\pi_{h_t}πht,即Adaptation Inner Loop
  2. 然后通过计算Adapted Policy即πh\pi_hπh与专家数据DiD_iDi之间的loss来调整θ\thetaθ,即Meta-Training Outer Loop

2.3 Optimization-Based(fff为PG,LLL为PG)


顾名思义,选择RL的基本算法PG来做Adaptation,即fff,但好像有点模糊?

再次回顾一下Standard RL:
θ∗=arg max⁡θEπθ(τ)[r(τ)]⏟J(θ)PG:θk+1=θk+α∇θkJ(θk)\theta^*=\argmax_\theta \underbrace{E_{\pi_\theta(\tau)}\Big[r(\tau)\Big]}_{J(\theta)}\\ PG:\theta^{k+1}=\theta^{k}+\alpha\nabla_{\theta^k}J(\theta^k)θ=θargmaxJ(θ)

Eπθ(τ)[r(τ)]PG:θk+1=θk+αθkJ(θk)

于是有
ϕi=fθ(Mi)=θ+α∇θJi(θ)=θ+α∇θEπθ(τi)[r(τi)]\begin{aligned} \phi_i&=f_\theta(M_i)\\ &=\theta+\alpha \nabla_\theta J_i(\theta)\\ &=\theta +\alpha \nabla_\theta E_{\pi_\theta(\tau_i)}\Big[r(\tau_i)\Big] \end{aligned} ϕi=fθ(Mi)=θ+αθJi(θ)=θ+αθEπθ(τi)[r(τi)]

这是选择了fff为PG,即Adaptation后的参数ϕi\phi_iϕi,然后有:
θ←θ+α∇θEπϕi(τ)[r(τ)]\theta\leftarrow \theta + \alpha \nabla_\theta E_{\pi_{\phi_i}(\tau)}\Big[r(\tau)\Big] θθ+αθEπϕi(τ)[r(τ)]

ϕi←θ+α∇θEπθ(τi)[r(τi)]\phi_i\leftarrow \theta+\alpha\nabla_\theta E_{\pi_\theta(\tau_i)}\Big[r(\tau_i)\Big]ϕiθ+αθEπθ(τi)[r(τi)]

因此最终形式为:
θ←θ+α∇θJi(θ+α∇θJi(θ))\theta\leftarrow \theta+\alpha\nabla_\theta J_i(\theta+\alpha\nabla_\theta J_i(\theta)) θθ+αθJi(θ+αθJi(θ))

一个著名的图:

具体算法流程:

Adaptation Inner Loop:

  1. 先用任务iii的真实数据DiD_iDi进行Adapt,得到Adapted parameters ϕi=θ−α∇θLi(πθ,Di)\phi_i=\theta-\alpha\nabla_\theta L_i(\pi_\theta,D_i)ϕi=θαθLi(πθ,Di)
  2. 然后利用Adapted的Policy即πϕ\pi_\phiπϕ来收集Adapted的轨迹数据Di′D_i'Di

Meta-Training Outer Loop:

  1. 利用Adapted Policy得到的轨迹Di′D_i'Diπϕi\pi_{\phi_i}πϕi根据PG来计算θ\thetaθ

值得注意的是这里的DiD_iDiDi′D_i'Di就是用来估计下面的期望的:
Di′:θ←θ+α∇θEπϕi(τ)[r(τ)]D_i':\theta\leftarrow \theta + \alpha \nabla_\theta E_{\pi_{\phi_i}(\tau)}\Big[r(\tau)\Big] Di:θθ+αθEπϕi(τ)[r(τ)]

Di:ϕi←θ+α∇θEπθ(τi)[r(τi)]D_i:\phi_i\leftarrow \theta+\alpha\nabla_\theta E_{\pi_\theta(\tau_i)}\Big[r(\tau_i)\Big]Di:ϕiθ+αθEπθ(τi)[r(τi)]

这就是鼎鼎大名的MAML,因为这里涉及到二阶导,因此有一些文章来改进这个,如:

  • Foerster, Farquhar, Al-Shedivat, Rocktaschel, Xing, Whiteson. DiCE: The Infinitely Differentiable Monte Carlo Estimator.
  • Rothfuss, Lee, Clavera, Asfour, Abbeel. ProMP: Proximal Meta-Policy Search.

这里有一个问题哦:
DiD_iDiDi′D_i'Di的关系是什么?
Di′D_i'Di是Adapted Policy与MiM_iMi环境交互得到的轨迹数据,进行PG更新这个很好理解。
DiD_iDi是任务iii真实数据,那是专家数据还是任务iii随机的真实数据?一开始随机的真实数据Adapt也能学习?好像有点奇怪呀,那看看下面的Meta-Imitation Learning吧~

2.4 Meta-Imitation Learning

2.4.1 fff为Behavior Cloning,LLL为PG

这里的DiD_iDi就是利用真实的专家数据进行Adapt了,于是有:
Di′:θ←θ+α∇θEπϕi(τ)[r(τ)]D_i':\theta\leftarrow \theta + \alpha \nabla_\theta E_{\pi_{\phi_i}(\tau)}\Big[r(\tau)\Big] Di:θθ+αθEπϕi(τ)[r(τ)]

Di:ϕi←θ−α∇θ∑t∣∣πθ(ot)−at∗∣∣2D_i:\phi_i\leftarrow \theta-\alpha\nabla_\theta \sum_t ||\pi_\theta(o_t)-a_t^*||^2Di:ϕiθαθtπθ(ot)at2


Meta-Training的时候,由专家控制遥控器得到robot demos,即一个专家数据τ=(o1,a1,r1,....,oT,aT,rT)\tau=(o_1,a_1,r_1,....,o_T,a_T,r_T)τ=(o1,a1,r1,....,oT,aT,rT),可以看作DiD_iDi

然后Meta-Training的时候,根据上面两个公式迭代,得到参数θ\thetaθ.

然后Meta-Test的时候,给定一条新的专家示意的数据τnew\tau_{new}τnew,即DiD_iDi,首先:

  1. Adaptation :Di:ϕi←θ−α∇θ∑t∣∣πθ(ot)−at∗∣∣2D_i:\phi_i\leftarrow \theta-\alpha\nabla_\theta \sum_t ||\pi_\theta(o_t)-a_t^*||^2Di:ϕiθαθtπθ(ot)at2
  2. 直接用Adapted的Policy即πϕi\pi_{\phi_i}πϕi作为最终控制robot的控制器~

2.4.2 fff为Learned loss,LLL为PG


这里将Adaptation Rule设定为Learned loss,因为在Behavior Cloning中搜集数据的方式是人为用遥控器控制的,于是轨迹样本robot demos是τ=(o1,a1,r1,....,oT,aT,rT)\tau=(o_1,a_1,r_1,....,o_T,a_T,r_T)τ=(o1,a1,r1,....,oT,aT,rT)。而在现在这个设定下,希望输入一个human demos而不是robot demos,然后robot就学会这个动作,而不是输入一个用遥控器控制的robot demos,具体区别如下:

于是在Meta-Training的时候,要将human demos与robot demos配对起来,即拍一个人操作的video与操纵遥控器的轨迹序列配对起来,训练Learned Cost,即:
ϕ=θ−α∇θLψ(θ,dh)\phi=\theta-\alpha\nabla_\theta L_\psi(\theta,d^h)ϕ=θαθLψ(θ,dh)

2.5 Meta-MBRL(fff为SL with model,LLL为MPC)


关于Model-Based RL的算法概览可以参考Model-Based RL算法,主要分为Optimal Control进行Planning,不学习Policy的MBRL,学Policy的MBRL,此处简要回顾一下Without Policy的MBRL1.5

回顾一下:

  1. 随意跑一个base Polcy收集Transition 数据
  2. 然后通过Supervised Learning学习dynamics model,输入为s,as,as,a,label为s′s's
  3. 用一些planning算法如iLQR、MCTS来plan一下轨迹
  4. 执行plan的轨迹一些action,引入MPC使预测的轨迹稳定
  5. 将执行后获得的transition样本收集进行retrain

于是这里Adaptation Rule的应用对象MiM_iMi为dynamics model的参数ϕi\phi_iϕi,然后根据Dynamics Model使用MPC算法来调整Meta-Parameters即θ\thetaθ

为什么需要对Dynamics Model进行Adapt?
因为环境模型很容易就发生变化:

  1. 真实Agent电量不足,降低功率
  2. 平坦地面上训练的Agent,放到陡峭的地面上
  3. 使用过程中,Agent自身损耗,导致dynamics model发生变化等等

那high-level的流程是如何的呢?
原来的是这样的,学好一个model后,利用Controller进行plan。

现在引入了一个Update rule,需要Meta-Training的时候训练好,然后输入recent的几个transition(s,a,s′)(s,a,s')(s,a,s)即图中的recent,Adapted出一个Model,再进行MPC算法

具体公式流程阐述如下:
此处用dθ(s,a)=fθ(s,a)d_\theta(s,a)=f_\theta(s,a)dθ(s,a)=fθ(s,a)代表了一下,毕竟dynamics model

由公式可以看出,fff为Supervised Learning的意思为MSE loss即J(θ)=∣∣dθ(s,a)−s′∣∣2J(\theta)=||d_\theta(s,a)-s'||^2J(θ)=dθ(s,a)s2LLL为MPC的意思为第三步。
上面为Meta-Test的过程,以下为Meta-Training来训练dθ(s,a)d_\theta(s,a)dθ(s,a)的过程

  1. 记得第一小节的定义:
    Dtr={D1tr,...,Dntr},Dts={D1ts,...,Dnts},Dmeta−train={Dtr,Dts}D_{tr}=\{D_1^{tr},...,D_n^{tr}\},D_{ts}=\{D_1^{ts},...,D_n^{ts}\},D_{meta-train}=\{D^{tr},D^{ts}\}Dtr={D1tr,...,Dntr},Dts={D1ts,...,Dnts},Dmetatrain={Dtr,Dts}

    Ditr={(x1i,y1i),⋯,(xki,yki)}Dits={(x1i,y1i),⋯,(xli,yli)}D_i^{tr}=\{(x_1^i,y_1^i),\cdots,(x_k^i,y_k^i)\}\\ D_i^{ts}=\{(x_1^i,y_1^i),\cdots,(x_l^i,y_l^i)\} Ditr={(x1i,y1i),,(xki,yki)}Dits={(x1i,y1i),,(xli,yli)}

  2. Model的训练样本即transition为(s,a,s′)(s,a,s')(s,a,s),因此套上去为x=(s,a),y=(s′)x=(s,a),y=(s')x=(s,a),y=(s)

  3. 从很多种不同的Dynamic中收集的Experience中进行Sample一条第I种类型Dynamics的Trajectory记为τi\tau_iτi(多条也ok)如下:
    τi=(st,at,st+1,at+1,...,st+k,at+k,st+k+1)\tau_i=(s_t,a_t,s_{t+1},a_{t+1},...,s_{t+k},a_{t+k},s_{t+k+1})τi=(st,at,st+1,at+1,...,st+k,at+k,st+k+1)

  4. τ\tauτ中获取 Ditr,DitsD^{tr}_i,D_i^{ts}Ditr,Dits,如:
    Ditr={(st,at,st+1),...,(st+k−1,at+k−1,st+k)}Dits={st+k,at+k,st+k+1}D^{tr}_i=\{(s_t,a_t,s_{t+1}),...,(s_{t+k-1},a_{t+k-1},s_{t+k})\}\\ D_i^{ts}=\{s_{t+k},a_{t+k},s_{t+k+1}\}Ditr={(st,at,st+1),...,(st+k1,at+k1,st+k)}Dits={st+k,at+k,st+k+1}
    这里选择了k个训练transitions,l=1l=1l=1的测试样本,选多少自己决定。

2.6 Inference-Based (fff为Stochastic Encoder,LLL为SAC)


在详细解释fθf_\thetafθ选择为Stochastic Encoder与LLL选择为SAC的情况时,先小总结一下Meta-RL,再说说POMDP以及SAC。

2.6.1 Meta-RL

再啰嗦一下Meta-RL的特性:步骤分为Meta-Training与Adaptation,即
θ∗=max⁡θ∑i=1nlogp(ϕi∣Dits)ϕi=fθ(Ditr)\theta^*=\max_\theta \sum_{i=1}^nlogp(\phi_i|D_i^{ts})\\ \phi_i=f_\theta(D_i^{tr}) θ=θmaxi=1nlogp(ϕiDits)ϕi=fθ(Ditr)

关键的一步是用DitrD_i^{tr}Ditr对元模模型参数θ\thetaθ进行Adaptation,但是没有办法evaluate,因此需要放到细分任务中用测试数据DitsD_i^{ts}Dits评价,从而调整Meta-Parameters.
因此元学习中的参数θ\thetaθ,尝试从多任务的经验数据中提取出共同的学习技巧或Knowledge,而每一个细分任务之间最大的不同是dynamics与reward,或者说在设计多任务的时候,一般都在同一环境中保持st,ats_t,a_tst,at的空间相同,然后改变p(s′∣s,a),rp(s'|s,a),rp(ss,a),r,因此Meta-RL的概率图可以简单描述如下:

  1. 当前实际环境的dynamics模型p(s′∣s,a)p(s'|s,a)p(ss,a)与奖励rtr_trt,都conditon on task的信息
  2. 收集真实环境的一些数据DiD_iDi,输入fθf_\thetafθ,得到task-specific的参数ϕi\phi_iϕi
  3. 然后在ϕi\phi_iϕi设定的任务框架下收集数据Di′D_i'Di,Meta-test通过L(ϕi,Di′)L(\phi_i,D_i')L(ϕi,Di)将模型参数ϕi\phi_iϕi调优,而Meta-Training时则把θ\thetaθ调优

2.6.2 POMDP

在Model-based RL中的Complex Observations中提过引入Latent Space的模型目标为:
max⁡ϕ1N∑i=1N∑t=1TE(st,st+1)∼p(st,st+1∣o1:T,a1:T)[logpϕ(st+1i∣sti,ati)+logpϕ(oti∣sti)]\max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^TE_{(s_t,s_{t+1})\sim p(s_t,s_{t+1}|o_{1:T},a_{1:T})}\Big[logp_\phi(s_{t+1}^i|s_t^i,a_t^i)+logp_\phi(o_t^i|s_t^i)\Big] ϕmaxN1i=1Nt=1TE(st,st+1)p(st,st+1o1:T,a1:T)[logpϕ(st+1isti,ati)+logpϕ(otisti)]
然后处理Encoder的时候假设了最简单的情形

  1. 独立性假设p(st,st+1∣o1:T,a1:T)=p(st∣o1:T,a1:T)p(st+1∣o1:T,a1:T)p(s_t,s_{t+1}|o_{1:T},a_{1:T})=p(s_t|o_{1:T},a_{1:T})p(s_{t+1}|o_{1:T},a_{1:T})p(st,st+1o1:T,a1:T)=p(sto1:T,a1:T)p(st+1o1:T,a1:T)
  2. 学习一个qψ(st∣o1:T,a1:T)q_\psi(s_t|o_{1:T},a_{1:T})qψ(sto1:T,a1:T)来近似这个分布p(st∣o1:T,a1:T)p(s_t|o_{1:T},a_{1:T})p(sto1:T,a1:T)
  3. 假设sts_tst只condition on oto_tot,即qψ(st∣ot)q_\psi(s_t|o_t)qψ(stot)
  4. qψ(st∣ot)q_\psi(s_t|o_t)qψ(stot)是deterministic encoder,即等价于让st=gψ(ot)s_t=g_\psi(o_t)st=gψ(ot)

于是优化目标变为:
max⁡ϕ,ψ1N∑i=1N∑t=1T[logpϕ(gψ(oti)∣gψ(oti),ati)+logpϕ(oti∣gψ(oti))]\max_{\phi,\psi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^T\Big[logp_\phi\Big(g_\psi(o_t^i)|g_\psi(o_t^i),a_t^i\Big)+logp_\phi(o_t^i|g_\psi(o_t^i))\Big] ϕ,ψmaxN1i=1Nt=1T[logpϕ(gψ(oti)gψ(oti),ati)+logpϕ(otigψ(oti))]

POMDP就是指的incomplete information,复杂的observation,unknow state,因此如果要使用Meta-Lerning的想法,加入任务信息,其概率图如下:

在假设中,Encoder即qψ(st∣ot)q_\psi(s_t|o_t)qψ(stot)被假设成了deterministic,从而被转换成gψ(ot)=stg_\psi(o_t)=s_tgψ(ot)=st,而Stochastic Encoder的意思是qψ(st∣ot)q_\psi(s_t|o_t)qψ(stot)是一个概率分布,一个observation可能被encode into多个可能的states
而且还可以继续放松假设,如qψ(st∣ot)→qψ(st∣o1:T)q_\psi(s_t|o_t)\rightarrow q_\psi(s_t|o_{1:T})qψ(stot)qψ(sto1:T)

2.6.3 SAC

先High-Level的总结一下:

  1. Soft实际的意思是指加了一个Entropy term的Objective,即J(π)=∑t=0TEst∼p(st),a∼π(at∣st)[r(st,at)+αH[π(•∣st)]]J(\pi)=\sum_{t=0}^TE_{s_t\sim p(s_t),a\sim \pi(a_t|s_t)}\Big[r(s_t,a_t)+\alpha H[\pi(•|s_t)]\Big]J(π)=t=0TEstp(st),aπ(atst)[r(st,at)+αH[π(st)]]
  2. 对Actor与Critic同时建模,对policy用参数θ\thetaθ(Actor),对Q-Value用参数ϕ\phiϕ(Critic)建模表示
    Critic:JQ(ϕ)=E(st,at)∼D[12(Qϕ(st,at)−Q^(st,at))2]Critic:\quad J_Q(\phi)=E_{(s_t,a_t)\sim D}\Big[\frac{1}{2} \Big(Q_\phi(s_t,a_t)-\hat Q(s_t,a_t)\Big)^2\Big]Critic:JQ(ϕ)=E(st,at)D[21(Qϕ(st,at)Q^(st,at))2]

Actor:Jπ(θ)=Est,at[Qϕ(st,at)+αH[πθ(•∣st)]]Actor:\quad J_\pi(\theta)=E_{s_t,a_t}\Big[Q_\phi(s_t,a_t)+\alpha H\big[\pi_\theta(•|s_t)\big]\Big]Actor:Jπ(θ)=Est,at[Qϕ(st,at)+αH[πθ(st)]]

然后从Replay Buffer从用Importance Sampling之类的来采样,更新AC,如下图所示:

更详细的具体算法在这篇Soft Optimality Framework中贴了一下OpenAI的算法流程图如下:

2.6.4 Inference-Based Method


Inference-Based Method就是在POMDP的语境下的第三类做法,由上图可知,把高维度的Observation Encode成hidden state hth_tht,而这个hidden state包含(st,task)(s_t,task)(st,task),训练好后,便可由Observation推断(Inference)出state以及task information(记为zzz)。
直接抛出fff为Stochastic Encoder,LLL为SAC的如下流程图:

Meta-Learning的两个流程:

  • Meta-Training Outer Loop:
    θ∗=arg max⁡θEπϕi(τ)[r(τ)]\theta^*=\argmax_\theta E_{\pi_{\phi_i}(\tau)}[r(\tau)]θ=θargmaxEπϕi(τ)[r(τ)]
  • Adaptation Inner Loop
    ϕi=fθ(Mi)\phi_i=f_\theta(M_i)ϕi=fθ(Mi)
  1. 将多任务M1,...,MnM_1,...,M_nM1,...,Mn 通过一个Stochastic Encoder 成 一个Task Embedding Vector zzz,需要设定Task Distribution,即p(z)p(z)p(z)
  2. 然后这个Task Distribution的Parameters,即为ϕ\phiϕ,也叫Adapted Parameters
  3. 这里的θ\thetaθ是Meta-Parameters,主要是Policy与Q-Function中的参数,即Actor-Critic中的参数

三、总结

Meta算法 fff LLL
Recurrence-Based RNN PG
Optimization-Based PG PG
Inference-Based Stochastic Encoder SAC
Meta-MBRL SL MPC
Meta-IL-1 Behavior Cloning PG
Meta-IL-2 Learned Loss PG
  • Meta-RL三种类型算法的比较

后记

本来还是打算写在CV中的Meta-Learning,但发现光写Meta-RL就够呛。
主要参考资料是CS285 PPT Lec20 由Kate Rakelly讲授
还有ConfTube上的 ICML 2019 Meta-Learning Tutorial
后面还有关于Exploration与Exploitation的一篇总结性博文
以及三个Courses:

  • Convex Duality in RL
  • Rethinking RL from the perspective of Generalization(Chelsea Finn)
  • Multi-task RL:A curse or a blessing?

深度强化学习CS285-Lec18 Meta-Learning in RL相关推荐

  1. 深度强化学习(Deep Reinforcement Learning)的资源

    深度强化学习(Deep Reinforcement Learning)的资源 2015-04-08 11:21:00|  分类: Torch |  标签:深度强化学习   |举报 |字号 订阅 Goo ...

  2. 深度强化学习—— 译 Deep Reinforcement Learning(part 0: 目录、简介、背景)

    深度强化学习--概述 翻译说明 综述 1 简介 2 背景 2.1 人工智能 2.2 机器学习 2.3 深度学习 2.4 强化学习 2.4.1 Problem Setup 2.4.2 值函数 2.4.3 ...

  3. 深度强化学习8:Imitation Learning

    [李宏毅深度强化学习笔记]8.Imitation Learning qqqeeevvv 2020-01-30 18:18:16 3344 收藏 4 分类专栏: 强化学习 # 理论知识 </div ...

  4. 深度强化学习CS285 lec13-lec15 (下)

    逆强化学习IRL 概述 一.Inverse RL 背景 1.1 Imitation Learning 与Inverse RL 1.2 Standard RL与Inverse RL 二.Inverse ...

  5. 深度强化学习基础(一):RL中的基本概念

    目录 强化学习是什么? 强化学习能做什么? 关键概念和术语 概率论 术语 AI如何控制agent 策略学习--学习policy函数​ 价值学习--学习最优动作价值函数 总结 强化学习是什么? 强化学习 ...

  6. 纯干货-5Deep Reinforcement Learning深度强化学习_论文大集合

    本文罗列了最近放出来的关于深度强化学习(Deep Reinforcement Learning,DRL)的一些论文.文章采用人工定义的方式来进行组织,按照时间的先后进行排序,越新的论文,排在越前面.希 ...

  7. 最全深度强化学习资料

    转载 J.Q.Wang2011 -----深度强化学习系列: 最全深度强化学习资料 下面附上原地址 https://blog.csdn.net/gsww404/article/details/1030 ...

  8. 深度强化学习系列: 最全深度强化学习资料

    关于这项工作: 本工作是一项由深度强化学习实验室(Deep Reinforcement Learning Laboratory, DeepRL-Lab)发起的项目. 文章同步于Github仓库: ht ...

  9. (转) 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文)

    本文转自:http://mp.weixin.qq.com/s/aAHbybdbs_GtY8OyU6h5WA 专题 | 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文) 原创 201 ...

  10. ​万字总结83篇文献:深度强化学习之炒作、反思、回归本源

    来源:深度强化学习实验室 本文约15000字,建议阅读10+分钟 本文为你深入浅出.全面系统总结强化学习的发展及未来展望. 深度强化学习是深度学习与强化学习相结合的产物,它集成了深度学习在视觉等感知问 ...

最新文章

  1. 垃圾回收 内存管理 python
  2. 重定向、管道和用户管理练习题
  3. trace--求矩阵的迹
  4. excel简繁切换_EXCEL中如何随意切换简体繁体文字
  5. java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...
  6. 钉钉怎么查看收到的文件 钉钉查看文件的方法
  7. 安徽关节式焊接机器人_机器人自动焊接技术的优势及应用介绍
  8. JAVA中extends 与implements区别
  9. 打印异常堆栈_定位生产问题时,异常堆栈莫名丢了,何解?
  10. 什么叫做形态学图像处理_形态学腐蚀和膨胀原理和python实现
  11. 精选CSDN的ACM-ICPC专栏
  12. No module named ‘yaml‘错误解决办法
  13. RuntimeException
  14. WindowsXP打开和关闭硬盘各分区的默认共享
  15. 夜神模拟器连接手柄无反应_夜神模拟器手柄设置
  16. flink学习思维导图
  17. c语言 int 型 无符号数 %u
  18. 诺基亚n8和n9java_诺基亚官方发布 N8与N9的十大区别
  19. 设计模式——黑板模式
  20. C#之泛型实例化对象的理解

热门文章

  1. 微信小程序编写一个试卷demo
  2. python中科学记数法表示_matplotlib中的科学记数法
  3. 克隆vmware虚拟机
  4. android 上传nexus_上传 Android aar 到 nexus 上
  5. 如何用控制面板打开计算机配置,如何查看电脑的配置?学会下面几种方法,你就可以自己看电脑配置...
  6. w10计算机无法打印,win10提示“无法打印 似乎未安装打印机”怎么办
  7. 虚拟机安装和优盘启动盘制作
  8. linux 库全局变量_C语言开发单片机为什么大多数都采用全局变量的形式?
  9. 用AnLink可以用鼠标同时操作电脑和手机
  10. 游戏元素属性的设计原则