零次学习(Zero-Shot Learning)

news2024/12/22 18:58:19

零次学习(Zero-Shot Learning)

零样本学习zero-shot learning,是最具挑战的机器识别方法之一。2009年,Lampert 等人提出了Animals with Attributes数据集和经典的基于属性学习的算法,开始让这一算法引起广泛关注。

零样本学习涉及的主要数据,

  1. 已知类:模型训练时用到的带类别标签的。
  2. 未知类:模型测试、训练时不知道类别标签的。
  3. 辅助信息:对已知类和未知类data的描述/语义属性/词嵌入等信息。该信息充当了已知类和未知类之间的桥梁。

Zero-Shot Learning (ZSL)是机器学习中的一种策略,其目标是使模型能够理解并识别它在训练阶段未曾遇到过的类别。

  • 这个概念首次被引入是为了解决现实世界中类别过多、每个类别的样本过少的问题。
  • 基于这个理念,如果有一种方法可以让机器学习模型理解未曾见过的新类别,那将是极其有用的。

原理:
在ZSL中,模型通常会接受到一些额外的信息,用来帮助理解新的类别

  • 这种信息通常是以人类可理解的形式提供的,如文本描述、属性列表或是语义向量等。
  • 模型通过学习已知类别和这些附加信息之间的映射,从而理解新的类别


举例

例如,一个图像分类模型在训练时可能只见过“猫”、“狗”和“鸟”这三个类别的图像。

  • 在ZSL的设置下,我们可能希望模型能处理“马”的图像
  • 为了达到这个目标,我们可能会给模型一个关于“马”的描述
    • 比如“马是一种有四条腿和一条长尾巴的动物”
    • 然后让模型通过这个描述来理解“马”的类别。


目前的研究方式

在上文中提到,要实现ZSL功能似乎需要解决两个部分的问题:

  1. 第一个问题是获取合适的类别描述
  2. 第二个问题是建立一个合适的分类模型

目前大部分工作都集中在第二个问题上,而第一个问题的研究进展比较缓慢。


发展与现状

ZSL的研究工作从最初的文本和图像的跨模态学习扩展到了许多其他领域,如视频分析、语音识别等。

  • 同时,ZSL的方法也在逐渐改进,比如从原始的属性标签学习扩展到了使用深度学习模型学习更高层次的语义信息

难点

ZSL的主要难点在于如何建立有效的已知类别到未知类别的映射

  • 以及如何处理模型在训练和测试阶段面临的数据分布不同的问题(这被称为领域偏移或领域间隔问题)。

创新点

ZSL的主要创新在于提出了一种新的学习范式,该范式允许模型处理在训练阶段未曾见过的类别。

  • 此外,ZSL还尝试使用人类可理解的语义信息来帮助模型理解新的类别,这在传统的监督学习方法中是没有的。


一般过程

零次学习(Zero-Shot Learning,ZSL)的基本原理是通过学习已知类别和语义描述之间的映射,从而理解并识别新的、未曾见过的类别

  • 在许多ZSL模型中,我们需要一种方式来表示类别的语义信息,这通常是通过所谓的属性向量或者类别嵌入向量实现的

以下是一个简化的版本的ZSL的一般过程:

  1. 类别嵌入:首先,我们需要一个能够表示类别语义信息的向量。这可以通过一组预定义的属性(例如,“有羽毛”、“能飞”等)实现,也可以通过其他方式实现,比如将类别名称输入一个预训练的词嵌入模型(如Word2Vec或GloVe)得到的向量。

  2. 特征抽取:然后,我们需要从输入数据(例如,图像或文本)中抽取特征。这通常可以通过一个预训练的深度神经网络实现。

  3. 映射学习:接着,我们需要学习一个映射,将输入数据的特征空间映射到类别嵌入空间。这可以通过多种方式实现,例如,可以训练一个神经网络,使得同一类别的样本的特征在类别嵌入空间中尽可能接近,而不同类别的样本的特征在类别嵌入空间中尽可能远离。这个过程可以通过最小化某种距离或损失函数实现,例如,可以使用余弦距离或者交叉熵损失。

