论文解读:Meta-Baseline: Exploring Simple Meta-Learning for Few-Shot Learning

news2025/1/14 2:48:10

文章汇总

总体问题

通过对整体分类的训练(文章结构图中ClassifierBaseline),即在整个标签集上进行分类,它可以得到与许多元学习算法相当甚至更好的嵌入。这两种工作之间的界限尚未得到充分的探索,元学习在少样本学习中的有效性仍然不清楚

动机

我们观察到元学习和整体分类目标之间的权衡,这可能解释了元基线的成功,并重新思考了这两个目标在少样本学习中的有效性。

解决办法

为了了解与全分类相比元学习是否仍然有效,一个自然的实验是看看如果我们在收敛分类器基线的评估指标(即余弦最近质心)上执行进一步的元学习会发生什么。

实现方法

用质心的概念来代表一个类别的高度,f_\theta

为去掉最后一个FC层的编码器

通过质心算概率

流程图如下

摘要

元学习是近年来最常见的少样本学习框架。它从少量分类任务的集合中学习模型,这被认为具有使训练目标与测试目标一致的关键优势。然而,最近的一些研究报道,通过对整体分类的训练,即在整个标签集上进行分类,它可以得到与许多元学习算法相当甚至更好的嵌入。这两种工作之间的界限尚未得到充分的探索,元学习在少样本学习中的有效性仍然不清楚。在本文中,我们探索了一个简单的过程:对其评估指标的整体分类预训练模型进行元学习。

我们观察到,这种简单的方法在标准基准测试中取得了与最先进的方法相比具有竞争力的性能。我们进一步的分析有助于理解元学习目标和全分类目标之间的取舍。

1. 介绍

虽然人类已经表现出了令人难以置信的能力,可以从很少的例子中学习,并推广到许多不同的新例子,但目前的深度学习方法仍然依赖于大规模的训练数据。为了模仿这种人类的泛化能力,提出了few-shot学习[4,29],用于训练网络基于几个标记示例来理解新概念。虽然用很少的样本直接学习大量的参数是非常具有挑战性的,而且很可能导致过拟合,但一个实用的设置是应用迁移学习:用足够的样本在常见类(也称为基类)上训练网络,然后用少量的样本转移模型来学习新的类。

少样本学习的元学习框架遵循了“学会学习”的关键思想。具体来说,它从属于基类的训练样本中采样少量分类任务,并优化模型以在这些任务上表现良好。

一个任务通常采用N-way和K-shot的形式,其中包含N个类,每个类中有K个支持样本和Q个查询样本。目标是根据N × K个支持样本将这N × Q个查询样本分类为N个类。在此框架下,模型直接针对少量分类任务进行优化。训练目标和测试目标之间的一致性被认为是元学习的关键优势。在这一思想的推动下,最近的许多研究[26,6,25,30,5,22,11,33]关注于改进元学习结构,而few-shot学习本身已经成为评估元学习算法的通用测试平台。

然而,最近的一些研究发现,整体分类的训练,即在整个训练标签集(基类)上的分类,提供了与许多最近的元学习算法相当甚至更好的嵌入。整体分类模型的有效性在之前的研究[6,1]和一些并行研究[31,27]中都有报道。元学习使训练目标的形式与测试一致,但为什么它跟简单的整体分类学习比有更糟糕的嵌入呢?虽然有几个可能的原因,如优化困难或过拟合,但答案尚未得到明确的研究。元学习是否仍然比全分类在少样本学习中有效还不清楚。

在这项工作中,我们旨在通过解耦差异来探索整体分类和元学习之间的优势。我们从分类器-基线(Classifier-Baseline)开始:这是一种整体分类方法,在并行工作中也被类似地提出[31,27]。在分类器-基线中,我们首先在基类上训练分类器,然后去除最后一个完全连接(FC)层,该层是类相关的。在测试期间,计算每个新类的支持样本均值嵌入作为其质心,并将查询样本分类到距离最近的余弦距离质心。我们观察到这种基线方法优于许多最近的元学习算法。

