作为一名深耕技术与数学领域的博主,qmwneb946 很高兴能与大家共同探讨一个在人工智能领域充满挑战与机遇的前沿方向——少样本图像分类(Few-Shot Image Classification)。在深度学习的黄金时代,我们见证了图像识别在海量数据喂养下所展现出的惊人能力。然而,现实世界的数据往往稀缺且昂贵,尤其是在医疗、军事、高精度工业检测等专业领域。当面对只有寥寥数张样本的新类别时,我们训练有素的深度学习模型常常束手无策,其性能会断崖式下跌。

这,正是少样本学习(Few-Shot Learning, FSL)登场的舞台。它旨在赋予机器“举一反三”的能力,让模型在仅观察少数几个示例后,就能快速识别新的概念。想象一下,一个孩子只需要看几张猫咪的照片,就能识别出各种形态、不同品种的猫,这正是我们希望机器达到的智能水平。在图像分类领域,少样本学习的突破,无疑将极大拓展人工智能的应用边界,让 AI 不再是“数据巨人”的专属特权。

本文将带领大家深入少样本图像分类的世界,从其核心概念出发,层层剖析主流的解决方案。我们将探讨元学习(Meta-Learning)如何让模型学会“学习”,基于度量、基于优化和基于模型的元学习方法各有什么独到之处;我们将审视数据增强与生成、迁移学习与微调、度量学习以及贝叶斯方法如何为“小数据”问题提供辅助;最后,我们还会展望前沿趋势,看看不同范式的融合以及自监督学习、大模型预训练等新势力如何为少样本学习注入新的活力。

准备好了吗?让我们一同踏上这场关于小数据智能的探索之旅。

什么是少样本学习?

在深入探讨少样本图像分类的具体方法之前,我们首先需要清晰地定义什么是少样本学习,以及它与我们熟悉的传统监督学习有何不同。

传统深度学习范式依赖于“大数据”:数以万计甚至百万计的带标签样本被用于训练一个模型,使其能够从数据中学习到普适的特征表示和分类决策边界。例如,ImageNet 包含了数百万张图片和上千个类别,这使得训练出的模型在通用图像识别任务上表现出色。

然而,在许多真实世界场景中,获取如此大规模的标注数据是不切实际的,甚至是不可想象的。例如,在医学影像诊断中,某种罕见疾病的病例可能屈指可数;在工业缺陷检测中,某种新型缺陷模式可能只有少量发生;在新产品发布初期,其图像样本也可能非常有限。在这种“数据稀缺”的环境下,传统深度学习模型由于缺乏足够的训练数据来学习鲁棒的特征和泛化能力,很容易导致严重的过拟合。

少样本学习(Few-Shot Learning, FSL)正是为解决这一挑战而生。它旨在使模型能够从极少量(通常是几个到几十个)的带标签样本中快速学习并泛化到新的、未见过的类别。

少样本学习的问题设置

少样本学习通常采用一种特殊的任务划分方式,即“N-way K-shot”设置。

  • 支持集 (Support Set, SS): 包含少量带标签样本的集合。其中,N 表示类别数 (N-way),K 表示每个类别中包含的样本数 (K-shot)。例如,一个“5-way 1-shot”任务意味着支持集中包含 5 个不同类别的样本,每个类别只有 1 张图片。
  • 查询集 (Query Set, QQ): 包含未标记样本的集合,这些样本也属于支持集中出现的 N 个类别。模型的任务是根据支持集中学到的信息,对查询集中的样本进行分类。

少样本学习的训练过程通常是基于“元任务”(meta-task)或“情景”(episode)进行的。在训练阶段,模型会接触大量不同的元任务。每个元任务都模拟了一个 N-way K-shot 的少样本分类问题。模型的目标不是学会识别特定的 N 个类别,而是学会一种“学习新类别”的能力。这种能力体现在,当给定一个新的支持集时,模型能够快速地调整自身,从而在新的查询集上表现良好。

少样本学习与传统监督学习的区别

特征 传统监督学习 少样本学习
数据量 大规模标注数据集 (百万级) 极少量标注样本 (K-shot, K通常为1或5)
学习目标 学习特定类别之间的映射关系,解决一个固定任务 学习“如何学习”,快速适应新类别/新任务
训练/测试 训练集和测试集类别通常相同 训练集(基类)和测试集(新类)的类别不相交
泛化能力 对已见类别泛化能力强 对未见类别泛化能力强,能够举一反三
主要挑战 过拟合、计算资源 数据稀缺、快速适应、防止过拟合、学习泛化能力

少样本学习的核心挑战在于,如何在极少量的样本下,避免模型过拟合到这些特定样本上,而是学习到更高级别的、可迁移的知识或学习策略,从而在新类别上获得良好的泛化性能。

少样本图像分类的典型应用场景

少样本图像分类并非纸上谈兵,它在许多实际应用中展现出巨大的潜力,尤其是在那些数据获取困难、标注成本高昂或需要快速适应新情况的领域。

医疗图像诊断

在医疗领域,许多疾病,特别是罕见病或新型病变,其诊断图像样本极其稀少。例如,发现一种新的病毒感染导致的肺部影像特征,或者识别一种罕见的皮肤癌类型。传统深度学习模型需要大量的确诊病例图像才能达到高精度诊断,但这在临床实践中往往无法满足。少样本图像分类能够让 AI 模型仅通过几张典型病例图像,就能学习识别这些新的、罕见的疾病特征,从而辅助医生进行早期、准确的诊断,这对于挽救生命和提高医疗效率具有重要意义。

新产品识别与质检

在工业生产线或零售场景中,新产品、新零件或新的缺陷模式会不断出现。例如,一家智能手机制造商可能每周都会推出新的配件或改进现有配件的设计。如果每次都需要重新收集数千张图片并训练一个新的大规模模型,这显然是低效且不经济的。通过少样本学习,生产线上的视觉系统可以快速“学习”新产品的外观特征,对其进行识别、计数,或者识别出新出现的微小缺陷,从而实现高效的质量控制和库存管理。

机器人视觉与自主学习

机器人需要在复杂且不断变化的真实环境中执行任务。当机器人遇到一个全新的物体时,例如一种从未见过的工具或水果,它应该能够通过少数几次观察就学会识别并与之交互。少样本学习赋予机器人这种快速适应和自主学习的能力,让它们无需经过漫长的离线训练,就能在部署后通过少量交互经验来识别新的环境元素或操作对象,这对于实现真正智能和自主的机器人至关重要。

军事侦察与目标识别

在军事侦察和情报分析中,识别新型武器装备、车辆或战术布局等目标是核心任务。这些目标的图像样本往往非常稀有且敏感。少样本图像分类技术能够帮助分析师快速训练模型,以便从有限的卫星图像、无人机侦察图像中识别出新出现的、低频次的目标类型,从而提高战场态势感知能力和决策效率。

个性化推荐与用户画像

在电商、内容平台等领域,为新用户或新商品进行个性化推荐是一个挑战。新用户刚注册时,其行为数据非常少;新商品刚上架时,其销售或互动数据也很少。如何基于这些有限的信息,快速准确地进行推荐?少样本学习可以帮助模型从少量用户行为(如点击、购买少数几个商品)中推断出其兴趣偏好,或者从少量商品特征中理解其潜在用户群体,从而提供更精准的个性化推荐服务,提高用户体验和商业转化率。

这些应用场景无一不强调了在数据稀缺背景下,模型快速学习和泛化能力的重要性。少样本图像分类正是解决这些痛点的关键技术。

元学习 (Meta-Learning) 方法

元学习,又被称为“学会学习”(Learning to Learn),是少样本学习领域的核心思想和主流范式。它不是直接学习从输入到输出的映射,而是学习一个“学习器”(learner),这个学习器能够在面对新任务时,通过少量数据快速调整自身,从而达到良好的性能。简单来说,元学习的目标是训练一个模型,使其能够从不同的任务中提取出通用的学习策略,并将这些策略应用到从未见过的新任务上。

在少样本图像分类中,元学习通常通过模拟“元训练”(meta-training)和“元测试”(meta-testing)阶段来实现。

  • 元训练阶段:模型在大量由基类(base classes)构成的小任务(episodes)上进行训练。每个小任务都是一个独立的 N-way K-shot 分类问题。模型的目标是优化其学习策略,使其在这些小任务上表现良好。
  • 元测试阶段:模型在由新类(novel classes)构成的小任务上进行评估。这些新类在元训练阶段是完全未见的。模型需要利用在元训练阶段学到的“学习策略”来快速适应这些新任务。

根据其内部学习策略的不同,元学习方法可以大致分为三类:基于优化的元学习、基于度量的元学习和基于模型的元学习。

基于优化的元学习

这类方法旨在学习一个通用的模型初始化参数,或者一个通用的优化器,使得模型在新的任务上只需经过少量梯度更新就能快速收敛。

MAML (Model-Agnostic Meta-Learning)

MAML,全称 Model-Agnostic Meta-Learning,是元学习领域最具影响力的算法之一。它的核心思想是学习一个模型参数的良好初始化值 θ\theta,这个初始化值使得模型在新的任务上通过一次或少数几次梯度更新后,就能获得显著的性能提升。它被称为“模型无关”(Model-Agnostic),是因为它可以应用于任何梯度可训练的模型(如神经网络)。

工作原理:

MAML 的训练过程包含两个嵌套的优化循环:

  1. 内循环 (Inner Loop / Task-Specific Adaptation)

    • 对于每个元训练任务 TiT_i(一个 N-way K-shot 任务),我们从支持集 SiS_i 中计算损失,并对当前模型参数 θ\theta 进行一次或几次梯度下降更新,得到任务适应后的参数 θi\theta_i'
    • θi=θαθLSi(fθ)\theta_i' = \theta - \alpha \nabla_\theta \mathcal{L}_{S_i}(f_\theta)
    • 其中 α\alpha 是内循环的学习率,fθf_\theta 是由 θ\theta 参数化的模型。
  2. 外循环 (Outer Loop / Meta-Optimization)

    • 在得到每个任务适应后的参数 θi\theta_i' 后,我们使用该任务的查询集 QiQ_i 来计算元损失。这个元损失衡量的是模型在适应新任务后的泛化能力。
    • 元损失是所有元训练任务的查询集损失之和:Lmeta=TiLQi(fθi)\mathcal{L}_{meta} = \sum_{T_i} \mathcal{L}_{Q_i}(f_{\theta_i'})
    • 然后,我们对初始参数 θ\theta 进行梯度下降更新,以最小化这个元损失。由于 θi\theta_i'θ\theta 的函数,这个梯度计算需要二阶导数(梯度回传通过内循环的优化过程)。
    • θθβθLmeta=θβθTiLQi(fθαθLSi(fθ))\theta \leftarrow \theta - \beta \nabla_\theta \mathcal{L}_{meta} = \theta - \beta \nabla_\theta \sum_{T_i} \mathcal{L}_{Q_i}(f_{\theta - \alpha \nabla_\theta \mathcal{L}_{S_i}(f_\theta)})
    • 其中 β\beta 是外循环的学习率。

通过这种方式,MAML 学习到的初始参数 θ\theta 就像一个“万能的起点”,无论面对什么新任务,都能以最快的速度和最少的更新步数适应并取得好结果。

数学公式:

假设模型 fθf_\theta 由参数 θ\theta 定义。对于一个任务 Ti\mathcal{T}_i,其损失函数为 LTi\mathcal{L}_{\mathcal{T}_i}
内循环更新:

θi=θαθLTisupp(fθ)\theta_i' = \theta - \alpha \nabla_\theta \mathcal{L}_{\mathcal{T}_i^{supp}}(f_\theta)

外循环更新:

θθβθTip(T)LTiquery(fθi)\theta \leftarrow \theta - \beta \nabla_\theta \sum_{\mathcal{T}_i \sim p(\mathcal{T})} \mathcal{L}_{\mathcal{T}_i^{query}}(f_{\theta_i'})

优点:

  • 模型无关性 (Model Agnostic):适用于各种模型架构(CNNs, RNNs, FCNs等)。
  • 泛化能力强:通过学习通用的初始化,能够很好地泛化到未见任务。

缺点:

  • 计算成本高:需要计算二阶导数,计算量和内存消耗较大,尤其对于大型模型。
  • 对学习率敏感:内循环和外循环的学习率选择对性能影响较大。
  • 实现复杂:涉及到元梯度回传,需要特殊的自动微分库支持(如 PyTorch 的 create_graph=True)。

概念性伪代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# MAML 伪代码
# meta_model: 待学习的模型 (e.g., ResNet)
# meta_optimizer: 外循环优化器 (e.g., Adam)
# inner_lr: 内循环学习率
# outer_lr: 外循环学习率
# num_inner_updates: 内循环更新步数

def meta_training_step(meta_model, meta_optimizer, tasks_batch, inner_lr, outer_lr, num_inner_updates):
meta_optimizer.zero_grad()
meta_loss_sum = 0

for task_i in tasks_batch:
support_set, query_set = task_i.get_data()

# 1. 克隆当前模型参数用于内循环
task_model = meta_model.clone_parameters() # 关键:这一步要确保可梯度追踪

# 2. 内循环:在支持集上进行几次梯度更新
for _ in range(num_inner_updates):
support_loss = task_model.compute_loss(support_set)
# 计算关于 task_model 参数的梯度
# MAML 需要确保这些梯度能够追踪到 meta_model 的原始参数
grads = torch.autograd.grad(support_loss, task_model.parameters(), create_graph=True)
# 手动更新参数
task_model.update_parameters_with_grads(grads, inner_lr)

# 3. 外循环:在查询集上计算元损失
query_loss = task_model.compute_loss(query_set)
meta_loss_sum += query_loss

# 4. 外循环:计算关于 meta_model 初始参数的元梯度并更新
meta_loss_sum.backward() # 这会通过链式法则回传到 meta_model 的初始参数
meta_optimizer.step()

return meta_loss_sum

Reptile

Reptile 可以被看作是 MAML 的一个简化版本,它通过一阶近似来避免 MAML 中昂贵的二阶导数计算。尽管更简单,但在很多少样本任务上它能达到与 MAML 相似甚至更好的性能。

工作原理:

Reptile 的核心思想是,不是学习一个最佳的初始参数,而是学习一个能够快速收敛到任务特定参数的“方向”。它通过在每个任务上进行多次梯度下降,然后将模型参数朝着内循环结束时的参数方向“拉”一点,来更新初始参数。

  1. 内循环 (Inner Loop)

    • 对于每个元训练任务 TiT_i,从当前全局参数 θ\theta 开始,在支持集 SiS_i 上进行多次梯度下降更新,得到任务适应后的参数 ϕi\phi_i
    • ϕi=θk=1num_updatesαθLSi(fθ(k1))\phi_i = \theta - \sum_{k=1}^{num\_updates} \alpha \nabla_\theta \mathcal{L}_{S_i}(f_{\theta^{(k-1)}})
  2. 外循环 (Outer Loop)

    • 不是计算二阶梯度,而是简单地将全局参数 θ\theta 朝着 ϕi\phi_i 的方向移动一小步。
    • θθβ(θϕi)\theta \leftarrow \theta - \beta (\theta - \phi_i)
    • 这可以看作是最小化 (θϕi)2(\theta - \phi_i)^2 的一种方式,即让初始参数尽可能地靠近任务特定参数。

Reptile 的更新规则可以被解释为一种元梯度,其近似于 MAML 的二阶梯度,但只涉及一阶信息。

数学公式:

内循环:

ϕi=Optimize(θ,LTisupp,num_inner_updates,α)\phi_i = \text{Optimize}(\theta, \mathcal{L}_{\mathcal{T}_i^{supp}}, \text{num\_inner\_updates}, \alpha)

外循环:

θθ+β(ϕiθ)\theta \leftarrow \theta + \beta (\phi_i - \theta)

优点:

  • 计算效率高:避免了二阶导数计算,内存和计算量显著降低。
  • 实现简单:比 MAML 更容易实现。
  • 性能优异:在许多任务上能达到与 MAML 相当的性能。

缺点:

  • 理论理解复杂:其与MAML的近似关系和收敛性分析不如MAML直观。

基于度量的元学习 (Metric-Based Meta-Learning)

这类方法旨在学习一个优秀的特征嵌入空间(embedding space)以及一个通用的度量函数(metric function)。在这个学习到的嵌入空间中,相同类别的样本应该彼此靠近,而不同类别的样本则应该彼此远离,即使是那些从未见过的新类别。在进行分类时,只需将查询样本嵌入到该空间中,然后找到与其距离最近的支持集样本或类别原型。

Prototypical Networks (原型网络)

原型网络是基于度量学习的元学习中最直观、最流行的方法之一。它的核心思想是,在学习到的特征嵌入空间中,每个类别都可以由其支持集中所有样本的特征向量的均值来表示,这个均值向量被称为“原型”(prototype)。分类时,查询样本被分类到离它最近的原型所属的类别。

工作原理:

  1. 特征嵌入:首先,通过一个神经网络 fϕf_\phi(参数为 ϕ\phi)将所有图像(支持集和查询集)映射到一个低维特征嵌入空间。

  2. 原型计算:对于支持集中的每个类别 kk,计算其所有样本特征向量的均值,作为该类别的原型 ckc_k

    ck=1Sk(xi,yi)Skfϕ(xi)c_k = \frac{1}{|S_k|} \sum_{(x_i, y_i) \in S_k} f_\phi(x_i)

    其中 SkS_k 是类别 kk 的支持集, Sk|S_k| 是该类别样本的数量。

  3. 距离计算与分类:对于查询集中的每个样本 xqx_q,计算其特征向量 fϕ(xq)f_\phi(x_q) 与所有类别原型 ckc_k 之间的距离。常用的距离度量是欧氏距离的平方。

  4. 损失函数:将距离转化为概率分布,通常使用 Softmax 函数。模型的目标是最小化查询样本被错误分类的负对数似然损失。

    P(yq=kxq)=exp(d(fϕ(xq),ck))kexp(d(fϕ(xq),ck))P(y_q=k|x_q) = \frac{\exp(-d(f_\phi(x_q), c_k))}{\sum_{k'} \exp(-d(f_\phi(x_q), c_{k'}))}

    损失函数通常是交叉熵损失:

    \mathcal{L} = -\log P(y_q=\text{true_class}|x_q)

数学公式:

原型计算:

ck=1Ki=1Kfϕ(xi,k)c_k = \frac{1}{K} \sum_{i=1}^{K} f_\phi(x_{i,k})

其中 xi,kx_{i,k} 是类别 kk 的第 ii 个支持样本,KK 是每个类别的样本数(K-shot)。
预测概率(使用欧氏距离的负数作为相似度):

p(y=kxq)=exp(fϕ(xq)ck22)kexp(fϕ(xq)ck22)p(y=k|x_q) = \frac{\exp(-||f_\phi(x_q) - c_k||_2^2)}{\sum_{k'} \exp(-||f_\phi(x_q) - c_{k'}||_2^2)}

优点:

  • 直观且高效:原理简单,计算效率高,无需复杂的元优化过程。
  • 泛化性好:学习一个好的嵌入空间,使得分类在新类别上也能有效。
  • 稳定:训练相对稳定。

缺点:

  • 原型平均的局限性:原型是类内样本的简单平均,可能无法很好地捕捉类别内部复杂的多模态分布。
  • 对特征提取器要求高:模型的性能高度依赖于特征提取器 fϕf_\phi 的质量。

概念性伪代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Prototypical Networks 伪代码
# encoder: 特征编码器 (e.g., CNN)
# optimizer: 优化器 (e.g., Adam)

def train_episode(encoder, optimizer, support_set, query_set, N_way, K_shot):
optimizer.zero_grad()

# 1. 编码所有支持集图片获取特征向量
# support_set: list of (image, label) tuples
support_features = {label: [] for label in support_set.keys()}
for label, images in support_set.items():
for img in images:
support_features[label].append(encoder(img))

# 2. 计算每个类别的原型 (Prototype)
prototypes = {}
for label, features_list in support_features.items():
prototypes[label] = torch.mean(torch.stack(features_list), dim=0)

# 3. 编码所有查询集图片并计算损失
total_loss = 0
correct_predictions = 0
num_queries = 0

for query_img, true_label in query_set:
query_feature = encoder(query_img)

# 计算查询特征与所有原型的欧氏距离
distances = []
for label_k in prototypes.keys():
dist = torch.norm(query_feature - prototypes[label_k], p=2) # 欧氏距离
distances.append(dist)
distances = torch.stack(distances)

# 将距离转换为概率 (负距离越小,概率越大)
log_probs = F.log_softmax(-distances, dim=0) # 通常使用负距离作为相似度

# 类别索引映射
label_to_idx = {label: idx for idx, label in enumerate(prototypes.keys())}
target_idx = label_to_idx[true_label]

# 计算损失
total_loss += F.nll_loss(log_probs.unsqueeze(0), torch.tensor([target_idx]))

# 统计准确率
predicted_idx = torch.argmax(log_probs).item()
if predicted_idx == target_idx:
correct_predictions += 1
num_queries += 1

# 4. 反向传播和优化
total_loss.backward()
optimizer.step()

accuracy = correct_predictions / num_queries
return total_loss.item(), accuracy

Matching Networks (匹配网络)

匹配网络是元学习的早期代表作之一。它通过注意力机制(或称为“核密度估计”)来计算查询样本与支持集中所有样本之间的匹配权重,然后用这些权重对支持集样本的标签进行加权求和,从而得到查询样本的预测标签。

工作原理:

  1. 特征嵌入:同样,使用一个特征编码器 gg 来嵌入支持集样本 xix_i 和一个编码器 ff 来嵌入查询样本 xqx_q。为了提高泛化性,编码器 ff 会考虑支持集上下文(通过 Bi-LSTM)。

  2. 注意力机制:对于查询样本 xqx_q,它与支持集中的每个样本 xix_i 计算一个注意力权重 a(xq,xi)a(x_q, x_i)。这个权重衡量了 xqx_qxix_i 的相似度。

    a(xq,xi)=exp(c(f(xq),g(xi)))a(x_q, x_i) = \exp(c(f(x_q), g(x_i)))

    其中 cc 是余弦相似度函数。

  3. 预测:查询样本 xqx_q 的预测概率是支持集中所有样本标签的加权和。

    y^q=i=1N×Ka(xq,xi)yi\hat{y}_q = \sum_{i=1}^{N \times K} a(x_q, x_i) y_i

    这里的 yiy_i 是一个独热编码向量。通过 Softmax 归一化这些注意力权重后,可以得到概率分布。

    P(y^qxq,S)=i=1N×Ksoftmax(a(xq,xi))yiP(\hat{y}_q | x_q, S) = \sum_{i=1}^{N \times K} \text{softmax}(a(x_q, x_i)) y_i

优点:

  • 端到端训练:整个模型可以端到端地进行训练。
  • 考虑上下文:查询编码器考虑了支持集的所有样本作为上下文,使得嵌入更具有区分性。

缺点:

  • 计算复杂度:需要计算查询样本与所有支持集样本的相似度,当支持集较大时计算量大。
  • 注意力权重的解释性:简单的点积/余弦相似度可能无法捕获复杂的匹配关系。

Relation Networks (关系网络)

关系网络将度量学习的范畴扩展到“学习一个非线性度量函数”。它通过一个额外的“关系模块”来学习一个复杂的函数,用于判断两个特征向量之间的相似度(或关系分数),而不是简单的欧氏距离或余弦相似度。

工作原理:

  1. 特征嵌入:使用一个特征编码器 fϕf_\phi 将支持集样本 xix_i 和查询集样本 xqx_q 编码成特征向量 fϕ(xi)f_\phi(x_i)fϕ(xq)f_\phi(x_q)

  2. 关系模块:对于查询集中的每个样本 xqx_q,将其特征向量与每个类别的原型(或支持集中的每个样本)的特征向量进行拼接,然后输入到一个“关系模块” gψg_\psi(通常是一个小型神经网络,如多层感知机或卷积网络)。这个关系模块输出一个标量,表示查询样本与该类别原型(或支持样本)之间的“关系分数”。

    rqk=gψ([fϕ(xq),ck])r_{qk} = g_\psi([f_\phi(x_q), c_k])

    其中 [,][,] 表示特征向量的拼接,ckc_k 可以是类原型,也可以是每个支持集样本的特征。

  3. 损失函数:关系模块的输出 rqkr_{qk} 是一个0到1之间的数值,表示相似度的概率。损失函数通常是均方误差损失,即最小化预测关系分数与真实标签(0或1)之间的差异。如果 xqx_q 属于类别 kk,则真实关系是1,否则是0。

    L=(xq,yq)Qk=1N(rqkI(yq=k))2\mathcal{L} = \sum_{(x_q, y_q) \in Q} \sum_{k=1}^N (r_{qk} - I(y_q=k))^2

    其中 I()I(\cdot) 是指示函数。

优点:

  • 学习非线性度量:关系模块可以学习非常复杂的非线性相似度函数,比固定距离度量更强大。
  • 端到端学习:特征编码器和关系模块可以一起端到端训练。

缺点:

  • 计算复杂度:对于每个查询样本,都需要与所有支持集原型或样本拼接并输入关系模块,计算量较大。
  • 训练难度:关系模块的训练可能需要更多技巧,且容易出现梯度消失等问题。

基于模型的元学习 (Model-Based Meta-Learning)

这类方法使用一个模型架构,这个架构本身就包含了快速学习新任务的能力。这种模型通常具有外部存储器或特殊的参数更新机制,能够在推理阶段利用少量支持集信息来直接生成预测。

Meta-LSTMs / Memory-Augmented Neural Networks (MANN)

这类方法的核心思想是,模型本身(通常是循环神经网络,如 LSTM)能够通过其内部状态或外部存储器来模拟学习过程。模型会“记住”支持集中的信息,并利用这些信息来对查询样本进行分类。

工作原理:

  • Meta-LSTM:将传统的 LSTM 用于元学习。每个任务的输入序列包括支持集样本及其标签。LSTM 的内部状态会被更新,这些状态包含了任务特定的学习信息。当处理查询样本时,LSTM 基于其内部状态生成预测。
  • Memory-Augmented Neural Networks (MANN):这些模型(如 Neural Turing Machines (NTMs) 或 Differentiable Neural Computers (DNCs))结合了神经网络和可读写的外部存储器。模型在处理支持集样本时,将相关信息写入存储器;处理查询样本时,则从存储器中读取相关信息以辅助预测。这种外部存储器使得模型能够显式地存储和检索任务相关的知识。

优点:

  • 显式记忆:能够显式地存储和检索任务信息,理论上可以处理更复杂的依赖关系。
  • 动态适应:模型能够动态地根据输入序列(任务数据)调整其内部状态或记忆。

缺点:

  • 计算复杂且难以训练:包含外部记忆的RNN模型通常计算成本高,且训练过程不稳定,难以收敛。
  • 可解释性差:模型的内部工作机制和记忆操作通常难以解释。

数据增强和生成 (Data Augmentation and Generation) 方法

在少样本场景中,数据量是核心瓶颈。因此,通过各种技术手段来“扩充”有限的样本,无疑是提升模型泛化能力的重要途径。这类方法旨在增加训练数据的多样性,或直接生成新的合成数据,以缓解数据稀缺问题。

传统数据增强

这是最直接且广泛应用的数据扩充手段,通过对现有图像进行几何变换、颜色抖动等操作,来生成新的训练样本。

  • 几何变换:随机裁剪(Random Crop)、翻转(Horizontal/Vertical Flip)、旋转(Rotation)、缩放(Scaling)、平移(Translation)等。
  • 颜色抖动:亮度、对比度、饱和度、色相的随机调整。
  • 噪声添加:高斯噪声、椒盐噪声等。
  • 擦除/剪切:Random Erasing、Cutout,模拟遮挡。

在少样本学习中的应用:
传统数据增强可以直接应用于支持集和查询集中的图像。虽然不能根本上解决类别数量少的问题,但可以增加每个现有样本的多样性,降低模型对特定图像姿态、光照等的过拟合。在元学习框架中,数据增强可以在每个元任务的训练过程中应用。

少样本数据生成

除了简单变换现有数据,更激进的方法是直接生成与现有类别相似的新图像样本或新特征。

GANs (Generative Adversarial Networks)

GANs 由生成器(Generator)和判别器(Discriminator)组成,通过对抗训练学习数据的分布,并能够生成新的、逼真的样本。

在少样本学习中的应用:

  • 图像生成:训练一个 GAN 来生成给定类别的新图像。然而,在少样本场景下,每个类别只有极少量的图片,这使得训练一个能够生成高质量、多样化新样本的 GAN 变得非常困难,因为 GAN 本身也需要大量数据来学习。
  • 条件生成 GAN (cGAN):可以尝试训练条件 GAN,以类别标签作为条件来生成特定类别的新样本。但同样面临数据量不足的挑战。
  • 特征空间生成:与其生成像素级的图像,不如在特征空间进行生成。例如,通过 GAN 生成新的特征向量,然后这些特征向量可以用于训练分类器。这种方法通常更稳定,因为特征空间维度较低,且语义信息更明确。

挑战:

  • 模式崩溃 (Mode Collapse):GAN 在数据稀缺时更容易发生模式崩溃,即生成器只生成少数几种样本,缺乏多样性。
  • 训练不稳定:少样本 GAN 训练尤其困难,容易发散。

VAE (Variational Autoencoders)

VAE 是一种生成模型,它学习数据的潜在表示(latent representation)并从中进行采样以生成新的数据。VAE 旨在学习数据的概率分布,并提供一个平滑且连续的潜在空间。

在少样本学习中的应用:

  • 特征空间插值/生成:与 GAN 类似,可以在 VAE 学习到的潜在空间中进行插值或采样,生成新的特征向量,然后解码器将其映射回图像空间或直接用于分类。VAE 的潜在空间通常比 GAN 更规则,这有助于进行插值和生成。
  • 跨域生成:利用辅助数据集(基类数据)的先验知识,通过 VAE 生成新类别的数据。例如,通过学习一个通用的潜在空间,然后将新类别的少量样本映射到该空间,并通过某种方式“推断”出该类别在潜在空间中的分布,从而生成更多样本。

特征层面的数据增强

与直接生成像素图像不同,这类方法在特征空间进行混合或变换,以创建新的合成特征,从而增加特征空间中的数据点。

  • Mixup: 将两个随机样本的输入特征和标签进行线性插值。

    x~=λxi+(1λ)xj\tilde{x} = \lambda x_i + (1-\lambda) x_j

    y~=λyi+(1λ)yj\tilde{y} = \lambda y_i + (1-\lambda) y_j

    其中 λBeta(α,α)\lambda \sim \text{Beta}(\alpha, \alpha)。Mixup 可以应用于原始图像像素,也可以应用于神经网络的中间特征层。在少样本学习中,通常在特征层进行 Mixup,因为它能更好地混合语义信息,并避免像素层面的不真实感。
  • Manifold Mixup: 在神经网络的隐藏层进行 Mixup 操作,而不是仅仅在输入层。这鼓励模型在特征流形上形成更平滑的决策边界。
  • Saliency Mixup: 结合显著性图(saliency maps)来指导 Mixup 过程,使模型更关注图像中具有判别性的区域。
  • Meta-learning based augmentation: 有些方法结合元学习的思想,学习一个生成器来为每个任务生成最优的数据增强策略或样本,以最大化在查询集上的性能。

这些数据增强和生成方法从不同角度缓解了少样本学习中的数据稀缺问题,它们通常可以与元学习、迁移学习等其他方法结合使用,以获得更好的效果。

迁移学习与微调 (Transfer Learning and Fine-tuning) 方法

迁移学习(Transfer Learning)是解决数据稀缺问题最常用且最有效的方法之一。其核心思想是,先在一个数据量充足、与目标任务相关但不同的源域上训练一个大型模型,然后将这个预训练模型作为起点,将其知识迁移到数据稀缺的目标任务上。在少样本图像分类中,这通常意味着利用在大规模数据集(如 ImageNet)上预训练的卷积神经网络(CNNs)作为特征提取器。

基于特征提取

这是最直接的迁移学习应用方式。

工作原理:

  1. 预训练特征提取器:在一个大规模数据集(如 ImageNet)上训练一个深度神经网络(例如 ResNet, VGG 等)进行图像分类。
  2. 冻结特征提取层:将预训练模型的卷积层(通常是大部分或全部)冻结,保持其权重不变。这些层被视为一个通用的、高质量的特征提取器。
  3. 训练分类头:只替换或添加一个新的分类头(通常是全连接层),并用少量的目标任务数据(支持集)来训练这个新的分类头。由于只有少量参数需要训练,过拟合的风险大大降低。

优点:

  • 简单有效:实现简单,且在许多少样本任务上表现良好。
  • 计算效率高:由于大部分层被冻结,训练成本很低。
  • 过拟合风险低:训练参数少,对小数据集的过拟合不敏感。

缺点:

  • 特征通用性限制:预训练模型学习到的特征可能并非对所有少样本任务都最优。如果目标任务的领域与预训练数据集差异太大,效果可能不佳。
  • 无法微调深层特征:冻结所有特征层意味着无法对模型深层的特征表示进行微调以更好地适应新任务。

全局微调 (Fine-tuning)

全局微调比单纯的特征提取更进一步,它允许预训练模型的大部分甚至所有层都参与到目标任务的训练中。

工作原理:

  1. 预训练模型:同样,从一个在大规模数据集上预训练的模型开始。
  2. 小学习率微调:将预训练模型的顶部分类层替换为适用于新任务的层(例如,输出类别数量不同的全连接层)。然后,使用一个非常小的学习率对整个模型(或大部分层)进行训练。小学习率是为了防止模型在少量数据上迅速“遗忘”其从大规模数据中学到的通用知识,从而避免过拟合。

优点:

  • 更强的适应性:允许模型对预训练学到的特征进行更精细的调整,使其更好地适应目标任务。
  • 潜力更大:理论上能达到比特征提取更高的性能,尤其当新任务与预训练任务差异不大时。

缺点:

  • 过拟合风险高:如果目标数据集太小,对整个模型进行微调容易导致过拟合。
  • 计算成本相对较高:需要训练更多的参数。
  • 学习率选择敏感:需要仔细调整学习率,过大可能破坏预训练知识,过小可能收敛慢。

适配层 / 微调策略

为了平衡特征提取和全局微调的优缺点,研究者们提出了各种中间策略,例如引入轻量级适配层(Adapter Layers)或采用更精细的微调策略。

  • Adapter Layers:在预训练模型的每一层或特定层中插入一些小型、可训练的模块(适配器),而冻结原始预训练模型的大部分参数。这些适配器只占模型总参数的一小部分,但它们能够学习到任务特定的调整,从而在不修改原始模型主体的情况下,有效地适应新任务。这在少样本场景中尤其有用,因为它限制了可训练参数的数量,降低了过拟合风险,同时提供了比完全冻结更强的适应性。
    • LoRA (Low-Rank Adaptation):最初在自然语言处理领域大放异彩,但其思想也可应用于视觉领域。LoRA 的核心思想是,在预训练模型的权重矩阵旁边,添加两个低秩矩阵的乘积作为增量更新。即 W=W+BAW' = W + BA,其中 WW 是预训练权重,BBAA 是低秩矩阵。在微调时,只训练 BBAA,而 WW 保持冻结。这大大减少了可训练参数量,同时取得了与全参数微调相当的性能。

迁移学习和微调方法是少样本学习的基石,尤其是在有大规模预训练模型可用的情况下。它们通常与其他少样本方法(如元学习)结合使用,例如,用一个预训练模型作为元学习器的骨干特征提取器。

度量学习 (Metric Learning) 方法

度量学习的本质是学习一个距离函数(或相似度函数),使得在学习到的嵌入空间中,同类样本之间的距离尽可能小(相似度高),而不同类样本之间的距离尽可能大(相似度低)。在少样本图像分类中,度量学习是基于度量的元学习的基础,但它也可以独立于元学习框架进行应用,例如在训练集上学习一个好的嵌入,然后在测试时直接进行 K 近邻分类。

对比损失 (Contrastive Loss)

对比损失的目标是拉近正样本对(来自同一类别的样本)的距离,同时推开负样本对(来自不同类别的样本)的距离。它通常用于自监督学习,但也适用于有监督的度量学习。

工作原理:
对于一对样本 (xi,xj)(x_i, x_j)

  • 如果 xix_ixjx_j 属于同一类别(正样本对),则最小化它们嵌入特征之间的距离 D(f(xi),f(xj))D(f(x_i), f(x_j))
  • 如果 xix_ixjx_j 属于不同类别(负样本对),则最大化它们嵌入特征之间的距离,直到距离超过某个设定的边际值 mm

数学公式:

Lcontrastive(xi,xj,yij)=yijD(f(xi),f(xj))2+(1yij)max(0,mD(f(xi),f(xj)))2\mathcal{L}_{contrastive}(x_i, x_j, y_{ij}) = y_{ij} D(f(x_i), f(x_j))^2 + (1-y_{ij}) \max(0, m - D(f(x_i), f(x_j)))^2

其中:

  • yij=1y_{ij}=1 如果 xi,xjx_i, x_j 是同类(正样本对),否则 yij=0y_{ij}=0(负样本对)。
  • D(,)D(\cdot, \cdot) 是度量函数,如欧氏距离。
  • mm 是一个正边际值。

在少样本中的应用:
在训练阶段,可以在基类数据上使用对比损失来学习一个具有良好区分性的特征嵌入空间。在测试阶段,对于新类别,可以将查询图像嵌入到这个空间中,然后计算其与支持集样本的距离,进行最近邻分类。

三元组损失 (Triplet Loss)

三元组损失是一种更强大的度量学习损失,它不是基于一对样本,而是基于一个三元组:一个“锚点”(Anchor)样本 aa,一个与锚点同类的“正例”(Positive)样本 pp,以及一个与锚点不同类的“负例”(Negative)样本 nn

工作原理:
三元组损失的目标是确保锚点与正例之间的距离,小于锚点与负例之间的距离,并且要有一个至少为 mm 的边际。

D(f(a),f(p))+m<D(f(a),f(n))D(f(a), f(p)) + m < D(f(a), f(n))

数学公式:

Ltriplet(a,p,n)=max(0,D(f(a),f(p))D(f(a),f(n))+m)\mathcal{L}_{triplet}(a, p, n) = \max(0, D(f(a), f(p)) - D(f(a), f(n)) + m)

其中 mm 是边际值,确保正例与负例之间有足够的区分度。

在少样本中的应用:
与对比损失类似,三元组损失可以在基类数据上训练一个特征嵌入器。关键在于如何选择有效的正例和负例(“难例挖掘”,Hard Negative Mining),因为如果负例太容易区分,模型将无法学习到精细的边界。

N-Pair 损失

N-Pair Loss 是三元组损失的扩展,它在一次计算中处理一个锚点和一个正例,以及 N-1 个负例。这使得模型能够同时考虑多个负例,从而更有效地学习区分性特征。

工作原理:
对于一个锚点 aa 和一个正例 pp,以及 N1N-1 个负例 n1,,nN1n_1, \dots, n_{N-1},N-Pair Loss 鼓励 aapp 的相似度高于 aa 和所有 nin_i 的相似度。这通常通过 Softmax 交叉熵损失来实现,其中正例被视为“正确”的分类,负例被视为“错误”的分类。

数学公式:

LNPair(a,p,n1,,nN1)=logexp(f(a)Tf(p))exp(f(a)Tf(p))+i=1N1exp(f(a)Tf(ni))\mathcal{L}_{N-Pair}(a, p, n_1, \dots, n_{N-1}) = -\log \frac{\exp(f(a)^T f(p))}{\exp(f(a)^T f(p)) + \sum_{i=1}^{N-1} \exp(f(a)^T f(n_i))}

这里使用点积作为相似度。

在少样本中的应用:
N-Pair 损失在人脸识别等领域取得了成功,其优势在于能够在一个批次中同时处理多个负例,从而更高效地学习嵌入。在少样本学习中,它可以作为学习基类特征嵌入的一种有效方法,进而用于新类别的分类。

度量学习方法的核心在于,它们并不直接对类别进行分类,而是学习一种度量标准。这种标准使得模型能够判断任意两个样本是否属于同一类别,或者它们之间的相似程度。这种内在的相似性度量在新类别出现时依然有效,因为模型学习的是特征之间的关系,而不是固定类别的边界。

贝叶斯方法与不确定性 (Bayesian Methods and Uncertainty)

贝叶斯方法为少样本学习提供了一个独特的视角,它们通过引入不确定性来建模参数和预测,这在数据稀缺的场景中尤为重要。传统深度学习模型通常给出点估计(例如,一个预测类别),而不提供其预测的置信度。然而,在少样本场景中,模型对新类别的预测往往是不确定的,量化这种不确定性对于模型的可靠性至关重要。

贝叶斯神经网络 (BNNs)

传统的神经网络参数是确定的数值,而贝叶斯神经网络(Bayesian Neural Networks, BNNs)则将模型的权重和偏置视为概率分布,而不是固定的点。这意味着每个参数都有一个先验分布,训练过程是根据观测数据更新这些分布,得到后验分布。

工作原理:

  1. 参数分布:BNNs 的每个权重 ww 不再是一个单一值,而是一个概率分布,通常是高斯分布 p(w)p(w)
  2. 贝叶斯推断:训练过程的目标是推断在给定数据 DD 下的参数后验分布 p(wD)p(w|D)。这通常通过变分推断(Variational Inference)或马尔可夫链蒙特卡洛(MCMC)采样方法来实现。
    • 变分推断:通过一个简单的变分分布 q(wϕ)q(w|\phi)(例如,一个均值和方差可学习的高斯分布)来近似复杂的真实后验分布 p(wD)p(w|D)。训练目标是最小化 q(wϕ)q(w|\phi)p(wD)p(w|D) 之间的 Kullback-Leibler (KL) 散度。
    • MCMC 采样:从后验分布中抽样参数,但对于大型神经网络来说,计算成本极高。
  3. 预测:在预测时,BNN 不会只使用一组固定的参数,而是从后验分布中抽取多组参数样本,对每个样本模型进行预测,然后对所有预测结果进行平均或投票。这种“集成”预测自然地提供了不确定性估计。

在少样本中的应用:

  • 量化不确定性:在少样本场景中,由于数据稀缺,模型更容易出现高不确定性区域。BNNs 能够显式地估计这种不确定性,帮助模型识别哪些预测是可靠的,哪些是需要人工干预的。
  • 更好的泛化:通过对参数进行正则化(通过先验分布),BNNs 可以减少过拟合,并提高在有限数据上的泛化能力。
  • 基于不确定性的决策:可以在不确定性高的情况下,请求更多数据或转交人工处理。

优点:

  • 提供不确定性估计:这是传统深度学习模型难以提供的关键信息。
  • 正则化效果:通过对参数施加先验,有助于防止过拟合。

缺点:

  • 计算成本高:需要对参数分布进行推断或采样,比传统神经网络训练更耗时。
  • 实现复杂:变分推断的理论和实现相对复杂。
  • 近似性:变分推断通常只提供后验分布的近似,而非精确推断。

高斯过程 (Gaussian Processes, GPs)

高斯过程是一种强大的非参数模型,可以用于回归和分类。与神经网络学习参数不同,高斯过程直接对函数空间进行建模。它们在处理小数据集和量化不确定性方面具有天然优势。

工作原理:

  1. 函数分布:高斯过程假设所有可能的函数 f(x)f(x) 的集合服从高斯分布。这个分布由均值函数 m(x)m(x) 和协方差函数 k(x,x)k(x, x')(核函数)决定。核函数定义了任意两个输入点 xxxx' 对应的函数值 f(x)f(x)f(x)f(x') 之间的相似性。
  2. 后验推断:给定训练数据,高斯过程可以通过贝叶斯推断来计算函数后验分布,从而得到对新输入点 xx^* 的预测分布(均值和方差)。方差表示预测的不确定性。
  3. 核函数选择:核函数的选择至关重要,它决定了函数的平滑性、周期性等特性。

在少样本中的应用:

  • 特征提取器结合 GPs:一种常见的做法是,使用一个预训练的神经网络作为特征提取器,将图像映射到低维特征空间,然后在这个特征空间上使用高斯过程进行分类。
  • 不确定性量化:GPs 能够自然地给出预测的均值和方差,这在少样本分类中对评估模型置信度非常有用。
  • 小数据优势:GPs 在小数据集上表现出色,因为它们不需要大量参数,不容易过拟合。

优点:

  • 提供置信区间:直接给出预测的不确定性。
  • 非参数模型:无需预设函数形式,灵活性高。
  • 在小数据集上表现好:天生适合数据稀缺场景。

缺点:

  • 计算成本高:推理阶段需要进行矩阵求逆,计算复杂度随数据点数量的三次方增长(O(N3)O(N^3)),对于大规模数据集不适用。
  • 核函数选择:选择合适的核函数可能需要领域知识或交叉验证。

贝叶斯方法和高斯过程为少样本学习带来了对不确定性的建模能力,这使得模型在有限数据下能做出更鲁棒、更可靠的判断。尽管计算成本较高,但它们在对预测置信度要求高的应用场景中具有独特价值。

混合方法与前沿趋势

少样本图像分类是一个快速发展的领域,研究者们不断探索新的范式,并尝试结合不同方法的优势以取得更好的效果。以下是一些混合方法和当前的前沿趋势。

结合多种方法的策略

很少有单一方法能够完美解决所有少样本问题。将不同方法的优点结合起来,往往能取得突破性的进展。

  • 元学习 + 数据增强:在元训练过程中,对每个元任务的支持集和查询集应用数据增强。更高级的方法会学习一种自适应的数据增强策略,例如,根据任务的难度或样本的特征动态调整增强方式。还有的方法在特征空间进行数据混合(如 Mixup),以生成更具多样性的训练样本。
  • 预训练 + 元学习:这是目前最常见且非常有效的方法。首先,在一个大规模数据集(如 ImageNet)上预训练一个强大的特征提取器。然后,将这个预训练的特征提取器作为元学习模型(如 MAML 或 Prototypical Networks)的骨干网络,在元训练阶段对它进行微调或利用其提取的特征进行度量学习。预训练提供了高质量的通用特征,而元学习则使得模型能够快速适应新任务。
  • 度量学习 + 关系网络/注意力:结合度量学习的基本思想(学习好的嵌入空间)和更复杂的相似度函数(如关系网络或注意力机制),可以捕获样本之间更细致的关系。例如,在计算原型时,可以不简单地取均值,而是使用注意力机制加权支持集样本的特征。
  • 贝叶斯方法与元学习:探索将贝叶斯不确定性建模融入元学习框架中。例如,贝叶斯 MAML (BMAML) 尝试对 MAML 的初始参数分布进行推断,从而在适应新任务时能够更好地量化不确定性,并提供更鲁棒的适应性。

图神经网络 (GNNs) 在少样本场景中的应用

图神经网络 (GNNs) 是一种能够处理图结构数据的深度学习模型,它通过在图的节点和边上传播信息来学习节点表示。在少样本学习中,GNNs 被用于建模样本之间的关系,尤其适用于基于度量的元学习。

工作原理:

  1. 构建图:将支持集和查询集中的样本视为图的节点。节点之间的边可以表示它们的相似性(例如,通过特征距离)或类别关系(例如,同类样本之间有边)。
  2. 信息传播:GNN 通过节点特征和邻接矩阵迭代地传播信息。节点(样本)可以从其邻居节点(其他样本)聚合信息,从而学习到更具区分性的表示。
  3. 分类:学习到的节点表示可以用于分类。例如,查询节点可以根据其与支持集节点(或类别原型)的相似性进行分类。

优势:

  • 显式建模关系:GNNs 能够显式地建模样本之间的复杂关系,这对于理解少样本数据点之间的内在结构至关重要。
  • 信息聚合:通过信息传播,GNNs 可以有效地聚合来自少数样本的信息,从而形成更鲁棒的类别表示。

自监督学习与少样本学习的结合

自监督学习(Self-Supervised Learning, SSL)通过设计“前置任务”(Pretext Tasks)从无标签数据中学习有用的特征表示,而无需人工标注。近年来,对比学习(Contrastive Learning)作为一种主流的自监督学习范式,在预训练阶段取得了与监督学习比肩甚至超越的性能。

在少样本中的应用:

  1. 自监督预训练:在大规模无标签数据集上,通过对比学习(如 SimCLR, MoCo, BYOL)预训练一个特征编码器。这种预训练能够学习到对图像语义信息高度敏感且鲁棒的特征表示。
  2. 下游少样本任务:将这个自监督预训练的特征编码器作为骨干网络,应用于少样本分类任务。
    • 特征提取:冻结预训练编码器,只训练一个轻量级的分类头。
    • 微调:在少样本数据上对预训练编码器进行微调(通常结合元学习框架)。

优势:

  • 利用无标签数据:解决了传统预训练需要大量标注数据的问题,拓展了预训练的范围。
  • 高质量特征:自监督学习能够学习到对下游任务有很强泛化能力的特征,尤其是在数据量更大的场景下。
  • 弥补数据稀缺:通过无标签数据的预训练,可以有效地弥补少样本任务的监督数据不足。

预训练大模型 + Prompting/In-context Learning (LLM 启发)

随着大规模预训练模型(如 CLIP, DALL-E, Stable Diffusion)在视觉和多模态领域的崛起,受大型语言模型(LLMs)中 Prompting 和 In-context Learning 思维的启发,研究者们也开始探索将这些思想应用于少样本图像分类。

工作原理:

  • 多模态预训练模型:利用像 CLIP 这样在大量图像-文本对上联合训练的模型,它能够将图像和文本映射到同一个嵌入空间。
  • “视觉 Prompting”:不是直接微调模型,而是设计特定的文本“提示”(Prompt)来引导模型理解新类别。例如,对于一个从未见过的“斑马”类别,可以通过构建一个包含“这是斑马的照片”的文本描述,然后与图像进行匹配,从而实现分类。
  • “In-context Learning”:在给定少量样本(Support Set)的情况下,模型无需梯度更新就能直接对查询样本进行分类。例如,将支持集中的图像和文本描述作为“上下文”输入给模型,模型可以利用这些上下文来预测查询图像的类别。这本质上是利用了预训练大模型强大的表征能力和泛化能力,使其能够仅通过示例就理解新概念。

优势:

  • 无需微调或少量微调:大大降低了训练成本和数据需求。
  • 强大的泛化能力:受益于大规模预训练模型的通用知识。
  • 新的交互范式:通过语言或其他模态的提示来引导视觉模型。

挑战:

  • 模型规模:大模型通常非常庞大,推理成本高。
  • Prompting 设计:设计有效的视觉 Prompting 仍然是一个活跃的研究领域。
  • 知识迁移限制:大模型虽然通用,但对于非常细粒度或领域特定的少样本任务,可能仍需一定程度的微调。

这些前沿趋势正在不断拓宽少样本学习的边界,尤其是在自监督学习和大规模预训练模型加持下,我们有理由相信少样本图像分类将迎来新的突破。

结论

少样本图像分类,作为人工智能领域的一个前沿且充满挑战的研究方向,旨在赋予机器在数据稀缺环境下“举一反三”的智能。在本文中,我们从基础概念入手,深入探讨了当前主流且富有成效的几大类方法:

  • 元学习 (Meta-Learning):通过学习“如何学习”,让模型能够快速适应新任务。我们详细考察了基于优化的 MAML 和 Reptile,它们通过学习一个优良的初始参数来加速适应;以及基于度量的 Prototypical Networks, Matching Networks 和 Relation Networks,它们通过学习一个区分性特征嵌入空间和相似度函数来实现分类。
  • 数据增强与生成:通过传统图像变换、以及 GANs、VAEs 等生成模型,在像素或特征层面扩充有限数据,提高模型鲁棒性。
  • 迁移学习与微调:利用在大规模数据集上预训练的模型作为起点,通过冻结特征层或进行精细微调,将通用知识迁移到特定少样本任务,大大降低了数据需求和过拟合风险。
  • 度量学习 (Metric Learning):学习一个距离函数,使同类样本距离近、异类样本距离远,为少样本分类提供了强大的基础,例如对比损失、三元组损失等。
  • 贝叶斯方法与不确定性:引入参数和预测的不确定性建模,如贝叶斯神经网络和高斯过程,为有限数据下的决策提供置信度,增强模型可靠性。

此外,我们还展望了当前的前沿趋势,包括多种方法的融合应用、图神经网络对样本关系的建模、自监督学习提供的高质量预训练特征,以及受大型语言模型启发而来的“视觉 Prompting”和 In-context Learning 范式。

少样本图像分类的未来充满希望,但也面临诸多挑战。如何让模型在更极端(例如 K=1)的条件下也能表现出色?如何弥合基类与新类之间的领域差距?如何将少样本学习更好地集成到实际应用系统中,并提供可信赖的不确定性估计?这些问题仍在等待我们去探索和解决。

作为一名技术与数学博主,qmwneb946 坚信,随着计算能力的提升、算法理论的突破以及跨领域知识的融合,我们将在“小数据”的智能之路上走得更远。希望这篇深入的博文能为你理解少样本图像分类提供全面的视角和启发。让我们继续保持对未知的好奇,共同探索人工智能的无限可能!