Few-shot Learning 简介 #

什么是 Few-shot Learning? #

Few-shot Learning(小样本学习)是机器学习的一个重要研究方向,旨在解决训练数据稀缺场景下的学习问题。它使模型能够从极少量的样本中快速学习新概念,模拟人类的学习能力。

核心定位 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Few-shot Learning 定位                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  数据高效    │  │  快速适应    │  │  强泛化      │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  降低成本    │  │  实用性强    │  │  类人学习    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

人类学习的启发 #

text
人类学习方式:
├── 看到一次就能认出新物体
├── 听到几次就能学会新词汇
├── 少量练习就能掌握新技能
└── 能够举一反三,触类旁通

Few-shot Learning 目标:
├── 模拟人类的快速学习能力
├── 从少量样本中提取关键特征
├── 利用已有知识快速适应新任务
└── 实现跨任务的知识迁移

Few-shot Learning 的历史 #

发展历程 #

text
2000s ─── 早期探索
    │
    │      One-shot Learning 概念提出
    │      基于贝叶斯的方法
    │      简单的度量学习方法
    │
2015年 ─── 深度学习时代
    │
    │      Siamese Networks
    │      Matching Networks
    │      开始使用深度神经网络
    │
2016年 ─── 元学习兴起
    │
    │      MAML 算法提出
    │      Prototypical Networks
    │      Meta-Learning 框架建立
    │
2017-2018年 ─── 方法多样化
    │
    │      Relation Networks
    │      Meta-SGD
    │      Reptile
    │
2019-2020年 ─── 应用扩展
    │
    │      跨域 Few-shot
    │      多模态 Few-shot
    │      NLP 应用
    │
2021年至今 ─── 大模型时代
    │
    │      Prompt-based Few-shot
    │      In-context Learning
    │      与大语言模型结合

里程碑论文 #

年份 论文 贡献
2015 Siamese Networks 孪生网络用于 One-shot 学习
2016 Matching Networks 注意力机制 + 记忆增强
2017 MAML 模型无关的元学习
2017 Prototypical Networks 原型网络,简单有效
2018 Relation Networks 关系网络,学习度量
2018 Meta-SGD 自适应学习率元学习
2018 Reptile 一阶元学习,简单高效
2020 GPT-3 In-context Learning

为什么需要 Few-shot Learning? #

传统深度学习的局限 #

在传统深度学习中,模型需要大量标注数据才能取得良好效果:

text
问题 1:数据收集困难
────────────────────────
- 罕见疾病样本稀缺
- 新产品缺乏历史数据
- 专业领域标注成本高
- 隐私敏感数据受限

问题 2:标注成本高昂
────────────────────────
- 需要领域专家标注
- 标注质量难以保证
- 时间和金钱成本巨大
- 持续标注负担重

问题 3:模型适应性差
────────────────────────
- 新类别需要重新训练
- 领域迁移困难
- 无法快速适应变化
- 泛化能力有限

问题 4:实际应用受限
────────────────────────
- 很多场景数据不足
- 难以满足实际需求
- 部署成本高
- 维护困难

Few-shot Learning 的解决方案 #

python
传统深度学习:
- 需要数千甚至数百万样本
- 训练时间长
- 新任务需要重新训练
- 难以适应数据稀缺场景

Few-shot Learning:
- 仅需 1-10 个样本
- 快速适应新任务
- 利用已有知识迁移
- 解决数据稀缺问题

Few-shot Learning 的核心特点 #

1. 数据高效性 #

text
┌─────────────────────────────────────────────────────────────┐
│                    数据高效性                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  传统深度学习:                                              │
│  ┌─────────────────────────────────────────────┐           │
│  │ ████████████████████████████████████████    │ 10000+ 样本│
│  └─────────────────────────────────────────────┘           │
│                                                             │
│  Few-shot Learning:                                        │
│  ┌─────────────────────────────────────────────┐           │
│  │ ██                                          │ 1-10 样本  │
│  └─────────────────────────────────────────────┘           │
│                                                             │
│  数据需求减少:99%+                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 快速适应能力 #

