论文:Baby Steps Towards Few-Shot Learning with Multiple Semantics

1、Baby Steps Towards Few-Shot Learning with Multiple Semantics
目的:记录下对文章的理解

摘要:额外的语义信息可以显著提高少样本学习的能力,论文在少样本学习中结合了多种丰富的语义,这里语义信息包括类别标签、属性和自然语言描述等信息。论文在miniImageNet 和CUB few-shot benchmark做了丰富实验。下面几个问题可以理解讨论下:

1、直观对语义信息的理解
在这里插入图片描述
      以婴儿的物体识别能力为例,比如看一只狗和狼,但从视觉信息,如外观,颜色估计很难去区分,但是如果增加一些描述信息(从语言的角度),如尾巴往上翘的狗,这样语义信息和视觉信息就有互补的作用,因为它们本质是对同一个物理世界的描述,只是方法不同而已。如上图,有些类别具有相同的视觉特征,但是语义特征不同;有些类别具有相同的语义,但是视觉特征判别性强,这两种模态的特征是可以结合起来。语义表示提供了强的先验知识以及上下文信息
2、论文动机,参考工作
在这里插入图片描述
      在这之前,19年 Adaptive Cross-Modal Few-Shot Learning这篇文章 提出了在few-shot分类网络上结合类别信息的语义描述。这里简单说下它们区别:相同点都是采用了proto-net这个原型网络框架,即,通过学习原型(原型可以简单理解为样本在嵌入空间的中心)进行少样本学习的任务,不同点是,本文的主干网络为 DenseNet或ResNet,参数量更多,但这不重要,主要还是在语义信息的利用上,前者只是简单的词嵌入或规定数值属性,也就说利用地语义信息不丰富。
这里简单介绍下proto-net和AM3这两篇文章的做法:
1)Prototypical Networks for Few-shot Learning
在这里插入图片描述
首先:先获取每个类别的原型,在support set中,假设采样c1,c2,c3三个类别,每个类别对应的样本数量为N1,N2,N3,分别得到embedding特征,c1,c2,c3分别为它们的平均值。同样的,query set中取一个样本,得到它的embedding特征x,计算x与c1,c2,c3距离,距离近的类别就是这个测试样本的类别。至于训练的部分,采用的是episode-based的方法,即一个episode,先随机采样5个类别(训练集中有K个类别,5 way 15 shot,5类15个),每个类采样16个样本,15个样本作为support set,剩下1个样本作为query set(这个数目自行确定,需要成对,也可以都是15个);然后,计算每个类的原型,比如c1类,就是取这个采样的15个样本的嵌入特征平均值。得到support set每个类的原型后,只需要分别计算query set 每个样本与各个原型的距离(这个就是损失),因为目标同类之间尽可能小,不同类之间距离尽可能大,采用SGD更新。

在这里插入图片描述
2)Adaptive Cross-Modal Few-shot Learning
      再次描述下Episodic Training,意思就是:以N-way K-shot为例,给你一个数据集,Omniglot 数据集为例:小样本学习的一个基准数据集。它一共包含1623 类手写体,每一类中包含20 个样本。其中这 1623 个手写体类来自 50 个不同地区的 alphabets,如:Latin包含 26 个alphabets,Greek 包含 24 个alphabets。一般用于训练的是 964 类(30个地区的字母),用于测试的是 659 类 (20个地区的字母)。训练的目的就是,用 964 个类来训练模型,识别 659 个新的类。

在每个episode,会从964类中采样N类,假设每一类都有20个样本,然后每一类都会从样本(20个)中采样K个样本,这样就组成了support set,剩下的采样组成query set(这个样本数可以自己定,要成对就是),训练时采用最小化负log似然概率函数,这个就是loss。
在这里插入图片描述
语义信息如何结合视觉信息
      用GloVe 预训练模型提取整个数据集的label 的embedding(这块内容,怎么提取,lable怎么描述,后面再补充),得到e,这个e一般为312维,而视觉特征为512维,所以还需要g()转换,实现时采用2层MLP,隐藏层单元300,最后输出512维表示。而计算 λ \lambda λ 也是2层MLP,隐藏层单元300,最后输出一个标量 λ \lambda λ 表示。所有过程和Prototypical Networks for Few-shot Learning这篇文章一样,无非是对嵌入空间的特征分布进行了更好的描述,论文中说,加入了语义特征信息,是更加合理的结构。

在这里插入图片描述
3、回到Baby Steps Towards Few-Shot Learning with Multiple Semantics的工作
1)多分支的结构
      先看训练过程,分两个阶段,第一阶段,常规的训练分类网络过程;第二阶段,把最后一层分类层替换为2层MLP,隐藏层单元和输出都是512维,并固定backbone层的参数,同时增加语义分支,也是Episodic Training训练。每一个训练任务都结合了语义特征。label用的是 GloVe embedding ,而描述信息用的是BERT embedding 。

      现在回到重点部分多层的语义分支:过程和Adaptive Cross-Modal Few-shot Learning一样,得到语义特征prototype,对应类别的视觉原型和语义原型需要组合起来。语义分支得到embedding也需要经过两层MLP,隐藏层单元为300,输出为512维。至于组合系数也是由2层的MLP得到,隐藏层单元为300,输出为系数。

在这里插入图片描述
具体过程:视觉原型为下图(a)每一个p,先看第一条语义分支,提取的语义原型下图(b)每一个w,这里需要计算一个语义attention,就是那个组合系数a,也就是每一条语义分支计算的语义原型要和整体的类别原型进行组合。看上图从左到右,先得到一个类别原型p1 = V*a1 + (1 - a1)S1,至于a1的计算,可以由2层MLP计算,不同的输入,会有不同的效果。这里解释下公式,第二分支的计算是在上一次得到结果再加入额外语义,p2 = p1a2 + (1-a2)*S2,也就是说 attention系数计算,它的输入可以是V或对应分支的语义S,其实看第一条分支计算就可以了,后面计算过程采用同样的方式。

在这里插入图片描述
在这里插入图片描述
所以它整个损失函数是串联起来的,每一分支都提供了中间监督信息。去掉后面就是Prototypical Networks for Few-shot Learning这篇文章做法,加入第一条语义分支就是Adaptive Cross-Modal Few-shot Learning这篇文章做法,后面无非是多几条分支。
在这里插入图片描述
4、实验
在这里插入图片描述
可以看到,第一条分支应该是 类别label语义特征,效果更好,计算组合系数的2层MLP,它的输入以i的配置最好,然后是更多的分支,效果不会进一步增加,论文说了,可能是语义的特征重复了。

论文实验的一些结论:训练样本更少时,额外增加语义效果更好,而样本更多时,视觉特征更可靠。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值