当前位置: 代码迷 >> 综合 >> 论文阅读:A New Meta-Baseline for Few-Shot Learning
  详细解决方案

论文阅读:A New Meta-Baseline for Few-Shot Learning

热度:43   发布时间:2023-12-29 04:37:25.0

思维导图

基本概念:

(1) meta-learning

meta-learning即元学习,也可以称为“learning to learn”。常见的深度学习模型,目的是学习一个用于预测的数学模型。而元学习面向的不是学习的结果,而是学习的过程。其学习的不是一个直接用于预测的数学模型,而是学习“如何更快更好地学习一个数学模型”。

举一个现实生活的例子。我们教小朋友读英语时,可以直接让他们模仿apple、banana的发音。但是他们很快又会遇到新的单词,例如strawberry,这是小朋友就需要重新听你的发音,才能正确地读出这个新单词。我们换一种方式,这一次我们不教每个单词的发音,而是教音标的发音。从此小朋友再遇见新单词,他们只要根据音标,就可以正确地读出这个单词。学习音标的过程,正是一个元学习的过程。

在深度学习中,已经被提出的元学习模型有很多,大致上可以分类为learning good weight initializations,meta-models that generate the parameters of other models 以及learning transferable optimizers。其中MAML属于第一类。MAML学习一个好的初始化权重,从而在新任务上实现fast adaptation,即在小规模的训练样本上迅速收敛并完成fine-tune。

(2) model-agnostic

model-agnostic即模型无关。MAML与其说是一个深度学习模型,倒不如说是一个框架,提供一个meta-learner用于训练base-learner。这里的meta-learner即MAML的精髓所在,用于learning to learn;而base-learner则是在目标数据集上被训练,并实际用于预测任务的真正的数学模型。绝大多数深度学习模型都可以作为base-learner无缝嵌入MAML中,而MAML甚至可以用于强化学习中,这就是MAML中model-agnostic的含义。

(3) N-way K-shot

N-way K-shot是few-shot learning中常见的实验设置。few-shot learning指利用很少的被标记数据训练数学模型的过程,这也正是MAML擅长解决的问题之一。N-way指训练数据中有N个类别,K-shot指每个类别下有K个被标记数据。

1、介绍 

首先这篇论文提出了一种元基线 (Meta-Baseline)方法,通过在所有基类(base classes)上预先训练分类器,并在基于最近质心的少样本(few-shot)分类算法上进行元学习,实验结果大大优于目前最先进的方法(sota)。

小样本学习(Fei-Fei等人,2006年;Vinyals等人,2016年)就被提出,当时因为直接学习大量的参数与很少的样本是非常具有挑战性的,而且很有可能导致过拟合,一个实际的解决是应用迁移学习。我们可以先在有足够样本的公共类(基类)上训练深度模型,然后将模型转移到仅基于少数几个例子的新类上学习。

元学习框架的小样本学习遵循学会学习的关键思想。具体来说,它从属于基类的训练样本中提取少量的学习任务,并优化模型以在这些任务上表现良好。一个任务通常采用N-way和K-shot的形式,其中包含N个类,每个类中具有K支持样本(训练集)和Q查询样本(验证集)。(N-way指训练数据中有N个类别,K-shot指每个类别下有K个被标记数据。)

首先该文提出了一个分类器-基线Classififier-Baseline),在基类上预先训练一个分类器来学习视觉表示,然后删除最后一个依赖于类的全连接(FC)层。具体做法:给定一个具有少量样本的新类,我们计算给定样本的平均特征,并利用特征空间中的余弦距离,用最近质心对查询样本(验证集)进行分类 即余弦最近质心。 这一过程也可以看作是估计新类的最后FC权重,但不需要为新类训练参数。(就这一个分类器-基线的方法就优于许多的sota)

