之前写过一篇关于零样本学习的博客,当时写的比较浅。后来导师让我弄个ppt去给本科生做一个关于Zero Shot Learning 的报告,我重新总结了一下,添加了一些新的内容,讲课的效果应该还不错,这里就再写一篇作为相关内容的扩展

这里还有几篇零样本算法的介绍和复现:
DeepLearning | Semantic Autoencoder for Zero Shot Learning 零样本学习 (论文、算法、数据集、代码)
DeepLearning | Relational Knowledge Transfer for Zero Shot Learning 零样本学习(论文、算法、数据集、代码)

目录

  • 一、预备知识及问题陈述
    • 1.1 预备知识-计算机视觉里的识别问题
    • 1.2 零样本学习的问题描述
  • 二、ZSL的提出及若干模型
    • 2.1 基于物体属性的预测
    • 2.2 词向量与语义输出编码模型
    • 2.3 Discriminative learning of latent feature
  • 三、General Zero Shot Learning 通用零样本学习
  • 四、ZSL的发展现状
  • 五、附数据集下载地址
  • 六、更多资源下载

一、预备知识及问题陈述

1.1 预备知识-计算机视觉里的识别问题

为了方便介绍我们的零样本问题,这里先简单介绍一下计算机视觉里我们通常所指的识别问题

上图 (markdown好想出了点问题,不能居中了,难受…) 展示了我们熟悉的人脸识别问题,包括图片中人的身份,年龄,以及人脸在图片中的位置等。
解决这样的人脸识别问题,我们可以总结出一个简单的模式

即,首先选择一个合适的学习器 (现在在视觉里通常都是CNN),为这个学习器准备充足的训练数据和对应的标签,利用训练数据训练该学习器。在实际使用时,将测试数据输入到训练好的学习器中,学习器就可以输出测试数据对应的标签。这里值得一提的是,这种一般的模式,在测试时,学习器只能预测训练集中已有的类别

1.2 零样本学习的问题描述

我们通过例子来讲解零样本学习的问题
现在我们有了六组训练数据如下:

它们分别是马,驴,老虎,鬣狗,企鹅和熊猫,每一类别的数据都有成千上万张充足的图片作为训练数据
然而,现在在零样本学习任务中,我们的测试数据是这样的

我们已经知道测试时候会有斑马和犀牛两类图片,零样本学习要求在测试时对于输入的图片,辨别其是斑马还是犀牛。
这就是零样本学习的一个具体描述,与一般的识别问题的不同点在于,其 测试集的类别与训练集的类别不存在交集,按照之前总结的简单流程是没有办法解决零样本问题的,需要寻找新的方法。

二、ZSL的提出及若干模型

2.1 基于物体属性的预测

Lampert C H, Nickisch H, Harmeling S. Learning to detect unseen object classes by between-class attribute transfer[M]. IEEE, 2009. 这篇论文提出了零样本学习的概念并给出了最初的解决方法,称为类间属性迁移
我们用下图来说明该方法的主要思路

我们之前所给出的六类训练数据并不是胡乱给出的,根据上图我们可以看出,我们可以利用一个学习器,学习出一个动物是否具有马的外形,利用第二个学习器学习出一个动物是否具有斑纹,利用第三个学习器学习一个动物是否具有黑白间隔的颜色。
当一张斑马的图片分别输入到这三个学习器之后,我们可以得到这张图片里的动物具有马的外形,斑纹以及黑白间隔的颜色。如果此时我们有一张表,这张表里记录着每一种动物这三种属性的取值,我们就可以通过查表的方式,将这张图片对应到斑马这一类别
这里的属性表,是可以事先总结好的,因为收集大量的未知类别的图片是困难的,但是仅仅总结每一类别相应的属性却是可行的

类间属性迁移的核心思想在于:
虽然物体的类别不同,但是物体间存在相同的属性,提炼出每一类别对应的属性并利用若干个学习器学习。在测试时对测试数据的属性预测,再将预测出的属性组合,对应到类别,实现对测试数据的类别预测

2.2 词向量与语义输出编码模型

Palatucci M, Pomerleau D, Hinton G, et al. Zero-shot learning with semantic output codes[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2009:1410-1418.该论文里使用词向量来实现零样本学习

词向量(word2vec)是指将自然语言中的字词转为计算机可以理解的数字向量,并且其中意思相近的词将被映射到向量空间中相近的位置。我们来看一个简单的例子


如上图,如果我们把北京、上海、东京、华盛顿、纽约五个城市的单词转化为2维的词向量,我们可以发现它们在平面内的分布在距离上是和实际空间相似的,北京上海东京离的比较近,纽约和华盛顿离的比较近
回到我们的问题上,
驴和马谁离斑马比较近?
老虎和老鹰谁离家猫比较近?
如果我们将原先的表示类别的词(马、驴、老虎等)编码为词向量,那么我们就可以用距离来衡量一个未知的词向量的归属

语义输出编码的核心思想在于:
将训练标签编码为词向量,基于训练数据和词向量训练学习器。测试时输入测试数据,输出为预测的词向量,计算预测结果与未知类别词向量的距离,数据距离最近的类别

由以上两个模型,我们可以总结出一个零样本学习的简单模式


上图中,images space和label space分别为初始的图像空间和标签空间,在零样本学习中,一般会通过一些方法将图片映射到特征空间中,这个空间称为feature embeding;同样的标签也会被映射到一个label embeding当中,学习feature embeding和label embeding中的线性或非线性关系用于测试时的预测转化取代之前的直接由images space 到 label space的学习

2.3 Discriminative learning of latent feature

之前我们讲了两种比较基础的方法并总结了零样本学习的一般模式,现在再来讲一个相对复杂的模型,这一模型称为 Discriminative learning of latent feature,源于论文
Li Y, Zhang J, Zhang J, et al. Discriminative Learning of Latent Features for Zero-Shot Recognition[J]. 2018.
相比于类间属性迁移方法,它主要增加了两个思路:
(1)设计了专门的网络找到图片中目标的主体部分
(2)出了利用人工标注的属性,还从原始图片中搜索潜在属性加入label embeding

模型示意图如下:

模型看似复杂,其实还是基于之前总结的模式的

  1. 首先看左下角被蓝色虚线框出的模块,首先大象表示的是被圈出的图像主体部分(我们先不考虑怎样圈出的,后续会介绍),该原始图像通过一个特征提取网络FNet提取出特征,该特征通过一个ENet对右边的label embeding进行学习。这一模式和我们之前总结的是一样的,只是这里除了我们之前提到的 L a t t L_{att} Latt (人工标注的特征) 还有 L l a t L_{lat} Llat (学习得到的潜在特征,之后会介绍如何得到)

  2. 蓝色虚线框出了一个通道,该通道上面还有一个相似的通道,不同点在于,上面的通道输入的是原始图片而不是主体放大后的图片

  3. 两通道之间通过一个ZNet相连,这里的ZNet是找到主体的全链接网络,它从原始图片找到主体后将其作为下面通道的输入,两个通道同时进行训练,训练目标是使得同时在四个label( 两组 L a t t L_{att} Latt L l a t L_{lat} Llat)上的损失达到最小

该模型的主要思路就是这样,接下来我们看两个问题:

  1. 图片中的主体部分是如何找到的?
    主体部分可以被一个方框圈出,使用三个参数 [ x , y , z ] [x,y,z] [x,y,z] 表示这个方框。随机初始化三个参数,训练一个网络ZNet,当上述提到的四个label的loss达到最小的时候,找到的三个参数自然是最优的,对应到图片的主体部分
    [ x , y , z ] = W ∅ c o n v ( x ) [x,y,z]=W\varnothing _{conv}(x) [x,y,z]=Wconv(x)
    这里, ∅ c o n v \varnothing _{conv} conv 表示特征提取网络FNet的最后一个卷积层的输出,W则表示的是ZNet训练出的权重

  2. 怎样找到潜在的有差异性的特征
    寻找的方式类似于费舍尔判别分析,即类间差异最大,类内差异最小,其目标函数可以立为
    m i n ( d ( ∅ ( x i ) , ∅ ( x k ) ) − d ( ∅ ( x i ) , ∅ ( x j ) ) ) min (d(\varnothing(x_{i}),\varnothing(x_{k}))-d(\varnothing(x_{i}),\varnothing(x_{j}))) min(d((xi),(xk))d((xi),(xj)))
    这里 d d d 表示的是欧式距离, ∅ \varnothing 表示的是寻找潜在特征的函数, x i , x k x_{i},x_{k} xi,xk 是同类样本, x i , x j x_{i},x_{j} xi,xj 是不同类样本

三、General Zero Shot Learning 通用零样本学习

通用零样本学习要求准确预测 见过的和没见过的类别(ZSL只要求预测没有见过的类别)
这里介绍一个可以用于通用零样本学习的模型
Wang X, Ye Y, Gupta A. Zero-shot Recognition via Semantic Embeddings and Knowledge Graphs[J]. 2018.

该方法的主要思路是:
首先利用训练数据和训练类别训练一个 W s e e n W_{seen} Wseen。 再利用词向量作为输入, W s e e n W_{seen} Wseen作为标签,训练一个图卷积网络,利用该图卷积网络输入测试类别的词向量得到 W u n s e e n W_{unseen} WunseenW s e e n W_{seen} WseenW u n s e e n W_{unseen} Wunseen一起组成学习器 W W W 实现对所有类别的预测

四、ZSL的发展现状

这里主要参考18年TPAMI上的的综述
Xian Y, Lampert C H, Schiele B, et al. Zero-Shot Learning - A Comprehensive Evaluation of the Good, the Bad and the Ugly[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, PP(99):1-1.
对于普通零样本识别(只要求预测未知类别)目前的方法有如下精度

这里SUN、CUB、AWA1、AWA2、aPY表示5个数据集
SS、PS表示两种不同的已知、未知类别划分方式

对于通用零样本识别

这里ts表示在未知类别上的精度,tr表示在已知类别上的精度,H是两者的综合指标
比较两表可以发现,通用零样本识别的难度远远高于普通的零样本识别,也是未来的重要工作方向之一

五、附数据集下载地址

AwA: http://pan.baidu.com/s/1nvPzsXb
CUB: http://pan.baidu.com/s/1nv3KCYH
aPaY: http://pan.baidu.com/s/1hseSzVe
SUN: http://pan.baidu.com/s/1gfAc33X
ImageNet2: http://pan.baidu.com/s/1pLfZYQ3

六、更多资源下载

微信搜索“老和山算法指南”获取更多下载链接与技术交流群

有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。

DeepLearning | Zero Shot Learning 零样本学习(扩展内容、模型、数据集)相关推荐

  1. DeepLearning | Zero shot learning 零样本学习AWA2 图像数据集预处理

    因为有打算想要写一组关于零样本学习算法的博客,需要用到AWA2数据集作为demo演示 之前想只展示算法部分的代码就好了,但是如果只展示算法部分的代码可能不方便初学者复现,所以这里把我数据预处理的方法也 ...

  2. Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model

    Zero-shot Learning零样本学习 论文阅读(五)--DeViSE:A Deep Visual-Semantic Embedding Model 背景 Skip-gram 算法 算法思路 ...

  3. Zero-shot Learning零样本学习 论文阅读(一)——Learning to detect unseen object classes by between-class attribute

    Zero-shot Learning零样本学习 论文阅读(一)--Learning to detect unseen object classes by between-class attribute ...

  4. 开源开放 | 一个用于知识驱动的零样本学习研究的开源数据集KZSL(CCKS2021)

    OpenKG地址:http://openkg.cn/dataset/k-zsl GitHub地址:https://github.com/China-UK-ZSL/Resources_for_KZSL ...

  5. Few-shot learning 少样本学习

    N-way K-shot用来衡量网络泛化能力,但小样本在实际应用中并不是很好. 背景 深度学习已经广泛应用于各个领域,解决各类问题,在图像分类的问题下,可以很轻松的达到94%之上.然而,deep le ...

  6. 近期必读的6篇 NeurIPS 2019 的零样本学习(Zero-Shot Learning)论文

    近期必读的6篇 NeurIPS 2019 的零样本学习(Zero-Shot Learning)论文 PS:转发自"专知"公众号 [导读]NeurIPS 是全球最受瞩目的AI.机器学 ...

  7. few-shot learning 1.1——零样本学习

    few-shot learning 1.1--初识零样本学习 1. 什么是few-shot learning 小样本学习问题是指只给定目标少量训练样本的条件下,如何训练一个可以有效地识别这些目标的机器 ...

  8. ChatGPT基础知识系列之零样本学习( Zero-Short learning)

    ChatGPT基础知识系列之零次学习( Zero-Short learning) 顾名思义,在训练分类器的时候可以不需要A类物体样本就能在测试时识别A类物体,咋一看,很玄乎,其实并没有.在具体解释思路 ...

  9. 近期必读的6篇NeurIPS 2019零样本学习论文

    来源 | 专知(ID:Quan_Zhuanzhi) [导读]NeurIPS 是全球最受瞩目的AI.机器学习顶级学术会议之一,每年全球的人工智能爱好者和科学家都会在这里聚集,发布最新研究.NIPS 20 ...

最新文章

  1. 建议收藏!耗时3个月收集的机器学习+深度学习+Python资料教程~免费分享了
  2. Android studio自定义变量
  3. 提取pfx证书公钥和私钥
  4. u3d 总是背向相机_纪念光学科学家“肖特”的相机
  5. Bootstrap系列 -- 26. 下拉菜单标题
  6. Exchange2003管理
  7. mysql时间戳计算_mysql根据时间戳计算
  8. 汇顶科技2021秋招笔试
  9. link要使用全路径
  10. Visual Studio 2015 专业版安装方法
  11. 9月TIOBE编程语言排行榜出炉,这个语言或成最大赢家!
  12. Ruoyi 整合Flowable UI Modeler 6.7.2
  13. labuladong的算法小抄_学会了回溯算法,我终于会做数独了
  14. 云计算技术与应用赛项赛题库
  15. 程序员年薪20万、30万、40万都是什么样的体验?
  16. 电子管功放制作指南_电子管功放怎么制作 电子管功放制作指南【详解】
  17. 小旋风asp服务器出错
  18. wechat微信小程序panda展示公司信息
  19. 相对论中的火车隧道问题
  20. html如何设置圆角效果,css怎么设置圆角边框样式?

热门文章

  1. Delphi中的TStream类
  2. 如何把在线K歌“玩起来”——专访撕歌音视频架构师程乐
  3. 中国工程院院士谭建荣:工业大数据与定制化设计—关键技术与典型应用
  4. 电子商务(Electronic Commerce)
  5. C++实验——出勤情况统计(小红花)
  6. SEO机制算是让我玩明白了
  7. IPNC dm368 sd烧写
  8. word写论文的一些格式
  9. 2018年蓝桥杯省赛B组C++真题
  10. 建立数据库,建立一个“学生”表student。