few-shot learning 小样本学习---综述_[7] wang y, yao q. few-shot learning: a survey[j].-程序员宅基地

技术标签: few shot learning  深度学习  

IBM-小样本学习(Few-shot Learning)State of the art 方法及论文讲解

CVPR 2019提前看:少样本学习专题

在这里插入图片描述

数据增广

FeLMi : Few shot Learning with hard Mixup

we propose Few shot Learning with hard Mixup (FeLMi) using manifold mixup to synthetically generate samples that helps in mitigating the data scarcity issue. Different from a naïve mixup, our approach selects the hard mixup samples using an uncertainty-based criteria.
github源码

Pushing the Limits of Simple Pipelines for Few-Shot Learning: External Data and Fine-Tuning Make a Difference----CVPR 2022

论文链接
源码
小样本学习可以通过元学习和迁移学习(基于大规模外部数据预训练的自监督模型)来实现。虽然大多数FSL研究人员关注的是前者,但我们表明后者可能更有效,因为它可以使用更强大的骨干网络架构(如VisionTransformer),并且可以与简单的元学习器(如ProtoNet)相结合。
在这里插入图片描述
这篇工作提出了: Pre-training → Meta-training → Finetuning (P>M>F) 的小样本学习的新范式,即先在大的数据集上进行与训练,然后再小样本数据集的训练集上进行元训练,最后再在小样本数据集的测试集上利用少量样本进行微调。
同时,作者发现这种徐训练方式对小样本任务是非常奏效的,达到了sota(现在的 paper with code的排行榜依然是第一名)。
最重要的是,本文的代码尝试了十几种不同的 backbone 以及 多种不同的小样本数据集(包括单域和跨域)

自监督/弱监督

Unsupervised Few-shot Learning via Distribution Shift-based Augmentation

在ULDA中,我们系统地研究了不同增强技术的影响,并建议通过分别增强这两个集合(即移位)来加强每个少数样本任务中查询集和支持集之间的分布多样性(或差异)。通过这种方式,即使结合简单的增强技术(例如,随机裁剪、颜色抖动或旋转),我们的 ULDA 也可以产生显着的改进。
github源码

MAGE: MAsked Generative Encoder to Unify Representation Learning and Image Synthesis—CVPR 2023

论文链接
源码
在这里插入图片描述
在这里插入图片描述
The premise of self-supervised learning is to learn representations on unlabeled data that can be effectively applied to prediction tasks with few labels [10]. Following [19], we freeze the weights of the pretrained model and train a linear classifier on top using a few labeled samples.
在这里插入图片描述

  • VQGAN的作用与用法
    —在整个代码中,VQGAN无需训练,都是加载已经预训练好的模型参数。
    —根据源码的理解,在预训练时,利用了VQGAN的encoder对原始图像进行语义编码得到语义令牌,然后作为transformer的输入;而在transformer输出的是经变换后的语义令牌,所以在transformer之后还需要接入VQGAN的decoder,将语义令牌恢复成图像。
    —预训练之后,如果用于生成任务,则还是需要在transformer之后继续使用VQGAN的decoder(只是利用预训练好的参数,无需训练),以将语义令牌恢复出图像。
    —预训练之后,如果用于分类任务,则不再需要在在transformer之后继续使用VQGAN的decoder,而是在transformer之后直接接入基于MLP的分类头,进行微调训练之后即可用于推理。(因为可以直接利用transformer产生的语义令牌来进行分类)

模型

多任务学习

多任务学习用于few-shot的办法是:将其它数据集上训练好的参数,共享给小数据集。
Hard Parameter Sharing. This strategy explicitly shares parameter among tasks , and can additionally learn a task-specific parameter for each task to account for task specialties.
In [ Fine-grained visual categorization using meta-learning optimization with sample selection of auxiliary data], this is done by sharing the first several layers of two networks to learn the generic information, while learning a different last layer to deal with different output for each task
在这里插入图片描述

附录:相关论文及代码
[NIPS 2018 论文笔记] Stacked Semantics-Guided Attention Model for Fine-Grained Zero-Shot Learning
论文地址 代码地址

NIPS 2018:Zero-Shot Transfer with Deictic Object-Oriented Representation in Reinforcement Learning
NIPS 2018:Uncertainty-Aware Few-Shot Learning with Probabilistic Model-Agnostic Meta-Learning
NIPS 2018:Multitask Reinforcement Learning for Zero-shot Generalization with Subtask Dependencies
NIPS 2018:Stacked Semantics-Guided Attention Model for Fine-Grained Zero-Shot Learning
NIPS 2018:Delta-encoder: an effective sample synthesis method for few-shot object recognition
NIPS 2018:MetaGAN: An Adversarial Approach to Few-Shot Learning
NIPS 2018:One-Shot Unsupervised Cross Domain Translation
NIPS 2018:Generalized Zero-Shot Learning with Deep Calibration Network
NIPS 2018:Low-shot Learning via Covariance-Preserving Adversarial Augmentation Network
NIPS 2018:Improved few-shot learning with task conditioning and metric scaling
NIPS 2018:Adapted Deep Embeddings: A Synthesis of Methods for k-Shot Inductive Transfer Learning

ECCV2018:Y. Zhang, H. Tang, and K. Jia. 2018. Fine-grained visual categorization using meta-learning optimization with sample selection of auxiliary data.

基于度量的小样本学习

一个优秀的源码库

Prototype Completion with Primitive Knowledge for Few-Shot Learning(CVPR2021 源码)

Prototypical networks for few-shot learning

Prototypical networks for few-shot learning

Your Own Few-Shot Classification Model Ready in 15mn with PyTorch

对原型进行矫正的方法

  • Prototype Rectification for Few-Shot Learning

缺点:矫正原型时利用了无标签的测试集数据,如果利用的是无标签的非测试集数据就更好了
【论文总结】Prototype Rectification for Few-Shot Learning(附翻译)
少样本学习新突破!创新奇智入选ECCV 2020 Oral论文
小样本学习中的原型修正方法

数据回放

Class-incremental experience replay for continual learning under concept drift(2021,cvpr,有源码,质心驱动的内存可检测概念漂移并保持类buffer中样本多样化)

源码:github.com/lkorycki/rsb

这篇论文的核心内容是关于一种新的持续学习(Continual Learning)方法,这种方法能够在概念漂移(Concept Drift)的情况下处理类增量学习(Class-Incremental Learning)。以下是该论文的主要要点:

问题背景:现代机器学习系统需要能够应对不断变化的数据。持续学习和数据流挖掘是处理这类场景的两个主要研究方向。持续学习关注知识的积累和避免遗忘,而数据流挖掘关注对当前数据状态的适应、检测概念漂移并快速适应变化。

研究假设:类增量持续学习可以有效扩展,同时实现:(i) 通过有效积累新类别的知识来避免灾难性遗忘;(ii) 监控以前学习过的类别的变化,并自动适应概念漂移。

动机:现有的持续学习方法假设一旦学习到的知识就应该被模型记住和存储。然而,由于现代动态数据源可能会受到概念漂移的影响,这些知识可能不再有效。

方法概述:提出了一种整体的类增量持续学习方法,基于经验重放(Experience Replay)。该方法的新颖之处在于,它允许同时避免灾难性遗忘和自动更新以前学习过的类别,如果它们受到概念漂移的影响。

主要贡献:

提出了一种统一的持续学习视角,结合了类增量学习中的灾难性遗忘避免和对先前学习类别变化的适应。
开发了一个新颖的经验重放方法,结合了聚类驱动的缓冲区以管理数据多样性,以及集群跟踪、切换和分裂,以忘记过时的信息并自动适应概念漂移,无需显式变化点检测。
讨论了一个现实且具有说明性的学习场景——持续偏好学习和推荐。由于用户可能获得新的偏好,并且他们的旧偏好可能会随时间变化,这个问题涉及到增量学习中避免灾难性遗忘和处理概念漂移的需求。
类增量经验重放:大多数基于经验重放的类增量方法专注于为静态数据存储最具代表性的实例或原型。这些方法假设观察到的类别和选择的实例的类别不会改变,因此不需要控制它们。

实验研究:通过模拟二元推荐系统,使用原始数据集的超类(0/1)来分配类别,评估了所提出的算法。实验旨在证明算法能够处理来自静态和非静态数据的类增量学习。

结论与未来工作:论文讨论了一种统一的持续学习方法,该方法桥接了避免灾难性遗忘和概念漂移下的数据流挖掘之间的差距。提出了一种基于反应性子空间缓冲区(Reactive Subspace Buffer, RSB)的经验重放方法,该方法结合了聚类驱动的记忆和适应组件,允许动态监控、重新标记和分裂现有集群。

在这里插入图片描述

算法是Reactive Subspace Buffer (RSB) 的实现,它是一种用于持续学习(Continual Learning)的经验重放(Experience Replay)方法,特别设计来处理概念漂移(Concept Drift)。以下是算法的详细解释:

输入参数:
cmin: 类的最小质心数。
cmax: 类的最大质心数。
bmax: 缓冲区的最大大小。
ωmax: 滑动窗口的最大大小。
输出结果:
B: 每次迭代的重放缓冲区。
算法步骤:
- 初始化:对于每个类别,确保至少有cmin个质心。如果没有,则为该类别添加新的质心、缓冲区和滑动窗口。

- 接收实例:对于每个到来的实例x及其标签y,执行以下步骤:
--- 寻找最近质心:找到实例x最近的质心Cx。
--- 更新质心:如果最近的质心Cx属于实例x的类别y,则更新质心Cx,以及它的缓冲区Bx和滑动窗口Wx。
- 概念漂移检测:如果实例x的类别与最近质心Cx的类别不一致,但实例x仍在Cx的范围内,仅更新滑动窗口Wx。

- 标签切换:如果检测到质心Cx的类别与实例x的类别不一致,并且有显著数量的实例标签与Cx当前标签不同,将Cx切换到新的多数类。

- 寻找同类别质心:如果实例x属于类别y,但最近的质心Cx不属于y,则寻找最近的同类别质心Cy,x。

- 更新或添加质心:如果实例x足够接近质心Cy,x,并且质心的数量没有达到最大值cmax,则更新Cy,x。否则,为类别y添加新的质心Cnew,以及相应的缓冲区Bnew和滑动窗口Wnew。

- 检查分裂和移除:对于每个质心C,在滑动窗口W更新后的第ns次,检查是否需要分裂成两个类别或移除微小的簇。

- 采样重放:基于质心的纯度标准,从重放缓冲区中采样实例。如果质心的纯度高于随机数r,则从其缓冲区中采样实例。

- 过采样平衡:由于采样过程可能导致采样实例的总数不确定,使用过采样来平衡选定的批次。

算法特点:
- 动态监控:通过滑动窗口跟踪当前概念。
- 标签切换:能够将质心的标签切换到新的多数类。
- 分裂机制:当簇足够“不纯”时,可以分裂成两个类别。
- 基于纯度的采样:根据簇的纯度来决定是否从其缓冲区中采样实例。

RSB算法的核心在于它能够适应概念漂移,同时避免灾难性遗忘,这使得它在持续学习环境中特别有效。通过结合聚类驱动的缓冲区和反应性组件,RSB能够在学习新类别的同时,对旧类别中的概念漂移做出反应。
为什么一个类需要多个质心?

在持续学习(Continual Learning)和数据流挖掘(Data Stream Mining)的背景下,一个类需要多个质心的原因通常与以下几个方面有关:

数据多样性:在现实世界的数据集中,一个类别(class)可能包含多种不同的模式或子空间(subspaces)。例如,在图像识别任务中,即使所有图像都属于同一个类别,它们也可能在形状、大小或方向上有所不同。使用多个质心可以帮助模型捕捉并代表这些不同的模式。

概念漂移适应性:在非静态的数据环境中,类别的分布和特征可能会随时间发生变化,这种现象称为概念漂移(Concept Drift)。多个质心可以更好地适应这种变化,因为它们允许模型在类别内部的不同子空间上进行更新和适应。

鲁棒性:多个质心可以提高模型对于噪声和异常值的鲁棒性。如果只有一个质心,那么异常值或噪声可能会对该质心的位置产生较大影响,从而影响整个类别的表示。多个质心可以通过聚合多个实例的特征来减少这种影响。

泛化能力:在机器学习中,泛化能力是指模型对未见过的数据做出准确预测的能力。通过使用多个质心来代表一个类别,可以帮助模型学习到更加泛化的特征表示,而不是仅仅记住训练数据中的特定样本。

避免过拟合:在某些情况下,如果一个类别只用一个质心来表示,模型可能会对训练数据过拟合,尤其是当类别内的变化不大时。多个质心可以促使模型学习到更加分散和泛化的特征。

灵活性和可扩展性:在类增量学习(Class-Incremental Learning)中,新类别的引入可能需要模型对现有类别的理解进行调整。多个质心提供了必要的灵活性,允许模型在新数据到来时对现有类别的表示进行更新和扩展。

在论文中提出的Reactive Subspace Buffer (RSB) 方法中,使用多个质心是为了创建一个能够同时处理新类别学习、避免灾难性遗忘以及适应概念漂移的动态学习系统。
通过这种方式,RSB 算法能够在持续学习的场景下,有效地维护和更新模型的知识库。
当缓冲区满时,新来的实例是如何将旧实例替换掉的?

