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维表示。而计算
也是2层MLP,隐藏层单元300,最后输出一个标量
表示。所有过程和Prototypical Networks for Few-shot Learning这篇文章一样,无非是对嵌入空间的特征分布进行了更好的描述,论文中说,加入了语义特征信息,是更加合理的结构。
3、回到Baby Steps Towards Few-Shot Learning with Multiple Semantics的工作
1)多分支的结构
先看训练过程,分两个阶段,第一阶段,常规的训练分类网络过程;第二阶段,把最后一层分类层替换为2层MLP,并固定backbone层的参数,同时增加语义分支,也是Episodic Training训练。每一个训练任务都结合了语义特征。label用的是 GloVe embedding ,而描述信息用的是BERT embedding 。
现在回到重点部分多层的语义分支:过程和Adaptive Cross-Modal Few-shot Learning一样,得到语义特征prototype,对应类别的视觉原型和语义原型需要组合起来,