零样本学习 Zero-Shot:语义嵌入驱动的未知类别识别
零样本学习 Zero-Shot:语义嵌入驱动的未知类别识别
你是否遇到过这样的情况:想让模型识别一种从未在训练数据中出现过的动物,比如“斑驴”,但训练时你只给过它马、斑马、老虎的图片。零样本学习(Zero-Shot Learning, ZSL)正是为了解决这个问题而生——它让模型能够“举一反三”,通过已有知识推断出全新类别的特征,从而在没有看过任何该类别样本的情况下完成识别。
本教程将带你从零理解零样本学习的核心思想、主流方法与应用场景,即使你只有基础的机器学习概念也能轻松跟上。
为什么需要零样本学习?
传统监督学习依赖大量标注样本,对于长尾类别(样本极少的类别)或动态新增类别(如新物种、新产品款式)往往无能为力。而现实世界中,新概念不断涌现,为每一个类别都收集充足训练数据代价高昂。
零样本学习的价值在于:
- 无需重新训练:模型训练完毕后可以直接识别见所未见的类别。
- 低成本扩展:只需提供新类别的语义描述(如一段文字或一组属性),即可扩展识别能力。
- 模拟人类推理:人类可以通过“像马但有条纹”的描述想象出斑马,ZSL 正是让机器掌握类似能力。
零样本学习是如何工作的?
核心思想:共享的语义空间
零样本学习的关键是建立一个语义嵌入空间,该空间将视觉特征和类别语义描述(如属性、词向量)映射到同一个可比较的表示中。模型学习的是“视觉特征 ↔ 语义表示”的映射关系,而不是直接记住某个类别长什么样。
测试时,面对未见过的类别图片,模型提取其视觉特征,然后在语义空间中寻找最匹配的语义描述,从而完成分类。
核心组件
- 视觉特征提取器:通常使用预训练的卷积神经网络(如 ResNet)将图像转换成固定长度的特征向量。
- 语义嵌入(Semantic Embeddings):将类别名称或描述转换为向量,常见形式包括:
- 属性向量:人工定义的属性(如“有条纹”“有角”),每个类别用多维二值或连续值表示。
- 词向量:利用 Word2Vec、GloVe 等语言模型将类别名称转换为分布式语义表示。
- 文本描述嵌入:用句子编码器(如 Sentence-BERT)将类别的一段文字描述转化为向量。
- 对齐模型(投影函数):将视觉特征映射到语义空间的函数,通常是一个线性变换或小型神经网络。训练时通过已见类别学习该映射,使得同类别的视觉投影与语义向量尽可能接近。
主流方法分类
1. 基于属性预测的方法
早期代表性方法。先训练属性分类器,让模型学会从图像预测一组属性(如“毛茸茸的”“黑色的”“四条腿”)。推理时,将预测的属性向量与未见类别的预定义属性向量进行比较(如余弦相似度),最相似的即为预测类别。
- 优点:可解释性强。
- 缺点:属性设计依赖专家知识,且难以覆盖细粒度差异。
2. 基于语义嵌入对齐的方法
直接学习从视觉特征到语义空间的映射函数 f: X → S。训练时最小化映射后的视觉向量 f(x) 与真实类别语义向量 s_y 的距离。损失函数通常采用排序损失或交叉熵损失。
- 经典模型:DeViSE 使用 dot-product + 排序损失;ALE 使用排序 SVM。
- 扩展:加入正则化防止映射退化,或使用双向映射保持结构一致性。
3. 基于生成模型的方法
近年来性能最强的范式。利用生成对抗网络(GAN)或变分自编码器(VAE)为未见类别合成视觉特征。训练时,生成器根据类别的语义向量和随机噪声“凭空”创造出该类别的虚拟视觉特征,判别器分辨真假。如此一来,零样本学习转化成了普通的监督学习——用生成的假特征训练一个分类器,直接区分未见类别。
- 代表模型:f-CLSWGAN、LisGAN、TF-VAEGAN。
- 优点:避免了“投影域偏移”问题,性能大幅提升。
- 缺点:生成样本质量影响识别率,训练较不稳定。
4. 广义零样本学习(GZSL)
在真实场景中,测试样本可能同时来自已见类别和未见类别,单纯 ZSL 模型往往严重偏执于已见类别。广义零样本学习要求模型能同时处理好两者,常用技巧有:
- 校准已见类别得分,抑制偏向。
- 将已见和未见类别的语义向量联合训练一个兼容性函数。
训练与推理流程示例
假设要构建一个零样本动物分类系统,已见类别有“猫、狗、马、老虎”,未见类别是“斑马、狼”。
训练阶段(仅用已见类别):
- 为每个已见类别准备语义向量,例如用属性向量:[有蹄, 食肉, 有条纹, 群居, 毛发…],猫 → [0,1,0,0,1…]。
- 用已见类别图像训练对齐模型:输入图片 → CNN 视觉特征 → 线性投影 → 投影向量,与对应类别的语义向量计算损失,让两者靠近。
- 训练完成后,投影函数固定。
推理阶段(出现斑马图片):
- 提取斑马图片的视觉特征,经投影得到向量
v_proj。 - 加载所有候选类别的语义向量,包括已见的和未见的。
- 计算
v_proj与每个候选语义向量的相似度(如余弦距离),取相似度最高的类别作为预测结果。如果斑马的语义向量与投影向量最相似,模型便正确识别出“斑马”。
应用场景
| 领域 | 具体应用 |
|---|---|
| 图像分类 | 识别稀有物种、细粒度商品款式、新出现物体类别 |
| 目标检测 | 在图像中定位并识别训练时未见过的物体(Zero-Shot Detection) |
| 文本分类 | 根据类别描述的语义对未见过的主题进行分类 |
| 视频动作识别 | 推理未见过的人体动作(如新运动姿态) |
| 跨模态检索 | 用文本描述搜索从未标注过的图像类别 |
| 医学图像分析 | 识别罕见病病灶,训练样本极少时仍可辅助诊断 |
挑战与局限
- 领域漂移(Domain Shift):已见类别的视觉数据分布与未见类别可能存在系统性差异,导致投影函数在未见类上表现差。这也是生成模型方法被提出的主要原因。
- 语义表示的覆盖面:词向量可能无法展现细粒度视觉差异(如不同品种狗的区分),属性设计则依赖领域知识。
- 枢纽度问题(Hubness):在高维语义空间中,某些向量会成为许多投影点的“近邻”,导致错误预置,常通过倒角距离或归一化缓解。
- 数据偏见:若训练数据中已见类别的某些外观模式占据了映射的主导,会损伤对未见类的泛化能力。
未来趋势
- 大规模预训练模型 + ZSL:利用 CLIP 这类对比语言-图像预训练模型,直接将图像和文本对齐,零样本能力得到极大提升,甚至无需专门训练属性映射。
- 少样本与零样本的结合:当有极少几张未见类别样本时,用零样本架构迁移知识并微调。
- 可解释的语义嵌入:结合知识图谱构建更语义丰富的类别表示,提升推理透明度。
- 多模态泛化:融合文本、图像、语音甚至触觉信号,构建更通用的零样本学习框架。
小结
零样本学习打破了“见过才能识”的局限,让机器拥有了类比推理的能力。其核心在于利用语义嵌入作为桥梁,将已知类别的视觉知识迁移到未知类别上。从早期的属性预测到如今的生成式方法和超大规模跨模态模型,ZSL 正变得越来越实用。理解了这一范式,你便掌握了处理开放世界识别任务的一把钥匙。
如果你想亲自实践,建议从经典的 DeViSE 或基于 CLIP 的零样本分类开始,它们均提供了易于上手的开源实现。