核心思想

超简单MAML阐述
模型初始化参数θ\theta,从给定的数据集p(T)p(T)中抽样不同的TiT_i,每个TiT_i包含训练集和测试集,保证训练集和测试集都是一个类别(比如训练集是猫和狗,测试集也应该是猫和狗)。

在不同的任务TiT_i上,利用训练集对模型初始化参数θ\theta 进行一次或多次梯度更新,获得新的模型参数θ\theta^{'}.然后利用测试集,获得在该模型参数下的损失函数的方向LTi(fθ)\nabla L_{T_i}(f_{\theta^{'}})

之后将模型初始化参数θ\theta沿不同任务TiT_i获得的损失函数方向LTi(fθ)\nabla L_{T_i}(f_{\theta^{'}}),进行更新,从而得到新的模型参数θ\theta.

这个模型参数具有照顾所有任务的功能,虽然不是某个任务的最佳解,但是一定能通过少数的样本,达到最佳解,从而达到快速学习的效果。

核心思想的图像演示

超简单MAML阐述

两个任务下,模型参数位置的比较(为什么模型应该这么更新?)

超简单MAML阐述
如上图所示,深绿色代表任务1的损失,浅绿色代表任务2的损失。如果我们的模型参数θ\theta 选择为左图的位置,虽说达到了任务1的最优解,但是忽略了任务2的最优解。但用少量的样本进行梯度更新时,我们可以发现,任务2的梯度下降方向指向了一个极小值点,而这个极小值点并不是任务2的最优解,那么此时模型的学习能力不足,没有办法获得最优解,于是这种考虑单一任务最优解的方式不可取。

那么,我们可以看一下右图θ\theta 选取的位置,虽然它的位置并不是任务1和任务2的最优位置,但是却提供了无限的可能。当提供给模型少量的样本时,我们可以发现,任务1和任务2的下降方向指向了各自任务的最优解,那么此时模型就具备了快速学习的能力。

综上所述,模型参数的选取并不是某个任务的最优解,而是,模型参数能够照顾所有的任务的全局解,使得模型参数进行参数更新的时候,能够指向各自任务的最优解。而这个模型参数位置的选择,就是利用不同任务的梯度下降方向,详情请看上面。

模型的算法

超简单MAML阐述

不同K下的MAML和预训练的比较

超简单MAML阐述
从上图可以看出预训练的效果比MAML整体要差。MAML中K=10,一次梯度更新时最佳。计算量也不会很大。
超简单MAML阐述

MAML的效果(N-way:n个类别;K-shot:每个类别K个样本)

超简单MAML阐述
注:图1和图2引用知乎:南有乔木。

相关文章: