Few-shot Novel Category Discovery-少样本新类发现

目录

研究背景

[1. 少样本学习 (FSL) 的局限:无法聚类新类别](#1. 少样本学习 (FSL) 的局限:无法聚类新类别)

[2. 新类别发现 (NCD/GCD) 的局限:依赖直推式学习](#2. 新类别发现 (NCD/GCD) 的局限:依赖直推式学习)

[1. 缺乏"即时处理"能力(No Real-time Inference)](#1. 缺乏“即时处理”能力(No Real-time Inference))

[2. 无法处理"流式数据"(Data Stream / Incremental Learning)](#2. 无法处理“流式数据”(Data Stream / Incremental Learning))

[3. 严重的"存储负担"与"隐私挑战"](#3. 严重的“存储负担”与“隐私挑战”)

[3. 半监督学习 (SSL) 的局限:不支持全新类别](#3. 半监督学习 (SSL) 的局限:不支持全新类别)

核心差异对比表

[趋势:广义新类别发现 (GCD) 的兴起](#趋势:广义新类别发现 (GCD) 的兴起)

[1. 为什么传统的 FSL 会"乱塞"?](#1. 为什么传统的 FSL 会“乱塞”?)

[2. 论文是如何让它"不乱塞"的?(引入"非参数化"思想)](#2. 论文是如何让它“不乱塞”的?(引入“非参数化”思想))

[3. 关键:如何实现"聚成一簇"?](#3. 关键:如何实现“聚成一簇”?)

图片说明

SSL (Semi-Supervised Learning, 半监督学习)

[2. NCD (Novel Category Discovery, 新类别发现)](#2. NCD (Novel Category Discovery, 新类别发现))

[3. GCD (Generalized Category Discovery, 广义新类别发现)](#3. GCD (Generalized Category Discovery, 广义新类别发现))

[4. FSL (Few-Shot Learning, 少样本学习)](#4. FSL (Few-Shot Learning, 少样本学习))

[5. FSNCD (你给出的论文新任务)](#5. FSNCD (你给出的论文新任务))

​编辑

​编辑

[1. 为什么 NCD 和 GCD 是 Transductive(直推式)?](#1. 为什么 NCD 和 GCD 是 Transductive(直推式)?)

[2. FSL 与 FSNCD 的 Inductive(归纳式)优势](#2. FSL 与 FSNCD 的 Inductive(归纳式)优势)

[标准 K-means(含 K-means++)的核心不足](#标准 K-means(含 K-means++)的核心不足)

[FSNCD 新策略的核心优势(对应你提供的图片内容)](#FSNCD 新策略的核心优势(对应你提供的图片内容))

[1. 统一高维特征空间建模](#1. 统一高维特征空间建模)


研究背景

少样本学习(FSL)、新类别发现(NCD/GCD)、半监督学习(SSL)各自的局限性(FSL 无法聚类新类别、NCD 依赖直推式学习、SSL 不支持全新类别);

1. 少样本学习 (FSL) 的局限:无法聚类新类别

痛点: FSL 是为了"识别",而不是"发现"。

  • 为什么: FSL 的核心是分类任务。它要求模型在极少量的标注样本(Support Set)下,学会识别出这些特定类别的 Query。

  • 深层原因: FSL 通常假设测试时出现的类别虽然是"未见过"的,但类别标签是给定的。模型的目标是计算样本与已知原型(Prototype)的相似度。它缺乏一种"自发聚类"的机制------如果给它一堆完全没有标签的混合数据,它只会尝试把这些数据往已有的几个类别里"硬塞",而不会意识到:"嘿,这可能是一个我不认识的新簇。"

  • 固化的"分类空间" (Closed Hypothesis Space)

  • 在 FSL 的典型设置(如 N-way K-shot)中,模型的目标是在 N 个给定的类别中做选择。

  • 训练阶段: 模型学会了如何提取特征,以及如何计算样本之间的相似度。

  • 测试阶段: 你给模型 5 个新类别的各 1 张图片(Support Set),然后给它 1 张待分类图片(Query)。模型会计算这张 Query 与这 5 个类别的相似度,并选出最高的一个。

  • 局限所在: FSL 的输出层(或者原型比对层)是闭合的。如果 Query 实际上属于第 6 种类别,模型并没有一个"我不认识"或者"这是一个新聚类"的选项。它会强行从那 5 个已知候选中选出一个最像的。

2. 新类别发现 (NCD/GCD) 的局限:依赖直推式学习

痛点: 往往假设"全体新类别"在训练阶段的无标签集中共同出现(Transductive/Batch-based)。

  • 为什么: NCD 的核心在于通过**聚类(Clustering)**来定义新类。为了聚得准,模型通常需要一次性看到大量新类别的样本,通过对比学习或相互信息最大化来建模数据分布。

  • 深层原因: 很多 NCD 算法具有"闭环性"。它在无标签集上训练后,模型就固定了。如果你在推理阶段(Inference)突然给它一个全新的、孤立的样本,它很难在没有上下文参考(其他同类样本)的情况下,稳定地将其归入某个新簇。它更像是一个"批处理"过程,而非能够处理流式、动态增长数据的系统。

1. 缺乏"即时处理"能力(No Real-time Inference)

想象你在开发一个自动驾驶系统扫地机器人

  • NCD 的逻辑: 机器人遇到一个从未见过的障碍物(新类 A),它不能立刻判断这是什么。它必须先攒够 1000 个这类障碍物的样本,然后把这 1000 个样本一起丢进聚类算法里"跑一遍",才能给它们贴上一个统一的代号。

  • 痛点: 在攒够数据之前,它对眼前的这个物体是完全无知的。这种滞后性在需要实时决策的场景下是致命的。

2. 无法处理"流式数据"(Data Stream / Incremental Learning)

现实世界的数据是像流水一样源源不断的,而不是一个固定不动的"池子"。

  • NCD 的逻辑: 它是"闭环聚类"。如果你今天聚好了类 A 和 B,明天突然又出现了一个新类 C 的样本,传统的 NCD 往往需要把 A、B、C 所有的无标签数据重新倒在一起,重新跑一遍聚类

3. 严重的"存储负担"与"隐私挑战"

  • NCD 的逻辑: 为了保证聚类效果,你必须在内存或硬盘里缓存大量的无标签测试数据。

  • 存储: 如果是高分辨率视频数据,攒够能聚类的规模会占用巨大空间。

  • 隐私: 在医疗或金融领域,数据往往阅后即焚,不允许你为了聚类而长期留存大量用户的原始数据。

  • 痛点: 计算成本极高。模型没有一种"归纳(Inductive)"的规则,能让它在看到一个新样本时直接说:"根据我之前总结的规律,这个新来的家伙属于第 4 号新簇。"

3. 半监督学习 (SSL) 的局限:不支持全新类别

痛点: 强烈的"闭世界(Closed-world)"假设。

  • 为什么: 传统 SSL 的目标是利用无标签数据来增强已知类别的分类器。它假设无标签数据的类别空间 {Y}(u) 与有标签数据的类别空间 {Y}(l)是完全一致的 {Y}(u) = {Y}(l)。

  • 深层原因: SSL 的主流技术(如伪标签 Pseudo-labeling、一致性正则 Consistency Regularization)都是为了把无标签数据推向已知的决策边界。如果无标签数据中包含"全新类别"(Out-of-Distribution, OOD),模型会产生严重的模型坍塌或过拟合,强行将新类样本贴上旧类标签,导致分类器性能大幅下降。


核心差异对比表

领域 核心任务 对无标签数据的假设 致命短板
FSL 快速适配 (Adaptation) 极少,主要靠先验知识 遇到无标签新类时"两眼一抹黑",无法自主发现结构
NCD 结构挖掘 (Discovery) 包含大量待发现的新类别 泛化性差,往往需要整体聚类,难以处理增量新样本
SSL 边界增强 (Refinement) 与有标签数据类别完全相同 鲁棒性低,遇到新类别会产生"识别错觉"

趋势:广义新类别发现 (GCD) 的兴起

正因为你提到的这些局限,现在的研究正在向 GCD (Generalized Category Discovery) 演进。GCD 试图打破这些边界:它要求模型在一个包含"已知类"和"未知类"的混合无标签池中,既能通过 SSL 提升已知类性能,又能像 NCD 那样自动聚类出新类别,同时还要具备 FSL 的高效学习能力。

本文的核心解决思路:融合 FSL 和 NCD,提出新任务,用归纳式学习替代 NCD 的直推式学习,让模型仅靠少量支持样本完成「已知类识别 + 新类聚类」。


看论文之前,先提出一下问题(询问的大模型)

但是我不理解的,FSL他需要给定的类别标签进行聚类,NCD在无标签训练之后就固定了,但是假如来一个新的标签,你还是不知道啊

FSL:你不是说他会往已知的几个类里面塞吗,也不是把他们聚成一簇啊

Gemini回答:

这是一个非常关键的逻辑转折点。你的质疑非常敏锐:"如果模型只会往已知的坑里塞,那它凭什么能聚成新的一簇?"

这正是 FSL(少样本学习)NCD/GCD(新类别发现) 之间最本质的冲突,也是你提到的这篇论文试图解决的核心技术矛盾

我们可以从以下三个层面拆解,看看模型是如何从"乱塞"变成"聚类"的:


1. 为什么传统的 FSL 会"乱塞"?

传统的 FSL(如原型网络 ProtoNet)使用的是 Softmax 归一化

  • 逻辑: 概率总和必须为 1。如果已知类有"猫、狗",来了一只"袋鼠",模型计算相似度后发现:袋鼠和狗有 20% 像,和猫有 10% 像。

  • 结果: 经过归一化,模型会说:"我有 66% 的把握它是狗"。这就是你说的**"往已知类里塞"**。因为它没有给"未知"留出空间。

2. 论文是如何让它"不乱塞"的?(引入"非参数化"思想)

要解决这个问题,这篇论文(以及 GCD 任务)通常会引入一个**"开放式原型""对比学习"**的机制,打破 Softmax 的闭环:

  • 不再是"选一个",而是"看距离": 模型不再强制样本必须属于 A 或 B,而是计算它在特征空间里的绝对位置。

  • 对比学习的功劳: 模型在训练时会被要求:"让相似的靠拢,不相似的推开"

    • 当一群"袋鼠"出现时,虽然模型不知道它们叫什么,但由于它们长得像,对比学习会强迫它们在特征空间里自发抱团

    • 此时,如果它们距离"猫"和"狗"的中心都很远,模型就会意识到:"这是一个新的密集区,我不应该把它往旧类里塞。"


3. 关键:如何实现"聚成一簇"?

你提到的这篇论文之所以能实现"聚类",通常是因为它改变了输出层的设计。它不再是一个固定的分类头,而是采用了以下两种策略之一:

  • 策略 A:半监督聚类(Constrained Clustering)。 模型在处理无标签数据时,会参考已知类的分布。如果一个样本和所有已知类都不像,它会被丢进一个"待分配池"。通过 K-Means 或 Sinkhorn 算法,模型在这个池子里寻找新的中心点。

  • 策略 B:双分支/多头结构。 一个头负责认"老朋友"(分类),另一个头负责找"新邻居"(聚类)。这两个头共享同一个特征提取器。特征提取器在识别老朋友的过程中学到了"如何分辨事物",并把这种能力迁移到新类别上,让新类别能够清晰地分簇。

图片说明

SSL (Semi-Supervised Learning, 半监督学习)

  • 图示特征: 训练集里有带数字的实线圆圈(有标签),也有带问号的虚线圆圈(无标签)。

  • 核心逻辑: 它的目标是**"利用无标签数据来画好已知类的边界"**。

  • 局限: 你看 Test 框里,所有的问号最终都指向了已知的 ①②③。它假设世界只有这三个类,无标签数据只是用来帮你把这三个类认得更准。它不支持全新类别。

2. NCD (Novel Category Discovery, 新类别发现)

  • 图示特征: 训练和测试是在一起的(Train + Test),这叫直推式学习

  • 核心逻辑: 它的训练集只有已知类 ①②。但在测试/训练混合池里,出现了一堆完全不属于 ①② 的新样本。模型的目标是**"在已知类的启发下,把新类 ④⑤ 聚出来"**。

  • 局限: 它通常假设已知类和新类是完全分开处理的(Disjoint),而且往往需要一次性看到所有新类样本才能聚类。

3. GCD (Generalized Category Discovery, 广义新类别发现)

  • 图示特征: 注意看那个大圈,里面混合了已知类(①②)的无标签样本和全新类(问号)的无标签样本。

  • 核心逻辑: 这是 NCD 的升级版。它不再假设无标签数据全是新类。模型必须同时做两件事:

    1. 把属于 ①② 的无标签样本归位(类似 SSL)。

    2. 把不属于 ①② 的样本聚成新类(类似 NCD)。

  • 一句话总结: 它面对的是一个真实且混乱的无标签池。

4. FSL (Few-Shot Learning, 少样本学习)

  • 图示特征: 训练集只有 ①②③。但在测试时,突然给了你 ④⑤ 的极少量样本(带箭头的 Support Set)。

  • 核心逻辑: 它的目标是**"快速迁移"**。模型利用在 ①②③ 上学到的特征提取能力,仅看一眼 ④⑤,就能在测试集里认出它们。

  • 局限: 就像你之前说的,如果测试集里出现了图中没给标签的"红色问号",FSL 会选择无视或者强行归类,它没有聚类能力


5. FSNCD (你给出的论文新任务)

这是这张图的终点,也是最强的形态:

  • 它融合了 FSL 的灵活性(能通过少量样本认出 ④⑤);

  • 同时也保留了 NCD 的探索欲(能自动把没见过的红色问号聚成一簇)

实验样本说明


Yu包含Ys,Yn,因此,他会最后实验结果是Test

1. 为什么 NCD 和 GCD 是 Transductive(直推式)?

看表中的 Test 这一列:

  • NCD 和 GCD 在 Test 下面是横杠 - 。这意味着它们没有独立的测试阶段

  • 含义: 它们把要识别的新类数据({Y}U)在训练阶段就一股脑全丢进去了。模型是边练边聚类。这就印证了你之前的疑问------它们必须"一次性看到所有样本"才能得出结果,没法处理训练结束后突然蹦出来的新样本。

2. FSL 与 FSNCD 的 Inductive(归纳式)优势

看这两行的 TestQuery 列:

  • 它们都有明确的 Test 目标({Y}U),即训练时完全不出现的类别。

  • 关键差异在最后一列 Query:

    • FSL: Query 是 {Y}S。意思是:我给你几张"袋鼠"的参考图(Support),你只需要在测试集(Query)里把"袋鼠"认出来就行。

    • FSNCD(这篇论文): Query 是 {Y}S U {Y}N。这简直是"地狱难度"。意思是:我给你几张"袋鼠"的参考图,但在测试集里,不仅有袋鼠({Y}(s),还有一大堆我连参考图都没给你的"考拉"、"鸵鸟"({Y}(N), Novel classes)

分类构建器

逻辑手段 对应方法 代码里的"判断句" 结果
合并限制 SHC if 两个簇包含不同已知原型: 不要合并 保护已知类的边界,留出新类空间
拆分触发 UKC if 某个簇样本数 > 平均值 * 阈值: 必须拆分 发现隐藏在旧类阴影下的新类别

标准 K-means(含 K-means++)的核心不足

  1. 必须预先指定簇数量 K

    • 真实场景(如新类发现)中,新类数量未知,无法提前确定 K,依赖人工先验,不切实际。
    • 合成数据集上的 K 设定是基于 "人类感知" 的假设,无法泛化到复杂真实任务。
  2. 对初始质心选择高度敏感

    • 随机初始化易陷入局部最优,导致聚类结果不稳定、差异大。
    • K-means++ 虽通过 "远距优先" 策略优化了质心初始化,但仍未解决 K 未知的核心问题,只是提升了收敛稳定性。
  3. 无法处理不确定性场景

    • 小样本新类发现中,特征空间存在不确定性(如样本少、噪声多、新类边界模糊),标准 K-means 缺乏对不确定性的建模,无法自适应调整簇结构。

FSNCD 新策略的核心优势(对应你提供的图片内容)

1. 统一高维特征空间建模
  • 假设支持集(已知类)和查询集(未知新类)共享同一个高维特征空间,让已知类原型(prototypes)与未知查询样本在同一空间内聚类,充分利用支持集的监督信息。
  • 利用该空间的不确定性估计 ,辅助自动选择新类对应的质心数量,摆脱对人工指定 K 的依赖。

代码解读

  • Test Acc All: 0.8793, Old: 0.9535, New: 0.8051
相关推荐
龙腾AI白云2 小时前
深度学习实战:Transformer模型文本翻译应用
人工智能·深度学习
美狐美颜SDK开放平台2 小时前
直播美颜SDK选型避坑指南:功能与性能对比
人工智能·音视频·美颜sdk·直播美颜sdk·短视频美颜sdk
一次旅行3 小时前
新闻简报2026-4-1
人工智能·量子计算
量化炼金 (CodeAlchemy)3 小时前
【交易策略】基于随机森林的市场结构预测:机器学习在量化交易中的实战应用
算法·随机森林·机器学习
码农的神经元3 小时前
从零实现 LLaMA 架构:一步步构建轻量级大语言模型
人工智能·语言模型·llama
xu_wenming3 小时前
ESP32 运行TinyML模型准确性影响因素
人工智能·深度学习·机器学习
renhongxia13 小时前
大模型Prompt实战:精准生成专业技术文档
人工智能·微服务·语言模型·自然语言处理·机器人·prompt
liliangcsdn3 小时前
如何基于OpenAI进行Function Calling调用
人工智能·全文检索
千匠网络3 小时前
2026 AI 应用峰会启幕,共拓企业智能增长新未来
大数据·人工智能