为了了解与全分类相比元学习是否仍然有效,一个自然的实验是看看如果我们在收敛分类器基线的评估指标(即余弦最近质心)上执行进一步的元学习会发生什么。作为一种结果方法,它类似于MatchingNet[29]或ProtoNet[24],但增加了分类预训练阶段。我们观察到元学习仍然可以提高ClassifierBaseline,并且它在标准基准上达到了与最先进的方法竞争的性能。我们称这个简单的方法为Meta-Baseline。我们强调,作为一种方法,Meta-Baseline的所有单独组成部分都已在先前的工作中提出,但据我们所知,它被忽视了,先前的工作都没有将它们作为一个整体进行研究。我们通过对两种类型的泛化进行评估来进一步解耦差异:

基类泛化表示在基类中未见数据的少量分类任务上的性能,它遵循泛化的常见定义(即在训练分布中进行评估);

新类泛化是指在新类数据的少数样本分类任务上的性能,这是少数样本学习问题的目标。

研究发现:

(1)元学习过程中,基类泛化程度的提高会导致新类泛化程度的降低;

(2)当从头开始训练Meta-Baseline(即不进行整个分类训练)时,它的基类泛化率更高,但新类泛化率要低得多。

我们的观察表明,在元学习和整体分类的目标之间可能存在权衡。可能元学习学习的是对N-way K-shot任务效果更好的嵌入,而全分类学习的是类可转移性更强的嵌入。我们发现,在元学习之前进行整体分类训练的主要优势有可能提高类的可转移性(性能)。我们进一步的实验为Meta-Baseline成为强基线的原因提供了一个潜在的解释:通过继承整个分类模型中最有效的评估指标之一,它最大限度地重用了具有强类可转移性的嵌入。从另一个角度来看,我们的研究结果也从数据集的角度重新思考了元学习和整体分类的比较。

当收集基类以覆盖新类的分布时,新类泛化会收敛于基类泛化,元学习的强度可能会超过整体分类的强度。

总之,我们的贡献如下:

我们提出了一个简单的元基线,这在以前的工作中被忽视了。它在标准基准上实现了具有竞争力的性能,并且易于遵循。

我们观察到元学习和整体分类目标之间的权衡,这可能解释了元基线的成功,并重新思考了这两个目标在少样本学习中的有效性。

3. 方法

3.1. 问题定义

在标准的few-shot分类中,给定一个带有大量图像的基类C_{base}的标记数据集,目标是使用少量样本学习新颖类C_{novel}中的概念。在N向K次少射分类任务中,支持集包含N个类,每个类有K个样本,查询集包含来自相同N个类的样本,每个类有Q个样本,目标是将N × Q个查询图像分类为N个类。

3.2. Classifier-Baseline

Classifier-Baseline是一个整体分类模型,即为整个标签集训练的分类模型。它是指训练一个在所有基类上都有分类损失的分类器,并使用余弦最近邻质心方法执行少射任务。具体来说,我们在所有基类上训练一个具有标准交叉熵损失的分类器,然后去除它的最后一个FC层并得到编码器
f_\theta,它将输入映射到嵌入。给定几个镜头的任务设支持集S,S_c为c类的少次样本,计算平均嵌入
w_c作为c类的质心(公式1)

然后对于少样本任务中的查询样本x,根据样本x的嵌入与c类质心的余弦相似度预测样本x属于c类的概率:

<\cdot,\cdot>表示两个向量的余弦相似度。

在并行研究中也提出了与Classifier-Baseline类似的方法[31,27]。与Baseline++[1]相比,classifier-Baseline不使用余弦分类器进行训练或在测试期间进行微调,而它在标准基准测试中表现更好。在这项工作中,我们选择Classifier-Baseline作为全分类模型的代表进行少镜头学习。为了简单明了,我们不为这个全分类训练引入额外的复杂技术。

3.3. Meta-Baseline

图1显示了元基线。

