【计算机视觉】Zero-shot, One-shot和Few-shot的理解

news2024/11/16 19:58:03

机器学习任务按照对 样本量 的需求可以分为:传统监督式学习、Few-shot Learning、One-shot Learning、Zero-shot Learning。

文章目录

  • 一、传统监督式学习
  • 二、Zero-shot learning (零样本学习,简称ZSL)
  • 三、Few-shot learning
    • 3.1 什么是Meta
    • 3.2 什么是Meta Learning?
    • 3.3 Few-shot learning
    • 3.4 Supervised learning vs few-shot learning
      • 3.4.1 监督学习
      • 3.4.2 Few-shot learning
    • 3.5 *k-way n-shot* support set
    • 3.6 Basic idea behind few-shot learning
  • 四、One-shot learning

一、传统监督式学习

传统learning,炼丹模式。传统深度学习的学习速度慢,往往需要学习海量数据和反复训练后才能使网络模型具备不错的泛化能力,传统learning可以总结为:海量数据 + 反复训练(炼丹模式)。

为了 “多快好省” 地通往炼丹之路,开始研究 Zero-shot Learning / One-shot Learning / Few-shot Learning。

二、Zero-shot learning (零样本学习,简称ZSL)

参考文章:https://blog.csdn.net/weixin_41862755/article/details/125623018

任务定义:

利用训练集数据训练模型,使得模型能够对测试集的对象进行分类,但是训练集类别和测试集类别之间没有交集;期间需要借助类别的描述,来建立训练集和测试集之间的联系,从而使得模型有效。

ZSL就是希望我们的模型能够对其从没见过的类别进行分类,让机器具有推理能力,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。

比如:假设我们的模型已经能够识别马,老虎和熊猫了,现在需要该模型也识别斑马,那么我们需要告诉模型,怎样的对象才是斑马,但是并不能直接让模型看见斑马。所以模型需要知道的信息是马的样本、老虎的样本、熊猫的样本和样本的标签,以及关于前三种动物和斑马的描述。

在这里插入图片描述

三、Few-shot learning

Few-shot Learning(少样本学习)是Meta Learning(元学习)中的一个实例,所以在了解什么是Few-shot Learning之前有必要对Meta Learning有一个简单的认识。不过在了解什么是Meta Learning之前还是要了解一下什么是Meta。

3.1 什么是Meta

meta就是描述数据的数据。

比如照片,我们看到的是它呈现出来的数据, 即Data,但它还含有许多描述它拍摄参数的数据,比如光圈、快门速度、相机品牌等,即Meta。

在这里插入图片描述

3.2 什么是Meta Learning?

机器学习模型一般要求训练集样本量足够大,才能取得不错的预测效果。但对于人来说却不需要,对于一个从没有见过小猫和小狗的小朋友来说,给他几张照片他就能轻松的学会如何分辨两只动物。如果一个人已经掌握了如何骑自行车,那么学习如何骑摩托车对他来说会非常轻松。我们能否设计一个模型,让模型仅从一点点训练样本就能学会新的“知识”呢?即让模型“自己学会去学习”。

举个简单的例子,一个小朋友去动物园,里面有些动物他没有见过所以不知道叫什么名字,然后你给他一些小卡片,卡片上有各个动物的照片和名称,小朋友就可以自己学习,从这些卡片中找出这些动物的名字。这里的未知动物叫做query,小卡片叫做support set。培养小朋友从小卡片中自主学习就叫做meta learning。如果一个类别的小卡片只有一张,那么就叫做one-shot learning

小样本带标签的数据集称为support set,由于support set数据样本很少,所以不足以训练一个神经网络。而training set每个类别样本量很大,使用training set训练的模型能够在测试集取得很好的泛化效果。

在这里插入图片描述

Meta learning是一种学习其它机器学习任务输出的机器学习算法(有一点绕,不过理解了meta data理解meta learning就会相对容易一些)。

Machine learning algorithm从历史数据中学习知识,然后泛化到新的数据样本中。

  • Learning Algorithm: Learn from historical data and make predictions given new examples of data.

而meta learning是从其它学习算法(learning algorithm)的输出中学习,这就要求其它学习算法以及被预训练过。即meta learning算法将其它机器学习算法的输出作为输入,然后进行回归和分类预测。

  • Meta Learning Algorithm: Learn from the output of learning algorithms and make a prediction given predictions made by other models.

如果说machine learning是使用信息做出更好的预测,那么meta learning就是利用machine learning的预测作出最好的预测。

3.3 Few-shot learning

Few-shot learning指从少量标注样本中进行学习的一种思想。

