当前位置: 首页 > news >正文

A Survey of Zero-Shot Learning: Settings, Methods, and Applications

1.Introduction

Zero-Shot Learning是为了解决在实际应用中,我们没有充足的训练数据对于每一个类别。在测试过程中也有很多类别没有出现在训练样本中。
为了解决这些问题,针对不同的学习模型, 提出了一些解决方法。
1.few-shot learning/one-shot learing: 该方法用来解决在某些类别在训练数据中出现较少,此时需要利用其它类别中包含的知识。
2.open set recognition: 模型会在训练时考虑没有见过的类别,模型最终会判断一个测试样例是否数据未见过的类别,但是不能判断其具体是哪个类别。
3.**cumulative learing、class-incremental learning:**在模型学习完后,根据此时新的、此前未见过的标签数据来调整模型。
4.

1.1 Overview of Zero-Shot learing

在这里插入图片描述
Definition: 给出已知标签的训练实例,学习一个分类器fu():X−>Uf^u():X->Ufu():X>U,使得该分类器能预测实例XteX^{te}Xte的类别YteY^{te}Yte,其中YteY^{te}Yte是未知的标签。
零样本学习属于迁移学习的一个子领域:零样本学习的目的是把在训练实例DtrD^{tr}Dtr中学到的知识迁移到测试实例中,训练实例和测试实例的标签空间是相斥的。
Auxiliary information: 对于未见过的类别,由于没有带标签的实例可用,因此一些辅助信息是必要的。这些信息应该包含所有关于unseen classes的信息。同时为了保证这些信息是有用的,其必须和feature space中的实例有关。
在当前的zero-shot learning中,辅助信息通常是一些semantic information,它形成了一个包含已知和未知类别的空间,通常称其为semantic space。
在这里插入图片描述

1.2 Learning Settings

归纳式(inductive): 模型训练时完全不知道测试集的信息,只能靠训练集学一个通用的映射。
传导式(transductive) 模型训练时提前看到了测试数据。即使他们没有标签,也可以用来帮助学习。


这和传统半监督学习中的“transductive”有点不一样,在ZSL中,更细化为两层:
(a)对unseen classes的传导(class-transductive)
1.模型在学习时,已经引入了关于测试类别的信息。
比如说训练时不只知道seen类别,还知道unseen类别的语义描述(比如“马”:有四条腿、有鬓毛,会跑)。即模型在训练时知道自己以后要预测哪些unseen类,有针对性的优化。
(b)对具体测试样本的传导(instance-transductive)
训练时能访问到测试集中具体的未标注样本。
除了知道“马”的语义描述,训练时模型还提前拿到了一堆“马”的图片(但没有标签),用它们来调整特征空间或分布。


故我们可以将ZSL分为三种学习场景:
**(1)Class-Inductive Instance-Inductive(CIII)**
**领域漂移(domain shift):**即训练时的分布与测试中unseen类别的分布之间的差异,往往导致性能下降。

2.Semantic spaces

在这里插入图片描述

2.1 Engineered Semantic Spaces

在人工构建的语义空间中,每个维度都是由人类设计的。该语义空间有很多种,每一种都有一个独一无二的数据来源和方式来构建。
Attribute spaces. 是由一系列某种属性构成的语义空间。在ZSL是最为广泛运用的一种空间。对于动物图像识别任务,动物的某个特征是一个属性,比如说身体颜色、栖息地等等。这些属性构成了语义空间,每一个属性是一个维度。又可分为二元属性空间和连续属性空间。
Lexical space. 由词汇信息构成的空间。
常见做法:1.word embedding 直接使用类别名通过word2vec/GloVe/fastText/BERT得到词向量,这些词向量所在的向量空间,就是lexical space。 2.词汇属性描述 类别通过一组词汇属性描述,比如“has stripes,has four legs,eats grass”,这些词语的embedding属性表示拼接后构成lexical space
优点:

  • 不需要人工标注属性,只需利用类别名/文本描述;
  • 词向量天然能捕捉语义关系。

