
今天看的这篇比较简单,是一篇来自 CVPR 2021 的小样本图像分类论文。 论文的标题是 Exploring Complementary Strengths of Invariant and Equivariant Representations for Few-Shot Learning,官方代码,Fork 了一份防删(看 Issue 的讨论,这个方法似乎很消耗显存,有时间试试好了)。
基本思想
这篇论文的工作在分类上属于最近比较常见的类别,即学习一个 better embedding。提出的方法也非常简单,一句话来概括就是用「多任务学习」的方式,把自监督学习中的 「学习不变性 Invariant」 和 「学习变性 Equivariant」 两个 「流派」 的损失函数整合起来,再加上标准的分类损失函数,一同学习一个厉害的特征提取器,来提升小样本任务的分类精度。另外作者还用到了一个叫做「多头自蒸馏」的方法进一步涨点,还挺神奇的。不过之前没接触过知识蒸馏,也不知道这个方法是作者发明的还是前人工作。
一句题外话,把不变性和变性损失用多任务学习整合这个想法我在前段时间看自监督学习论文的时候也想到了,不过一直还没有尝试… 唉,日常被自己菜哭😢。
方法
让我们跳过无聊的「编故事」环节,来看看本文提出的方法吧~
下图就是本文方法的网络架构图。其中这种对称的结构就是所谓的 教师 - 学生结构,右边的是教师网络(也就是旧模型),左边是学生网络(新模型),学生网络学习教师网络(这部分具体如何操作的我也不太理解,之后看完代码再回来补充吧~)。
因为教师和学生网络结构是一样的,所以只关注左边就好了。从图上可以看到,最左侧有
总之,这些样本会同时输入特征提取器网络
有监督分类
相关的 MLP 头是
。这个头把特征映射和 Softmax 为预测概率,然后计算交叉熵分类损失,文中称之为 。 变性 (Equivariant) 自监督
相关的 MLP 头是
。所谓变性(Equivariant) 自监督,就是意在让模型捕捉图像的变化。具体来说,因为有 种变换嘛,于是就用 one-hot 的方式给每个样本指定一个标签 ,其中 , 。图像特征输入 ,这个头把特征映射为 维预测概率,随后利用自动生成的自监督标签计算交叉熵分类损失,文中称这个损失为 。 不变 (Invariant) 自监督
相关的 MLP 头是
。所谓不变(Invariant) 自监督,就是让模型捕捉图像的变化中的不变性。作者在这里巧妙的使用了自监督学习中的对比学习 (Contrastive learning) 方法来实现。 头类似于对比学习中常用的投影头,主要是对特征进行降维。 如架构图所示,类似于 MoCo,作者用了一个 Memory Bank 来将负样本数量与批大小解耦,这部分的损失函数如下:
其中,
表示没有变换的原始图像的特征, 表示 Memory Bank 中 的旧的值。 定义为: 这个就是常规的 Contrastive Loss,注意作者还最大化了
和 的相似度,解释说这样能够使得训练稳定。 多头自蒸馏
这部分没有新的 MLP 头,损失定义如下:
其中
和 分别表示教师网络和学生网络,损失定义为他们输出的 KL 散度和,目的就是让学生网络学习教师的输出。注意这里由于不变(Invariant) 自监督中的 头输出的不是 softmax 概率,所以作者改成了 L2 损失(原因暂时不清楚,可能是工程经验或者是 KL 散度的性质决定的)。
整体的损失就是各部分损失加和。
实验结果
直接摆出 mini-IN 和 tiered-IN 的结果,在 inductive FSL 里面应该是 SOTA 吧。另外消融实验里面有一些有意思的实验,比如探讨不同的自监督方法的效果,有时间可以细看一下。
mini-IN:
tiered-IN:
- 本文标题:Daily Paper 01 - Exploring Complementary Strengths of Invariant and Equivariant Representations for Few-Shot Learning
- 本文作者:Tilden Ji
- 创建时间:2021-06-09 11:52:58
- 本文链接:https://itiandong.com/2021/daily-paper-01/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!