Few-shot learning与标准的监督学习不同,由于训练数据太少,所以不能让模型去“认识”图片,再泛化到测试集中。而是让模型来区分两个图片的相似性。当把few-shot learning运用到分类问题上时,就可以称之为few-shot classification,当运用于回归问题上时,就可以称之为few-shot regression。下面所提到的few-shot learning都只针对分类问题进行讨论。

假如我们的有一个很大的训练集,包含以下五类样本,有哈士奇、大象、老虎、金刚鹦鹉和汽车。我们的目标不是让模型认出哪个是哈士奇,哪个是大象,而是让模型知道不同类别间的区别。

在这里插入图片描述

我们现在给模型输入一张新的图片松鼠(squirrel),模型并不知道它是松鼠,因为训练样本中没有这一种动物。但当你把两只松鼠的图片都输入到网络中,它虽然不知道它们属于松鼠这一类别,但模型可以很确信的告诉你这是同一物种,因为长得很像。

在这里插入图片描述

但当你输入一只穿山甲(pangolin)和一只狗(dog),模型能够区分出来它们长得不像,所以不是同一种动物。

在这里插入图片描述

3.4 Supervised learning vs few-shot learning

3.4.1 监督学习

  • 测试样本之前从没有见过
  • 测试样本类别出现在训练集中

3.4.2 Few-shot learning

  • query样本之前从没有见过
  • query样本来自于未知类别

由于query并未出现在训练集中,我们需要给query提供一个support set,通过对比query和support set间的相似度,来预测query属于哪一类别。

在这里插入图片描述

3.5 k-way n-shot support set

  • k-way:support set中有个类别
  • n-shot:每一个类别有个样本

例如下图中有四个类别,每个类别有两个样本,所以是4-way 2-shot support set

在这里插入图片描述

Few-shot learning的预测准确率随 #-way 增加而减小,随 #-shot 增加而增加。因为对于2-way问题,预测准确率显然要比1000-way问题要高。而对于 #-shot,一个类别中样本数越多越容易帮助模型找到正确的类别。

3.6 Basic idea behind few-shot learning

Few-shot learning的最基本的思想是学一个相似性函数: s i m ( x , x ‘ ) sim(x,x^{‘}) sim(x,x)来度量两个样本 x x x x ’ x^{’} x的相似性。 s i m ( x , x ‘ ) sim(x,x^{‘}) sim(x,x)越大表明两个图片越相似;越小表明两个图片差距越大。

操作步骤:

  • 从大规模训练数据集中学习相似性函数
  • 比较query与support set中每个样本的相似度,然后找出相似度最高的样本作为预测类别

在这里插入图片描述

四、One-shot learning

如果训练集中,不同类别的样本只有一个,则成为One-shot learning.

One-shot learning 属于Few-shot learning的一种特殊情况。

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

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

相关文章

【SpringMVC】 一文掌握 》》》 @RequestMapping注解

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ RequestMapping注解一、SpringMVC环境准备1.相…

阿里云服务器使用教程:CentOS 7 安装JDK及Tomcat(以jdk1.8、tomcat9.0.37为例)

目录 1、下载JDK及Tomcat的安装包并上传至服务器 2、安装JDK 3、安装Tomcat 4、Tomcat启动后无法打开Tomcat首页的原因 1、下载JDK及Tomcat的安装包并上传至服务器 (1)下载JDK1.8版本压缩包 官网:Java Downloads | Oracle &#xff08…

C++回顾(十七)—— 类型转换

17.1 static_cast(expr) static_cast强制类型转换 用于基本类型间的转换,但不能用于基本类型指针之间的转换 用于有继承关系类对象之间的转换和类指针之间的转换 static_cast是在编译期间转换的,无法在运行时检测类型 所以类类型之间的转换有可能存在风…

002 第一季SpringBoot2核心技术-核心功能:

三、核心技术之- ->核心功能 1. 配置文件 1.1 文件类型 1.1.1 properties 同以前的properties用法 优先级高于yml的方式。 1.1.2 yaml 1) 简介 YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时…

ArcGIS:栅格计算器的运算符和函数详解

01 栅格计算器在哪?02 运算符说明栅格计算器的表达式书写与Python语法一致(由于其为解释型语言并且语言简洁优美,因此简单上手),这里主要简单说明各个运算符即可使用栅格计算器构建地图代数表达式以输出要求的栅格图像…

给力|这是一个专业的开源快速开发框架!

在低代码开发市场,专业的开源快速开发框架可以助力企业提升办公协作效率,实现提质增效的办公自动化的发展目标。 流辰信息低代码技术开发平台服务商,拥有丰富的技术经验和案例合作经验,针对不同的客户需求,提供个性化、…

Docker-数据卷之Dockerfile