第一阶段是分类训练阶段,它训练一个ClassifierBaseline,即在所有基类上训练一个分类器,并去除它的最后一层FC得到f_\theta

第二阶段是元学习阶段,在分类器-基线评价指标上对模型进行优化。具体来说,给定分类训练的特征编码器f_\theta,它从基类的训练样本中采样N次k次任务(带有N × Q个查询样本me:也就是第二阶段的训练数据是从查询集里面抽出来的)。为了计算每个任务的损失,在support-set中计算公式1中定义的N个类的质心,然后使用这些质心计算公式2中定义的queryset中每个样本的预测概率分布。损失是由p和查询集中样本的标签计算得出的交叉熵损失。在训练过程中,每个训练批可以包含多个任务,并计算平均损失。

由于余弦相似度的取值范围为[−1;1],当它用于计算对数时,在训练过程中,在应用Softmax函数之前它可以帮助对值进行缩放(最近的工作中常见的做法[6,17,16])。我们将余弦相似度乘以一个可学习的标量\tau,则训练中的概率预测变为:

在这项工作中,Meta-Baseline的主要目的是研究元学习目标在整体分类模型上是否仍然有效。作为一种方法,虽然Meta-Baseline中的每个组件都在之前的工作中提出过,但我们发现之前的工作都没有将它们作为一个整体进行研究。因此,元基线也应该是一个被忽视的重要基线。

4. 标准基准测试结果

4.1. 数据集

miniImageNet数据集[29]是一个常用的少镜头学习基准。它包含从ILSVRC-2012中采样的100个类[21],然后将其随机分成64、16、20个类分别作为训练集、验证集和测试集。每个类包含600张大小为84 × 84的图像。

tieredImageNet数据集[20]是最近提出的另一个规模更大的常见基准。它是ILSVRC-2012的一个子集,包含来自34个超类别的608个类,然后将这些超类别分成20个、6个、8个超类别,分别得到351个、97个、160个类作为训练集、验证集、测试集。图像大小为84 × 84。

这种设置更具挑战性,因为基类和新类来自不同的超类别。

除了上述数据集之外,我们还在ImageNet-800上评估了我们的模型,ImageNet-800是从ILSVRC-2012 1K类中衍生出来的,随机划分了800个类作为基类,200个类作为新类。基类包含来自原始训练集的图像,新类包含来自原始验证集的图像。这个更大的数据集旨在将训练设置标准作为ImageNet 1K分类任务[8]。

4.2. 实现细节

我们在miniImageNet和tieredImageNet上使用ResNet-12,它遵循了最近的大部分作品[16,25,11,33],在ImageNet800上使用ResNet-18, ResNet-50[8]。对于分类训练阶段,我们使用动量为0.9的SGD优化器,学习率从0.1开始,衰减因子为0.1。在miniImageNet上,我们在4个gpu上训练100个epoch,批处理大小为128,学习率在epoch 90时下降。在tieredImageNet上,我们在4个gpu上训练了120个epoch,批处理大小为512,学习率在第40和第80时期下降。在ImageNet-800上,我们在8个gpu上训练90个epoch,批大小为256,学习率在epoch 30和60时下降。ResNet-12的权重衰减为0.0005,ResNet-18或ResNet-50的权重衰减为0.0001。应用标准数据增强,包括随机调整大小的裁剪和水平翻转。对于元学习阶段,我们使用动量为0.9的SGD优化器。学习率固定为0.001。batch大小为4,即每个training batch包含4个few-shot task来计算平均损失。

余弦缩放参数τ初始化为10。

我们还应用一致抽样来评估性能。对于数据集中的新类拆分,采样少量测试任务遵循确定的顺序。一致采样使我们能够得到更好的模型比较使用相同数量的采样任务。在下面部分中,如果在表中省略置信区间,则表示对固定的800个测试任务进行采样以估计性能。

4.3. 结果

7. 总结与讨论

在这项工作中,我们提出了一个简单的元基线,它被忽视的少样本学习。没有任何额外的参数或复杂的设计选择,它是竞争的最先进的方法在标准基准。

