ICLR2022 | MAML==对比学习?

MAML IS A NOISY CONTRASTIVE LEARNER IN CLASSIFICATION

论文:[2106.15367] MAML is a Noisy Contrastive Learner in Classification (arxiv.org)

代码:

IandRover/MAML_noisy_contrasive_learner (github.com)

欢迎关注我的公众号:皮皮嬉。这里有关于few-shot的方方面面~

简介

MAML中inner loop和outer loop分别负责task-specific和meta-model-centric的学习。但其实二者是嵌套在一起的,其潜在学习目标是隐式的。

本文发现MAML类似于使用有监督对比目标函数的元学习器。

“对比”体现在query特征会趋近于与同类support特征,远离异类support特征。

(我们把网络分成特征提取器(encoder)和分类头(linear layer))

这个现象听起来挺显而易见的,但是作者从linear layer的参数更新角度出发分析了原因,发现linear layer的参数w在inner loop中包含了support data的特征,从而在outer loop时对query data特征造成影响。在此分析过程中,作者发现MAML会受到linear layer参数的随机初始化和任务间交互的干扰。 针对以上问题,本文提出了zeroing trick缓解上述问题。

论文最终的方法是简单的trick,但背后的理论分析非常有意思。

三个问题

ANIL方法的论文中提到在inner loop中,模型主要变化体现在linear layer(分类头)的参数,而不是特征提取器参数。这说明MAML已经学到了普适的特征表示,而在inner loop中MAML只需要通过改变linear layer参数使特征表示映射到当前任务的类别空间即可达到不错的效果。

关于ANIL可以看这里:

zhuanlan.zhihu.com/p/497287967

在ANIL论文基础上,本文进一步提出了以下问题:

Q1: MAML在哪种意义上引导了模型学习通用的特征表示?

A1: 在Inner Loop中冻结特征提取器的前提下,MAML在分类任务上等同于带噪声的有监督对比学习器。MAML能够学习得到通用的特征表示得益于其内在的对比学习特性。

Q2: 在学习通用表示过程中,inner loop和outer loop是如何协同工作的?

A2: Inner和outer loop是序列化实现带噪声的对比学习的。在Inner loop中,support data的特征能够被linear layer参数w记忆。在outer loop中,query data的softmax输出包含了support特征和query特征的内积。

Q3: supprt data和query data的角色分别是什么?二者是如何互相影响的?

A3: query特征会趋近于与同类support特征,远离异类support特征。


从参数更新看support data和query data间的关系

假设\phi是特征提取器参数,w是linear layer的参数,损失函数为多分类交叉熵损失。

inner loop中对support data s的损失函数是:

L_{\left{\varphi^{i}, \mathbf{w}^{i}\right}, S_{n}}=\underset{(s, t) \sim S_{n}}{\mathbf{E}} \sum_{j=1}^{N_{\text {way }}} \mathbf{1}{\mathbf{j}=\mathrm{t}}\left[-\log \frac{\exp \left(\phi^{i}(s)^{\top} \mathbf{w}{\mathbf{j}}^{i}\right)}{\sum_{k=1}^{N_{\text {way }}} \exp \left(\phi^{i}(s)^{\top} \mathbf{w}_{\mathbf{k}}^{i}\right)}\right] \

同理outer loop中对query set q的损失函数是:

L_{\left{\varphi^{N_{s t e p}}, \mathbf{w}^{N_{s t e p}}\right}, Q_{n}}=\underset{(q, u) \sim Q_{n}}{\mathbf{E}}\left[-\log \frac{\exp \left(\phi^{N_{s t e p}}(q)^{\top} \mathbf{w}{\mathbf{u}}^{N{s t e p}}\right)}{\sum_{k=1}^{N_{\text {way }}} \exp \left(\phi^{N_{s t e p}}(q)^{\top} \mathbf{w}{\mathbf{k}}^{N{\text {step }}}\right)}\right] \

简洁起见,将\frac{\exp \left(\phi(s)^{\top} \mathbf{w}{\mathbf{k}}^{0}\right)}{\sum{j=1}^{N_{\text {way }}} \exp \left(\phi(s)^{\top} \mathbf{w}_{\mathbf{j}}{ }^{0}\right)}记为s_k,注意这里表示模型输出的第k个元素。同理也有q_k= \frac{\exp \left(\phi(q)^{\top} \mathbf{w}{\mathbf{k}}{ }^{1}\right)}{\sum{j=1}^{N_{w a y}} \exp \left(\phi(q)^{\top} \mathbf{w}_{\mathbf{j}}^{1}\right)}。(这里假设N_{step}=1N_{batch}=1)。