以上是ZSL的基本流程。
当然,实际的ZSL模型可能会更加复杂,例如,可能会考虑类别间的关系,或者使用更复杂的映射函数等。



具体实现

对于 Zero-Shot Learning (ZSL) 的具体实现,常见的方法之一是利用视觉-语义映射。
我们来详细介绍一下这个过程:

1. 视觉特征提取:我们首先从输入样本中提取视觉特征。假设我们的输入样本是图像,我们可以使用卷积神经网络(CNN)来提取特征。我们用φ(·)来表示特征提取函数,那么对于一个输入图像x,我们可以得到它的视觉特征φ(x)

2. 语义嵌入:我们需要一种方式来表示类别的语义信息。这可以通过词嵌入模型实现,比如Word2Vec或GloVe。我们用ψ(·)来表示词嵌入函数,那么对于一个类别c,我们可以得到它的语义嵌入ψ(c)

3. 视觉-语义映射:接着,我们需要学习一个映射函数f(·),它能够将视觉特征空间映射到语义嵌入空间。假设我们有一个数据集D = {(x1, c1), (x2, c2), ..., (xn, cn)},其中xi是图像,ci是对应的类别。我们的目标是学习映射函数f(·),使得对于所有的样本,f(φ(xi))尽可能接近ψ(ci)。这个过程可以通过最小化以下损失函数来实现:

L = Σ ||f(φ(xi)) - ψ(ci)||^2

这里||·||^2表示平方L2范数,也就是欧氏距离。Σ表示对所有样本求和。

在训练过程中,我们通过反向传播和梯度下降等优化方法来最小化损失函数,从而学习到映射函数f(·)

4. 预测:在测试阶段,给定一个新的图像x,我们首先用f(φ(x))得到它在语义嵌入空间中的表示,然后找到最接近的语义嵌入ψ(c),对应的类别c就是我们的预测结果。

这就是视觉-语义映射方法在 ZSL 中的应用。请注意,这只是其中一种方法,实际上 ZSL 的实现方法有很多种,每种方法都有其优点和局限。


简化的实现过程

在Zero-Shot Learning(ZSL)中,一个常见的框架是直接学习从视觉特征到语义嵌入空间的映射。假设我们有一个函数f(·)来提取输入样本的特征,一个函数g(·)来表示类别的语义信息,我们的目标是学习一个映射函数h(·),使得我们可以用h(f(x))来预测样本x的类别。

给出更具体的数学形式,假设我们有一个数据集D = {(x1, y1), (x2, y2), ..., (xn, yn)},其中xi是样本,yi是对应的类别标签。每个类别y都对应一个语义嵌入g(y)。我们的目标是学习一个映射函数h(·),使得对于所有的样本,h(f(xi))尽可能接近g(yi)。这可以通过最小化以下损失函数来实现:

L = Σ ||h(f(xi)) - g(yi)||^2

这里||·||^2表示平方L2范数,也就是欧氏距离。Σ表示对所有样本求和。

在测试阶段,给定一个新的样本x,我们首先用h(f(x))得到它在语义嵌入空间中的表示,然后找到最接近的语义嵌入g(y),对应的类别y就是我们的预测结果。

请注意,这只是ZSL的一个非常简化的版本,实际的ZSL模型可能会考虑更复杂的情况,例如类别间的关系,或者使用更复杂的映射函数等。
此外,以上的公式并没有考虑正则化项,实际使用时通常会加上一些正则化项以防止过拟合。



研究论文参考