后来作者提出用元学习改善分类器-基线,于是提出Meta-Beaseline。 在Meta-Baseline中,我们使用预先训练的分类器-基线初始化模型,并使用余弦最近轮廓度量执行元学习,这是Clssififier-Baseline中的评估度量 。(一种基于度量的元学习)

 实验表明,我们观察Meta-baseline可以进一步提高分类器-基线(Clssififier-Baseline)的性能,如图1a所示,

此外还观察到训练过程中测试性能下降,在元学习背景下评估了两种泛化类型:

  1. 基类泛化;是指基类中不可见数据对小样本分类任务的泛化,它遵循泛化的共同定义,但我们将其重命名为 澄清;
  2. 新类泛化;表示从新类中的数据中对小样本分类任务的泛化,这进一步表明了从基础类到新类的可转移性。

虽然Meta-Baseline正在改进基类泛化,但它的新类泛化在降低,这表明:

  1. 在元学习阶段可能是一个客观的差异,改进基类泛化可能导致更糟糕的新类泛化。
  2. 由于模型是在元学习之前预训练,分类前训练可能为元学习模型提供了额外的可转移性。
  3. 当新类更类似于基类时元学习相对于分类符-基线的优势更加明显。

贡献如下:

  • 提出了一个简单的Meta-Baseline,它兼具分类预训练和元学习的优点,并且在很大程度上优于sota。
  • 观察到基类泛化和新类泛化之间的不一致性,这可能会回顾元学习中要解决的关键挑战,用于小样本分类。
  • 研究了数据集方面(类相似性、尺度)和骨干方面(模型大小)的因素如何影响元学习相对于分类器-基线的优势。

2、相关工作

用于小样本学习的元学习架构,大致可以是分为三种主要类型:

  1. 基于内存的方法:关键思想是训练一个具有记忆的元学习者来学习新的概念。(LSTM)
  2. 基于优化的方法:想法是在元学习框架内将优化过程与支持集区分开来。
  3. 基于度量的方法:除了明确考虑动态学习过程外,基于度量的方法元学习了特征空间中具有度量的深度表示(匹配网络、原型网络)

3、方法

3.1 问题定义

小样本分类:给定一个基类Cbase的标记数据集,每个类中有大量的图像,目标是学习新类Cnovel中每个类中有几个样本的概念,其中Cbase∩Cnovel=?。(N-way指训练数据中有N个类别,K-shot指每个类别下有K个被标记数据)在一个N类K样本的小样本任务中,支持集包含每个类中具有K样本的N个类,查询集包含相同的N个类,每个类中有Q个样本,其目标是将查询集中的N个×Q未标记的样本正确分类为N个类。

3.2 分类器-基线

分类器-基线是指在所有基类上训练一个具有分类功能的分类器,并使用余弦最近质心方法执行小样本任务。具体来说,我们在所有具有标准交叉熵损失的基类上训练一个分类器,然后删除它的最后一个FC层,得到编码器fθ,将输入映射到特征空间。给定一个具有支持集S的小样本任务,让Sc表示c类中的小样本,我们计算平均特征Wc作为c类的质心:

然后,对于小样本任务中的查询样本x,我们预测样本x属于c类的概率作为样本x的特征向量与c类质心之间的余弦相似度:

其中<.,.>表示两个向量的余弦相似度。 请注意,Wc也可以看作是新FC层对新概念的预测权重。

3.3. Meta-Baseline

一般来说,Meta-Baseline包含两个训练阶段。

第一阶段是预训练阶段,即训练分类器-基线法(即在所有基类上训练分类器,并删除其最后一个FC层以获得fθ)。

第二阶段是元学习阶段,在元学习阶段同样使用基类中的数据分成多个task,在每个task中对support-set用fθ编码,然后用(1)式求每个类的平均特征表示。同时对query-set也进行编码操作,利用(2)式余弦相似度求query-set和support set之间的距离,使用softmax进行分类。

我们在分类器-基线评估算法上对模型进行优化。具体来说,给定预先训练的特征编码器fθ,我们从基类中的训练数据中采样N类K样本任务(具有N×Q查询样本)

