Zero-Shot(零样本学习),One-Shot(单样本学习),Few-Shot(少样本学习)概述

术语 定义 示例(以翻译任务为例)
Zero-Shot 模型不依赖任何示例,直接根据任务描述生成结果。 输入:将英文翻译为中文: "Hello" → 输出:你好
One-Shot 模型接收1个示例后,理解任务规则并应用于新输入。 输入:示例:Apple → 苹果。翻译:Banana → ? → 输出:香蕉
Few-Shot 模型接收少量示例(通常2-5个),学习任务模式后泛化到新问题。 输入:示例:Dog → 狗,Cat → 猫。翻译:Bird → ? → 输出:
维度 Zero-Shot One-Shot Few-Shot
示例数量 0 1 通常2-5个
输出质量 不稳定,依赖描述质量 显著优于Zero-Shot 通常最优(任务复杂时)
适用场景 简单、通用任务 需明确格式的任务 复杂或专业领域任务
计算成本 最低 较高(长上下文消耗)
错误敏感性 高(易偏离意图) 中(示例错误易误导) 低(多示例互校验)

一、Zero-Shot(零样本学习)

1.1 定义

Zero-Shot Learning(ZSL) 指模型在未接收任何任务专属样本 的条件下,仅通过任务描述语义关联 完成对新类别/任务的识别或生成。其核心是知识迁移------将预训练阶段学到的通用能力泛化到未知领域。

类比理解

人类若已知"斑马有黑白条纹",即使从未见过"斑驴",也能根据描述"斑驴是斑马与驴的杂交后代"推测其形态------这正是ZSL的思维本质。

1.2 解决的核心问题

当面临以下场景时,传统监督学习失效,需依赖ZSL:

  1. 样本稀缺:获取标注数据成本高(如罕见疾病诊断)。

  2. 类别动态扩展:需实时识别新增类别(如电商平台每日新增商品)。

  3. 长尾分布:大量类别仅有极少数样本(如生物物种识别)。

1.3 技术实现原理

1. 核心架构
2. 关键组件
  • 特征提取器:CNN/ViT等提取数据特征(如图像纹理、文本语义)。

  • 语义空间

    • 人工定义属性(如"有翅膀""可飞行")。

    • 词向量(Word2Vec/GloVe)。

    • 知识图谱嵌入(如TransE)。

  • 兼容性函数 :计算特征向量与语义向量的匹配度(常用余弦相似度双线性映射)。

3. 训练与推理流程

训练阶段

  • 使用已见类别(Seen Classes) 数据训练特征提取器和兼容性函数。

  • 构建语义描述库(所有类别的属性向量)。

推理阶段

  • 输入新样本(未见类别/Unseen Classes)。

  • 模型计算其与所有语义向量的兼容性得分。

  • 选择得分最高的语义向量对应类别作为预测结果。

示例

训练集:已学习"老虎"(条纹)、"猎豹"(斑点)的语义。

预测新样本:提取特征→与语义库匹配→若与"条纹"兼容性高→输出"斑马"。

1.4 两类主流方法

1. 基于嵌入的方法(Embedding-Based)
  • 原理 :将数据特征和类别语义映射到共享向量空间

  • 经典模型

    • ALE(Attribute Label Embedding):双线性兼容函数。

    • DEVISE:使用词向量,通过排序损失优化兼容性。

  • 优势:计算高效,泛化性强。

2. 基于生成的方法(Generative)
  • 原理 :利用GAN/VAE为未见类别生成虚拟样本,将ZSL转化为监督学习。

  • 代表工作

    • f-CLSWGAN:生成对抗网络合成样本。

    • CE-GZSL:解耦特征生成缓解过拟合。

  • 优势:可复用成熟分类器,避免语义鸿沟问题。

1.5 核心挑战与解决方案

挑战 原因 解决方案
语义鸿沟 特征空间与语义空间结构不一致 跨模态对齐(如CMM模型)
领域漂移 已见/未见类别分布差异大 生成方法+领域自适应(如LSA)
偏见问题 模型倾向预测已见类别 校准偏移(如COSMO)
多模态语义融合 单一语义描述不充分 混合属性(人工+词向量+知识图谱)

1.6 应用场景举例

  1. 计算机视觉

    • 开放类别识别:自动驾驶中识别未知障碍物。

    • 细粒度分类:鸟类子类识别(仅通过文字描述)。

  2. 自然语言处理

    • 零样本文本分类:新闻归类到新增主题(如突发疫情)。

    • 意图识别:对话系统理解用户新指令(如"帮我预约火星旅行")。

  3. 生物医学罕见病诊断:根据基因描述识别未收录疾病。

  4. 工业检测缺陷检测:通过语义描述识别新型缺陷模式。

1.7 前沿进展(2023-2024)

  1. 大语言模型(LLM)赋能ZSL

    • 提示词工程 :GPT-4通过任务描述实现零样本分类(如:"这是关于气候变化的文章吗?")。

    • 语义增强 :LLM自动生成类别属性描述(如:"斑马:哺乳动物,黑白条纹,栖息于非洲草原")。

  2. 视觉-语言模型突破

    • CLIP(OpenAI):400M图像-文本对预训练,零样本ImageNet分类准确率超监督基线。

    • Flamingo(DeepMind):多模态上下文学习支持开放域识别。

  3. 知识图谱融合KG-ZSL:利用知识图谱关系路径增强语义表示(如"斑马→食草→栖息地→草原")。

1.8 总结

Zero-Shot Learning是AI泛化能力的终极考验,其技术演进分为三阶段:

  1. 传统ZSL(2010-2018):依赖人工属性,解决语义鸿沟。

  2. 生成式ZSL(2018-2022):GAN/VAE合成样本缓解数据稀缺。

  3. 大模型时代ZSL(2022-):LLM+多模态模型重塑范式。

核心价值 :在医疗、工业、安全等高价值低数据场景中,Zero-Shot是突破监督学习天花板的关键路径。随着LLM对语义理解的深化,其性能边界正快速逼近Few-Shot,成为实用化AI的核心组件。

二、One-Shot(单样本学习)

2.1 定义

One-Shot Learning 指模型仅通过单个训练样本 学习一个新类别或任务的能力。其核心挑战是:在极度数据稀缺条件下实现泛化,突破传统深度学习对大数据量的依赖。

类比理解

人类看过一张"鸭嘴兽"照片后,能识别其他姿态的鸭嘴兽------单样本学习旨在赋予机器类似的泛化能力。

2.2 解决的核心问题

当面临以下场景时,传统深度学习失效,需依赖单样本学习:

  1. 样本获取困难:医学影像、稀有物种识别等标注成本极高。

  2. 动态类别扩展:安防系统实时新增嫌疑人、电商平台每日上架新品。

  3. 小样本场景:冷启动推荐、个性化服务等缺乏用户历史数据。

2.3 技术实现原理

1. 核心思想:从"记忆"到"比对"

传统深度学习通过大量样本记忆特征,而单样本学习转向相似性度量

2. 三大技术路线
(1) 基于度量学习(Metric Learning)
  • 原理:学习一个嵌入空间,使同类样本距离近、异类样本距离远。

  • 经典模型

    • 孪生网络(Siamese Network):输入:[样本A, 样本B] → 共享权重的CNN → 特征向量 → 距离计算(如L1)→ 相似度得分

    • 三元组损失(Triplet Loss)
      Anchor - Positive 的距离 < Anchor - Negative 的距离 + 裕度(margin)

  • 优势:简单高效,适合细粒度分类。

(2) 基于元学习(Meta-Learning)
  • 原理:训练模型掌握"如何学习新任务"的能力。

  • 代表方法

    • MAML(Model-Agnostic Meta-Learning)

      在多个任务上预训练,找到一组快速适应新任务的初始参数

    • Prototypical Networks

      计算类别原型中心(单个样本的特征均值),新样本按欧氏距离归类。

(3) 基于数据增强与生成
  • 原理:用单个样本生成虚拟样本扩充训练集。

  • 技术

    • 对抗生成网络(GAN):生成同类样本变体(如不同角度的同一人脸)。

    • 特征空间变换:对样本特征施加旋转、裁剪等模拟变换。

2.4 关键模型对比

模型 核心机制 适用场景 准确率*(Omniglot)
Siamese Network 相似度对比 图像验证、人脸识别 92.3%
MAML 元优化初始参数 多任务快速适应 95.7%
Prototypical Nets 类别原型匹配 分类任务 98.8%
Matching Networks 注意力加权匹配 复杂模式识别 93.5%

*注:Omniglot(1623类手写字符)是单样本学习基准数据集,5-way 1-shot任务准确率

2.5 应用场景

1. 计算机视觉
  • 人脸识别:通过1张证件照识别监控中的人脸(如公安系统)。

  • 工业质检:仅需1个缺陷样本检测同类缺陷。

  • 生物识别:保护动物追踪(如通过单张雪豹照片识别个体)。

2. 自然语言处理
  • 个性化对话:用户提供1条偏好示例(如"用诗词风格回复"),模型即时适配。

  • 冷启动推荐:新用户仅表达1次喜好(如点击某商品),生成推荐列表。

3. 医疗诊断
  • 罕见病识别:仅1例标注的医学影像辅助诊断(如新发传染病)。

2.6 核心挑战与解决方案

挑战 原因 解决方案
特征泛化性差 单样本无法覆盖类内多样性 生成式数据增强(如StyleGAN)
类别混淆 相似类别在嵌入空间重叠 混合监督训练(结合已见类别数据)
领域敏感 训练/测试数据分布差异大 领域自适应(如DANN)
计算成本高 元学习需多轮任务训练 轻量化模型(如MobileNet主干)

2.7 前沿进展(2023-2024)

  1. 大模型赋能单样本学习

    • CLIP + 提示工程:用文本描述增强单样本信息(如:"这是一只长尾猴,尾巴占身长150%")。

    • 视觉提示(Visual Prompting):在预训练模型上添加可学习参数适配新样本。

  2. 神经图灵机(NTM):外部记忆存储支持样本,实现类比推理(如DeepMind的MERLIN模型)。

  3. 自监督预训练增强:SimCLR、MoCo等对比学习模型提供强特征提取器。

2.8 总结

单样本学习的本质是"以一推万"的泛化艺术,其技术演进分为三阶段:

  1. 度量学习时代(2015-2018):孪生网络、三元组损失解决简单比对。

  2. 元学习革命(2018-2021):MAML、Prototypical Nets实现"学会学习"。

  3. 大模型融合期(2022-):CLIP/LLM提供通用先验知识,突破信息瓶颈。

核心价值 :在高价值低数据场景(安防、医疗、定制化服务)中,单样本学习是唯一可行的技术路径。随着多模态大模型的普及,其性能边界正逼近少样本学习,成为实用化AI的关键支柱。

三、Few-Shot(少样本学习)

3.1 概念

Few-Shot Learning 是机器学习 (特别是深度学习 )的一个子领域,其目标是训练模型,使其能够在仅使用非常少量的标注示例 (通常每个类别只有几个,甚至只有一个)的情况下,有效地学习和泛化到新的、未见过的任务或类别

  • 核心挑战: 克服传统深度学习模型对海量标注数据的依赖。在数据稀缺或获取成本高昂的场景下,Few-Shot Learning 至关重要。

  • 核心思想: 模型并非从零开始学习新任务,而是利用在大量相关任务或数据上预先学习到的"知识"或"先验",快速适应到只有少数样本的新任务上。这模拟了人类快速学习新概念的能力(例如,给你看一张"鸭嘴兽"的照片,你就能认出其他鸭嘴兽)。

3.2 为什么需要 Few-Shot Learning?

  1. 数据获取困难或昂贵: 在许多实际应用中(如医疗影像分析、罕见事件检测、小语种处理、个性化推荐),获取大量高质量标注数据极其困难、耗时或昂贵。

  2. 快速适应新任务: 在动态环境中,需要模型能够快速学习识别新出现的类别或概念(如社交媒体上的新趋势、制造业中的新缺陷类型),而无需重新收集海量数据并从头训练。

  3. 资源限制: 标注数据需要人力物力,Few-Shot Learning 可以显著降低部署AI解决方案的门槛。

  4. 处理长尾分布: 现实世界的数据往往呈现长尾分布,即少数类别有大量样本,而大量类别只有极少样本。Few-Shot Learning 是解决长尾问题尾部类别识别的重要手段。

3.3 关键设定与术语

  1. N-Way K-Shot:

    • N-Way: 指在目标任务中需要区分的类别总数(N个类别)。

    • K-Shot: 指在目标任务中,模型可用于学习每个类别的标注样本数量(K个样本)。

    • 示例: 5-Way 1-Shot 表示模型需要在5个类别中进行区分,并且每个类别只提供1个标注样本供学习。5-Way 5-Shot 则表示每个类别提供5个样本。

  2. Support Set(支撑集):

    • 提供给模型用于学习新任务的少量标注样本集合。

    • N-Way K-Shot 设定下,Support Set 包含 N * K 个样本(每个类 K 个)。

  3. **Query Set(查询集):**需要模型进行预测的、来自新类别的未标注样本集合。模型需要利用 Support Set 学到的知识来预测 Query Set 的标签。

  4. Episode(情节)训练:

    • 元学习(Meta-Learning)中常用的训练方式。每个训练"情节"都模拟一个小的 N-Way K-Shot 任务:

      • 从训练数据中随机抽取 N 个类别。

      • 从这 N 个类别中,为每个类别随机抽取 K 个样本组成 Support Set,再抽取若干样本组成 Query Set。

      • 模型在这个模拟的小任务上进行学习和优化。

    • 通过大量这样的"情节"训练,模型学会如何快速从少量样本中学习。

  5. 与相关概念的对比:

    • Zero-Shot Learning: 新类别完全没有标注样本可供学习,模型只能依赖类别的语义描述(如属性、文本描述)或与其他类别的关联进行推理。

    • One-Shot Learning: 是 Few-Shot Learning 的一个特例,其中 K=1(每个新类别只提供1个样本)。

    • Transfer Learning(迁移学习): 在源任务上预训练模型,然后在目标任务(通常数据量相对较多)上微调。Few-Shot Learning 可以看作是一种极端情况下的迁移学习,目标任务的数据量极少(K很小),因此需要更精巧的设计来利用源知识并防止过拟合。

    • Meta-Learning(元学习/学会学习): 一种实现 Few-Shot Learning 的强大框架,其目标是训练模型"学会如何学习",使其在遇到新任务时能快速适应。模型学习的是跨任务的通用学习策略或算法。

3.4 Few-Shot Learning 的主要方法

实现 Few-Shot Learning 有多种策略,以下是几种主流方向:

  1. 基于度量学习:

    • 核心思想: 学习一个嵌入空间 和一个距离度量函数 。在这个空间中,同一类别的样本彼此靠近,不同类别的样本彼此远离。预测时,将 Query 样本映射到该空间,计算它与 Support Set 中所有样本的距离,然后分配给距离最近(或最相似)的 Support 样本所属的类别。

    • 代表性模型:

      • Siamese Networks(孪生网络): 学习一个共享权重的孪生网络,输入两个样本,输出它们之间的相似度分数。预测时,将 Query 样本与每个 Support 样本配对输入网络,选择相似度最高的 Support 样本的类别。

      • Matching Networks(匹配网络): 使用注意力机制,让 Query 样本根据与 Support 样本的相似度来"加权查看"整个 Support Set,从而进行分类。

      • Prototypical Networks(原型网络): 对每个类别,计算其 Support Set 样本在嵌入空间中的均值向量(原型)。预测时,计算 Query 样本到每个类别原型的距离(如欧氏距离),选择最近的类别。

      • Relation Networks(关系网络): 学习一个关系模块,输入两个样本的嵌入向量,输出它们之间的关系得分(0-1之间)。预测时,计算 Query 样本与每个 Support 样本(或原型)的关系得分,然后聚合(如求和、平均)得到 Query 样本属于每个类别的得分。

  2. 基于元学习:

    • 核心思想: 在大量相似的 N-Way K-Shot 任务上训练一个元学习器。元学习器的目标是学会如何根据 Support Set 快速更新模型参数(或初始化一个良好的起点),使其在 Query Set 上表现良好。

    • 代表性模型:

      • MAML(Model-Agnostic Meta-Learning): 最著名的方法之一。它学习一组模型参数的初始化值。对于新任务,从这个初始化点出发,使用该任务的 Support Set 进行少量几步梯度下降更新(微调),就能在该任务的 Query Set 上取得好效果。核心是优化初始化值,使得在这个初始化点上进行少量更新就能快速适应新任务。

      • Reptile: MAML 的简化版,也学习一个好的参数初始化,但更新规则更简单高效。

      • Meta-SGD / Meta-Net: 学习如何调整优化过程本身,如学习率、更新方向等。

      • Memory-Augmented Neural Networks: 引入外部记忆模块(如 Neural Turing Machine, Memory Networks),在训练过程中存储和检索任务相关信息,用于快速适应新任务。

  3. 基于数据增强:

    • 核心思想: 在有限的 Support Set 样本上应用各种变换(如旋转、裁剪、颜色抖动、添加噪声等),人工生成更多样化的样本,增加数据量,缓解过拟合。虽然简单,但在图像领域常作为其他方法的补充。

    • 高级方法: 利用生成对抗网络或变分自编码器学习数据的分布,然后生成符合该分布的新样本。

  4. 基于迁移学习 + 微调:

    • 核心思想: 在大型数据集(如 ImageNet, Wikipedia)上预训练一个强大的基础模型(Backbone),学习通用的特征表示能力。当遇到只有少量样本的新任务时:

      • 将基础模型的特征提取器冻结(或仅微调最后几层)。

      • 在 Support Set 上训练一个简单的分类器(如线性分类器、最近邻分类器)。

    • 优势: 简单易行,利用了大模型强大的表征能力。

    • 挑战: 如果 Support Set 太小,微调仍然容易过拟合;基础模型学到的特征如果与新任务域差异太大,效果会下降。

  5. 基于提示学习:

    • 核心思想(尤其在 NLP 中): 利用大型预训练语言模型(如 GPT-3, BERT)本身蕴含的丰富知识。通过设计合适的提示 ,将 Few-Shot 任务"包装"成模型在预训练时见过的形式(如完形填空、文本生成),激发模型利用内部知识完成新任务,而几乎不更新或只更新极少量参数

    • 示例: 对于情感分类任务(Positive/Negative),提供提示:"这句话 '[输入句子]' 的情感是 [MASK]。" 然后在 Support Set 上给出几个示例(如 "这部电影很棒。 情感是 积极"),模型学习根据上下文填充 [MASK] 为 "积极" 或 "消极"。

3.5 应用领域

Few-Shot Learning 在许多领域都有广泛应用:

  1. 计算机视觉:

    • 图像分类(识别稀有物体、新物种)。

    • 目标检测与分割(检测新出现的物体类别)。

    • 人脸识别与验证(识别新加入的人)。

    • 图像生成与编辑(根据少量示例生成特定风格或对象的图像)。

  2. 自然语言处理:

    • 意图识别与槽位填充(理解用户新提出的请求或新领域的指令)。

    • 文本分类(对新闻、评论进行细粒度分类,尤其是新增类别)。

    • 机器翻译(快速适应新语种或特定领域的翻译)。

    • 问答系统(回答关于新主题或新文档的问题)。

    • 命名实体识别(识别新类型的实体)。

  3. 语音识别: 适应新口音或新词。

  4. 医疗健康: 医学影像分析(诊断罕见病、识别新病灶),药物发现。

  5. 工业检测: 识别新的产品缺陷类型。

  6. 推荐系统: 快速适应新用户(冷启动)或新物品。

  7. 机器人学: 让机器人快速学习新技能或适应新环境。

3.6 挑战与未来方向

  1. 域差异: 如果预训练/元训练的数据域(Domain)与目标任务的数据域差异很大,模型学到的"先验"知识可能不适用,性能会显著下降。

  2. 任务多样性: 如何让模型能够适应差异极大的各种新任务(如从图像分类跳到机器翻译)。

  3. 可解释性: Few-Shot 模型做出的决策有时难以解释,尤其是在复杂模型中。

  4. 理论理解: 对 Few-Shot Learning 为何有效以及其泛化能力的理论基础仍需深入研究。

  5. 结合大模型: 如何更有效地利用日益强大的基础模型(LLMs, LVMs)来实现更通用、更强大的 Few-Shot Learning。

  6. 多模态 Few-Shot Learning: 利用来自不同模态(文本、图像、音频等)的少量信息进行学习。

  7. 无监督/自监督 Few-Shot Learning: 减少对标注 Support Set 的依赖,利用未标注数据进行 Few-Shot 学习。

3.7 总结

Few-Shot Learning 是解决机器学习模型在数据稀缺场景 下学习和泛化问题的关键技术。它通过迁移知识学习通用表示优化学习过程本身,使得模型能够像人类一样,仅凭少数几个例子就能理解和适应新的概念或任务。随着基础模型能力的不断提升和新算法的涌现,Few-Shot Learning 将在推动人工智能更广泛、更灵活地应用于现实世界方面发挥越来越重要的作用。

相关推荐
硬核隔壁老王7 分钟前
AI大模型从入门到精通系列教程(二):解锁Prompt Engineering——从原理到高阶技巧的AI交互指南
人工智能·程序员·llm
緈福的街口18 分钟前
【leetcode】2236. 判断根节点是否等于子节点之和
算法·leetcode·职场和发展
聚客AI28 分钟前
搜索引擎vs向量数据库:LangChain混合检索架构实战解析
人工智能·pytorch·语言模型·自然语言处理·数据分析·gpt-3·文心一言
祁思妙想34 分钟前
【LeetCode100】--- 1.两数之和【复习回滚】
数据结构·算法·leetcode
薰衣草233335 分钟前
一天两道力扣(2)
算法·leetcode
小鲈鱼-39 分钟前
【LeetCode4.寻找两个正序数组的中位数】二分O(log(m+n))
c++·算法
云畅新视界41 分钟前
从 CODING 停服到极狐 GitLab “接棒”,软件研发工具市场风云再起
人工智能·gitlab
橘颂TA41 分钟前
【C++】红黑树的底层思想 and 大厂面试常问
数据结构·c++·算法·红黑树
chao_78942 分钟前
二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
python·线性代数·算法·leetcode·矩阵
傻欣43 分钟前
动态规划疑惑总结
算法·动态规划