在论文中提出的Reactive Subspace Buffer (RSB) 算法中,当缓冲区满时,新来的实例将替换掉旧实例的具体机制通常遵循以下原则:

先进先出 (FIFO):一种常见的替换策略是使用先进先出的原则,这意味着缓冲区中最旧的实例(通常是最先添加到缓冲区的实例)将被新的实例替换。

随机替换:在某些情况下,可能会采用随机替换策略,即从缓冲区中随机选择一个实例进行替换。

基于代表性的替换:在更复杂的方法中,替换决策可能基于实例的代表性。例如,如果新实例在特征空间中代表了之前未充分探索的区域,那么与当前缓冲区中的实例相比,它可能更具有代表性,因此可以替换掉一个不那么具有代表性的旧实例。

重要性加权:在某些经验重放方法中,每个实例可能会根据其对当前学习目标的重要性被赋予不同的权重。在缓冲区满时,可能会优先替换那些权重较低的实例。

性能驱动的替换:有时,替换决策可能基于模型性能的影响。如果替换一个实例能够提高模型在验证集上的性能,那么这样的替换可能更受青睐。

在RSB算法的上下文中,以下是新实例可能导致旧实例被替换的具体步骤:

接收新实例:算法接收一个新的实例 x 及其对应的标签 y。
找到最近质心:算法确定新实例 x 最接近的质心 Cx。
质心类别匹配:如果 x 的类别 y 与 Cx 的类别相匹配,算法将更新 Cx 及其缓冲区 Bx 和滑动窗口 Wx。
缓冲区已满:如果 Bx 已经达到最大大小 bmax,则需要替换一个旧实例。
确定替换策略:根据算法的设计,可能采用上述提到的FIFO、随机替换、基于代表性、重要性加权或性能驱动的替换策略。
执行替换:按照确定的替换策略,从缓冲区 Bx 中移除一个旧实例,并将新实例 x 添加到缓冲区中。
通过这种方式,RSB算法能够在学习新类别的同时,适应旧类别的变化,从而在持续学习环境中保持模型的性能。替换策略的选择将直接影响模型对旧知识的保留以及对新知识的吸收。
如何保证样本的多样性?

在本文提出的Reactive Subspace Buffer (RSB) 算法中,保证样本多样性的机制主要体现在以下几个方面:

聚类驱动的缓冲区:RSB算法使用聚类方法来组织数据,其中每个质心(Centroid)代表一个簇(Cluster),并且每个簇维护一个缓冲区来存储该簇的实例。这种方法有助于保持簇内样本的多样性,因为每个簇都能够独立地捕捉并维护其数据子空间的多样性。

缓冲区大小限制:通过为每个簇的缓冲区设定大小上限(bmax),算法可以确保缓冲区中的样本不是简单地按照先进先出(FIFO)原则替换,而是根据其代表性和与簇中心的距离来决定是否替换。这样可以避免缓冲区中只有非常相似的样本。

滑动窗口:每个簇的缓冲区中还包含一个滑动窗口(Wx),它用于跟踪最近的概念变化。滑动窗口有助于算法快速响应概念漂移,同时保持对最近样本的多样性。

基于纯度的采样:RSB算法在进行经验重放时,会根据每个簇的纯度(即簇内样本的一致性)来决定是否从其缓冲区中采样实例。纯度较低的簇意味着簇内存在多样性,算法可能会更倾向于从这些簇中采样实例。

质心的动态更新:当新实例到达时,如果它与最近的质心属于同一类别,算法会更新该质心及其缓冲区和滑动窗口。如果实例与当前质心类别不一致,但足够接近,算法可能只更新滑动窗口而不改变质心,这有助于维护簇的多样性。

概念漂移的适应性:RSB算法能够检测和响应概念漂移,通过切换质心的标签、分裂簇或移除过时的质心,算法可以适应数据分布的变化,从而保持样本的多样性。

过采样平衡:在从缓冲区采样实例进行经验重放时,由于采样过程可能导致某些类别的实例数量减少,RSB算法使用过采样来平衡选定的批次,这有助于保持样本的多样性。

通过上述机制,RSB算法能够在持续学习的过程中,不仅学习新的类别,而且保留对以前类别的知识,同时适应概念漂移,从而在整个学习过程中保持样本的多样性。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xys430381_1/article/details/90705743

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文