缺点:

  • 类别名的词向量可能过于粗糙,例如"seal"可能是海豹或是封印。
  • 对细粒度分类不够准确(如”sparrow"和"robin"的词向量差别很小

learned semantic space

是指模型自动学出来的语义表示空间,在这个空间里:每个类别用一个prototype向量表示,向量维度没有明确的含义,向量整体编码了类别的语义信息。
这种空间既可以来自预训练模型,也可以专门为ZSL任务训练。
在这里插入图片描述

3 Methods

3.1 Classifier-Based Methods

**核心思想:**不直接在目标类别上训练模型,而是通过辅助的“语义空间(semantic space)”或“描述信息”来间接建立分类器,使得模型能够对从未见过的类别进行识别。
根据构建分类器方法的不同,又可进一步分为(1)correspondence methods(2)relationship methods(3)combination methods。

3.1.1 correspondence methods

该方法的流程:
Step1: 语义表示(获得prototype)
每个类别yyy都有一个prototype ϕ\phiϕ(y),可以是属性向量,也可以是词向量。
Step2:学习seen类的分类器参数
对每个seen类ysy_sys训练一个one-vs-rest二分类器,得到分类器参数WysW_{y_s}Wys。得到一组 (prototype,classifier参数) 对:(ϕ(ys),Wys),ys∈Yseen(\phi(y_s),W_{y_s}),y_s \in Y_{seen}(ϕ(ys),Wys),ysYseen
Step3:学习correspondence函数
学习一个映射函数g(⋅):Wys≈g(ϕ(ys))g(\cdot):W_{y_s}\approx g(\phi(y_s))g():Wysg(ϕ(ys))
本质是让模型学会如何把prototype转化为分类器参数。
Step4:推理unseen类
测试时给定一个unseen类yuy_uyu,生成对应的分类器参数:Wyu=g(ϕ(yu))W_{y_u}=g(\phi(y_u))Wyu=g(ϕ(yu))
Step5:Zero-shot分类
用生成的分类器参数,在测试样本的特征空间中进行分类:
y^=arg max f(x;Wy),y∈Yunseen\hat{y}=arg \ max\ f(x;W_y),y\in Y_{unseen}y^=arg max f(x;Wy),yYunseen

http://www.dtcms.com/a/395925.html

相关文章:

  • Windows连接Linux做开发的安装和配置
  • 【C++】lambda表达式类型相关问题
  • HTML应用指南:利用GET请求获取全国大疆限飞区域shp图层信息
  • Nginx进阶(二)
  • VSCode+WSL+cpolar:打造跨平台的随身Linux开发舱
  • Redis高可用方案:主从复制、哨兵与集群
  • STM32_03_库函数
  • SGP30气体传感器详解 (STM32)
  • stm32 BootLoader之检查栈顶地址是否合法(否则无法跳转到APP程序)
  • PyTorch 神经网络工具箱学习总结
  • 容器化 Spring Boot 应用程序
  • python 打包单个文件
  • Python自学21 - Python处理图像
  • 比特浏览器的IP适配性
  • LLHTTP测试
  • 2. 基于IniRealm的方式
  • 第三十四天:矩阵转置
  • MySQL执行计划:如何发现隐藏的性能瓶颈?
  • embedding多模态模型
  • ⚡ GitHub 热榜速报 | 2025 年 09 月 第 3 周
  • Synchronized的实现原理:深入理解Java线程同步机制
  • 初识C++、其中的引用、类(class)和结构体(struct)
  • Qt之常用控件之QWidget(四)
  • Pod生命周期
  • 【课堂笔记】复变函数-3
  • 深度学习-自然语言处理-序列模型与文本预处理
  • 【C语言】迭代与递归:两种阶乘实现方式的深度分析
  • CLIP多模态模型
  • 快手前端三面(准备一)
  • 前端-JS基础-day1