零次学习(Zero-Shot Learning,ZSL)是一个非常活跃的研究领域,有很多重要和有影响力的论文。以下是一些经典和重要的论文:

  1. Attribute-based Classification for Zero-Shot Visual Object Categorization

    • 论文链接: [https://ieeexplore.ieee.org/abstract/document/6247951]
    • 概述: 这篇论文是ZSL领域的早期工作,作者提出了基于属性的分类方法,可以处理未在训练集中出现的类别。
  2. Zero-Shot Learning through Cross-Modal Transfer

    • 论文链接: [https://papers.nips.cc/paper/2013/hash/9aa42b31882ec039965f3c4923ce901b-Abstract.html]
    • 概述: 这篇论文提出了通过跨模态转移进行ZSL的方法。这篇论文的一个重要贡献是提出了在训练和测试阶段使用不同的特征的问题。
  3. Zero-Shot Learning - A Comprehensive Evaluation of the Good, the Bad and the Ugly

    • 论文链接: [https://arxiv.org/abs/1707.00600]
    • 概述: 这篇论文对ZSL进行了全面的评估。作者指出了现有方法的一些问题,并提出了新的评估协议。

对于多模态的ZSL,也有一些重要的工作,例如:

  1. Zero-Shot Learning of Class Semantics via Temporal Attention

    • 论文链接: [https://arxiv.org/abs/1809.00116]
    • 概述: 这篇论文研究了如何利用视频中的动态信息进行ZSL。作者提出了一个基于时间注意力机制的模型,可以学习到类别的语义信息。
  2. Learning Semantic Models for Cross-Modal Zero-Shot Sketch Data Retrieval

    • 论文链接: [https://www.sciencedirect.com/science/article/abs/pii/S0031320318303701]
    • 概述: 这篇论文研究了如何进行跨模态的零次学习,特别是在草图数据检索的任务中。

以上这些论文只是零次学习领域的冰山一角,具体选择哪篇论文取决于你的具体需求和兴趣。我建议你在阅读这些论文的同时,也查阅一下他们的引用文献,以了解更多相关的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/564202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt quick(qml)通过arcgis导入自定义格式地图(Windows 版本)

参考ArcGIS Maps SDK for Qt 参考Display a map 安装 预先安装的软件 安装ArcGIS SDK 点击ArcGIS Maps SDK for Qt 注册账号 要注册成developer版本用户的,不然之后可能没办法生成API 下载 下载之后安装,一路next就可以了 在QT中创建ArcGIS项目…

CMOS图像传感器——TDI CIS(2)

在之前的文章 CMOS图像传感器——TDI CIS_tdi相机的工作原理_沧海一升的博客-CSDN博客时间延迟积分(Time-Delay Integration, TDI)技术是一种特殊的成像模式https://blog.csdn.net/qq_21842097/article/details/119873386 对CMOS TDI图像传感器做了基本介绍,这里我们…

django项目结合vue执行

开发环境下直接把vue打包后的文件放在django项目,启动前端项目直接打包即可 注意事项: settings.py文件 TEMPLATES [ { ‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’, # ‘DIRS’: [], ‘DIRS’: [os.path.join(BASE_DIR,‘front…

Java基础面试题突击系列5

👩🏻 作者:一只IT攻城狮 ,关注我不迷路 ❤️《java面试核心知识》突击系列,持续更新… 💐 面试必知必会学习路线:Java技术栈面试系列SpringCloud项目实战学习路线 📝再小的收获x365天…

mac 切换java jdk版本 java8 java11

1. 终端执行命令 查看本地各版本jdk:mac通常默认安装了jdk1.8 安装目录是 /Library/Java/JavaVirtualMachines/ cd /Library/Java/JavaVirtualMachines/ ls 2. 上述命令列出的各版本目录名 后,在全局配置文件.bash_profile中新增上面命令列出的各…

四月,收割12家offer,面试也太容易了吧....

前言 下面是我根据工作这几年来的面试经验,加上之前收集的资料,整理出来350道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有 提到。 虽然这篇文章很长,但是绝对值得你…

005 - STM32学习笔记 - 启动代码

005 - STM32学习笔记 - 启动代码 常用汇编指令 指令名称作用EQU给数字常量取一个符号名,相当于C语言中的#define;AREA汇编一个新的代码段或者数据段;SPACE分配内存空间;PRESERVE8当前文件栈需要按照8字节对齐;EXPORT…

【ChatGPT】ChatGPT自动生成思维导图

参考视频:https://edu.csdn.net/learn/38346/613917 应用场景:自学,“研一学生如何学习机器学习”的思维导图 问:写一个“研一学生如何学习机器学习”的思维导图内容,以markdown代码块格式输出 # 研一学生如何学习…

探索人工智能和机器学习的前沿趋势

🌟 深度学习的突破🌟 强化学习的进展🌟 可解释性和公平性的挑战(1000字)🌟 自动化和智能化的未来(1000字) 在当今科技飞速发展的时代,人工智能(Artificial In…

全网最牛最前面的浦发银行软件测试面试题精讲分析

面试永远都是软件测试人重点关注的问题,最近也总有很多想去银行面试的小伙伴来问我,有没有什么方法技巧传授一下。 那今天就给大家总结一些浦发银行的面试题,小伙伴们可以看看如果是自己能不能流畅地回答上来这些面试题。 1、说说你们公司测…

c++积累12-const

1、文件作用域-const修饰变量默认为文件局部变量 注意:非const变量默认为extern。要使const变量能够在其他文件中访问,必须在文件中显式地指定它为extern。 1) 未被const修饰的变量在不同文件的访问 可以看到是能够默认不加const是可以正常访问的 2) …

某大型啤酒企业:构建网络安全软实力,首选Coremail反钓鱼演练

客户背景 某大型啤酒厂商的公司规模和市场份额多年来始终都处于行业领先地位,积极赞助多项体育赛事,持续丰富和提升品牌形象。作为一家具有全球影响力的企业,自然也成为了全球黑客等攻击团伙的重点目标,而系统攻击的开端便是钓鱼…

什么是产品路线图?如何做产品路线图规划

产品路线图规划 •产品路线图是一个高层次的战略计划,它描述了产品在未来一段时间可能会如何发展和壮大,产品路线图确保整个产品团队持续关注产品的目标,帮助产品负责人把握产品的战略方向,调整产品的优先级和产品规划。 里程碑…

轻松打造智能化性能测试监控平台:【JMeter+Grafana+Influxdb】的优化整合方案

目录 【引言】 【背景说明】 【实现原理】 【平台搭建】 方法一:Windows或macOS环境下搭建 1.InfluxDB安装 2.grafana安装 3.jmeter配置 方法二:Linux环境下搭建 1.influxdb安装 2.grafana安装 3.jdkjmeter安装 方法三:docker容…

L1-093 猜帽子游戏

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。每个人可以看到别人头上的帽子,但是看不到自己的。游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜。如果没有…

python接口自动化测试之unittest自动化测试框架基本使用

目录 unittest简单介绍 unittest基础使用 unittest.Testcase setUp tearDown setUpClass tearDownClass 测试用例 unittest.main() unitteest提供的各种断言方式 unittest测试用例跳过执行 跳过执行测试用例共有四种写法 self.skipTest(reason) 跳过执行测试用例注…

手动搭建一个简单的MVVMLight框架的方法

本章讲述:手动搭建一个简单的MVVMLight框架步骤: 1、下载MVVMLight所需要的dll库文件 主要文件包括:CommonServiceLocator.dll、GalaSoft.MvvmLight.dll、GalaSoft.MvvmLight.Extras.dll、GalaSoft.MvvmLight.Platform.dll、System.Windows.…

小兔新--项目实战总结1

目录 Layout-吸顶导航交互实现 吸顶交互 vueUse Layout-Pinia优化重复请求 为什么要优化 如何优化 Home-懒加载指令优化 场景和指令用法 实现思路和步骤 回顾核心步骤代码 Home-懒加载指令优化 问题1:逻辑书写位置不合理 问题2:重复监听问题 一级分类-解决路由缓存问…

Web基本与HTTP协议

目录 一:域名 1.域名概述 2.域名空间结构 3. 域名注册 二: 网页访问(HTTP/HTTPS) 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 (1)网页摘要信息的作用 (…