为了计算每个任务的损失,在支持集中,我们在方程1中计算定义的N个类的质心,然后用于方程2中计算定义的查询集中每个样本的预测概率分布。损失是由p和查询集中样本的标签计算的交叉熵损失。 请注意,我们将每个任务视为训练中的数据点,每批可能包含多个任务,并计算平均损失。

图2。 分类器-基线和Meta-基线。 在Classifier-Baseline中,我们在所有基类上预先训练一个分类模型,并删除其最后一个FC层以获得编码器fθ。 给定一个小样本任务,我们计算了支持集中每个类的样本的平均特征,然后用具有余弦相似度的最近质心方法对查询集中的样本进行分类。 在Meta-Baseline中,我们进一步选择在其评估算法上对一个预先训练的分类器-基线进行了成像,并引入了一个额外的参数τ来缩放余弦相似度。

 缩放余弦相似度

由于余弦相似度具有[-1,1]的值范围,当它用于计算logits时,在训练过程中应用Softmax函数之前,对该值进行缩放是非常重要的。(可以理解logits ——【batchsize,class_num】是未进入softmax的概率,一般是全连接层的输出,softmax的输入https://www.zhihu.com/question/60751553)

相比于(2)添加了一个可学习参数τ。

4、实验

4.1 数据集

miniImageNet数据集(Vinyals等人,2016年)是小样本学习的共同基准。 它包含从ILSVRC-2012抽样的100个类(Russakovsky等人,2015年),然后将其随机分为64、16、20个类,分别作为训练、验证、测试集。 每个类包含600个大小为84×84的图像。 我们遵循(Lee等人,2019年)的发布。

tieredImageNet(Ren等人,2018年)是最近提出的另一个具有更大规模的通用基准。 它是ILSVRC-2012的一个子集,包含来自34个超级类别的608个类 然后将其分成20、6、8个超级类别,分别产生351、97、160个类作为培训、验证、测试集。 图像大小为84×84。 请注意,此设置更具挑战性,因为基类和新类来自不同的超级类别。

我们进一步提出了一个新的数据集Image Net-800来测试我们的方法,它是从ILSVRC-2012年1K类中派生出来的,通过随机分割800个类作为基类,200个类作为新类。这个基类包含原始训练集中的图像,新类包含原始验证集中的图像。 我们提出了这个数据集,用于更大规模的实验,并根据图像分类任务制定设置标准(He等人,2016年)。注意,在这个数据集中没有验证拆分,因为类差异可能导致客观差异,如我们的实验所示,根据验证集选择模型可能会为模型比较带来额外的偏差。

4.2. 实现细节

我们在miniImageNet 和 tieredImageNet上使用ResNet-12,我们使用ResNet-18,ResNet-50关于ImageNet- 800

对于训练前阶段,我们使用动量0.9的SGD优化器,学习速率从0.1开始,衰减因子为0.1。

在MiniImageNet上,我们训练了100个epochs在4个GPU上的批处理大小为128,学习速率在90epochs衰减。

tieredImageNet上,我们在4个GPU上训练了120个批处理大小为512的epochs,学习速率在40和80 epoch衰减。

在Image Net-800上, 我们在8个GPU上训练了批量大小为256的90个epochs,学习速率在第30和60个时代衰减。

ResNet-12的重量衰减为0.0005,ResNet-18或ResNet-50的重量衰减为0.0001。

对于元学习阶段,我们使用动量0.9的SGD优化器,固定的学习速率为0.001。 批次大小为4,即每个训练批包含4个小样本任务来计算平均损失。 余弦缩放参数τ初始化为10。

4.3. 标准基准的结果

按照标准设置,我们在miniImageNet 和 tieredImageNet上进行实验,结果分别如表1和表2所示。

表1。 比较以前的作品在miniImageNet。 平均5类精度(%)报告为95%置信区间。#参考应用DropBlock(Ghiasi等人,2018年)和标签平滑。

(假设现在是95%的置信水平( 95%也被称为置信水平,是统计中的一个习惯,可以根据应用进行调整),每个从总体中抽出的样本都可以求出一个95%的置信区间,且不同样本求出的置信区间是不同的,但随着抽出的样本次数的增加,例如抽100次,得到100个样本,每个样本都对应一个置信区间,那么100次抽样求出的100个置信区间有95个包含真实的总体均值。
原文链接:https://blog.csdn.net/pannn0504/article/details/82455934)

 为了进一步证实这些改进不仅来自于对N-wayK-shot任务的专业化,我们构建了单类K-shot任务,用于比较Classifier-Baseline和Meta-Baseline。 在此任务中,支持集包含来自类c的K个样本,而查询集包含两个不同的类c和c0,每个类中有K个样本,将AUC(ROC曲线下的面积)分数计算为查询样本的二进制分类性能。在表3中,我们观察到元学习的改进仍然存在,这表明元学习阶段对小样本学习的有效性。

 我们在一个大规模的数据集上进一步评估我们的方法Image Net-800。在这个大规模的实验中,我们发现冻结批量归一化层(Ioffe&Szegedy,2015)是有益的,结果如表4所示。从结果中,我们观察到,在这个大型数据集中,很大程度上单样本Meta-基线改进了分类器-基线,虽然它没有提高5样本的性能。

4.4. 为什么测试性能下降很快?

尽管Meta-基线在分类器基线上有所改进,但我们观察到在元学习阶段测试性能迅速下降。 虽然这种现象的一个常见假设是过拟合,我们观察到,这个问题似乎没有在更大的数据集上得到缓解。 为了进一步定位问题,我们提出了评估基类泛化和新类泛化的方法。基类泛化是通过从基类中看不见的图像中采样任务来度量的,而新类泛化是指从新类中采样的小样本任务的性能。

图3展示了miniImageNet 和 tieredImageNet上Meta-Baseline的训练过程。  我们观察到,在元学习阶段,当基类泛化性能增加时,表明模型对其目标的学习更好,新类泛化性能迅速开始下降。我们还对Image Net-800数据集的实验进行了类似的观察,如图1b所示。  这表明学习成绩的下降很可能是元学习阶段的客观差异造成的,即元学习模型在基类上迅速变得特定,这对新类有负面影响。

4.5. 预训练的重要性

从另一个方面,根据我们对性能下降的观察,我们假设预先训练的分类器可以在元学习阶段提供从基类到新类的额外可转移性。为了证实这一假设,我们从零开始训练Meta-Baseline,并将其与预训练相比。

在Mini-imagenet上,我们从零开始训练Meta-Baseline,并选择具有峰值新的小样本分类性能的周期,用于1样本和5样本,以及它们相应的基类泛化性能。 我们将所选择的周期与从Meta-Baseline中选择的训练周期与预训练进行了比较,如表5所示。 从这个表,我们观察到,虽然从零开始训练的Meta-Baseline实现了更高的基类泛化,但与具有预训练的Meta-Baseline相比,它们的新类泛化要低得多。

4.6 继承一个好的度量的重要性

在原型网络中(Snell等人,2017年),他们建议使用平方欧氏距离作为元学习目标。我们进行了用平方欧氏距离代替余弦相似度的实验。为了得到一个公平的比较,我们还通过添加具有适当初始化值0.1的缩放参数τ来改进它们的方法。结果见表6。 注意,分类器-基线(欧几里德)是指在预训练保持不变的情况下,用平方欧几里德距离来评估分类器-基线。我们观察到余弦距离是具有预训练的Meta-Baseline的更好的选择。 一个可能的原因是预先训练的表示更好地执行基于余弦相似度的小样本分类,当Meta-基线使用与分类器-基线中的好度量一致时, 它可以更好地重新使用预先训练的分类器中的表示,具有更强的可转移性,因为需要的更改较少,可转移性下降较少。

4.7. 我们什么时候需要元学习?

为了进行消融研究来回答这个问题,我们从tieredImageNet构造了四个变体,它们的概述如表8所示。 具体来说,全层指的是初始化通过对tieredImageNet中的类打乱,并将类重新分割成训练、验证和测试集。  小层次和小缓冲分别由全层次和全缓冲构成,它们的训练集是通过随机选择64个类,每个类中有600幅图像来构造的全套训练集,尽管验证集和测试集保持不变。

 一些影响因素:

1、类相似性。

基于我们的观察,在我们的实验中,基类泛化总是在改进的,如果新类与基类足够相似,则新类泛化s 也应该继续增加。 因此,我们推断类相似性应该是影响元学习是否改善分类器-基线的最重要因素之一。 从表7中,我们可以看到,从小层次到小缓冲,从全层次到全缓冲,元学习阶段实现的改进变得更大,

2、数据集规模。

表7中另一个有趣的现象是,从微型到全级,从微型到全缓冲,当数据集的规模变大时,元学习的改进显著降低。 虽然改进的减少可能部分是由于较高的性能导致改进的空间较小,另一个潜在的原因可能是,在较大的数据集上预先训练的分类器学习具有更强可转移性的表示,而元学习阶段则倾向于破坏它。

3、样本数量。

从我们在表1,2,4,7中的实验结果中,我们观察到,在5次样本中元学习阶段的改善远小于1次样本的改善。 我们假设 这是因为当有更多的样本时,取平均特征成为估计分类器-基线中的类中心的一个更强的选择,因此元学习的优势变得更小。4

4、主干大小。

在图1a中,我们还注意到分类器基线(classifier-baseline)优于从零开始的元学习(meta-learning from scratch),除了浅主干ConvNet-4,表明深层骨干(ResNet)也可能改变方法的性能。

5. Meta-Dataset的其他结果

Meta-Dataset(Triantafillou等人,2019年)是为小样本学习提出的新基准,它由用于训练和评估的不同数据集组成。使用ResNet-18作为骨干,具有原始图像大小在126×126中,在输入网络之前,调整大小为128×128。 对于预训练阶段,我们应用标准的训练设置,类似于我们在Image Net-800中的设置。 关于元学习 阶段,对模型进行5000次迭代训练,每次迭代有一个任务。

表9的左侧显示了仅在ILSVRC-2012中使用样本训练的模型。 我们观察到,预先训练的分类器-基线优于以前的元学习方法。 在我们的实验中,Meta-Baseline在这种设置下没有改进Classifier-Baseline,这可能是因为平均样本数很高。

表9的右侧显示了模型在所有数据集上训练时的结果,除了没有训练样本的交通标志和MSCOCOCO。 分类器基线是预先训练为一个multi-dataset分类器,即。 编码器与编码特征上的多个FC层一起输出不同数据集的逻辑。  预训练阶段与仅在ILSVRC上训练的迭代次数相同,为了模拟ILSVRC训练,一批具有来自对于分类器-基线,与表9左边的结果相比,我们观察到,虽然ILSVRC的性能更差,但其他数据集上的性能大多由于在训练中有他们的样本。

6、结论

我们提出了一种简单而有效的少镜头学习方法,即Meta-Baseline。 它的性能超过了最近最先进的方法,在很大的幅度,为小样本分类领域建立一个新的坚实基准。虽然许多新的元学习方法被提出,最近的一些工作认为,一个预先训练的分类器对于小样本学习是足够好的,我们的Meta-Baseline具有分类前训练和元学习的优点。 我们证明,预训练和继承一个良好的少数镜头分类度量对于Meta-Baseline获得强大的性能是很重要的,这有助于我们的模型更好地利用预先训练的表示,具有潜在的更强的类可转移性。

 

参考:

https://blog.csdn.net/Dream_xd/article/details/105806600

https://www.cnblogs.com/king-lps/p/12785209.html

https://zhuanlan.zhihu.com/p/113293092

论文翻译版本:

https://download.csdn.net/download/qq_38900441/12555117

  相关解决方案