深度强化学习CS285-Lec18 Meta-Learning in RL
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的一些定位:
- Transfer Learning的第三种方法,从Multi-Task中学习一些东西,然后Transfer到New Task
- 主要从Multi-Task中提炼知识,因此其数据集的设定非常特殊
- 对于New Task而言,只需要少量样本数据就能快速学习
本文介绍Meta-Learning从CV开始再到RL,在此之前先说清楚问题定义、Meta的来源。
一、问题定义
先记住几个符号:
- ϕ\phiϕ为任务模型的参数,θ\thetaθ为Meta模型的参数
- 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∣ϕ)=ϕargmaxi∑logp(yi∣xi,ϕ)+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)\}Dmeta−train={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)\}Dnew−task={(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(ϕ∣Dnew−task,Dmeta−train)=ϕargmaxlog∫p(ϕ∣Dnew−task,θ)p(θ∣Dmeta−train)dθ≈ϕargmaxlogp(ϕ∣Dnew−task,θ∗)+logp(θ∗∣Dmeta−train)=ϕargmaxp(ϕ∣Dnew−task,θ∗)
解释一下:
1. 目标为结合多任务的训练集Dmeta−trainD_{meta-train}Dmeta−train来学习新任务Dnew−taskD_{new-task}Dnew−task的模型参数 ϕ\phiϕ
2. 目标近似分解成两部分:从多任务中Meta-Learning的元模型参数θ∗\theta^*θ∗,在元参数θ∗\theta^*θ∗的条件下最大化新任务Dnew−taskD_{new-task}Dnew−task的MAP目标
因此称θ∗=arg maxθlogp(θ∣Dmeta−train)\theta^*=\argmax_\theta logp(\theta|D_{meta-train})θ∗=θargmaxlogp(θ∣Dmeta−train)为Meta-Learning Problem
而ϕ∗=arg maxϕlogp(ϕ∣Dnew−task,θ∗)\phi^*=\argmax_\phi logp(\phi|D_{new-task},\theta^*)ϕ∗=ϕargmaxlogp(ϕ∣Dnew−task,θ∗)为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})\}Dmeta−train={(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(θ∣Dmeta−train),但是却没有关于θ\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},Dmeta−train={Dtr,Dts}(在训练θ\thetaθ的时候,不需要使用到Dnew−taskD_{new-task}Dnew−task)
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=1∑nlogp(ϕi∣Dits)ϕi=fθ(Ditr)
解释一下:
- 将第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(ϕi∣Dits)
- 要学习的参数θ\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(ϕi∣Dits)=∑i=1nlogp(Dits∣ϕi)+logp(ϕi)最大
- 多任务共有的θ\thetaθ,通过单一任务DitrD_i^{tr}Ditr得到specified 任务的模型参数ϕi\phi_iϕi,目的是找到这个θ\thetaθ使得到多任务的距离最短
对比一下,Meta-Learning与Multi-Task Learning中一种去学习多任务共同模型参数的方法相似:
- 当fθ(Ditr)=θf_\theta(D_i^{tr})=\thetafθ(Ditr)=θ即n个任务用一个模型参数θ\thetaθ去学,使n个任务评价最好,为multi-task Learning;
- 当fθ(Ditr)=ϕif_\theta(D_i^{tr})=\phi_ifθ(Ditr)=ϕi即n个任务,每一个任务的模型参数ϕi\phi_iϕi都不同,学习一个θ\thetaθ到ϕi\phi_iϕi的映射使得,n个任务的评价最好
- 所以Multi-task的这种方法是Meta-Learning的一个Special Case
1.4 Meta-Learning的一些理解
- 一个网络的权重参数为ϕ\phiϕ,一个网络的超参数(batch、learning rate等)为θ\thetaθ
- 一个网络的权重参数为ϕ\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:
- 从n个任务中Sample一个任务iii,收集该任务的真实轨迹DiD_iDi(可以是专家数据,也可以是该任务的真实数据)
- 利用DiD_iDi来对θ\thetaθ进行Adapt获得任务iii的策略参数ϕi=fθ(Di)\phi_i=f_\theta(D_i)ϕi=fθ(Di)
- 利用Adapted Policy即πϕi\pi_{\phi_i}πϕi来当前Adapted的轨迹Di′D_i'Di′
- 根据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θ。
具体模型的输入,图上已经很清楚了,值得注意的是:
- 同一任务的不同Episode之间的信息都通过一个hidden state传递的
- 不同任务之间同使用一个RNN进行任务信息的存储
- 评价的指标是调整θ\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θ进行更新。
具体算法流程:
还是得说明一下:
- 对于一个task iii,一开始DiD_iDi中就放着任务iii真实数据,进行Adapt,可以进行几次,得一个Adapted Policy πht\pi_{h_t}πht,即Adaptation Inner Loop
- 然后通过计算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(θ)
于是有
ϕ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:
- 先用任务iii的真实数据DiD_iDi进行Adapt,得到Adapted parameters ϕi=θ−α∇θLi(πθ,Di)\phi_i=\theta-\alpha\nabla_\theta L_i(\pi_\theta,D_i)ϕi=θ−α∇θLi(πθ,Di)
- 然后利用Adapted的Policy即πϕ\pi_\phiπϕ来收集Adapted的轨迹数据Di′D_i'Di′
Meta-Training Outer Loop:
- 利用Adapted Policy得到的轨迹Di′D_i'Di′与πϕi\pi_{\phi_i}πϕi根据PG来计算θ\thetaθ
值得注意的是这里的DiD_iDi与Di′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_iDi与Di′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)−at∗∣∣2
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,首先:
- 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)−at∗∣∣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
回顾一下:
- 随意跑一个base Polcy收集Transition 数据
- 然后通过Supervised Learning学习dynamics model,输入为s,as,as,a,label为s′s's′
- 用一些planning算法如iLQR、MCTS来plan一下轨迹
- 执行plan的轨迹一些action,引入MPC使预测的轨迹稳定
- 将执行后获得的transition样本收集进行retrain
于是这里Adaptation Rule的应用对象MiM_iMi为dynamics model的参数ϕi\phi_iϕi,然后根据Dynamics Model使用MPC算法来调整Meta-Parameters即θ\thetaθ。
为什么需要对Dynamics Model进行Adapt?
因为环境模型很容易就发生变化:
- 真实Agent电量不足,降低功率
- 平坦地面上训练的Agent,放到陡峭的地面上
- 使用过程中,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)−s′∣∣2,LLL为MPC的意思为第三步。
上面为Meta-Test的过程,以下为Meta-Training来训练dθ(s,a)d_\theta(s,a)dθ(s,a)的过程:
记得第一小节的定义:
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},Dmeta−train={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)}
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′)
从很多种不同的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)从τ\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+k−1,at+k−1,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=1∑nlogp(ϕi∣Dits)ϕ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(s′∣s,a),r,因此Meta-RL的概率图可以简单描述如下:
- 当前实际环境的dynamics模型p(s′∣s,a)p(s'|s,a)p(s′∣s,a)与奖励rtr_trt,都conditon on task的信息
- 收集真实环境的一些数据DiD_iDi,输入fθf_\thetafθ,得到task-specific的参数ϕi\phi_iϕi
- 然后在ϕ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=1∑Nt=1∑TE(st,st+1)∼p(st,st+1∣o1:T,a1:T)[logpϕ(st+1i∣sti,ati)+logpϕ(oti∣sti)]
然后处理Encoder的时候假设了最简单的情形:
- 独立性假设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+1∣o1:T,a1:T)=p(st∣o1:T,a1:T)p(st+1∣o1:T,a1:T)
- 学习一个qψ(st∣o1:T,a1:T)q_\psi(s_t|o_{1:T},a_{1:T})qψ(st∣o1:T,a1:T)来近似这个分布p(st∣o1:T,a1:T)p(s_t|o_{1:T},a_{1:T})p(st∣o1:T,a1:T)
- 假设sts_tst只condition on oto_tot,即qψ(st∣ot)q_\psi(s_t|o_t)qψ(st∣ot)
- qψ(st∣ot)q_\psi(s_t|o_t)qψ(st∣ot)是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=1∑Nt=1∑T[logpϕ(gψ(oti)∣gψ(oti),ati)+logpϕ(oti∣gψ(oti))]
POMDP就是指的incomplete information,复杂的observation,unknow state,因此如果要使用Meta-Lerning的想法,加入任务信息,其概率图如下:
在假设中,Encoder即qψ(st∣ot)q_\psi(s_t|o_t)qψ(st∣ot)被假设成了deterministic,从而被转换成gψ(ot)=stg_\psi(o_t)=s_tgψ(ot)=st,而Stochastic Encoder的意思是qψ(st∣ot)q_\psi(s_t|o_t)qψ(st∣ot)是一个概率分布,一个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ψ(st∣ot)→qψ(st∣o1:T)
2.6.3 SAC
先High-Level的总结一下:
- 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=0∑TEst∼p(st),a∼π(at∣st)[r(st,at)+αH[π(•∣st)]]
- 对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)
- 将多任务M1,...,MnM_1,...,M_nM1,...,Mn 通过一个Stochastic Encoder 成 一个Task Embedding Vector zzz,需要设定Task Distribution,即p(z)p(z)p(z)
- 然后这个Task Distribution的Parameters,即为ϕ\phiϕ,也叫Adapted Parameters
- 这里的θ\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相关推荐
- 深度强化学习(Deep Reinforcement Learning)的资源
深度强化学习(Deep Reinforcement Learning)的资源 2015-04-08 11:21:00| 分类: Torch | 标签:深度强化学习 |举报 |字号 订阅 Goo ...
- 深度强化学习—— 译 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 ...
- 深度强化学习8:Imitation Learning
[李宏毅深度强化学习笔记]8.Imitation Learning qqqeeevvv 2020-01-30 18:18:16 3344 收藏 4 分类专栏: 强化学习 # 理论知识 </div ...
- 深度强化学习CS285 lec13-lec15 (下)
逆强化学习IRL 概述 一.Inverse RL 背景 1.1 Imitation Learning 与Inverse RL 1.2 Standard RL与Inverse RL 二.Inverse ...
- 深度强化学习基础(一):RL中的基本概念
目录 强化学习是什么? 强化学习能做什么? 关键概念和术语 概率论 术语 AI如何控制agent 策略学习--学习policy函数 价值学习--学习最优动作价值函数 总结 强化学习是什么? 强化学习 ...
- 纯干货-5Deep Reinforcement Learning深度强化学习_论文大集合
本文罗列了最近放出来的关于深度强化学习(Deep Reinforcement Learning,DRL)的一些论文.文章采用人工定义的方式来进行组织,按照时间的先后进行排序,越新的论文,排在越前面.希 ...
- 最全深度强化学习资料
转载 J.Q.Wang2011 -----深度强化学习系列: 最全深度强化学习资料 下面附上原地址 https://blog.csdn.net/gsww404/article/details/1030 ...
- 深度强化学习系列: 最全深度强化学习资料
关于这项工作: 本工作是一项由深度强化学习实验室(Deep Reinforcement Learning Laboratory, DeepRL-Lab)发起的项目. 文章同步于Github仓库: ht ...
- (转) 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文)
本文转自:http://mp.weixin.qq.com/s/aAHbybdbs_GtY8OyU6h5WA 专题 | 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文) 原创 201 ...
- 万字总结83篇文献:深度强化学习之炒作、反思、回归本源
来源:深度强化学习实验室 本文约15000字,建议阅读10+分钟 本文为你深入浅出.全面系统总结强化学习的发展及未来展望. 深度强化学习是深度学习与强化学习相结合的产物,它集成了深度学习在视觉等感知问 ...
最新文章
- 垃圾回收 内存管理 python
- 重定向、管道和用户管理练习题
- trace--求矩阵的迹
- excel简繁切换_EXCEL中如何随意切换简体繁体文字
- java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...
- 钉钉怎么查看收到的文件 钉钉查看文件的方法
- 安徽关节式焊接机器人_机器人自动焊接技术的优势及应用介绍
- JAVA中extends 与implements区别
- 打印异常堆栈_定位生产问题时,异常堆栈莫名丢了,何解?
- 什么叫做形态学图像处理_形态学腐蚀和膨胀原理和python实现
- 精选CSDN的ACM-ICPC专栏
- No module named ‘yaml‘错误解决办法
- RuntimeException
- WindowsXP打开和关闭硬盘各分区的默认共享
- 夜神模拟器连接手柄无反应_夜神模拟器手柄设置
- flink学习思维导图
- c语言 int 型 无符号数 %u
- 诺基亚n8和n9java_诺基亚官方发布 N8与N9的十大区别
- 设计模式——黑板模式
- C#之泛型实例化对象的理解
热门文章
- 微信小程序编写一个试卷demo
- python中科学记数法表示_matplotlib中的科学记数法
- 克隆vmware虚拟机
- android 上传nexus_上传 Android aar 到 nexus 上
- 如何用控制面板打开计算机配置,如何查看电脑的配置?学会下面几种方法,你就可以自己看电脑配置...
- w10计算机无法打印,win10提示“无法打印 似乎未安装打印机”怎么办
- 虚拟机安装和优盘启动盘制作
- linux 库全局变量_C语言开发单片机为什么大多数都采用全局变量的形式?
- 用AnLink可以用鼠标同时操作电脑和手机
- 游戏元素属性的设计原则