Inner loop update of the linear layer

在inner loop更新linear layer参数w时,其实等同于将support data的特征融合进了w,如下式。

\mathbf{w}{\mathbf{k}}^{1}=\mathbf{w}{\mathbf{k}}^{0}-\eta \frac{\partial L_{\left{\varphi, \mathbf{w}^{0}\right}, S}}{\partial \mathbf{w}{\mathbf{k}}^{0}}=\mathbf{w}{\mathbf{k}}^{0}+\eta \underset{(s, t) \sim S}{\mathbf{E}}\left(\mathbf{1}{\mathbf{k}=\mathrm{t}}-\mathrm{s}{k}\right) \phi(s) \

Outer loop update of the encoder

Outer loop中会基于inner loop更新的w_k^1对meta model中的linear layer进行更新。

\mathbf{w}{\mathbf{k}}^{\prime 0}=\mathbf{w}{\mathbf{k}}^{0}-\rho \frac{\partial L_{\left{\varphi, \mathbf{w}^{1}\right}, Q}}{\partial \mathbf{w}{\mathbf{k}}{ }^{1}}=\mathbf{w}{\mathbf{k}}^{0}+\rho \underset{(q, u) \sim Q}{\mathbf{E}}\left(\mathbf{1}{\mathbf{k}=\mathrm{u}}-\mathrm{q}{k}\right) \phi(q) \

这里仅给出基于first-order maml推导的结论,推导过程即second-order maml可以参考论文附录。

outer loop也有类似的观察,即query特征会加权地融入linear layer,权重取决于模型的输出((\mathbf 1)_{\mathbf k={\text u}}-{\text q_k})

上面两个公式给出了两个观察。(1)任务内,outer loop中的query特征会因为linear layer的参数融合了support特征而受到support特征的影响;(2)任务间,因为outer loop是跨任务的更新,所以不同任务中的query特征都会融入到linear layer中,论文中称这种现象是“跨任务干扰”。

Outer loop update of the encoder

在仅在outer loop更新encoder的前提下(可参考ANIL论文),

根据链式法则,encoder参数的更新为:

\frac{\partial L_{\left{\varphi, \mathbf{w}^{1}\right}, q}}{\partial \phi(q)}=\sum_{j=1}^{N_{\text {way }}}\left(\mathrm{q}{j}-\mathbf{1}{\mathrm{j}=\mathrm{u}}\right) \mathbf{w}{\mathbf{j}}^{0}+\eta \underset{(s, t) \sim S}{\mathbf{E}}\left[-\left(\sum{j=1}^{N_{\text {way }}} \mathrm{q}{j} \mathrm{~s}{j}\right)+\mathrm{s}{u}+\mathrm{q}{t}-\mathbf{1}_{\mathbf{t}=\mathrm{u}}\right] \phi(s) \

观察到encoder的更新处处蕴含着support data特征和query data特征二者间的关系。

MAML是带噪声的对比学习器

对于first-order maml,其encoder的损失函数可以写为:

L_{\left{\varphi, \mathbf{w}^{1}\right}, q}=\sum_{j=1}^{N_{\text {way }}} \underbrace{\left(\mathbf{q}{j}-\mathbf{1}{\mathrm{j}=\mathrm{u}}\right) \mathbf{w}{\mathbf{j}}^{0 \top}}{\text {stop gradient }} \phi(q)+\eta \underset{(s, t) \sim S}{\mathbf{E}} \underbrace{\left[-\sum_{j=1}^{N_{\text {way }}} \mathrm{q}{j} \mathrm{~s}{j}+\mathrm{s}{u}+\mathrm{q}{t}-\mathbf{1}{\mathrm{t}=\mathrm{u}}\right] \phi(s)^{\top} \phi(q)}{\text {stop gradient }} \

对于second-order maml,其encoder的损失函数可以写为:

对比上面二者,区别在于stop gradient位置。

