Generalizing from a Few Examples: A Survey on Few-Shot Learning
从少样本中概括:少样本学习综述
FSL: Few-Shot Learning
YAQING WANG, Hong Kong University of Science and Technology and 4Paradigm Inc
QUANMING YAO, 4Paradigm Inc
JAMES T. KWOK, Hong Kong University of Science and Technology
LIONEL M. NI, Hong Kong University of Science and Technology
香港科技大学 + 第四范式
介绍:FSL引入的介绍,FSL在人类机器研究与AI领域的位置;
概述:FSL的正式定义、核心问题、相关学习问题以及在数据、模型和算法方面的分类;
数据: 增加数据以解决FSL问题的方法(有标签数据,弱标签数据,相似数据集,总结);
模型: 对模型进行约束的方法(多任务学习,嵌入式学习,外部记忆空间学习,生成模型,总结);
算法: 改变算法搜索策略来处理FSL问题的方法(已有参数优化,元参数优化,学习优化器,总结);
展望:提出在问题设置、技术、应用和理论方面的未来方向;
总结
虽然现在AI发展得很快,在很某些领域的某些应用超过了人类,可是在少样本的情况下,还是很难去学习与泛化概括得很好。另外,以前的成功应用是来自模型在大规模上学习出来的,而人类对于遇到新任务,可以很快把以前学习到的东西应用起来。例如一小孩子,给他几张陌生人的相片,他可以从大量的照片中识别出哪些是同一个人。为了解决样本量问题,朝着像人一样去思考的思想而提出了FSL。当只用一个样本去学习时,叫做one-shot学习问题;FSL可以把先验的知识图谱加入进来。
略
FSL是机器学习的子领域;
Machine Learning定义:
Few-Shot Learning定义
Semi-supervised learning(Positive-unlabeled learning,active learning),Imbalanced learning ,Transfer learning(Domain adaptation,zero-shot learning),Meta-learning or learning-to-learn;
FSL可以是监督学习,半监督学习,强化学习,这个取决于除了有有限的监督数据之外还有其它什么数据。
很多FSL方法都是元学习方法,使用元学习器作为先验知识。
这里补充一个词:假设空间
机器学习中可能的函数构成的空间称为“假设空间”。
监督学习的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测。模型属于由输入空间到输出空间的映射的集合,这个集合就是假设空间。假设空间的确定意味着学习范围的确定。
Empirical Risk Minimization
p(x,y)是未知的,所以用如下的经验风险去估计上面的风险函数:
如下的最优化理解:
对于第一个h(带帽),是一个最真实的最优化解,是对模型全集的最优化求解,不过这个只能停留在理论上。从理论上去,是可以找一个非常完美的模型去学习民给的样本,这个是不可以达到的完美的客观存在的规律,可惜,这个只是客观概念的存在。
对于第二个h(带星),它是属于我们自己假设的模型集中的,也就我们给定了一个模型集合,最中找到了一个最好模型出来,这里给定了模型;
对于第三个h(带I),它是由样本学习得到的,在给定模型后的参数的学习。
所以,对于识差会存在两个,一个app,一个是est的,故有论文的总的损失误差定义:
相对于大量监督样本的学习,FSL的挑战会更大,如下他们的对比:
在est的误差方面,当我们可以把这里的样本都找到了,可以让它无空地接近于0,如下的公式,可是,FSL定为少样本,这个就直接拉大了est的误差了,很具有挑战的内容。直观感觉如果真的想要少样本,一定要跳出机器学习这个牢笼!!!!!
在传统机器学习中,为了减少est的误差,加入正则化,可是正则化并没有引入其它信息,对于FSL并不可行。
基于这个理论,后面分析了样本复杂性,启示:**要降低样本的复杂性,从先验知识来补充样本的不足问题。**例如Bayesian learning。
结论:FSL的核心问题是不可靠的经验风险最小化,通过加入先验知识去的方法去解决这个问题。
data: 使用先验知识去进行数据增强;
model: 根据先验知识,加入约束规则把假设空间的H减小;过滤掉一些不可能的模型;
algorithm:根据先验知识去调参,把先验知识转变为机器学习的搜索策略;
FSF的分类:
心得:由于FLS天生是要少样本,要有充足的信息去训练,一个方法是输入先验信息,到于机器学习框架,从这三个地方考虑把先验知识加入---数据,模型,算法。
把先验知识加入的方法总结为四种方法
转换器–transformer
两大类:基于训练数据转换样本与基于弱标注或无标注数据转换样本
人为定义规则,从原训练数据集做一些规则变换,生成相关的数据集,放到训练集中。例如在图像识别任务中,经过给图像作预处理来增强训练集,操作例如translating, flipping, shearing, scaling, reflecting, cropping and rotating.
通过复制原始样本形成几个新样本,原样本经过已学习的转换器进行修改形成新的样本作为样本增强。
学习转换本身是E中的先验知识,而当前FSL任务既不需要训练样本,也不需要学习过程。
最早的学习转换[78]:通过迭代地将每个样本与其他样本对齐,从类似的类中学习一组几何变换。 然后将这种学习变换应用于每个(x(i),y(i))上,形成一个可以正常学习的大型数据集。
从[Delta Encoder: An effective sample synthesis method for few-shot object recognition]中的相似类中学习了一组自动编码器,每个自动编码器代表一个类内可变性。通过将习得的变化量添加到来生成 x i x_i xi新样本。
在Low-shot visual recognition by shrinking and hallucinating features中,通过假设所有类别在样本之间共享一些可变换的可变性,可以学习单个变换函数,将从其他类别学习到的样本对之间的差异转移到(xi,yi)。
在[One-shot learning of scene locations via feature trajectory transfer中,不是枚举成对的变量,而是使用从大量场景图像中获悉的一组独立的属性强度回归将每个xi转换为几个样本,并将原始的xi标签分配给这些新样本。
在One-shot learning of scene locations via feature trajectory transfer的基础上进行了改进,在Feature space transfer for data augmentation中,连续属性子空间用于向 x \scriptstyle x x添加属性变化。
此策略通过从标记弱或未标记的大数据集中选择带有目标标记的样本来增强数据训练集。
这类数据是收集的成本比较低,主要问题是如何选择带有目标标签的样本来增强数据训练集。
在Domain-adaptive discriminative one-shot learning of gestures中,为训练集中的每个目标标签学习了一个示例SVM,然后将其用于从弱标签数据集中预测样本的标签。然后将具有目标标签的样品添加到训练集中。
在Low-shot learning with large-scale diffusion中,标签传播直接用于标记未标记的数据集,而不是学习分类器。
在Exploit the unknown gradually: One-shot video-based person re-identification by stepwise learning中,采用渐进策略来选择内容丰富的未标记样品。然后为选定的样本分配伪标签,并用于更新CNN。
此策略通过聚合和改编来自相似但较大的数据集中的输入输出对来增强数据集。
聚集权重通常基于样本之间的某种相似性度量。
在[Improving one-shot learning through fusing side information]中,它从辅助文本语料库中提取聚合权重。
由于这些样本可能不是来自目标FSL类,因此直接将汇总样本增加到训练集可能会产生误导。因此,生成对抗网络(generative adversarial network -GAN)旨在从许多样本的数据集中生成难以区分的合成聚合【Low-shot learning via covariance-preserving adversarial augmentation networks】。它有两个 生成器,一个将少数类别的样本映射到大规模类别,另一种将大型类别的样本映射到少数类别(以弥补GAN训练中样本的不足)。
对于数据增加方面,主要针对图片设计的,文本在这方面使用起来还是比较困难的。
从模型出发,主要是把假设空间减小,把比较大的空间,通过先验知识的加入进行一定的约束,使假设空间变小,这样经验最小化器就更加可靠,也可以聊低过拟合的风险,可以分四类:多任务学习[共享参数],嵌入学习[投影到比较小的嵌入空间],外部记忆学习,生成模型。
如果只是一个任务,而它的样本不多,这个模型强壮性就很难保证了。可以如果基于任务T,加入多个任务及其它任务的数据,这样就可以把这个任务与其它任务一起进行去多任务训练,这个模型也就可以受到其它任务的约束了。
在任务之间共享一些参数。
在FGVC[Fine-grained visual categorization using meta-learning optimization with sample selection of auxiliary data]中,两个任务网络共享通用信息的前几层,并学习不同的最终层以处理不同的输出。
在[Few-shot charge prediction with discriminative legal attributes]中,法律文本上的两个自然语言处理任务被一起解决:收费预测和法律属性预测。使用单个嵌入功能对犯罪案件描述进行编码,然后将其馈送到特定于任务的嵌入功能和分类器。
在[Few-shot adversarial domain adaptation]中,变体自动编码器首先从源任务中经过预训练,然后克隆到目标任务中。为了捕获通用信息,两个变体自动编码器中的某些层是共享的,同时允许两个任务都具有一些特定于任务的层。目标任务只能更新其特定于任务的层,而源任务可以同时更新共享和特定于任务的层。
在[One-shot unsupervised cross domain translation]中,原始样本和生成样本都首先通过学习源任务和目标任务的单独嵌入函数映射到特定于任务的空间,然后由共享的变分自动编码器嵌入。
此策略不显式地跨任务共享参数,每个任务都有自己假设空间,它提倡不同参数是要相似,一般采用正则化处理。
在[Multi-task transfer methods to improve one-shot learning for multimedia event detection]中,所有成对差异都受到了惩罚。
在[Label efficient learning oftransferable representations acrosss domains and tasks]中,有一个CNN用于源任务,另一个用于目标任务。 这两个CNN的层使用一些特殊设计的正则化术语对齐。
把高维空间数据投影到更低维的数据空间,使相似的与不相似的数据很容易都区分出来,从而达到了约束模型的效果。
嵌入学习主要有三个关键部分:嵌入测试样本的函数f(·); 嵌入样本数据的函数g(·); 相似性衡量函数s(·,·)
根据这三个关键部分情况,进行详细列出:
具体任务嵌入方法是由它的样本集定制来学习的。
在[Few-shot learning through an information retrieval lens]中学习嵌入来维护集据集中每个(x(i)、y(i))的排序列表,其中同类的排序更高否则低。
任务不变的嵌入方法从包含足够样本且具有各种输出的大规模数据集中学习通用嵌入函数,然后将其直接用于新的少量数据集中,对于少量的数据集无需要再训练。
第一个FSL嵌入模型[Object Classification from a Single Example Utilizing Class Relevance Metrics]使用内核嵌入样本。测试集被赋值为训练集的最近邻。
最近,卷积孪生网络(convolutional siamese net)[Signature Verification using a “Siamese” Time Delay Neural Network ]学会了更复杂的嵌入[Siamese neural networks for one-shot image recognition,Few-shot learning for short text classification]
Task-specific嵌入的方法完全是考虑了具体的任务,而Task-invariant嵌入的方法在新任务不用训练可以快速泛化。
一个趋势是去组合上面提到的方法的组合:学习通过“具体任务”的数据信息去训练与适应泛化先验知识学习的“任务不变量”的嵌入空间。
对于组合,最近主要是基于meta-learnig方法去进行的,比较有代表性的方法如下:
(1)Learnet
Learnet [Learning feed-forward one-shot learners]通过合并的具体信息改进了任务不变卷积孪生网络[Siamese neural networks for one-shot image recognition]。 它从多个元训练集中学习一个元学习器,并将每个训练示例映射到学习者(卷积孪生网络)的参数。 这样,的参数随给定的改变,从而导致混合嵌入。 对Learnet进行了改进,在[Meta-learning with differentiable closed-form solvers]中,将学习者的分类层替换为岭回归,从而可以有效地以封闭形式获取参数。 以下两项工作[Tadam:Task dependent adaptive metric for improved few-shot learning,Dynamic conditional networks for few-shot learning]将作为一个整体来输出的任务特定参数。 任务相关的自适应量度(Task dependent adaptive metric-TADAM)[TADAM: Task dependent adaptive metric for improved few-shot learning]将类原型平均化到任务嵌入中,并使用元学习函数将其映射到ProtoNet参数。 动态条件卷积网络-Dynamic Conditional Convolutional Network (DCCN) [Dynamic conditional networks for few-shot learning]使用一组固定的滤波器,并使用学习组合系数。
(2) Matching Nets
匹配网络(Matching Nets) [Matching networks for one shot learning]及其变体[Low data drug discovery with one-shot learning、Learning algorithms for active learning、Structured set matching networks for one-shot part labeling]:Matching Nets [Matching networks for one shot learning] meta-learning不同的嵌入函数(和)用于训练样本和测试样本。残余LSTM(resLSTM)[Low data drug discovery with one-shot learning]为和提出了更好的设计。 Matching Nets的一种主动学习变体[Learning algorithms for active learning]添加了一个样本选择步骤,该步骤标记了最有益的未标记样本,并使用它来增强。 Matching Nets还扩展到了Set-to-Set匹配[Structured set matching networks for one-shot part labeling],这在标记样品的多个部分时很有用。
(3) ProtoNet
原型网络(ProtoNet)[Prototypical networks for few-shot learning]及其变体[TADAM: Task dependent adaptive metric for improved few-shot learning、Metalearning for semi-supervised few-shot classification、Low-shot learning from imaginary data]:ProtoNet [Prototypical networks for few-shot learning]仅比较中的类原型的,而不是将与每个的比较。 对于类,其原型只是,其中是来自类。根据经验,这将导致更稳定的结果并降低计算成本。使用原型的想法在[Low-shot learning from imaginary data]中引入了Matching Nets。 ProtoNet的半监督变体在学习过程中通过软分配来分配未标记的样本以增强[Metalearning for semi-supervised few-shot classification]。
(4) Relative representations
Attentive Recurrent Comparators(ARC)[Attentive recurrent comparators],它使用LSTM引起关注[Neural machine translation by jointly learning to align and translate)],将的不同区域与原型进行比较,然后将比较结果作为中间嵌入进行嵌入。此外,它使用bidirectional LSTM(biLSTM)嵌入所有比较作为最终嵌入。Relation Net [Learning to compare: Relation network for few-shot learning]使用CNN将和嵌入,然后将它们串联在一起作为嵌入,然后将其馈送到另一个CNN以输出相似度得分。
(5) Relation graph
[Learning to propagate labels: Transductive propagation network for few-shot learning,Few-shot learning with graph neural networks]中使用图神经网络(graph neural network-GNN)来利用来自本地社区的信息。在少量的强化学习应用程序中(如在连续控制和视觉导航中),时间信息很重要。
(6) SNAIL
Simple Neural AttentIve Learner(SNAIL)[A simple neural attentive meta-learner]是一个具有交错的时间卷积层和注意力层的嵌入网络。时间卷积层聚合来自过去时间步长的信息,而注意层有选择地关注与当前输入有关的特定时间步长。
External memory例如neural Turing machine (NTM)与memory networks中的短期记忆与基于规则的操作。
这个方法表示,如果一个新的任务进来,还要重新去学习这是一个比较costly,现在存有工作如下:
记忆槽如果为空,直接把数据加入其中,否则,记忆槽要更新,存在的方法:
(1) 更新最近使用最少的内存插槽
(2) 按基于位置的寻址方式更新
(3) 根据内存插槽的年龄更新
(4) 只有当损失较高时才更新内存
(5) 使用内存作为存储,无需更新
(6) 将新信息聚合到最相似的信息中
总结了生成模型的一些特点表:
根据参数定义与共享情况,把存在的方法分成部分与关系,超类与潜在变量:
Bayesian One-Shot [[One-shot learning of object categories]] 与BPL [Human-level concept learning through probabilistic program induction].
One-shot learning with a hierarchical nonparametric Bayesian model
Learning to learn with compound HD models
深度模型分类:
(1) Variational auto-encoder (VAE) [In International Conference on Learning Representations.]
(2) Autoregressive model[ Conditional image generation with pixelcnn decoders]
(3) Inference networks[Advances in variational inference]
(4) Generative adversarial networks (GAN) [ Generative adversarial nets]
(5) Generative version of Matching Nets (GMN)[Matching networks for one shot learning]
算法是在假设空间H中搜索最佳假设h_∗的参数θ的策略。例如SGD及它的变种。
参数来自预训练模型初为初始化,然后以过数据进行训练去优化成学习的参数。
对于fine-tune过程中,怎样使用训练集在不过拟合的情况下去修正参数是一个关键的设计问题—使用正则化避免过拟合:
(1) Early-stopping。例如Neural voice cloning with a few samples
(2) 选择性地去更新小部分参数。例如:
Learning structure and strength of CNN filters for small sample size training;
Few-shot image recognition by predicting parameters from activations.
Low-Shot Learning With Imprinted Weights.
(3) 聚类参数,使用相同的更新信息去更新同组参数,这样可以很大程度地限制搜索策略。
例如:Efficient k-shot learning with regularized deep networks
(4) 模型回归网络。假设存在一个不可知的从使用几个样本去训练的参数到使用多个样本训练的参数的任务转换。
例如:Learning from Small Sample Sets by Combining Unsupervised Meta-Training with CNNs
CLEAR: Cumulative LEARning for One-Shot One-Class Image Recognition
一般没有找到一个合适的参数θ去微调,但有可能有很多相关任务学习的模型参数,例如任务是人脸识别,而只有识别眼睛,鼻子,耳朵的模型参数是可以获得到的。因此一个初始的参数将从这些已有的训练好的模型中挑选相关的多个,然后去组后这些参数形成合适的初始值。
根据使用什么数据集,现有的方法可以分组如下:
(1) Similar data set–相似数据集
例如:Cross-generalization: Learning novel classes from a single example by feature replacement
(2) Unlabeled data set–未标注数据集
从未标注的数据集中学习的初始化参数可以区分样本来分割。
Learning from Small Sample Sets by Combining Unsupervised Meta-Training with CNNs:为学习到决策边界,对未标注样本数据进行伪标注迭代赋值与调整。
预训练的参数不合适新的FSL任务,因此附加多一个新的参数,由这个新参数与旧的参数形成新参数一起进行学习微调。
例如:One-shot adaptation of supervised deep convolutional models:对于特征嵌入使用预训练的低层参数,对于FSL的训练学习一个线性分类在顶层上。
Multi-content gan for few-shot font style transfer:
把学习数据层变成学习模型层。
例如:代表方法–MAML[Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks]
三种不确定性考虑:
(1) 共享参数的不确定性;
例如:Probabilistic model-agnostic meta-learning
(2)具体任务参数之上的不确定性;
例如:Recasting Gradient-Based Meta-Learning as Hierarchical Bayes,
Amortized Bayesian Meta-Learning
(3)关于n类特定参数的不确定性;
Meta-Learning with Latent Embedding Optimization
这个寻找最好的学习方向:
Optimization as a model for few-shot learning:首先提出学习搜索步
Learning to learn by gradient descent by gradient descent:改进搜索步
考虑多模态信息。
把AutoML扩展到FLS来。
计算机视觉:character recognition,image classification,image retrieval , object tracking,gesture recognition,image captioning,visual question answering,video event detection
NLP:translation,language modeling
推荐系统:cold-start item recommendation
医疗应用: drug discovery
机器人与游戏:one-shot imitation, multi-armed bandits,visual navigation,continuous control in locomotion
仅研究了少数方法。仍然有许多理论问题需要探索;
对FSL算法的收敛性还没有完全了解;
FSL主要是弥补AI与人类之间的鸿沟,文章通过数据,模型,算法三个方法把先验知识进行总结加入。一个比较深刻的内容为基于机器学习的定义来讨论,从定义出发,定义了FSL,推理FSL的核心问题,基于这个核心问题,增加先验知识的一个思想,对于怎么加这个问题进行了讨论,主要从数据,模型,算法上进行了总结,最后给了一下从问题设置,技术 ,应用,理论的展望。
差不多看了整整三天还是坚持勉强看完,过程中有很多地方不太明白,甚至看的时候有些崩溃,一个理解不深的地方是元学习,很多内容未能领悟。第二个内容是生成模型,对于生成模型之前只是基础学习。FLS的使用,很多都是在计算机视觉方法使用,NLP还是比较少一些。对于综述这里先作一个初步的记录,后面把基础知识补上,再重新读一篇。
综述的论文,信息量十分大,还未来得及消化,先感性认识,后面再去各个击破。
【1】论文:https://arxiv.org/abs/1904.05046v2
【2】综述论文“Generalizing from a Few Examples: A Survey on Few-Shot Learning”,https://blog.csdn.net/yorkhunter/article/details/103966951
【3】E. Schwartz, L. Karlinsky, J. Shtok, S. Harary, M. Marder, A. Kumar, R. Feris, R. Giryes, and A. Bronstein. 2018. Delta-encoder: an effective sample synthesis method for few-shot object recognition. In Advances in Neural Information Processing Systems 31. 2850–2860.
【4】【译】小样本学习综述(上),https://www.jianshu.com/p/b6dd70130e07
【5】【译】小样本学习综述(下),https://www.jianshu.com/p/c3709637e5f9
句子完成(使用从提供的集合中选择的单词填充空格)[Rapid adaptation with conditionally shifted neurons、Matching networks for one shot learning],
简短评论的情感分类[Few-shot learning for short text classification、Diverse few-shot text classification with multiple metrics],
用户意图分类用于对话系统[Diverse few-shot text classification with multiple metrics],
刑事指控预测[Few-shot charge prediction with discriminative legal attributes],
单词相似度任务(例如随机数定义[High-risk learning: Acquiring new word vectors from tiny data、Memory, Show the Way:
Memory Based Few Shot Word Representation Learning]
多标签文本分类[Few-shot and zero-shot multi-label learning for structured label spaces])
关系分类数据集FewRel [FewRel: A large-scale supervised few-shot relation classification dataset with state-of-the-art evaluation]
happyprince https://blog.csdn.net/ld326/article/details/112534524