Rethinking Few-Shot Image Classification: a Good Embedding Is All You Need

该文重新审视小样本图像分类,发现优秀的嵌入模型比复杂的元学习算法更有效。作者提出一个预训练的EmbeddingModel,通过整合元训练任务并进行优化训练,然后利用知识蒸馏提升模型性能。在多个小样本数据集上,这种方法取得了最先进的结果。文章强调了特征提取的重要性,并通过自蒸馏方法强化了模型的泛化能力。
摘要由CSDN通过智能技术生成

Rethinking Few-Shot Image Classification: a Good Embedding Is All You Need(ECCV)

Abstract

​ 目前针对元学习的研究主要集中在设计一个元学习算法,尝试从少量样本中获得样本的元知识,从而将元知识泛化应用到新的任务中。小样本学习是元学习中广泛应用的重要基准(benchmarks)之一。在本文中,作者发现一个性能好的embedding model要比复杂的元学习算法更加高效。所以文章从如何获得较优性能的Embedding Model角度出发,一方面通过优化embedding model的训练过程,另一方面引入知识蒸馏(Knowledge distillation)思想,通过多次迭代进一步优化Embedding Model的特征提取能力。文章在现有主流FSL的数据集中,均取得SOTA的效果。

Introduction
  • 使用元学习的思想进行小样本学习是目前常用的方法,针对小样本分类任务,最新的研究提出的一个问题:是元学习算法本身还是学习到的表征负责快速适应测试任务?
    • 《Rapid learning or feature reuse? towards understanding the effectiveness of maml》指出特征重用是快速适应的主要因素。
    • 基于微调的方法取得的效果只比基于元学习方法效果差一点,基于微调的方法利用的就是测试数据集的信息。
  • 主要贡献:提出一种简单有效的小样本学习的基线方法,同时利用自蒸馏的方法提升了基线方法的效果。
Method
问题定义

​ 一个元训练任务集被定义为 T = { D i t r a i n , D i t e s t } i = 1 I \Tau = \{D_i^{train},D_i^{test}\}_{i=1}^{I} T={Ditrain,Ditest}i=1I​​​​​​​​,二元组 ( D i t r a i n , D i t e s t ) (D_i^{train},D_i^{test}) (Ditrain,Ditest)​​​​​​ 描述了一个任务的训练集和一个测试集,每个集合包含少量样本。​​​​,训练样本 D t r a i n = { ( x t , y t ) } t = 1 T D^{train} = \{(x_t,y_t)\}_{t=1}^{T} Dtrain={(xt,yt)}t=1T​​​​​ 和测试样本 D t e s t = { ( x q , y q ) } q = 1 Q D^{test} = \{(x_q,y_q)\}_{q=1}^{Q} Dtest={(xq,yq)}q=1Q ​​​​​​​从同一个分布中抽取。​​

​ 一个基础学习器 A A A ,定义为 y ∗ = f θ ( x ∗ ) , ( ∗    d e n o t e s   t   o r   q ) y_* = f_\theta(x_*),(*\ \ denotes \ t \ or \ q) y=fθ(x),(  denotes t or q) ,在 D t r a i n D^{train} Dtrain上进行训练并且在 D t e s t D^{test} Dtest上进行预测,由于 x ∗ x_* x的高维度特征,基础学习器 A A A 受高方差的影响较大。因此,训练样本和测试样本会通过一个嵌入模型 Φ ∗ = f ϕ ( x ∗ ) \Phi_* = f_{\phi}(x_*) Φ=fϕ(x)​​ ​​​映射到一个特征空间中。假定训练基础学习器的时,嵌入模型是固定的,那么基础训练器可以定位为如下形式( L L L 为损失函数, R R R 为正则项):
在这里插入图片描述
​ 元学习算法的目标是学习一个好的嵌入模型,从而最小化基础学习器在任务分布上的平均测试误差( θ = A ( D t r a i n ; ϕ ) \theta = A(D^{train}; \phi) θ=A(Dtrain;ϕ)​)。
在这里插入图片描述
​ 一旦元训练结束,模型的性能通过一个元测试集 S = { ( D j t r a i n , D j t e s t ) } j = 1 J S = \{(D_j^{train},D_j^{test})\}_{j=1}^{J} S={(Djtrain,Djtest)}j=1J​​​ 进行评估。
在这里插入图片描述

