Zero-shot、 Zero-shot与meta-learning

目录

1 Zero-shot(零次学习)

参考:Zero-shot(零次学习)简介-CSDN博客

1.1 基本概念

 1.2 zero-shot存在的问题

(1)领域漂移问题(domain shift problem)

(2)枢纽点问题(Hubness problem)

(3)语义间隔(semantic gap)

2.Few-Shot 

2.1 问题的引出

3. meta learning

 解决few-shot learning的问题

数据集


1 Zero-shot(零次学习)

参考:Zero-shot(零次学习)简介-CSDN博客

1.1 基本概念

        例子:假设我们已知驴子和马的形态特征,又已知老虎和鬣狗都是又相间条纹的动物,熊猫和企鹅是黑白相间的动物,再次的基础上,我们定义斑马是黑白条纹相间的马科动物。不看任何斑马的照片,仅仅凭借推理,在动物园一众动物中,我们也能够找到斑马。
        上述例子中包含了一个推理过程:利用过去的知识(已知动物的描述),在脑海中推理出新对象的具体形态,从而能对新对象进行辨认(如下图)。

        如今十分火热的纯监督模型往往需要足够多的样本才能训练出足够好的模型,并且用熊猫训练出来的分类器,只能对熊猫进行分类,其他物种都无法识别,也无法进行特征的综合推理,这样的模型功能还有待完善。

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

        这样的能力听上去很具有吸引力,那么到底是怎么实现的呢?

        假设我们的模型已经能够识别马,老虎和熊猫了,现在需要该模型也识别斑马,那么我们需要像爸爸一样告诉模型,怎样的对象才是斑马,但是并不能直接让模型看见斑马。所以模型需要知道的信息是马的样本、老虎的样本、熊猫的样本和样本的标签以及关于前三种动物和斑马的描述。以一般的图片分类问题为例:
        (1)训练集数据X1及其标签Y1,包含了模型需要学习的类别(马、老虎和熊猫),这里和传统的监督学习中的定义一致;
        (2)测试集数据 X2及其标签 Y2,包含了模型需要辨识的类别(斑马),这里和传统的监督学习中也定义一致;
        (3)训练集类别的描述 A1,以及测试集类别的描述 A2;我们将每一个类别 Yi,都表示成一个语义向量ai的形式,而这个语义向量的每一个维度都表示一种高级的属性,比如“黑白色”、“有尾巴”、“有羽毛”等等,当这个类别包含这种属性时,那在其维度上被设置为非零值。对于一个数据集来说,语义向量的维度是固定的,它包含了能够较充分描述数据集中类别的属性。
        在zero-shot中,我们希望利用X1和Y1来训练模型,而模型能够具有识别X2的能力,因此模型需要知道所有类别的描述A1和A2。zero-shot这样的设置其实就是上文中识别斑马的过程中,已知的条件。
       zero-shot就可以被定义为:利用训练集数据训练模型,使得模型能够对测试集的对象进行分类,但是训练集类别和测试集类别之间没有交集;期间需要借助类别的描述,来建立训练集和测试集之间的联系,从而使得模型有效。

 1.2 zero-shot存在的问题

(1)领域漂移问题(domain shift problem)

        如上图所示,斑马和猪都有尾巴,因此在它的类别语义表示中,“有尾巴”这一项都是非0值,但是两者尾巴的视觉特征却相差很远。如果斑马是训练集,而猪是测试集,那么利用斑马训练出来的模型,则很难正确地对猪进行分类。

(2)枢纽点问题(Hubness problem)

        将高维向量投影到低维空间时,会出现中心性问题。这样的投影减少了方差,从而导致投影点聚集成中心点。解决零样本识别问题的最常用方法之一是学习从高维视觉空间到低维语义空间的投影函数。然而,这会导致在语义空间中形成投影中心点,而这些中心点往往更接近于数量占比大的类的语义属性向量。由于在测试时,我们在语义空间中使用最近邻搜索来找到预测类别的,所以 Hubness 问题势必会降低模型的性能。

(3)语义间隔(semantic gap)

    样本的特征往往是视觉特征,比如用深度网络提取到的特征,而语义表示却是非视觉的,这直接反应到数据上其实就是:样本在特征空间中所构成的流型与语义空间中类别构成的流型是不一致的。(如下图)

2.Few-Shot 

参考:few-shot基本概念_看不见我呀的博客-CSDN博客

2.1 问题的引出

通过很少的样本来进行分类/回归

给你四张图像,人类大概可以知道,查询图像是什么。

同样,机器也需要知道。

Support set:很少的数据集,例如每类图像有2张。这么少的样本不足以训练一个模型。

传统的监督学习:让机器学习训练集,然后泛化到测试集。

Few-shot learning:让机器自己学会学习。

在一个大的数据集中,few-shot learning不是让nn知道什么是大象/老虎,再去识别没见过的大象/老虎。而是让模型理解事物之间的不同,学会区分不同事物。(给定两张图像,不是让学会图像是什么,而是学会区分图像如何是否相同)

训练完模型之后,可以问模型如下问题:

数据集中没有松鼠。模型不认识松鼠,但是模型知道事物之间的异同,可以告诉你,他们相同。

换种说法:

给你一张query图像,问模型,这是什么东西?训练的时候没有见过这种东西呀?

在多给一个support set,包含6张图像,告诉她分别是狐狸、松鼠……

模型拿query,依次与support对比,发现和水獭最相似。因此,query应该是水獭。

Support  set:带标签的术语。规模很小,每一类有一张/几张图象。在做预测的时候,提取额外的信息。

Traning set:规模很大,每一类有很多张图像。

核心:用足够大的模型,来训练一个大模型,如深度神经网络。

训练的目的,不是让模型学会大象/老虎等。而是让模型学会事物的异同,然后根据support set,就可以知道quey是什么,尽管训练集中没有水獭类别。

3. meta learning

传统监督学习:模型学习训练集,然后泛化到测试集。

meta learning:learn to learn 学会学习

few-shot learning is a kind of meta learning

one-shot learning:靠一张卡片学会水獭

模型没有见过这张哈士奇,但是训练集里有上百张哈士奇,模型由一定的泛化能力。

模型不仅没有见过这张兔子,而是没有见过兔子这个类别的所有图像。

因此需要给模型看小卡片。

随着类别增加,分类准确率降低。

参考样本越多,预测越容易。

 解决few-shot learning的问题

基本想法:学习一个函数,来学习相似度

 

数据集

如果做meta learning,需要用标准的数据集,来评价算法的好坏

手写数字 1600类,每类由20张图像

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值