text
┌─────────────────────────────────────────────────────────────┐
│                    快速适应能力                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  传统方法:                                                  │
│  收集数据 → 标注数据 → 训练模型 → 部署应用                   │
│  (数周 - 数月)                                             │
│                                                             │
│  Few-shot:                                                 │
│  收集少量样本 → 快速适应 → 立即使用                          │
│  (数分钟 - 数小时)                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. 元学习能力 #

text
┌─────────────────────────────────────────────────────────────┐
│                    元学习能力                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  传统学习:                                                  │
│  学习特定任务的知识                                          │
│                                                             │
│  元学习:                                                    │
│  学习如何学习(Learning to Learn)                          │
│                                                             │
│  核心思想:                                                  │
│  - 在多个任务上训练                                          │
│  - 学习通用的学习策略                                        │
│  - 快速适应新任务                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. Episode 训练方式 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Episode 训练                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Episode 1:                                                 │
│  ┌──────────┐  ┌──────────┐                                │
│  │ Support  │  │  Query   │  →  训练                       │
│  │   Set    │  │   Set    │                                │
│  └──────────┘  └──────────┘                                │
│                                                             │
│  Episode 2:                                                 │
│  ┌──────────┐  ┌──────────┐                                │
│  │ Support  │  │  Query   │  →  训练                       │
│  │   Set    │  │   Set    │                                │
│  └──────────┘  └──────────┘                                │
│                                                             │
│  ...                                                        │
│                                                             │
│  Episode N:                                                 │
│  ┌──────────┐  ┌──────────┐                                │
│  │ Support  │  │  Query   │  →  训练                       │
│  │   Set    │  │   Set    │                                │
│  └──────────┘  └──────────┘                                │
│                                                             │
│  每个 Episode 模拟一次测试场景                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Few-shot Learning 的分类 #

按样本数量分类 #

text
┌─────────────────────────────────────────────────────────────┐
│                    按样本数量分类                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Zero-shot Learning(零样本学习)                           │
│  ├── 无需训练样本                                           │
│  ├── 利用类别描述或属性                                     │
│  └── 例如:根据文本描述识别新物体                           │
│                                                             │
│  One-shot Learning(单样本学习)                            │
│  ├── 每个类别仅 1 个样本                                    │
│  ├── 最具挑战性的设置                                       │
│  └── 例如:人脸识别(新用户注册)                           │
│                                                             │
│  Few-shot Learning(小样本学习)                            │
│  ├── 每个类别 2-10 个样本                                   │
│  ├── 最常见的设置                                           │
│  └── 例如:5-way 5-shot                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

按方法分类 #

text
┌─────────────────────────────────────────────────────────────┐
│                    按方法分类                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 元学习方法(Meta-Learning)                             │
│     ├── 基于优化的方法                                      │
│     │   ├── MAML                                            │
│     │   ├── Meta-SGD                                        │
│     │   └── Reptile                                         │
│     ├── 基于模型的方法                                      │
│     │   ├── Memory-augmented Networks                       │
│     │   └── Meta Networks                                   │
│     └── 基于度量的方法                                      │
│         ├── Siamese Networks                                │
│         ├── Prototypical Networks                           │
│         └── Matching Networks                               │
│                                                             │
│  2. 数据增强方法                                            │
│     ├── 生成式方法                                          │
│     ├── 变换方法                                            │
│     └── 混合方法                                            │
│                                                             │
│  3. 迁移学习方法                                            │
│     ├── Fine-tuning                                         │
│     ├── Feature extraction                                  │
│     └── Domain adaptation                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Few-shot Learning vs 其他学习方法 #

与传统深度学习对比 #

特性 传统深度学习 Few-shot Learning
数据需求 大量(数千-数百万) 极少(1-10个)
训练方式 单任务训练 多任务训练
泛化能力
适应速度 慢(需重新训练) 快(几步更新)
应用场景 数据充足场景 数据稀缺场景
训练成本 中等

与迁移学习对比 #

特性 迁移学习 Few-shot Learning
预训练 在大数据集预训练 在多任务上训练
适应方式 Fine-tuning 快速适应
样本需求 中等(数百个) 极少(1-10个)
知识迁移 特征迁移 学习策略迁移
适用场景 相关领域迁移 任意新任务

与 Zero-shot Learning 对比 #

特性 Zero-shot Learning Few-shot Learning
训练样本 无需样本 少量样本
依赖信息 类别描述/属性 支持集样本
难度 更高 较高
应用场景 完全新类别 新类别有少量样本

