小样本学习主要研究如何通过少量样本学习识别模型。目前学术界普遍研究的是N-way-K-shot问题,即进行N个类别的识别,每类有K个样本。训练过程以task为单位,会用到两个数据集:Support set S 和 Query set Q 。对于模型训练过程中的每个task(episode),选定M个class,每个class选择N个样本,这M x N个样本也称为support set。对于另一个从这M个class中选择的待预测样本,模型需要确定其属于哪个class,这类问题也称为M way N shot。在测试过程中,对于在训练集中从未见过的class,模型需要在M way N shot的模式下正确分类出样本的类别。常见的M和N的设置为:5 way 1 shot, 10 way 1 shot, 5 way 5 shot, 10 way 5 shot。
01
整体分类
1. metric learning(度量学习)
代表论文:
Siamese Neural Networks for One-shot Image Recognition 2015
论文地址:
https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf
简介:
利用孪生网络训练sample之间的度量(相似性)
网络结构:
孪生网络-孪生网络使用两个相同的网络,接收不同输出,网络间共享参数。共享参数能够保证相似图片的特征值不会相差很多。同时也能保证输入不同的图片时,执行的相同的度量计算从而保证输出特征的可比性。
损失函数:
二元分类,交叉熵
训练过程:
Matching Networks for One Shot Learning 2016
论文地址:
https://papers.nips.cc/paper/6385-matching-networks-for-one-shot-learning.pdf
简介:
queryset的样本判断是supportset的哪个类别,是个knn的问题,本文训练了一个端到端的类似于nearest neighbor的分类器,思想就是借鉴seq2seq+attention。利用bi-lstm对supportset的样本编码(可能是为了将各个类别的样本作为序列输入到LSTM中,是为了模型纵观所有的样本去自动选择合适的特征去度量),然后queryset的样本进行k步attention编码,取最后一个隐藏层当做编码,最后和之前的supportset的编码做softmax得到类别。
网络结构:
损失函数:
多元,交叉熵。
Prototypical Networks for Few-shot Learning 2017
论文地址:
https://arxiv.org/pdf/1703.05175.pdf
简介:
对于分类问题,原型网络将其看做在语义空间中寻找每一类的原型中心。针对Few-shot的任务定义,原型网络训练时学习如何拟合中心。学习一个度量函数,该度量函数可以通过少量的几个样本找到所属类别在该度量空间的原型中心。测试时,用支持集(Support Set)中的样本来计算新的类别的聚类中心,再利用最近邻分类器的思路进行预测。
算法流程:
距离的度量属于Bregman散度,其中就包括平方欧氏距离和Mahalanobis距离,文中利用了平方欧氏距离。和Prototypical Networks 在few-shot的场景下不同,在one-shot时等价。
损失函数:多元,交叉熵
Relation Network for Few-Shot Learning 2018
论文地址:
https://arxiv.org/pdf/1711.06025.pdf
简介:
关系网络的做法是将query set的特征表示和support set的特征表示concat一起,然后走mlp网络,最后softmax得到分类结果。当few-shot的情况,将同一类的feature_map进行相加。
网络结构:
Few-Shot Text Classification with Induction Network 2018
论文地址:
https://arxiv.org/pdf/1902.10482.pdf
简介:
总体来说是原型网络变型,其中原型网络借助胶囊网络,一个胶囊网络通过使用执行动态路由的“胶囊”来编码个体和整体之间的内在空间关系从而构成视点不变的知识。
网络结构:
编码器模块:bi-lstm,然后self-attention变成固定长度的向量,ht。
归纳模块:
关系模块:
损失函数:回归
Dynamic Memory Induction Networks for Few-Shot Text Classification acl 2020
论文地址:
https://arxiv.org/pdf/2005.05727.pdf
简介:和Few-Shot Text Classification with Induction Network区别是编码模块使用bert-base,增加了pretrained的监督学习阶段。
网络结构:
Pre-trained Encoder:
预训练+监督学习到类别向量,当做memory,后面跟着finetune。
Dynamic Memory Module:
运行memory对supportset的sample进行编码
Query-enhanced Induction Module:
将上步骤生成的supportset的sample编码当做memory,利用queryset的sample,生成类别向量。
Similarity Classifier:
损失函数:多元交叉熵
Hybrid attention-based prototypical networks for noisy few-shot relation classification 2019
简介:
先前研究论证了距离函数的选择会影响这个网络的能力。小样本数据集意味着特征是稀疏的,简单的欧式距离能力不足。虽然特征空间是稀疏的,但总会有些维度有更强的区分能力,所以需要特征层面的注意力机制,将该类别下面的sample多次卷积得到特征attention。
网络结构:
Few-shot text classification with distributional signatures 2019
论文地址:
https://arxiv.org/pdf/1908.06039.pdf
简介:
本文提出的方法可以很好地找到最重要的词,从而判断正确的类别,实现就是attention。增加了source pool,具体地,在元学习训练时,对每个训练段,我们把所有没被选择的类的数据作为source pool;在元学习测试阶段,source pool包括所有类的训练数据。
网络结构:
对于岭回归器,我们首先得到样本的表示:
损失函数:交叉熵
Diversity Transfer Network for Few-Shot Learning AAAI2020
论文地址:
https://arxiv.org/pdf/1912.13182.pdf
网络结构:
输入有三种图,Query Image和 Support Image就是标注的episode设置,在此基础上额外加了一组Reference Image,它由H组类别相同的图片对组成。那么首先这些所有的图都会过一个Feature Extractor进行特征提取(特征会经过Norm),然后一组Reference Image 图片对的输出feature会相减和Support Image的feature再相加送入到一个Generator里面进行encoding,那么作者认为这个Encoding之后的feature和原始的support image的feature表征的是同一类物体(毕竟相同类别的两张图相减了嘛),作者通过这样的操作把intra-class的diversity显式的encode到网络的训练过程中,希望模型可以学习到这种多样性,至于meta class的分类就和protonet一样了, 只是proxy的计算是H个encoding的feature再加上原始的support image的feature取平均。
Cross Attention Network for Few-shot Classification
论文地址:
https://papers.nips.cc/paper/8655-cross-attention-network-for-few-shot-classification.pdf
简介:提出了cross attention ,其实就是两个sample的embedding之间进行attention
网络结构:
其中Cross Attention Module:
2. optimizers-base learning(优化器改进)
Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks 2017
论文地址:
https://arxiv.org/pdf/1703.03400.pdf
简介:
support set参与第一次参数更新。这里的参数更新并没有直接作用于原模型,我们可以理解为先copy了一下模型,用来计算新参数。利用第一轮更新后的参数,通过query set计算第二轮梯度,这一轮的梯度才是模型真正用于更新参数的梯度。至于这样的方法,为什么比“直接使用theta在各个task上的loss之和来做梯度下降”效果更好,这里有两篇论文从理论或数学上做了一些对MAML的分析。事实上,“直接使用theta在各个task上的loss之和来做梯度下降”相当于直接做transfer learning,思路和预训练imagenet类似,只能最小化在across tasks的经验风险,不能做到task-specific。
https://arxiv.org/pdf/1803.02999.pdf
https://www.researchgate.net/publication/328475052_How_to_train_your_MAML
算法流程:
Reptile: a Scalable Metalearning Algorithm
简介:
maml有对梯度二阶求导,Reptile是一种一阶MAML。
论文地址:
https://d4mucfpksywv.cloudfront.net/research-covers/reptile/reptile_update.pdf
法流程:
Model-agnostic meta-learning for relation classification with limited supervision. 2019
论文地址:
https://www.aclweb.org/anthology/P19-1589.pdf
简介:MAML改进,其实就是Reptile
算法流程:
Adaptive Cross-Modal Few-shot Learning 2019
论文地址:
https://arxiv.org/pdf/1902.07104.pdf
简介:
图文和视频多模融合,conbine通过系数(自适应混合系数,其实就是文本侧的embeddng通过sigmod得到的),整体利用原型网络。
网络结构:
Multi-Level Matching and Aggregation Network for Few-Shot Relation Classification
论文地址:https://www.aclweb.org/anthology/P19-1277.pdf
简介:
首先对queryset的每一个instance和support的所有instance成词级别的embedding矩阵,做交互attention,最后将attention结果和原来的矩阵进行拼接,降为原来维度。求class embedding和原型网络不通的是每一个类的权重是由queryset的实例attention得到的,然后得到class embedding,关系网络做matchclass,得到结果。
网络结构:
3. models-base learning(模型结构改进)
Meta-Learning with Memory-Augmented Neural Networks 2016
论文地址:
http://web.stanford.edu/class/psych209/Readings/Santoro16MetaLearningWithMemAugNNs.pdf
简介:
针对传统基于梯度的神经网络处理one-shot时,遇到新的数据需要重新学习参数,不能高效快速地适应新数据,此论文提出的模型可以快速编码和检索以往数据。
网络结构:
使用序列输入,每个输入伴随上一个标记,防止模型仅仅学到映射关系
在不同数据集间,标记被打乱,迫使模型必须学到保留一些样本信息,供下次检索使用
Meta Networks 2017
论文地址:
https://arxiv.org/pdf/1703.00837.pdf
简介:
Meta Networks跟MANN类似,也有一个外部的记忆模块。三个主要过程:meta information的获取、以及fast weight的生成和slow weight的优化,由base learner和meta learner共同执行。
算法流程:
A Simple Neural Attentive Meta-Learner 2018
论文地址:
https://arxiv.org/pdf/1707.03141.pdf
简介:
将meta-learning形式化为一个序列到序列的问题,使用一种新的时序卷积(TC)和注意力机制(Attention)的组合。通过将 TC 层与 Attention 层交错,SNAIL可以高效的利用过去的经验,并且不限制其可以有效使用的经验量。通过在多个阶段使用注意力端到端训练的模型中的,SNAIL它可以利用时序卷积层在过去收集的经验中了解要挑选特定的信息片段。模型的输入序列是由带标签的少量样本和一个需要预测的样本组成,它可以从序列中利用用要预测的样本之前的有先验信息或标签信息来对序列的最后一个样本预测,有一种消息传递的思想。
模型结构:
TC:
由一系列空洞卷积组成,这些dense block的膨胀率 R
呈指数级增长
ATT:
LGM-Net: Learning to Generate Matching Networks for Few-Shot Learning
论文地址:
https://arxiv.org/pdf/1905.06331.pdf
简介:model-based方法,训练网络(bilstm)生成match network的参数
网络结构:
Few-Shot Representation Learning for Out-Of-Vocabulary Words
论文地址:https://www.aclweb.org/anthology/P19-1402.pdf
简介:
对预训练的词表,统计出现次数较多的词当训练样本,本质是一个回归问题(将OOV的上下文和细粒度特征同时作为输入,输入它的近似词向量,使得这个近似词向量与它的在嵌入空间中“应该”的真实词向量比较接近),maml解决小样本过拟合点的问题。每一轮训练结束,更新训练oov。
网络结构:
4. 其他
Metagan: An adversarial approach to few-shot learning 2018
论文地址:https://papers.nips.cc/paper/7504-metagan-an-adversarial-approach-to-few-shot-learning.pdf
简介:
MetaGAN算法能够从有标签和无标签的例子中学习推断特定于任务的数据分布,在有监督和半有监督的情况下,证明了MetaGAN在流行的小样本图像分类基准上的有效性
算法流程:
loss:
判别器:可以是关系网络
生成器:
将supportset的所有sample encode成vector,在加上随机扰动。
Few-shot learning with graph neural network 2017
论文地址:
https://arxiv.org/pdf/1711.04043.pdf
简介:
利用图卷积获取sample表示之间的高阶特征组合,几层代表几阶邻居。图模型小样本学习的目的是将标签信息从有标签的样本传播到无标签的查询图像。这种信息传播可以形式化为对输入图像和标签确定的图形模型的后验推理。
网络结构:
标签one-hot形式拼接
图神经网络:
图卷积:
5. 总结
主要改进点:
1.对原型网络few-shot获取类embedding的改进:
均值改成胶囊网络等
2.feature级别的改进
样本的向量化引入feature权重(同类的样本卷积)、样本词级别的embedding按照词重要度进行加权等
3.queryset和supportset之间互相attention
queryset和supportset每个样本、queryset和supportset所有样本等
4.引入memory、对抗训练和图神经网络
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。