我们的实验表明,对于少样本学习,元学习框架可能存在客观差异,即一个元学习模型在基类的未见任务上泛化得更好,而在新类的任务上泛化得更差。这可能解释了为什么一些复杂的元学习方法不能获得比简单的整体分类明显更好的性能。虽然最近的研究集中在改进元学习结构上,但其中许多并没有明确地解决班级可转移性的问题。我们的观察表明,客观差异可能是一个需要解决的潜在关键挑战。

虽然人们提出了许多新的元学习算法,并且最近的一些研究报告表明,简单的整体分类训练足以用于少量学习,但我们表明,元学习在整体分类模型上仍然有效。我们观察到元学习和整体分类目标之间的潜在权衡。从数据集的角度,我们展示了元学习和整体分类之间的偏好是如何随着类相似度等因素的变化而变化的,这表明这些因素在未来的模型比较中可能需要更多的关注。

参考资料

文章下载(ICCV 2021)

https://arxiv.org/abs/2003.04390

📎Meta-Baseline Exploring Simple Meta-Learning for Few-Shot Learning.pdf

代码地址

GitHub - yinboc/few-shot-meta-baseline: Meta-Baseline: Exploring Simple Meta-Learning for Few-Shot Learning, in ICCV 2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1497177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CSP】201403-3-命令行选项

CSP-201403-3-命令行选项 关键点&#xff1a;将整行字符串按空格分割 在解析命令行时&#xff0c;一个常见的需求是将整个命令行字符串分割成多个部分&#xff0c;通常以空格为分隔符。这些部分包括命令行工具的名称、选项&#xff08;可能带有前缀-或--&#xff09;和这些选项…

【Simulink系列】——控制系统仿真基础

声明&#xff1a;本系列博客参考有关专业书籍&#xff0c;截图均为自己实操&#xff0c;仅供交流学习&#xff01; 一、控制系统基本概念 这里就不再介绍类似于开环系统、闭环系统等基本概念了&#xff01; 1、数学模型 控制系统的数学模型是指动态数学模型&#xff0c;大致…

CGAL 5.6.1 - Algebraic Foundations

1. 引言 CGAL 的目标是精确计算非线性对象&#xff0c;特别是定义在代数曲线和曲面上的对象。因此&#xff0c;表示多项式、代数扩展和有限域的类型在相关的实现中扮演着更加重要的角色。为了跟上这些变化&#xff0c;我们引入了这个软件包。由于引入的框架必须特别支持多项式…

基于云效构建部署Springboot项目到ACK

介绍 为了提高项目迭代的速度加速交付产品给客户&#xff0c;我们通常会选择CICD工具来减少人力投入产生的成本&#xff0c;开源的工具比如有成熟的Jenkins&#xff0c;但是本文讲的是阿里云提高的解决方案云效平台&#xff0c;通过配置流水线的形式实现项目的快速部署到服务器…

PostgreSQL开发与实战(6.2)体系结构2

作者&#xff1a;太阳 二、逻辑架构 graph TD A[database] -->B(schema) B -->C[表] B -->D[视图] B -->E[触发器] C -->F[索引] tablespace 三、内存结构 Postgres内存结构主要分为 共享内存 与 本地内存 两部分。共享内存为所有的 background process提供内…

【Python】5. 基础语法(3) -- 函数篇

函数 函数是什么 编程中的函数和数学中的函数有一定的相似之处. 数学上的函数, 比如 y sin x , x 取不同的值, y 就会得到不同的结果. 编程中的函数, 是一段可以被重复使用的代码片段 . # 代码示例: 求数列的和 # 1. 求 1 - 100 的和 sum 0 for i in range(1, 101):sum i…

Debian篇——系统安装在SD卡上如何调整系统分区大小

背景&#xff1a;我的SD卡是128G的&#xff0c;开发商安装好系统后&#xff0c;我发现SD的系统分区才8.9G空间&#xff08;剩下的108G未分区&#xff09;&#xff0c;不够使用&#xff0c;于是需要调整系统分区的大小。 1.查看系统盘挂载情况 df -h 2.查看系统盘在哪个分区 …