基线方法

​ 元训练的目的是学一个可以泛化到其他新任务上的可迁移嵌入模型 f ϕ f_{\phi} fϕ​​​​​ ,本文提出一个生成强大嵌入的预训练模型。

  • 元训练阶段,将元训练集中的任务合并成为单个任务 D n e w D^{new} Dnew​​ :​

在这里插入图片描述
D i t r a i n D_i^{train} Ditrain 是来自 T \Tau T​​ 的任务​,于是嵌入模型目标定义为如下形式( L c e L^{ce} Lce 为交叉熵函数):
在这里插入图片描述
具体过程如下图所示:
在这里插入图片描述

  • 元测试阶段,如下图所示
    在这里插入图片描述
    ​ 对于一个从元测试集抽取的任务 ( D j t r a i n , D j t e s t ) (D_j^{train},D_j^{test}) (Djtrain,Djtest)​​​​​​,我们在 D j t r a i n D_j^{train} Djtrain​​​ 上训练一个基础学习器,基础学习器被实例化为多元逻辑回归器(线性模型)。它的参数 θ = { W , b } \theta = \{W, b\} θ={W,b}​​​ 包含一个权重参数和一个归纳偏置:
    在这里插入图片描述
    ​ 本文也比较了其他基础学习的效果,比如利用欧式距离或余弦距离的最近邻分类器。我们模型关键的不同点为:元测试阶段嵌入模型的参数是来自元训练阶段的。在元测试阶段,每个任务的基础训练器参数都是会重新初始化的。
自蒸馏方法

​ 知识蒸馏是一种将嵌入在模型集合中的知识转移到单个模型,或者从较大的教师模型转移到较小的学生模型的方法。本文没有直接使用嵌入进行测试,而是将嵌入模型中的知识提炼成具有相同架构的新模型。在训练得到一个嵌入模型后,作者进一步对模型 ϕ \phi ϕ 进行自蒸馏,生成新的嵌入模型 ϕ ′ \phi^{'} ϕ (最小化新模型的交叉熵损失以及预测和软目标预测之间的KL散度。):

在这里插入图片描述
将Born-again的策略应用于知识蒸馏,序列化生成多代,当前模型由前一代模型知识迁移生成:
在这里插入图片描述

Experiments

​ 在四个小样本图像识别的数据集(mninImageNet, tiered-ImageNet, CIFAR-FS, FC100)上进行了测试:
在这里插入图片描述
在这里插入图片描述
​ 自蒸馏方法的测试
在这里插入图片描述

Thoughts

​ 这篇文章进一步的重新思考了小样本分类的问题本质,提出了训练一个性能好的embedding model起到非常关键的作用。所以将每个task中原本的train数据部分整合成一个大的数据集,再用这个新的数据集去训练Embedding Model,使得这个Embedding Modell具有一般分类任务的特征提取性能。接着利用提取的特征为每个task拟合不同的线性分类器。和fine-turn方法不同的,文章并没有利用新的样本重新调整Embedding Model的参数,而是让其保持不变,而是针对各任务的不同对象,拟合不同的线性分类器。所以如何提取出样本中广泛的、基础的,并能拟合更具代表性的特征,是小样本学习的关键。也就是如图人类在面对没有见过的物体时,会利用已有的知识来描绘这个物体,所以只需少量的样本,人类就能很快能区分这个物体。因此相比其他元学习的算法,这篇文章用更大的数据训练Embedding Model,得到的特征更具代表性。

​ 进一步,根据知识蒸馏思想,作者也提出了对Embedding Model进行自蒸馏迭代,使得Embedding Model学到的特征更加的凝练。实验结果也证明加入自蒸馏后模型性能有了较大的提升。

参考:https://www.pianshen.com/article/85011002670/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值