dockerfile相当于一个脚本通过该脚本可以生成一个自定义的镜像Dockerfile命令:注意:Dockerfile中的指令必须都是大写#基础镜像,一切从这儿开始构建 FROM #镜像是谁写的,姓名邮箱 MAINTAINER #镜像构建时候需要运行的命令 RUN #步骤&#xff1…

Nginx 文件名逻辑漏洞(CVE-2013-4547)

注意:仅用于技术讨论,切勿用于其他用途,一切后果与本人无关!!! 个人博客地址:HJW个人博客 理论基础: 建议提前学习nginx的原理:Nginx服务漏洞详解 - 知乎 漏洞原理&a…

【项目实战】如何使用Postman调用WebSocket程序

一、背景说明 项目中需要使用WebSocket进行通信,开发完了WebSocket接口,总得测试吧,以下是Postman调用WebSocket程序的方法。 二、注意事项 2.1 为啥选Postman? 最近都在用ApiFox做接口调用,但是目前版本的ApiFox&…

新库上线 | CnOpenData注册会计师及事务所数据

注册会计师及事务所数据 一、数据简介 注册会计师是指取得注册会计师证书并在会计师事务所执业的人员,从事审计、咨询、税务等相关业务。事务所是指依法在中国境内设立,由中国公民组成,具有独立法人资格,接受投资者和其他利害关系…

Python之webmagic爬虫优点与使用

一、webmagic的优点它更偏向于java的语法,对于熟悉java的工程师来说学习成本较低提供多种选择器,如css选择器、xpath、正则等有一个模块pipeline:可通过简单地配置,可以将爬虫抽取到的信息,持久化到文件、数据库等。二…

git 提交 多人开发避免冲突

代码正常提交 git add . git commit -m ‘备注信息’ git status 查看本地提交状态 git pull 拉取代码 git push origin master 指定远程仓库名和分支名 ‘’ 如果多人开发 A和B 提交避免冲突 B拉取代码修改内容直接提交后 A也修改了内容在git add / git commit / git pull / g…

新品发布 | 单细胞转录组学

单细胞转录组学测序(Single cell RNA-seq):是对单个细胞的转录组进行研究的一项技术,其原理是将分离的单个细胞中微量的mRNA通过扩增后再进行高通量测序,主要用于研究异质性细胞的独特表型和生物学功能,有助于发现新的稀有细胞类型…

【JavaSE系列】 第九节 —— 多态那些事儿

文章目录 前言 一、多态的概念 二、向上转型和向下转型 2.1 向上转型 2.2 什么是向上转型 2.3 三种常见的向上转型 2.3.1 直接赋值 2.3.2 作为方法的参数 2.3.3 作为方法的返回值 2.4 向下转型(这个了解即可) 三、方法重写 3.1 方法重写的…

启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)

背景: go代码启动以后里面涉及到修改ip地址等操作,需要管理员权限。打包好的exe文件双击执行默认是没有管理员权限的,那么修改ip就会提示需要管理员权限。 解决方法1:右键以管理员权限运行exe文件 解决方法2:编译exe…

前端jQuery ajax请求,后端node.js使用cors跨域

前言 跨域,一句话介绍: 你要请求的URL地址与当前的URL地址,协议不同、域名不同、端口不同时,就是跨域。 步入正题 前端,jQuery ajax请求 $.ajax({async: false,method: post,//URl和端口与后台匹配好,当…

点云分割预研

文章目录激光雷达点云分割1.点云分割主流方案(模型角度)1.1 (a) 基于RGB-D图像1.2 (d) 基于点云1.3 (b) 基于投影图像1.4 (b) 基于投影图像 - SqueezeSeg/RangeNet1.4. 球映射2 点云分割主流方案(部署角度)3 点云分割常用指标4 点…

MySQL 02 :三层结构、备份删除数据库

MySQL 02 :数据库三层结构-破除MySQL神秘 请添加图片描述 通过golang操作MySQL 创建删除数据库 备份恢复数据库 第一次需要配置环境,否则会报错 报错:mysqldump: Got error: 1045: Access denied for user ‘root’‘localhost’ (using …

HDLBits: 在线学习 SystemVerilog(二十三)-Problem 158-162(找BUG)

HDLBits: 在线学习 SystemVerilog(二十三)-Problem 158-162(找BUG)HDLBits 是一组小型电路设计习题集,使用 Verilog/SystemVerilog 硬件描述语言 (HDL) 练习数字硬件设计~网址如下:https://hdlbits.01xz.ne…

【LeetCode】《LeetCode 101》第二章:最易懂的贪心算法

文章目录2.1 算法解释2.2 分配问题455. 分发饼干 (简单)135. 分发糖果 (困难)2.3 区间问题435. 无重叠区间(中等)2.4 练习605. 种花问题(简单)452. 用最少数量的箭引爆气球&#xff…