本文同样以MAML为基础,与MAML不同的是,MAML在每个新任务上会更新所有的参数,而CAML将模型的参数分成了两部分,一部分是context parameters,作为模型的额外输入使其适应于单独的任务;另一部分是shared parameters,在任务间共享并通过元学习训练过程优化。CAML在每个新任务上只更新模型的context部分的参数,这样可以在使用更大的网络情况下避免在单一任务上过拟合,并且可以节省内存。
在任务的每一个batch T的每一个元学习iteration中,使用每个task T i ∈ T \mathcal{T}_i\in T Ti∈T训练集 D i t r a i n D_i^{train} Ditrain进行训练。从初值 ϕ 0 \phi_0 ϕ0开始(可以是常值或者在学习过程中更新,通常取0),通过一部梯度更新学习任务特异参数 ϕ i \phi_i ϕi,
ϕ i = ϕ 0 − α ∇ ϕ 1 M i t r a i n ∑ ( x , y ) ∈ D i t r a i n L T i ( f ϕ 0 , θ ( x ) , y ) \phi_i = \phi_0 - \alpha\nabla_\phi\frac{1}{M_i^{train}}\sum_{(x,y)\in D_i^{train}}\mathcal{L}_{\mathcal{T}_i}(f_{\phi_0,\theta}(x),y) ϕi=ϕ0−α∇ϕMitrain1(x,y)∈Ditrain∑LTi(fϕ0,θ(x),y)
尽管只考虑了 ϕ \phi ϕ的梯度,更新后的参数 ϕ i \phi_i ϕi也是 θ \theta θ,因为在反向传播的过程中,梯度流过整个模型。当我们得到了所有sampled task的 ϕ i \phi_i ϕi后,执行更新 θ \theta θ的元学习步骤,
θ = θ − β ∇ θ 1 N ∑ T i ∈ T 1 M i t r a i n ∑ ( x , y ) ∈ D i t r a i n L T i ( f ϕ 0 , θ ( x ) , y ) \theta = \theta - \beta\nabla_\theta\frac{1}{N}\sum_{\mathcal{T}_i\in T}\frac{1}{M_i^{train}}\sum_{(x,y)\in D_i^{train}}\mathcal{L}_{\mathcal{T}_i}(f_{\phi_0,\theta}(x),y) θ=θ−β∇θN1Ti∈T∑Mitrain1(x,y)∈Ditrain∑LTi(fϕ0,θ(x),y)
这一步包含 θ \theta θ的高阶导数
由于 ϕ \phi ϕ是和输入独立的,所以需要确定其如何作用于网络。对于全连接层l一个输出节点 h i ( l ) h_i^{(l)} hi(l),可以简单地将 ϕ \phi ϕ与这层的输入拼接,
h i ( l ) = g ( ∑ j = 1 J θ j , i ( l , h ) h j l − 1 + ∑ k = 1 K θ k , i ( l , h ) ϕ 0 , k + b ) h_i^{(l)}=g(\sum_{j=1}^J\theta_{j,i}^{(l,h)}h_j^{l-1}+\sum_{k=1}^K\theta_{k,i}^{(l,h)}\phi_{0,k}+b) hi(l)=g(j=1∑Jθj,i(l,h)hjl−1+k=1∑Kθk,i(l,h)ϕ0,k+b)
θ j , i ( l , h ) \theta_{j,i}^{(l,h)} θj,i(l,h)是和输入 h j ( l − 1 ) h_j^{(l-1)} hj(l−1)相关联的权重, θ k , i ( l , ϕ ) \theta_{k,i}^{(l,\phi)} θk,i(l,ϕ)是和context parameter ϕ 0 , k \phi_{0,k} ϕ0,k相关联的权重,如下图所示,
神经网络的 h l h^l hl层的输出与 ϕ \phi ϕ(在每一步adaption之前都被初始化为0)进行拼接, ϕ \phi ϕ在内循环和训练过程中被更新; θ \theta θ只在外循环中被更新并且在任务间共享,所以在测试中固定。通过将 ϕ \phi ϕ初始化为0,网络和 ϕ \phi ϕ相关联的参数不会影响adaptation之前该层的输出。在第一次adaptation之后,他们将被用于调整网络剩余的部分以解决新的任务。
当使用全连接网络进行训练时,将 ϕ \phi ϕ加到第一层与输入进行拼接。
其他的conditioning方法也可以用于CAML,例如卷积网络,使用FiLM的feature-wise linear modulation方法,对feature map进行变换,给定 ϕ \phi ϕ和卷积层输出的M个feature map { h i } i = 1 M \{h_i\}_{i=1}^M {hi}i=1M,
F i L M ( h i ) = γ i h i + β FiLM(h_i) = \gamma_ih_i+\beta FiLM(hi)=γihi+β
γ , β \gamma,\beta γ,β都是context parameter的函数,使用全连接层 [ γ , β ] = ∑ k = 1 K θ k , i ( l , ϕ ) ϕ 0 , k + b [\gamma,\beta]=\sum_{k=1}^K\theta_{k,i}^{(l,\phi)}\phi_{0,k}+b [γ,β]=∑k=1Kθk,i(l,ϕ)ϕ0,k+b加上输出的恒等变换。
尽管可以用元学习学习初始化,但是固定的 ϕ 0 \phi_0 ϕ0作为初值已经足够。如果 θ k , i ( l , ϕ ) , ϕ 0 \theta_{k,i}^{(l,\phi)},\phi_0 θk,i(l,ϕ),ϕ0均通过学习得到,那么学习 ϕ \phi ϕ的初始化可以被归结为偏置参数,所以 ϕ 0 \phi_0 ϕ0可以被设置为固定的值