Windows系统搭建VisualSVN并结合内网穿透实现远程访问本地服务

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

如何在Win系统部署Tomcat服务并实现远程访问内网站点

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学…

基于梯度提升树实现波士顿房价预测

基于梯度提升树实现波士顿房价预测 将波士顿房价数据集拆分成训练集和测试集&#xff0c;搭建gbdt_1、gbdt_2和gbdt_3三个梯度提升树模型&#xff0c;分布设置超参数n_estimators为50、100、150。各自对训练集进行训练&#xff0c;然后分别对训练集和测试集进行预测。输出以下…

力扣新思路:改变字符串进行返回操作

我们在对字符串进行判断操作和返回操作时&#xff0c;可以增加\0来简化返回操作 char* longestCommonPrefix(char** strs, int strsSize) {if(strsSize0){return"";}for(int i0;i<strlen(strs[0]);i){for(int j1;j<strsSize;j){if(strs[0][i]!strs[j][i]) {s…

掀桌子了!20万左右的混动SUV,千万别乱选

文 | AUTO芯球 作者 | 雷歌 又掀桌子了&#xff01; 比亚迪秦PLUS掀翻了混动轿车圈的桌子后&#xff0c;又来掀混动SUV的桌子了。 而且掀桌子的还不只一家&#xff0c;比亚迪掀完奇瑞掀。 比亚迪唐DM-i以17.98万起售的价格&#xff0c;掀掉了中型混动SUV的桌子&#xff0c;…

springboot247人事管理系统

人事管理系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;问卷信息因为其管理内容繁杂&#xff0c;管理数量繁多导…

美团面试拷打:Redis 缓存穿透、缓存击穿、缓存雪崩区别和解决方案

目录&#xff1a; 缓存穿透 什么是缓存穿透&#xff1f; 缓存穿透说简单点就是大量请求的 key 是不合理的&#xff0c;根本不存在于缓存中&#xff0c;也不存在于数据库中 。这就导致这些请求直接到了数据库上&#xff0c;根本没有经过缓存这一层&#xff0c;对数据库造成了巨…

okHttp MediaType MIME格式详解

一、介绍 我们在做数据上传时&#xff0c;经常会用到Okhttp的开源库&#xff0c;okhttp开源库也遵循html提交的MIME数据格式。 所以我们经常会看到applicaiton/json这样的格式在传。 但是如果涉及到其他文件等就需要详细的数据格式&#xff0c;否则服务端无法解析 二、okHt…

滞销番茄变废为宝,成功打造市场份额第一番茄品牌|日本极致产品力

可果美是日本市场领先的番茄品牌&#xff0c;然而在可果美发展初期&#xff0c;番茄只是供应链中的滞销产品。可果美通过极致产品力的打造&#xff0c;将番茄“变废为宝”&#xff0c;打败亨氏、味好美成为可果美的招牌。可果美是如何做到的呢? 番茄是可果美供应链的滞销品 在…

MCU中断里使用软延时函数delay_ms(u16 x)问题及实例探讨

原贴有误已删&#xff1a;https://blog.csdn.net/weixin_50007421/article/details/136138221 今天完善如下&#xff1a; 本意&#xff1a;只是想表达“复杂系统中断里当然尽量不用软延时函数&#xff0c;但简单系统只要心中有数逻辑清楚实测无妨就完全可行”。 但后来感觉还…

Linux基础命令[11]-find

文章目录 1. find 命令说明2. find 命令语法3. find 命令示例3.1 不加参数3.2 按照时间3.3 -empty&#xff08;空白文件或目录&#xff09;3.4 -name&#xff08;名称查找&#xff09;3.5 -size&#xff08;大小查找&#xff09;3.6 -type&#xff08;类型查找&#xff09;3.7 …

【中间件】docker的安装

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 .卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \doc…

数据结构:顺序表的奥秘

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE&#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&a…