Meta-Learning为元学习,也称为Learning to learn,其目的是希望能从过去的任务经验中习得学习技巧,然后将学习技巧放在新任务上实现快速学习。
所以Meta-Learning的数据集设置,与standrad RL、标准的监督学习都不同。
Meta-Learning的一些定位:
本文介绍Meta-Learning从CV开始再到RL,在此之前先说清楚问题定义、Meta的来源。
先记住几个符号:
D = { ( x 1 , y 1 ) , ⋯ , ( x k , y k ) } D=\{(x_1,y_1),\cdots,(x_k,y_k)\} D={(x1,y1),⋯,(xk,yk)}, x x x为image, y y y为label
新任务目标为:
arg max ϕ l o g p ( ϕ ∣ D ) = arg max ϕ l o g p ( D , ϕ ) p ( D ) = arg max ϕ l o g p ( ϕ ) p ( D ∣ ϕ ) = arg max ϕ l o g p ( ϕ ) + l o g p ( D ∣ ϕ ) = arg max ϕ ∑ i l o g p ( y i ∣ x i , ϕ ) + l o g p ( ϕ ) \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)
D m e t a − t r a i n = { D 1 , . . . , D n } , D i = { ( x 1 i , y 1 i ) , ⋯ , ( x k i , y k i ) } 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)}
D n e w − t a s k = { ( x 1 , y 1 ) , ⋯ , ( x k , y k ) } D_{new-task}=\{(x_1,y_1),\cdots,(x_k,y_k)\} Dnew−task={(x1,y1),⋯,(xk,yk)}
加入多任务后的新任务目标为:
arg max ϕ l o g p ( ϕ ∣ D n e w − t a s k , D m e t a − t r a i n ) = arg max ϕ l o g ∫ p ( ϕ ∣ D n e w − t a s k , θ ) p ( θ ∣ D m e t a − t r a i n ) d θ ≈ arg max ϕ l o g p ( ϕ ∣ D n e w − t a s k , θ ∗ ) + l o g p ( θ ∗ ∣ D m e t a − t r a i n ) = arg max ϕ p ( ϕ ∣ D n e w − t a s k , θ ∗ ) \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. 目标为结合多任务的训练集 D m e t a − t r a i n D_{meta-train} Dmeta−train来学习新任务 D n e w − t a s k D_{new-task} Dnew−task的模型参数 ϕ \phi ϕ
2. 目标近似分解成两部分:从多任务中Meta-Learning的元模型参数 θ ∗ \theta^* θ∗,在元参数 θ ∗ \theta^* θ∗的条件下最大化新任务 D n e w − t a s k D_{new-task} Dnew−task的MAP目标
因此称 θ ∗ = arg max θ l o g p ( θ ∣ D m e t a − t r a i n ) \theta^*=\argmax_\theta logp(\theta|D_{meta-train}) θ∗=θargmaxlogp(θ∣Dmeta−train)为Meta-Learning Problem
而 ϕ ∗ = arg max ϕ l o g p ( ϕ ∣ D n e w − t a s k , θ ∗ ) \phi^*=\argmax_\phi logp(\phi|D_{new-task},\theta^*) ϕ∗=ϕargmaxlogp(ϕ∣Dnew−task,θ∗)为Adaptation Problem
为了更好评价元模型参数,我们得对数据集设定清楚:
n个任务的 D m e t a − t r a i n = { ( D 1 t r , D 1 t s ) , . . . , ( D n t r , D n t s ) } D_{meta-train}=\{(D_1^{tr},D_1^{ts}),...,(D_n^{tr},D_n^{ts})\} Dmeta−train={(D1tr,D1ts),...,(Dntr,Dnts)},每一个任务 D i D_i Di都分为训练集 D i t r D_i^{tr} Ditr与测试集 D i t s D_i^{ts} Dits有,其中训练集有 k k k个样本,测试集有 l l l个样本,具体而言:
D i t r = { ( x 1 i , y 1 i ) , ⋯ , ( x k i , y k i ) } D i t s = { ( x 1 i , y 1 i ) , ⋯ , ( x l i , y l i ) } 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)}
于是每一个任务,现在简记为 T i = { D i t r , D i t s } \Tau_i=\{D_i^{tr},D_i^{ts}\} Ti={Ditr,Dits},或者 D i D_i Di,如下所示:
为了评价 θ \theta θ,必须得通过 ϕ \phi ϕ,记住,在Meta-Train这一步我们只想要 θ ∗ = arg max θ l o g p ( θ ∣ D m e t a − t r a i n ) \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
在用公式表述前,记 D t r = { D 1 t r , . . . , D n t r } , D t s = { D 1 t s , . . . , D n t s } , D m e t a − t r a i n = { D t r , D t s } 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 θ的时候,不需要使用到 D n e w − t a s k D_{new-task} Dnew−task)
Meta-Learning的General Form:
θ ∗ = arg max θ l o g p ( θ ∣ D t r , D t s ) ϕ ∗ = arg max ϕ l o g p ( ϕ ∣ D t r , θ ∗ ) \theta^*=\argmax_\theta logp(\theta|D^{tr},D^{ts})\\ \phi^*=\argmax_\phi logp(\phi|D^{tr},\theta^*) θ∗=θargmaxlogp(θ∣Dtr,Dts)ϕ∗=ϕargmaxlogp(ϕ∣Dtr,θ∗)
目标是学习一个多任务共有的 θ \theta θ使得单一任务上的 ϕ = f θ ( D i t r ) \phi=f_\theta(D^{tr}_i) ϕ=fθ(Ditr),与测试集 D t s D^{ts} Dts差不多,所以最重要的是下面的这个形式!一定要理解透!
θ ∗ = max θ ∑ i = 1 n l o g p ( ϕ i ∣ D i t s ) ϕ i = f θ ( D i t r ) \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)
解释一下:
对比一下,Meta-Learning与Multi-Task Learning中一种去学习多任务共同模型参数的方法相似:
Standrad RL:学习一个policy即 π θ \pi_\theta πθ
θ ∗ = arg max θ E π θ ( τ ) [ r ( τ ) ] = f R L ( M D P ) = f R L ( 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_\theta fθ
θ ∗ = arg max θ E π ϕ i ( τ ) [ r ( τ ) ] ϕ i = f θ ( M D P i ) = f θ ( M i ) \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为一个 M D P = { S , A , P , r } MDP=\{S,A,P,r\} MDP={S,A,P,r},因此有 ( M t r a i n = { M 1 , M 2 , . . . , M n } , M t e s t ) (M_{train}=\{M_1,M_2,...,M_n\},M_{test}) (Mtrain={M1,M2,...,Mn},Mtest),如下:
于是Meta-RL有两个值得记住的循环:
解释一下:
Meta-RL的General Form:
因此下面围绕怎么选择Adaptation Rule即函数 f f f与损失函数 L L L来对算法类别进行划分:
具体而言,Adaptation Model即元学习的模型参数为 θ \theta θ,用RNN模型来建模,然后用任务 i i i真实数据expert demons Adapt出策略的参数 ϕ i \phi_i ϕi,再根据Adapted Policy在任务中的表现来调整 θ \theta θ。
具体模型的输入,图上已经很清楚了,值得注意的是:
要注意的是,从始至终我们要调整的都是RNN中的参数 θ \theta θ,而没有变动过关于问题的模型 ϕ \phi ϕ,只是利用它作为一个中间的桥梁对Meta Parameters即 θ \theta θ进行更新。
还是得说明一下:
顾名思义,选择RL的基本算法PG来做Adaptation,即 f f f,但好像有点模糊?
再次回顾一下Standard RL:
θ ∗ = arg max θ E π θ ( τ ) [ r ( τ ) ] ⏟ J ( θ ) P G : θ k + 1 = θ k + α ∇ θ k J ( θ 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 θ ( M i ) = θ + α ∇ θ J i ( θ ) = θ + α ∇ θ 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)]
这是选择了 f f f为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)]
因此最终形式为:
θ ← θ + α ∇ θ J i ( θ + α ∇ θ J i ( θ ) ) \theta\leftarrow \theta+\alpha\nabla_\theta J_i(\theta+\alpha\nabla_\theta J_i(\theta)) θ←θ+α∇θJi(θ+α∇θJi(θ))
具体算法流程:
Adaptation Inner Loop:
Meta-Training Outer Loop:
值得注意的是这里的 D i D_i Di与 D i ′ D_i' Di′就是用来估计下面的期望的:
D i ′ : θ ← θ + α ∇ θ E π ϕ i ( τ ) [ r ( τ ) ] D_i':\theta\leftarrow \theta + \alpha \nabla_\theta E_{\pi_{\phi_i}(\tau)}\Big[r(\tau)\Big] Di′:θ←θ+α∇θEπϕi(τ)[r(τ)]
D i : ϕ 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,因为这里涉及到二阶导,因此有一些文章来改进这个,如:
这里有一个问题哦:
D i D_i Di与 D i ′ D_i' Di′的关系是什么?
D i ′ D_i' Di′是Adapted Policy与 M i M_i Mi环境交互得到的轨迹数据,进行PG更新这个很好理解。
D i D_i Di是任务 i i i真实数据,那是专家数据还是任务 i i i随机的真实数据?一开始随机的真实数据Adapt也能学习?好像有点奇怪呀,那看看下面的Meta-Imitation Learning吧~
这里的 D i D_i Di就是利用真实的专家数据进行Adapt了,于是有:
D i ′ : θ ← θ + α ∇ θ E π ϕ i ( τ ) [ r ( τ ) ] D_i':\theta\leftarrow \theta + \alpha \nabla_\theta E_{\pi_{\phi_i}(\tau)}\Big[r(\tau)\Big] Di′:θ←θ+α∇θEπϕi(τ)[r(τ)]
D i : ϕ i ← θ − α ∇ θ ∑ t ∣ ∣ π θ ( o t ) − a t ∗ ∣ ∣ 2 D_i:\phi_i\leftarrow \theta-\alpha\nabla_\theta \sum_t ||\pi_\theta(o_t)-a_t^*||^2 Di:ϕi←θ−α∇θt∑∣∣πθ(ot)−at∗∣∣2
Meta-Training的时候,由专家控制遥控器得到robot demos,即一个专家数据 τ = ( o 1 , a 1 , r 1 , . . . . , o T , a T , r T ) \tau=(o_1,a_1,r_1,....,o_T,a_T,r_T) τ=(o1,a1,r1,....,oT,aT,rT),可以看作 D i D_i Di
然后Meta-Training的时候,根据上面两个公式迭代,得到参数 θ \theta θ.
然后Meta-Test的时候,给定一条新的专家示意的数据 τ n e w \tau_{new} τnew,即 D i D_i Di,首先:
这里将Adaptation Rule设定为Learned loss,因为在Behavior Cloning中搜集数据的方式是人为用遥控器控制的,于是轨迹样本robot demos是 τ = ( o 1 , a 1 , r 1 , . . . . , o T , a T , r T ) \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 ψ ( θ , d h ) \phi=\theta-\alpha\nabla_\theta L_\psi(\theta,d^h) ϕ=θ−α∇θLψ(θ,dh)
关于Model-Based RL的算法概览可以参考Model-Based RL算法,主要分为Optimal Control进行Planning,不学习Policy的MBRL,学Policy的MBRL,此处简要回顾一下Without Policy的MBRL1.5
回顾一下:
于是这里Adaptation Rule的应用对象 M i M_i Mi为dynamics model的参数 ϕ i \phi_i ϕi,然后根据Dynamics Model使用MPC算法来调整Meta-Parameters即 θ \theta θ。
为什么需要对Dynamics Model进行Adapt?
因为环境模型很容易就发生变化:
那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
由公式可以看出, f f f为Supervised Learning的意思为MSE loss即 J ( θ ) = ∣ ∣ d θ ( s , a ) − s ′ ∣ ∣ 2 J(\theta)=||d_\theta(s,a)-s'||^2 J(θ)=∣∣dθ(s,a)−s′∣∣2, L L L为MPC的意思为第三步。
上面为Meta-Test的过程,以下为Meta-Training来训练 d θ ( s , a ) d_\theta(s,a) dθ(s,a)的过程:
记得第一小节的定义:
D t r = { D 1 t r , . . . , D n t r } , D t s = { D 1 t s , . . . , D n t s } , D m e t a − t r a i n = { D t r , D t s } 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}
D i t r = { ( x 1 i , y 1 i ) , ⋯ , ( x k i , y k i ) } D i t s = { ( x 1 i , y 1 i ) , ⋯ , ( x l i , y l i ) } 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 = ( s t , a t , s t + 1 , a t + 1 , . . . , s t + k , a t + k , s t + 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 τ中获取 D i t r , D i t s D^{tr}_i,D_i^{ts} Ditr,Dits,如:
D i t r = { ( s t , a t , s t + 1 ) , . . . , ( s t + k − 1 , a t + k − 1 , s t + k ) } D i t s = { s t + k , a t + k , s t + 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 = 1 l=1 l=1的测试样本,选多少自己决定。
在详细解释 f θ f_\theta fθ选择为Stochastic Encoder与 L L L选择为SAC的情况时,先小总结一下Meta-RL,再说说POMDP以及SAC。
再啰嗦一下Meta-RL的特性:步骤分为Meta-Training与Adaptation,即
θ ∗ = max θ ∑ i = 1 n l o g p ( ϕ i ∣ D i t s ) ϕ i = f θ ( D i t r ) \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)
关键的一步是用 D i t r D_i^{tr} Ditr对元模模型参数 θ \theta θ进行Adaptation,但是没有办法evaluate,因此需要放到细分任务中用测试数据 D i t s D_i^{ts} Dits评价,从而调整Meta-Parameters.
因此元学习中的参数 θ \theta θ,尝试从多任务的经验数据中提取出共同的学习技巧或Knowledge,而每一个细分任务之间最大的不同是dynamics与reward,或者说在设计多任务的时候,一般都在同一环境中保持 s t , a t s_t,a_t st,at的空间相同,然后改变 p ( s ′ ∣ s , a ) , r p(s'|s,a),r p(s′∣s,a),r,因此Meta-RL的概率图可以简单描述如下:
在Model-based RL中的Complex Observations中提过引入Latent Space的模型目标为:
max ϕ 1 N ∑ i = 1 N ∑ t = 1 T E ( s t , s t + 1 ) ∼ p ( s t , s t + 1 ∣ o 1 : T , a 1 : T ) [ l o g p ϕ ( s t + 1 i ∣ s t i , a t i ) + l o g p ϕ ( o t i ∣ s t i ) ] \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的时候假设了最简单的情形:
于是优化目标变为:
max ϕ , ψ 1 N ∑ i = 1 N ∑ t = 1 T [ l o g p ϕ ( g ψ ( o t i ) ∣ g ψ ( o t i ) , a t i ) + l o g p ϕ ( o t i ∣ g ψ ( o t i ) ) ] \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 ψ ( s t ∣ o t ) q_\psi(s_t|o_t) qψ(st∣ot)被假设成了deterministic,从而被转换成 g ψ ( o t ) = s t g_\psi(o_t)=s_t gψ(ot)=st,而Stochastic Encoder的意思是 q ψ ( s t ∣ o t ) q_\psi(s_t|o_t) qψ(st∣ot)是一个概率分布,一个observation可能被encode into多个可能的states。
而且还可以继续放松假设,如 q ψ ( s t ∣ o t ) → q ψ ( s t ∣ o 1 : T ) q_\psi(s_t|o_t)\rightarrow q_\psi(s_t|o_{1:T}) qψ(st∣ot)→qψ(st∣o1:T)
先High-Level的总结一下:
A c t o r : J π ( θ ) = E s t , a t [ Q ϕ ( s t , a t ) + α H [ π θ ( • ∣ s t ) ] ] 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的算法流程图如下:
Inference-Based Method就是在POMDP的语境下的第三类做法,由上图可知,把高维度的Observation Encode成hidden state h t h_t ht,而这个hidden state包含 ( s t , t a s k ) (s_t,task) (st,task),训练好后,便可由Observation推断(Inference)出state以及task information(记为 z z z)。
直接抛出 f f f为Stochastic Encoder, L L L为SAC的如下流程图:
Meta-Learning的两个流程:
Meta算法 | f f f | L L L |
---|---|---|
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 |
本来还是打算写在CV中的Meta-Learning,但发现光写Meta-RL就够呛。
主要参考资料是CS285 PPT Lec20 由Kate Rakelly讲授
还有ConfTube上的 ICML 2019 Meta-Learning Tutorial
后面还有关于Exploration与Exploitation的一篇总结性博文
以及三个Courses: