论文解读:Label Hallucination for Few-Shot Classification

news2024/11/24 16:15:55

文章汇总

动机

本文的一个思想就是:尽管新类的标签并不能“恰如其分”地表示基数据集中的样本,但是很多基数据集的样本会包含与新类中相似的对象,例如,基数据集中的老虎和新类中的猫有相似的特征,那么就有60%的概率将老虎打上猫的标签;或者基数据集中的图片与新类中的图片有背景相似,比如“car”和“pedestrians”即车和行人的背景可能都是街道,那么打完伪标签后,两幅图的标签很有可能相同。

而我们通过伪标签数据集来微调整个模型,训练网络识别基数据集上的这些相似特性或背景线索,从而将representation转向对新类识别有用的特征

此外,由于基数据集中样本数据相比新类来说丰富,起到大量非参数化数据增强的作用,能够产生general representation,避免过拟合问题,同时也克服了小样本学习中固有的数据稀缺问题。

流程解读

Pretraining

很正常的预训练步骤,用庞大的基类数据集base训练出backbone和分类器:\Theta^{base},\phi^{base}

Episode training:step1

拿novel数据集来训练出一个预测的标签空间为novel的标签空间的分类器\phi_{i}

值得注意的是,这里\Theta^{base}是不变的,而\phi_{i}的初始参数为\phi^{base}进行softmax之前的参数

Episode training:step2

\Theta^{base},\phi_{i}作为backbone,分类器,两者参数都不变,而是直接拿base的数据来生成软伪标签\hat y^{base}

\hat y^{base}_{i,t}=g_{\phi_i}(f_{\Theta^{base}}(x_t)),t=1,...,N^{base}

Episode training:step3

拿novel数据集训练backbone和分类器:\Theta',\phi_{i}'

L_{KL},L_{CE}分别为x与伪标签的损失,x与实际标签的损失。

本人对这篇文章的疑问

少样本图像分类的目标不是要去一个识别出一份训练中没有出过的新类数据集novel domain吗?可是这篇文章把novel domain的数据拿来训练了,这是否违背了少样本图像分类的本意?

摘要

少样本分类需要适应从大型带注释的基础数据集中学习到的知识,以识别新的未见过的类,每个类由几个标记的示例表示。在这种情况下,在大数据集上预训练一个具有高容量的网络,然后在少数例子上对其进行微调,会导致严重的过拟合。同时,在从大型标记数据集中学习的“冻结”特征之上训练简单的线性分类器无法使模型适应新类别的属性,从而有效地导致欠拟合。

在本文中,我们提出了这两种流行策略的替代方法。首先,我们的方法使用在新类上训练的线性分类器对整个大型数据集进行伪标签。这有效地“幻觉”了大型数据集中的新类,尽管新类别不存在于基本数据库中(新类和基本类是不相交的)。然后,除了新数据集上的标准交叉熵损失外,它还使用伪标记基础样本上的蒸馏损失对整个模型进行微调。这一步有效地训练网络识别上下文和外观线索,这些线索对小说类别识别有用,但使用整个大规模基础数据集,从而克服了少样本学习固有的数据稀缺性问题。尽管方法很简单,但我们表明,我们的方法在四个建立良好的少量分类基准上优于最先进的方法。

介绍

深度学习已经成为大数据场景的主要学习范式,并在广泛的应用领域取得了令人印象深刻的成果,包括计算机视觉[23]、自然语言处理[10]和生物信息学[41]。然而,要使深度学习模型适应标记样本较少的环境仍然很困难,因为大容量模型本质上容易过度拟合。

少样本学习通常在情景学习范式下进行研究,该范式通过从大型基础数据集的一小部分类别中重复采样少量示例来模拟训练过程中的少样本设置。在这些训练集上进行优化的元学习算法[15,36,22,49,44]推动了少样本分类领域的发展。然而,最近的研究[7,11,48]表明,纯粹的迁移学习策略往往更具竞争力。例如,Tian等人[48]提出首先在基本数据集上预训练一个大容量分类模型,然后使用少数新示例在这个预训练的表示上简单地学习一个线性分类器。通过多次蒸馏迭代[17],或者同时结合熵最大化、旋转自我监督、知识蒸馏等几种损失,可以进一步提高转移模型的少样本性能[35]。

在本文中,我们采用迁移学习方法。然而,我们并没有将表征冻结为从基类中学习到的特征[48,35,39],而是对整个模型进行了微调。由于仅使用少数示例来调整网络会导致严重的过拟合(正如我们的缩减所证明的那样),我们建议通过重用整个基本数据集来优化模型,但只有在将原始标签与对应于新类的伪标签交换之后。这是通过在基本数据集上运行一个简单的线性分类器来实现的,这个分类器是在少数新类别的示例上训练的。分类器有效地“幻觉”了基础图像中新类的存在。尽管我们在基本数据集的类别与新类别完全脱节的情况下对我们的方法进行了经验评估,但我们证明了这种大规模伪标记数据能够有效地调整整个模型以识别新类别。优化是使用伪标记基础数据集上的蒸馏和少数样本上的交叉熵最小化的组合来进行的。图1概述了我们提出的方法。

直觉是,尽管新奇类在基本图像中没有“适当地”表示,但许多基本示例可能包含与新奇类相似的对象,这些对象由定义属于新奇类的概率的软伪标签编码。例如,假设老虎的基本图像与“家猫”的外观相似,伪标签可能会给它们分配0.6的概率,使其属于新类别“家猫”。或者,它可能会为基础图像分配大的新类伪标签概率,因为它的真实基础类别与小说类共享相似的上下文背景,例如“汽车”和“行人”,它们都可能出现在街景中。使用蒸馏目标(结合少数新图像示例的交叉熵损失)对这些软伪标签上的整个模型进行微调,训练网络识别在基础数据集上的相似或相同线索。因此,将表示转向对识别新类别有用的特征。此外,由于基础数据集是大规模的,这些示例服务于大量非参数数据增强的作用,产生相当一般且不会过拟合的表示,从而克服了少拍学习固有的数据稀缺性问题。我们邀请读者回顾我们的技术附录(TechApp)的标签幻觉可视化部分中的可视化和解释,以进一步了解我们系统的行为。这些可视化证实了我们方法背后的直觉,即得分最高的基本图像往往包含与小说类对象共同出现的上下文元素。例子包括前景对象有相似的外观few-shot图像(例如,图1中的雪橇犬形象TechApp),或基地的例子包括与新类的形状类似于类对象(例如,图2中的绿曼巴TechApp,类似于线虫的形状),甚至实例匹配的空间布局(例如,烟草商店和立式钢琴的图片也有类似的空间布局的书店在图3类TechApp)。

图1:我们提出的方法在一个说明性设置中的概述,涉及5个新类别的1-shot分类。预训练从标记的基础数据集中学习主干模型\Theta和分类头\phi_0。骨干用于计算后续阶段的嵌入,而分类头被丢弃。在episode训练中,步骤1)使用支持集和固定嵌入Θ在新域学习一个线性分类器\phi_1。步骤2)使用固定嵌入\Theta和分类器\phi_1对基数据集相对于新域的标签空间进行伪标签。步骤3)结合蒸馏和交叉熵最大化,使用支持集和伪标记的基础数据集重新学习嵌入和分类器。注意,基本数据集和支持集不共享任何类。

我们注意到,伪标记在半监督学习中已经被广泛使用,其中未标记的样本与标记的样本属于同一类[45,6,34]。伪标记也适用于少数镜头设置[24,50],但仍然适用于经验设置,即未标记数据集中包含新类。我们工作的新颖之处在于表明伪标记的优势甚至扩展到极端的设置,其中基类集和新类集完全不相交。我们还注意到,我们的工作不同于换向的few-shot学习[50,11],后者需要在训练过程中使用未标记示例的测试集。相反,我们的方法在一个纯粹的归纳设置中运行,在每个集中,只有一小部分新的标记示例和基本数据集用于微调。

方法

问题陈述

我们现在正式定义了本工作中考虑的少样本分类问题。我们采用了通用的设置,假设存在一个大规模的标记基础数据集,用于判别学习对随后的新类识别有用的表示。设D^{base}=\{x^{base}_t,y^{base}_t\}^{N^{base}}_{t=1}是基数据集,标签是y^{base}_t \in C^{base}。为了实现良好的表示学习,我们假设类的数量(|C^{base}|)和示例的数量(N^{base})都很大。我们用
D^{novel}=\{x^{novel}_t,y^{novel}_t\}^{N^{novel}}_{t=1},y^{novel}_t \in C^{novel}表示新颖数据集。基类和新颖类是不相交的,即C^{base}\cap C^{novel}=\emptyset。我们假设对少样本分类模型的训练和测试是按episode组成的。在每episode的i中,给予少样本学习者一个支持集D^{support}_i=\{x^{support}_{i,t},y^{support}_{i,t}\}^{NK}_{t=1},涉及K个新颖类和从D^{novel}中采样的每个类的N个样例(N非常小,通常在1到10之间)。然后对查询集
D^{query}_i=\{x^{query}_{i,t},y^{query}_{i,t}\}^{N'K}_{t=1},其中包含与D中支持i的相同K类的示例。因此,查询/支持集分别充当少量训练/测试集。在每集episode的i中,在给定D^{support}_i中的少数训练样例的情况下,few-shot学习器适应从大规模数据库D^{base}中学习到的表示/模型来识别新的类。

学习在基础数据集上的嵌入表示

首先,我们的目标是从base数据集中学习一个嵌入模型,该模型将很好地转移和推广到下游的少样本问题。我们遵循Tian等人[48]的方法(表示为RFS),有区别地地训练一个由主干f_\Theta和最终分类层g_\phi组成的卷积神经网络。参数\{\Theta,\phi\}共同优化|C^{base}|-way基分类问题,使用数据集D^{base}:

其中L_{CE}为交叉熵损失。先前的工作表明,通过知识蒸馏[48]、旋转自我监督[35]或通过对图像变换集强制表示等价和不变性[39],可以进一步提高参数\Theta^{base}编码的嵌入表示的质量。在本文提出的实验中,我们遵循SKD[35](使用自监督蒸馏)和IER[39](利用不变和等变表示)的嵌入学习策略。然而,请注意,我们的方法独立于用于嵌入学习的具体方法。

幻想在基本数据集中出现新的类

为了根据新类对基本数据集进行伪标记,我们首先在支持集上训练一个分类器。对于元学习阶段的每一episode 中i,我们使用少样本支持集D^{support}_i=\{x^{support}_{i,t},y^{support}_{i,t}\}^{NK}_{t=1}在固定特征嵌入模型\Theta^{base}上学习一个线性分类器\phi_i

需要注意的是,在之前的文献[48,35,39]中,\phi_i是直接对查询集D^{query}_i求值,从而得到最终的少样本分类结果。相反,这里我们使用生成的模型g_{\phi_i}(f_{\Theta^{base}}(x))根据第个episode中新类的本体重新标记基本数据集。我们用\hat y^{base}_{i,t}的向量(softmax之前的输出)表示通过将学习到的分类器应用于x^{base}_t的示例生成的logits向量,即\hat y^{base}_{i,t}=g_{\phi_i}(f_{\Theta^{base}}(x_t)),t=1,...,N^{base}。这些软伪标签用于通过知识蒸馏重新训练整个模型,如下所述。

微调整个模型以识别新的类

最后,我们使用包含相同比例的支持和基类样例的mini-batch对整个模型(即主干和分类器)进行微调。基础示例的损失函数是知识蒸馏[20],而支持示例的目标最小化是交叉熵(CE)。换句话说,我们在两种损失的混合上优化模型的参数

其中\hat y表示幻觉伪标签,L_{KL}为模型预测与温度T缩放的伪标签之间的KL散度,\{\lambda_{KL},\lambda_{CE}\}是超参数,权衡了这两个损失的重要性。由于支持集非常小(在某些设置中,每episode包括五个新颖类,每个新颖类只有一个示例),我们使用数据增强来生成每个支持图像的多个视图,以便获得足够的示例来填充mini-batch的一半。具体来说,我们采用了之前作品[48,35,39]的标准设置,并使用随机裁剪,颜色抖动和随机翻转来生成多个视图。

最后,在查询集D^{query}_i=\{x^{novel}_{i,t},y^{novel}_{i,t}\}^{N'K}_{t=1}上计算得到的模型g_{\phi_i'}(f_{\Theta^{'}_i}(x))。最后的结果是通过对所有episode的平均准确率来报告的。我们注意到,虽然伪标签和调优的操作是分开且按顺序呈现的,但在实践中,对于某些数据集,我们发现为迷你批处理中加载的基本示例动态生成目标伪标签更有效,而不必将它们存储在磁盘上。

实验

结论

我们提出了一种简单的标签幻觉策略,以便从新类的少样本样本中有效地微调大容量模型。在四个已建立的少量分类基准上的结果表明,即使在基本数据集的标签和新示例的标签完全不相交的极端情况下,我们的过程也达到了最先进的精度,并且通过微调或在预训练表征之上执行线性分类的方法,始终优于流行的迁移学习策略。

参考资料

论文下载(2022 AAAI)

https://arxiv.org/abs/2112.03340

代码地址

GitHub - yiren-jian/LabelHalluc: [AAAI 2022] Label Hallucination for Few-Shot Classification

参考文章

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

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

相关文章

补充centos7软件包的方式/编译安装源码包软件/企业案例/linux进程管理/企业管理进程系列命令(企业经验)--8820字详谈

cenros7软件包的安装方式 软件包分类安装方式优缺点rpm包软件开发商编译打包,安装简单,快速软件版本可能偏低,安装路径是固定好的源码包自己手动编译安装并且复杂软件爸爸随意选,可以定制安装路径二进制包解压就可以使用不能进行…

new String和直接赋值的一些问题

分析1 我们先看以下代码: String str1 "abc"; // 在常量池中String str2 new String("abc"); // 在堆上System.out.println(str1 str2)以上结果的输出是什么? 输出:false 前置知识: 在JVM中&#xff0c…

PTA 天梯赛 L1-010 比较大小【C++】 L1-011 A-B 【C++ vector动态数组】【Python 字符串replace函数】

L1-010 比较大小 判断顺序很重要 #include<iostream> using namespace std; int main() {int a, b, c;cin >> a >> b >> c;int temp;if (a > b) {temp a;a b;b temp;}if (a > c) {temp a;a c;c temp;}if (b > c) {temp b;b c;c te…

从零开始的软件测试学习之旅(二)测试方法及禅道使用篇

测试方法bug统计以及禅道使用 按是否要运行程序进行划分测试方法测试计划和测试方案测试方案包含:测试用例设计方法一.等价类划分法二.边界值法三.判定表法四.因果图: 输入条件或输入条件组合较多,组合使用判定表与因果图五.正交法:基于数学概率学,设计最经济的实验路径六.场景…

Vue面试经验

Vue部分 Vue编译时声明周期的执行顺序 Vue中父子组件渲染顺序&#xff08;同步引入子组件&#xff1a;import Son from ‘/components/son’ &#xff09; 父子组件编译时的生命周期执行顺序 这里修改data数据时也修改了dom&#xff0c;如过知识通过按钮对数据进行操作&…

Veeam配置备份oracle实例

Veeam是一家专门提供数据管理和数据保护解决方案的软件公司。他们的产品主要包括备份、复制和虚拟化管理等功能&#xff0c;旨在帮助企业保护其数据、应用程序和系统&#xff1b;NBU&#xff0c;COMMVALT&#xff0c;Veeam 国际三大知名备份软件厂商。本文介绍使用Veaam 备份Li…

数据结构——二叉树的操作 (层序遍历)(C++实现)

数据结构——二叉树的操作&#xff08;2&#xff09;&#xff08;C实现&#xff09; 统计叶子结点个数统计结点个数层序遍历非递归方式递归方式 我们今天接着来看二叉树的操作&#xff0c;如果还没有看过上一篇的可以点击这里&#xff1a; https://blog.csdn.net/qq_67693066/a…

ezplot--Matlab学习

目录 一、代码 二、效果 ​编辑 三、ezplot讲解 四、如何自定义一个函数 一、代码 clc; clear; t0:32; x4(t) cos(2*pi*t/4).*sin(2*pi*t/4); x8(t) cos(2*pi*t/8).*sin(2*pi*t/8); x16(t) cos(2*pi*t/16).*sin(2*pi*t/16); subplot(3,1,1) ezplot(x4,[0,32]); subplot…

怎样选购内衣洗衣机?2024年5款最新推荐机型种草

随着科技的不断发展&#xff0c;内衣洗衣机成为了家家户户必备的小家电之一&#xff0c;为我们的生活带来了极大的便利。但面对市场上众多的内衣洗衣机品牌&#xff0c;如何选择一款质量好的内衣洗衣机呢&#xff1f;本文将为您推荐5款最新的内衣洗衣机品牌&#xff0c;从而帮助…

冯唐成事心法笔记 —— 知人

系列文章目录 冯唐成事心法笔记 —— 知己 冯唐成事心法笔记 —— 知人 冯唐成事心法笔记 —— 知世 冯唐成事心法笔记 —— 知智慧 文章目录 系列文章目录PART 2 知人 人人都该懂战略人人都该懂战略第一&#xff0c;什么是战略第二&#xff0c;为什么要做战略第三&#xff0…

【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰

【GitHub】如何在github上提交PR(Pull Request 写在最前面1. 准备工作1.1 注册 GitHub 账号1.2 了解 Git 基础1.3 找到一个项目 2. 创建你的 PR2.1 Fork 和克隆仓库2.2 创建一个新的分支2.3 进行更改2.4 推送更改到 GitHub2.5 创建 Pull Request 3. 优化你的 PR3.1 保持提交清晰…

投资标的参考

1、中央汇金投资有限责任公司 1.1、香港中央结算有限公司 2、中央汇金投资有限责任公司持股列表 _ 东方财富网_ 数据频道东方财富网提供十大流通股东数据、十大股东数据、股东持股明细、股东持股变动统计、股东持股分析、股东持股统计、股东协同等数据&#xff0c;充分展示股东…

Java中的ArrayList

ArrayList<E>的特点 可调整大小的数组实现 <E>:是一种数据类型 ArrayList的构造方法 ArrayList list new ArrayList();创建一个空的集合对象 package dayhou40.day45; ​ import java.util.ArrayList; ​ public class Arraylisttest {public static void ma…

大数据第五天(操作hive的方式)

文章目录 操作hive的方式hive 存储位置hive 操作语法创建数据表的方式 操作hive的方式 hive 存储位置 hive 操作语法 创建数据表的方式 – 创建数据库 create database if not exists test我们创建数据库表的时候&#xff0c;hive是将我们的数据自动添加到数据表中&#xf…

uniapp——授权报错,选择合适的基础库

说明 我的小程序开发版本点击选择头像报错 更换基础库就好了

[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板&#xff08;图中的红色斜线区域&#xff09;&#xff0c;需要先安装两个支 柱&#xff08;图中的黑色竖条&#xff09;&#xff0c;再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度 不同&#xff0c;太阳能板的安装面…

JavaScript-3(内置对象+数组对象+字符串对象)

目录 1.预解析 2.对象 什么是对象 创建对象的三种方法 利用字面量创建方法 利用new Object创建对象 构造函数创建对象 new关键字 遍历对象 3.内置对象 Math对象 Math概述 Math随机数 Date日期对象 格式化日期 Date总的时间毫秒 4.数组对象 创建数组的两种方式…

tcp inflight 守恒算法背后的哲学

tcp inflight 守恒拥塞控制的正确性 很久以前我开始纠结 tcp 锯齿&#xff0c;很多年后我知道这叫 capacity-seeking&#xff0c;甚至说 tcp 属于 capacity-seeking protocol 的原因就是它早已深入人心的 aimd 行为&#xff0c;而该行为生成了 tcp 锯齿。 在消除锯齿&#xf…

01.Scala概述及环境配置

文章目录 [toc] 1.**Scala概述**2.**Scala环境搭建**2.1下载2.2环境变量配置 1.Scala概述 特点&#xff1a; 同样运行在JVM上&#xff0c;可以与现存程序同时运行。可直接使用Java类库。同Java一样静态类型。语法和Java类似&#xff0c;比Java更加简洁&#xff08;简洁而并不…

深度学习的瓶颈是什么!

深度学习主要的瓶颈&#xff1a; 数据依赖与标注问题&#xff1a;深度学习模型通常需要大量的标注数据来进行训练。然而&#xff0c;获取大量的标注数据不仅成本高昂&#xff0c;而且在某些领域&#xff08;如医疗、金融等&#xff09;中可能难以获取足够的标注数据。此外&…