我们把损失函数的第一项称为interference term,第二项称为noisy contrastive term,-\sum_{j=1}^{N_{\text {way }}} \mathrm{q}{j} \mathrm{~s}{j}+\mathrm{s}{u}+\mathrm{q}{t}-\mathbf{1}_{\mathrm{t}=\mathrm{u}}为contrastive coefficients。

Understanding the Interference term

这里不要忘了\text q_j \in [0,1]是softmax输出。

那么interference term的缺点是什么呢?

(1)如果w^0是随机初始化的(MAML的实现就是随机初始化的),那么在训练开始时query data特征的优化就会不稳定,优化方向会“随机”。

(2)因为w^0同时蕴含了其他任务的query data特征,所以这种跨任务的信息会对当前任务的fast adaptation造成影响,这种印象在训练和测试阶段都存在。

Understanding the noisy contrastive term

在第二项noisy contrastive term中,当t=u时,即support data和query data同类时,contrastive coefficients是小于零的。因为此时contrastive coefficients可以推到为:

-\sum_{j=2}^{N_{\text {way }}} \mathrm{q}{j} \mathrm{~s}{j}-\left(1-\mathrm{q}{1}\right)\left(1-\mathrm{s}{1}\right)<0 \

这个时候目标函数会使同类的support data和query data特征相互靠近。

但是,当t \ne u时,contrastive coefficients无法保证非负。正因为此,才会说MAML是带噪声的对比学习器。

Zeroing trick

上一节我们介绍了encoder损失函数的两项,并总结MAML为带噪声的对比学习。

Zeroing trick通过在每个outer loop后将\text w^0置0去掉encoder损失函数的interference term去掉,并将 noisy contrastive term变成无噪声版本。

通过zeroing trick,first-order和second-order maml的outer loop损失分别变为:

first-order:

L_{\left{\varphi, \mathbf{w}^{1}\right}, q}=\eta \underset{(s, t) \sim S}{\mathbf{E}}\left(\mathrm{q}{t}-\mathbf{1}{\mathrm{t}=\mathrm{u}}\right) \phi(s)^{\top} \phi(q) \

second-order

L_{\left{\varphi, \mathbf{w}^{1}\right}, q}=\eta \underset{(s, t) \sim S}{\mathbf{E}} \underbrace{\left(\mathrm{q}{t}-\mathbf{1}{\mathrm{t}=\mathrm{u}}\right)}_{\text {stop gradient }} \phi(s)^{\top} \phi(q) \

这篇文章的方法和Unicorn-maml有相通之处,一个是置0,一个是取全局均值来初始化。

实验论证

support和query特征间相似度变化

这个相似度关系图大家应该比较熟悉,这里是对比了三种不同的linear layer参数初始化方式的结果,结果也比较清楚。

测试时也要用zeroing trick

测试时,linear layer的参数也蕴含了训练集query data的特征信息,也被该论文视为cross-task干扰,所以作者认为在testing时也要用zeroing trick。上图也验证了作者的思路。

使用zeroing trick后inner loop只更新一个step足够

如果不使用zeroing trick,更多的inner loop update steps会带来更好的结果。这一结论与Unicorn-maml论文结论一致。关于Unicorn-maml可以移步这里:

HOW TO TRAIN YOUR MAML TO EXCEL IN FEW-SHOT CLASSIFICATION

zhuanlan.zhihu.com/p/497287967

但是如果使用zeroing trick之后,一个step反而达到了最好的结果。

这一点和Unicorn-maml一起讨论很有意思。

我们说zeroing trick是在每个outer loop后将linear layer的参数置0,是在把干扰信息消除。

我们不妨可以猜测,之所以zeroing trick只需一个step,是因为它使maml不再需要额外的step去消除干扰。

Unicorn-maml在每个outer loop后把linear layer的参数取平均值,相当于在弱化干扰项。也可以用更少的step达到更优的效果。

二者间的共同点对我启发很大,interesting。

Zeroing trick在影响什么?

这个实验太棒了~

如果我们把linear layer的初始化参数的norm减小,testing性能会上升,而zeroing trick就是在每个outer loop后把参数的norm降到最小(0)。

最后

把非常非常清晰的框架图和poster放到最后了~

也很推荐大家看下作者的medium,记录了文章idea过程,也有上文提到的关于ANIL的讨论。

ICLR 2022 Paper Explained – MAML is Noisy Contrastive Learner | Medium

大佬的文章可真好看。

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYtO6viM' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片