理解 Zero-Shot, One-Shot, 和 Few-Shot 学习
在机器学习,特别是计算机视觉领域,我们经常希望模型能够像人类一样,通过极少量的样本甚至仅仅通过描述就能认识新事物。Zero-Shot, One-Shot, 和 Few-Shot 学习就是旨在实现这一目标的关键技术。这些术语描述了模型在面对一个从未见过的“新类别”时,学习和识别它所需要的样本数量。
基础:在“基类”上预训练
所有这些学习范式都有一个共同的起点:一个在大量标注数据(包含丰富的“基类”或“可见类”,Seen Classes)上预训练好的模型。这个预训练阶段的目的并非让模型记住这些基类,而是让它学习到一种通用的、可迁移的能力,例如:
- 学会提取鲁棒且有意义的视觉特征。
- 学会如何“学习”和“比较”(即元学习或度量学习)。
- 学会关联图像的视觉空间和文字的语义空间。
有了这个强大的预训练模型作为基础,我们才能讨论它如何应对“未见类别”。
Zero-Shot Learning (零样本学习)
当模型需要识别一个新类别,但没有任何(K=0)该类别的图像样本时,我们称之为零样本学习。
工作原理:
既然没有图像样本,模型依赖于辅助的语义信息 (Semantic Information) 来进行推理。这些信息为模型提供了关于新类别的描述性知识。
- 学习依据:通常是类别的属性描述(例如,“斑马”的属性是“有条纹”、“像马”、“黑白色”)或词向量(Word Vectors)。
- 核心能力:视觉-语义匹配。模型必须是经过特殊设计的(例如,像CLIP这样的视觉-语言模型),它能够将输入图像的视觉特征,与不同类别的文字描述进行匹配,并找出匹配度最高的那个作为预测结果。
- 关键点:一个标准的图像分类器(如在ImageNet上训练的ResNet)无法直接进行零样本学习,因为它不具备将视觉特征与任意语义描述关联的能力。
简而言之,零样本学习是给模型一本“字典”(语义描述),让它去识别一本没有插图的“书”(新类别的图像)。
One-Shot 与 Few-Shot 学习 (一样本与小样本学习)
当模型在识别新类别时,被允许接触少量标注样本时,我们称之为小样本学习。
- One-Shot Learning (K=1):为每个新类别提供一个标注样本。
- Few-Shot Learning (K>1):为每个新类别提供少数几个(K个,通常K很小,如5或10)标注样本。
核心区别:并非Fine-tuning,而是“比对”
一个常见的误区是认为 One-Shot/Few-Shot 学习就是用这 K 个样本对预训练模型进行微调 (Fine-tuning)。这种做法通常是不可行的,因为它会导致两个严重问题:
- 灾难性遗忘 (Catastrophic Forgetting):模型会忘记在预训练阶段学到的通用知识。
- 严重过拟合 (Severe Overfitting):模型会完美记住这 K 个样本的全部细节,但无法泛化到同类别其他稍有不同的图像上。
正确的范式是度量学习 (Metric Learning) 或元学习 (Meta-Learning)。在这个范式中,预训练模型的权重在测试阶段是冻结的,不进行更新。
- 学习依据:提供的 K 个标注样本被用作**“参考样本” (Support Samples)**。
- 核心能力:特征相似度比较。模型作为一个强大的特征提取器和比较器,它会提取“查询样本”(待分类的图片)和“参考样本”的特征,并通过计算它们在特征空间中的距离来判断它们是否属于同一类别。
一个很好的类比是人脸识别系统:系统通过学习数百万张人脸,掌握了“比较两张脸是否为同一个人”的能力(预训练)。当你录入一个新的人脸时,只需一张照片(One-Shot),系统会将其特征存为参考,而不会重新训练整个网络。之后,它通过比较新照片与参考照片的特征相似度来进行识别。
总结对比
| 特性 | Zero-Shot Learning (零样本) | One-Shot Learning (一样本) | Few-Shot Learning (小样本) |
|---|---|---|---|
| 提供的新类别样本数 (K) | K = 0 | K = 1 | K > 1 (通常很小) |
| 学习依据 | 语义描述、属性、词向量 | 1个标注的参考样本 | K个标注的参考样本 |
| 核心能力 | 视觉-语义关联与匹配 | 特征相似度比较 | 更鲁棒的特征相似度比较 |
| 模型权重 (测试阶段) | 冻结 | 通常冻结 | 通常冻结 |
这些技术使得AI模型更加灵活和数据高效,向着仅需少量信息就能学习和泛化的目标迈出了重要一步,对于处理现实世界中类别众多且样本稀疏的场景至关重要。