Few-shot Learning 的应用场景 #

1. 计算机视觉 #

text
┌─────────────────────────────────────────────────────────────┐
│                    计算机视觉应用                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  图像分类:                                                  │
│  ├── 医疗影像诊断(罕见病识别)                             │
│  ├── 工业缺陷检测(新产品缺陷)                             │
│  ├── 卫星图像分类(新地物类型)                             │
│  └── 野生动物识别(稀有物种)                               │
│                                                             │
│  目标检测:                                                  │
│  ├── 新类别物体检测                                         │
│  ├── 少样本目标定位                                         │
│  └── 实例分割                                               │
│                                                             │
│  人脸识别:                                                  │
│  ├── 新用户注册(单张照片)                                 │
│  ├── 门禁系统                                               │
│  └── 身份验证                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2. 自然语言处理 #

text
┌─────────────────────────────────────────────────────────────┐
│                    自然语言处理应用                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  文本分类:                                                  │
│  ├── 意图识别(新意图类别)                                 │
│  ├── 情感分析(新领域)                                     │
│  ├── 新闻分类(新类别)                                     │
│  └── 垃圾邮件检测(新类型)                                 │
│                                                             │
│  命名实体识别:                                              │
│  ├── 新领域实体识别                                         │
│  ├── 专业术语识别                                           │
│  └── 细粒度实体识别                                         │
│                                                             │
│  机器翻译:                                                  │
│  ├── 低资源语言翻译                                         │
│  ├── 专业领域翻译                                           │
│  └── 方言翻译                                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. 推荐系统 #

text
┌─────────────────────────────────────────────────────────────┐
│                    推荐系统应用                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  冷启动问题:                                                │
│  ├── 新用户推荐                                             │
│  ├── 新物品推荐                                             │
│  └── 新平台推荐                                             │
│                                                             │
│  个性化推荐:                                                │
│  ├── 快速适应新用户                                         │
│  ├── 利用少量交互数据                                       │
│  └── 跨领域推荐                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4. 其他领域 #

text
┌─────────────────────────────────────────────────────────────┐
│                    其他领域应用                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  语音识别:                                                  │
│  ├── 新说话人识别                                           │
│  ├── 低资源语言识别                                         │
│  └── 口音适应                                               │
│                                                             │
│  机器人:                                                    │
│  ├── 新任务学习                                             │
│  ├── 新环境适应                                             │
│  └── 新物体操作                                             │
│                                                             │
│  医疗健康:                                                  │
│  ├── 罕见病诊断                                             │
│  ├── 新药发现                                               │
│  └── 个性化治疗                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Few-shot Learning 的挑战 #

1. 过拟合风险 #

text
问题:
- 样本太少容易过拟合
- 模型可能记住训练样本而非学习特征
- 泛化能力受限

解决方案:
- 使用强正则化
- 数据增强
- 元学习策略

2. 类内变异 #

text
问题:
- 同一类别的样本可能差异很大
- 少量样本难以覆盖所有变异
- 影响分类准确性

解决方案:
- 选择代表性样本
- 数据增强增加多样性
- 学习鲁棒特征

3. 类间相似性 #

text
问题:
- 不同类别可能非常相似
- 难以区分相似类别
- 影响分类精度

解决方案:
- 学习判别性特征
- 使用细粒度特征
- 注意力机制

4. 领域迁移 #

text
问题:
- 训练和测试领域不同
- 特征分布差异大
- 性能下降明显

解决方案:
- 域适应技术
- 域泛化方法
- 特征对齐

学习路径 #

text
入门阶段
├── Few-shot Learning 简介(本文)
├── 核心概念与原理
└── 与传统学习对比

基础阶段
├── 元学习方法
├── 度量学习方法
└── 数据增强方法

进阶阶段
├── 高级架构设计
├── 跨域 Few-shot 学习
└── 多模态 Few-shot 学习

实战阶段
├── 应用场景与案例
├── 最佳实践指南
└── 工具与框架

下一步 #

现在你已经了解了 Few-shot Learning 的基本概念,接下来学习 核心概念与原理,深入理解 Few-shot Learning 的核心机制!

最后更新:2026-04-05