小样本学习(one/few-shot learning)

2023-11-18

原文:https://blog.csdn.net/mao_feng/article/details/78939864
原博地址:https://blog.csdn.net/xhw205/article/details/79491649

小样本学习

来源:我们人类是具有快速从少量(单)样本中快速学习能力的,其实在我们学习的过程中,人类的大脑将对象和类别组成有用的信息将之分类。

首先需要声明的是,小样本学习属于迁移学习。接着,举个例子详细阐述。

人类从未见到过“澳大利亚的鸭嘴兽”,给我们一张鸭嘴兽的照片后,人类就认识了!

有的朋友可能会想,为什么我们人类总是能快速的学习到未知的事物?简单的说,是因为人类生活中各种知识的积累以及人类天生的思考能力(如:类比能力)。知识的积累意味着我们是存在各种知识的先验的,天生的思考能力意味着我们拥有强大的类比能力、强大的大脑算力。

以“人类从未见到过“澳大利亚的鸭嘴兽”,给我们一张鸭嘴兽的照片后,人类就认识了!”这句话为例。鸭嘴兽就代表未知的事物(new class),而我们生活中已经见到过的鸭子、狸猫、鱼等动物就代表知识的先验,我们把这种知识的先验称为 元知识 (Meta Knowledge),我们大脑的能快速的把从未见过的鸭嘴兽与这些元知识快速的类比(可能还存在一些其他脑力活动,如视觉提取物体的特征),得出结论:这个长得像鸭子嘴,还能像鱼一样游泳、身形扁扁的新动物就是鸭嘴兽。

这里有的朋友可能会疑问了,如果你是一个刚学会走路的孩子,什么都没见过,是否还存在这种快速的样本学习能力呢?可以这么想,人生来都是初始化的,装备全靠打,IQ 高的元知识积累的就快,IQ 低的元知识积累的就慢。吐舌头

机器学习目前都是类比人类的智能来做的,那么对应我们的机器模型,few-shot learning 又是怎么样的呢?
对应我们的机器模型,few-shot learning 的核心任务可以当成识别新的类。例如:我们已经通过些许动物(狗除外)的样本训练出来了模型,我们想让模型识别新的类-----狗。显然,这就是要把源知识(source)迁移到包含狗的知识领域来(target)。显然这正是迁移学习的范畴。这时候我们需要识别新的类------狗,比较简单的解决方案是什么呢?绝大部分同学会想到,把源模型当做预训练模型,修改全连接层,进行 fine-tune。需要注意的是:

源模型是需要大量带 label 的样本训练的,一般的如 Imagenet上预训练模型
fine-tune 也是需要样本量的支持的,不然 retrain 全连接层时很容易过拟合。 

fine-tune 本质还是依赖深度学习 big data 喂餐的策略,仿佛与我们的小样本学习背道而驰。

我们来看看真正的 few shot 吧~

为了完成识别新类(狗)的问题,于是需要新来一张标好 label 的样本(如 :有 label,样本是田园土狗, 称作 sample set 或 support set)用来泛化模型,那么再来 test 样本时候(如:无 label,样本是哈士奇,称作 query set 或者 test set),我们就可以把这个 哈士奇的样本 label 标出来,达到分类的目的。这种学习叫做 one-shot learning,即单样本学习。

注意:我这里举得例子,各品种狗的 label 都是 dog,不单独区分细粒度。

同样的,如果刚才来的是一堆标好 label 的样本(除了田园土狗,可能还有京巴、吉娃娃、泰迪等做 support set),这种学习叫做 few-shot learning,即小样本学习,一般 few 不会大于 20。

经过我上边的介绍,可以对小样本学习做个定义:
在这里插入图片描述

自己的话解释一下就是: 模型只有少量的有 label 的训练样本 S ,S 中包括 N 个样本,yi 代表各样本的 label。因为测试样本集中每个样本都有一个正确的类别,我们希望,再来新的待分类的测试样本 x’ 时候,正确预测出 x’ 标签是 y’。

注: 把每个类别 yi 的单个样本换成 k个样本就 变成了k-shot learning , few-shot 一般指的是 k 不超过 20。

解决小样本问题的一种模型(孪生网络)
在这里插入图片描述

结构意思就是:输入两张图片到两个 CNN, 来比较两种相同类别的概率。具体可查看 https://sorenbouma.github.io/blog/oneshot/

如下图简单理解一下小样本的训练方式:

Training(训练模型) Sample Set Query Set
Testing(测试模型) Support Set Test Set (无label)

训练和测试过程是相似的,拿 Omniglot 数据集为例。

此数据集可以认为是小样本学习的一个基准数据集。
它一共包含1623 类手写体,每一类中包含20 个样本。其中这 1623 个手写体类来自 50 个不同地区(或文明)的 alphabets,如:Latin 文明包含 26 个alphabets,Greek 包含 24 个alphabets。
一般用于训练的是 964 类(30个地区的字母),用于测试的是 659 类 (20个地区的字母)。

训练的目的就是,用 964 个类来训练模型,识别 659 个新的类。

如下图的 24个 希腊字母,代表 Greek 文明下的 24 个类,每个字母只有 20 个样本。

在这里插入图片描述Training:

每次 iteration 从 964 个类中随机的选择 20 个类,从每个类中的 20 个样本采样 5 个作为 support set,5 个 作为 query set。(选择的这个数目可以自行改变)。
以孪生网络为例,就是 query set 中的图片不断的于 support set 的图片成对组合,训练模型,确定模型参数。

Testing:

测试过程,对 659 个类中随机选择 m 个类,每个类提供 k 个样本作为 Support Set 来泛化模型。称为 m-way k-shot。
以孪生网络为例,在 m 个类中,若 Support Set 每类都为单样本(即 m 个样本),送进来的 Query Set ( 同样的是 m 个类 )不断的与 Support Set 成对相似度量,若相似,则归于该类。

引言

深度学习(deep learning)已经广泛应用于各个领域,解决各类问题,例如在图像分类问题下,如图1,区分这10类目标的准确率目前可以轻松做到94%。然而,deep learning是一种data hungry的技术,需要大量的标注样本才能发挥作用。
在这里插入图片描述 现实世界中,有很多问题是没有这么多的标注数据的,获取标注数据的成本也非常大,例如在医疗领域、安全领域等。因此,我们现在讨论的是这样一个问题的场景,也就是小样本问题。它面临的问题是:

训练过程中有从未见过的新类,只能借助每类少数几个标注样本;
不改变已经训练好的模型。

还是用10类图像分类数据为例,传统的方法是基于左边这些训练集,获得模型,然后对右边测试集进行自动标注。而小样本问题如图2所示,我们大量拥有的是上方这5类的数据,而新问题(下方这5类)是只有很少的标注数据。
在这里插入图片描述当标注数据量比较少时,怎么学习出好的特征?我们需要泛化这些罕见的类别,而不需要额外的训练,因为训练会因为数据少、代价高、周期长而无法获得收益。下面介绍近几年几种解决小样本问题的方法,我们将这些方法称为fewshot learning(如果只有一个标注样本,称oneshot learning)。

基于Finetune

这种方法已被广泛地应用。获得一定量的标注数据,然后基于一个基础网络进行微调。
这个基础网络是通过含有丰富标签的大规模数据集获得的,比如imagenet,我们的淘宝电商数据,称为通用数据域。然后在特定数据域上进行训练。训练时,会固定基础网络部分的参数,对领域特定的网络参数进行训练(这里有很多训练的trick,包括如何设置固定层和学习率等),如图3。这个方法可以相对较快,依赖数据量也不必太多,效果还行。
在这里插入图片描述

基于metric

该方法是对样本间距离分布进行建模,使得属于同类样本靠近,异类样本远离。简单地,我们可以采用无参估计的方法,如KNN。KNN虽然不需要训练,但效果依赖距离度量的选取, 一般采用的是一个比较随意的距离计算(L2)。另一种,也是目前比较好的方法,即通过学习一个端到端的最近邻分类器,它同时受益于带参数和无参数的优点,使得不但能快速的学习到新的样本,而且能对已知样本有很好的泛化性。下面介绍3个相关的方法。
孪生网络 (Siamese Neural Networks)[1]

这个方法对输入的结构进行限制并自动发现可以从新样本上泛化的特征。通过一个有监督的基于孪生网络的度量学习来训练,然后重用那个网络所提取的特征进行one/few-shot学习。
它是一个双路的神经网络,训练时,通过组合不同类的样本成对,同时输入网络进行训练,在最上层通过一个距离的交叉熵进行loss的计算,如图4。在预测的时候,以5way-5shot为例,从5个类中随机抽取5个样本,把这个mini-batch=25的数据输入网络,最后获得25个值,取分数最高对应的类别作为预测结果,如图5。
在这里插入图片描述 网络结构如图6所示,是一个8层深度卷积孪生网络,图中只展示了其中一路计算,在网络的4096维的全连接层后执行component-wise 的L1距离计算,产生一个4096维的特征向量,并通过sigmoidal激活获得一个0到1的概率作为两个输入样本是否相似的结果。
在这里插入图片描述

匹配网络(matching networks)[2]

这篇文章的工作被李飞飞高徒karpath点赞过,成为之后相关研究中经常被对比的参照。该文章也是在不改变网络模型的前提下能对未知类别生成标签,其主要创新体现在建模过程和训练过程上。对于建模过程的创新,文章提出了基于memory和attantion的matching nets,使得可以快速学习。对于训练过程的创新,文章基于传统机器学习的一个原则,即训练和测试是要在同样条件下进行的,提出在训练的时候不断地让网络只看每一类的少量样本,这将和测试的过程是一致的。
具体地,它尝试获得一个从支持集S(support set, 由k个样本及其标签组成)到分类器y^ 的一个映射,该映射是一个网络:P(y^ |x^ ,S),它基于当前的S,对每个未见过的测试样本x^ 给出其标签y^,该标签让P达到最大值。这个模型可以表示为如公式1),其中a是一个attetion。
在这里插入图片描述即一个新样本的输出(即在S上类别的分布)是S上的类attation线性组合,也就是对于离x^最远的xi,其在某度量下的attation是0, 那么其值就是和x^相似的xi所对应标签的权重融合。
上述的attention具体是,对训练样本xi和测试样本x^分别进行embedding,然后求内积(cosine),这就是文章提出的"matching",然后输入到一个softmax中,公式如公式2),其中c是cosine距离。其中两个embedding的模型是share的,比如用CNN。这个a是和度量学习(metric learning)相关的,对于待分类的样本x, 让其和那些标签为y的样本对齐,和其它的不对齐,这种loss其实就是和NCA,triplet loss和margin nearest neighbor相关的。
在这里插入图片描述进一步,支持集样本embedding模型g能继续优化,并且支持集样本应该可以用来修改测试样本的embedding模型f。这个可以通过如下两个方面来解决:即1)基于双向LSTM学习训练集的embedding,使得每个训练样本的embedding是其它训练样本的函数;2)基于attention-LSTM来对测试样本embedding,使得每个测试样本的embeding是训练集embedding的函数。文章称其为FCE(fully-conditional embedding)。
关于g 的优化。上述虽然是在整个支持集样本上做分类,但用来做cosine距离计算的embedding 的获得是互相独立的,因此文章把对支持集样本的embedding改为g(xi, S), 这当比如xj十分接近xi时改变g函数是有用的。文章用了双向LSTM,即把S看成一个序列(文章并没有提到这个序列的顺序是怎么生成的,也许是随机的),然后对每个xi进行编码。具体公式如下,其中g’(xi)是原始只依赖自己的embedding,xi通过BiLSTM进行信息互通。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述关于f的优化。支持集样本可以用来修改测试样本的embedding模型。这个可以通过一个固定步数的LSTM和对支持集的attention模型来解决, 即如下公式,其中f’(x)是只依赖测试样本自己的特征,作为LSTM的输入(每步不变),K是LSTM的步数,g(S)是支持集的embedding。由此,模型会忽略支持集S中的一些样本。
在这里插入图片描述在这里插入图片描述这两个embedding函数f和g是对特征空间进行了优化,从而让精度提升。
关于训练策略。文章对imagenet进行的采样,制作了3种适合做one/few shot的数据集,其中miniImageNet,它包含100类,每类600张图片,其中80个类用来训练,20类用来测试, 称为后续相关研究经常被采用的数据集。以5-way 5-shot为例。训练时,在80类中随机采样5个类,然后把这5类中的数据分成支持集S和测试B,训练matching net模型来使得在S条件下的B的预测结果误差最小。测试时,在20个未被训练过的类中抽取5类,每类5张图,作为测试支持集S’。如图7,MatchNet方法相对原始的Inception模型能正确识别模型从未见过的轮胎和自行车。
在这里插入图片描述

原型网络 (Prototypical Networks)[3]

该方法思想十分简单高效,效果也非常好。它学习一个度量空间, 通过计算和每个类别的原型表达的距离来进行分类。文章基于这样的想法:每个类别都存在一个聚在某单个原型表达周围的embedding,该类的原型是support set在embedding空间中的均值。然后,分类问题变成在embedding空间中的最近邻。如图8,c1、c2、c3分别是三个类别的均值中心(称Prototype),将测试样本x进行embedding后,与这3个中心进行距离计算,从而获得x的类别。

在这里插入图片描述其伪代码也十分清晰:

在这里插入图片描述文章采用在Bregman散度下的指数族分布的混合密度估计,实验表明squared Euclidean距离比cosine距离要好14到17个点。另外,文章在训练时采用相对测试时更多的类别数,即训练时每个episodes采用20个类(20 way),而测试对在5个类(5 way)中进行,其效果相对训练时也采用5 way的提升了2.5个点。

基于graph neural network

这是一篇比较新的文章,提交到ICLR 2018[4]。他定义了一个图神经网络框架,端到端地学习消息传递的“关系”型任务。在这里,每个样本看成图的节点,该方法不仅学习节点的embedding,也学习边的embedding。如图9,在网络第一层5个样本通过边模型A~构建了图,接着通过图卷积(graph conv)获得了节点的embedding,然后在后面的几层继续用A~更新图、用graph conv更新节点embedding, 这样便构成了一个深度GNN,最后输出样本的预测标签。
在这里插入图片描述在构建边模型时,先采用一个4层的CNN网络获得每个节点特征向量,然后将节点对xi,xj的差的绝对值过4层带Batch Norm和Leaky Relu的全连接层,从而获得边的embedding,如图10的左侧。随后,我们将节点的embedding和边的embedding一起过图卷积网络,从而获得更新后的节点的embedding,如图10的右侧。
在这里插入图片描述这篇文章和Siamese networks、Matching networks和Prototypical networks在本质上是有相同之处的,可以看作这3种方法的推广,而且用图来解决这类问题是一种创新,并取得了不错的效果。

基于元学习meta learning

通过大量的数据,现在的AI系统能从0开始学习一个复杂的技能。我们希望AI系统能获得多种技能并能适应各种环境,但针对每种技能都从0开始训练是无法承受的。因此,我们希望它能够从之前的经验快速地学习新的技能,而不是把新的任务孤立地考虑。这个方法,我们称为元学习(learning to learn,或meta learning), 使得我们的系统在它的整个生命周期中可以持续地学习各种各样的任务。
meta learning是机器学习的一个子领域,它自动学习一些应用于机器学习实验的元数据,主要目的是使用这些元数据来自动学习如何在解决不同类型的学习问题时变得灵活,从而提高现有的学习算法。灵活性是非常重要的,因为每个学习算法都是基于一组有关数据的假设,即它是归纳偏(bias)的。这意味着如果bias与学习问题中的数据相匹配,那么学习就会很好。学习算法在一个学习问题上表现得非常好,但在下一个学习问题上表现得非常糟糕。这对机器学习或数据挖掘技术的使用造成了很大的限制,因为学习问题与不同学习算法的有效性之间的关系尚不清楚。
通过使用不同类型的元数据,如学习问题的属性,算法属性(如性能测量)或从之前数据推导出的模式,可以选择、更改或组合不同的学习算法,以有效地解决给定的学习问题。
元学习一般有两级,第一级是快速地获得每个任务中的知识,第二级是较慢地提取所有任务中学到的信息。下面从不同角度解释了元学习的方法

通过知识诱导来表达每种学习方法如何在不同的学习问题上执行,从而发现元知识。元数据是由学习问题中的数据特征(一般的,统计的,信息论的......)以及学习算法的特征(类型,参数设置,性能测量...)形成的。然后,另一个学习算法学习数据特征如何与算法特征相关。给定一个新的学习问题,测量数据特征,并且可以预测不同学习算法的性能。因此,至少在诱导关系成立的情况下,可以选择最适合新问题的算法。
stacking. 通过组合一些(不同的)学习算法,即堆叠泛化。元数据是由这些不同算法的预测而形成的。然后,另一个学习算法从这个元数据中学习,以预测哪些算法的组合会给出好的结果。在给定新的学习问题的情况下,所选择的一组算法的预测被组合(例如通过加权投票)以提供最终的预测。由于每种算法都被认为是在一个问题子集上工作,所以希望这种组合能够更加灵活,并且能够做出好的预测。
boosting. 多次使用相同的算法,训练数据中的示例在每次运行中获得不同的权重。这产生了不同的预测,每个预测都集中于正确预测数据的一个子集,并且结合这些预测导致更好(但更昂贵)的结果。
动态偏选择(Dynamic bias selection)通过改变学习算法的感应偏来匹配给定的问题。这通过改变学习算法的关键方面来完成,例如假设表示,启发式公式或参数。
learning to learn,研究如何随着时间的推移改进学习过程。元数据由关于以前的学习事件的知识组成,并被用于高效地开发新任务的有效假设。其目标是使用从一个领域获得的知识来帮助其他领域的学习。

在meta learning中,我们在训练集上训练一个训练过程(meta learner)来生产生一个分类器(learner)使得learner在测试集上获得高的精度。如下图
在这里插入图片描述下面介绍几个经典的解决fewshot的meta learning的方法。
递归记忆模型 (Memory-Augmented Neural Networks)[5]

基于记忆的神经网络方法早在2001年被证明可以用于meta-learning。他们通过权重更新来调节bias,并且通过学习将表达快速缓存到记忆中来调节输出。然而,利用循环神经网络的内部记忆单元无法扩展到需要对大量新信息进行编码的新任务上。因此,我们需要让存储在记忆中的表达既要稳定又要是元素粒度访问的,前者是说当需要时就能可靠地访问,后者是说可选择性地访问相关的信息;另外,参数数量不能被内存的大小束缚。像神经图灵机(NTMs)和记忆网络就符合这种必要条件。
文章基于神经网络图灵机(NTMs)的思想,因为NTMs能通过外部存储(external memory)进行短时记忆,并能通过缓慢权值更新来进行长时记忆,NTMs可以学习将表达存入记忆的策略,并如何用这些表达来进行预测。由此,文章方法可以快速准确地预测那些只出现过一次的数据。文章基于LSTM等RNN的模型,将数据看成序列来训练,在测试时输入新的类的样本进行分类。具体地,网络的输入把上一次的y (label)也作为输入,并且添加了external memory存储上一次的x输入,这使得下一次输入后进行反向传播时,可以让y (label)和x建立联系,使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测。这里的RNN就是meta-learner。
在这里插入图片描述优化器学习 (meta-learning LSTM)[6]

文章研究了在少量数据下,基于梯度的优化算法失败的原因,即无法直接用于meta learning。首先,这些梯度优化算法包括momentum, adagrad, adadelta, ADAM等,无法在几步内完成优化,特别是在非凸的问题上,多种超参的选取无法保证收敛的速度。其次,不同任务分别随机初始化会影响任务收敛到好的解上。虽然finetune这种迁移学习能缓解这个问题,但当新数据相对原始数据偏差比较大时,迁移学习的性能会大大下降。我们需要一个系统的学习通用初始化,使得训练从一个好的点开始,它和迁移学习不同的是,它能保证该初始化能让finetune从一个好的点开始。
文章学习的是一个模新参数的更新函数或更新规则。它不是在多轮的episodes学习一个单模型,而是在每个episode学习特定的模型。具体地,学习基于梯度下降的参数更新算法,采用LSTM表达meta learner,用其状态表达目标分类器的参数的更新,最终学会如何在新的分类任务上,对分类器网络(learner)进行初始化和参数更新。这个优化算法同时考虑一个任务的短时知识和跨多个任务的长时知识。文章设定目标为通过少量的迭代步骤捕获优化算法的泛化能力,由此meta learner可以训练让learner在每个任务上收敛到一个好的解。另外,通过捕获所有任务之前共享的基础知识,进而更好地初始化learner。
基于梯度下降的参数更新公式如公式5所示,θt-1 是learner在第t-1次updates后的模型参数,αt 是学习率,Lt是损失函数。θt是learner的参数。

在这里插入图片描述(公式5)

这个形式和lstm是一样的,如公式6,

在这里插入图片描述(公式6)

状态Ct为模型参数。it是学习率,如公式7,学习率是当前参数、当前梯度、当前损失和上一次学习率的函数。由此,meta learner 可以精细地控制学习率,从而可以快速地学习而不会发散。

在这里插入图片描述(公式7)

ft为忘记门,当learner陷入局部最优,需要大的改变才能逃脱的时候,即梯度为0但损失很大。我们需要忘记以前的值,因此ft 应该是这个信息的函数:

在这里插入图片描述(公式8)

c0是learner的初始化参数。好的初始值是让优化快速收敛的关键。
以训练miniImagenet数据集为例,训练过程中,我们从Dmeta-train的训练集(64个类,每类600个样本)中随机采样5个类,每个类5个样本,构成训练集,去学习learner;然后从Dmeta-train测集的样本(64个类,每类剩下的样本)中采样构成测试集,集合中每类有15个样本,用来获得learner的loss,去学习meta leaner。评估过程一样,我们从Dmeta-test的训练集(16个类,每类600个样本)中随机采样5个类,每个类5个样本,构成训练集,去学习learner;然后从Dmeta-test测集的样本(16个类,每类剩下的样本)中采样构成测试集,集合中每类有15个样本,用来获得learner的loss,去学习meta leaner。这两个过程分别如图13的虚线左侧和右侧。
在这里插入图片描述 对meta-learner的训练过程进行可视化,把gate的值画出来,观察其在不同的数据之间是否存在变化。在1-shot上,meta learner学了10步,5-shot上学了5步。对于遗忘门,meta-leanrer采用一个简单的权值衰减策略,而且每层都比较一致。输入门在不同数据上的变化比较大,说明meta learner没有采用一个固定的优化策略,而且1-shot和5-shot的表现也不同,说明meta learner对两者采用了不同的方法。如图14:
在这里插入图片描述模型无关自适应(Model-Agnostic)[7]

meta learning 的目标是在各种不同的学习任务上学出一个模型,使得可以仅用少量的样本就能解决一些新的学习任务。这种任务的挑战是模型需要结合之前的经验和当前新任务的少量样本信息,并避免在新数据上过拟合。
文章提出的方法使得可以在小量样本上,用少量的迭代步骤就可以获得较好的泛化性能,而且模型是容易fine-tine的。而且这个方法无需关心模型的形式,也不需要为meta learning增加新的参数,直接用梯度下降来训练learner。文章的核心思想是学习模型的初始化参数使得在一步或几步迭代后在新任务上的精度最大化。它学的不是模型参数的更新函数或是规则,它不局限于参数的规模和模型架构(比如用RNN或siamese)。它本质上也是学习一个好的特征使得可以适合很多任务(包括分类、回归、增强学习),并通过fine-tune来获得好的效果。
文章提出的方法,可以学习任意标准模型的参数,并让该模型能快速适配。方法认为,一些中间表达更加适合迁移,比如神经网络的内部特征。因此面向泛化性的表达是有益的。因为我们会基于梯度下降策略在新的任务上进行finetune,所以目标是学习这样一个模型,它能对新的任务从之前任务上快速地进行梯度下降,而不会过拟合。事实上,是要找到一些对任务变化敏感的参数,使得当改变梯度方向,小的参数改动也会产生较大的loss,如图15。
在这里插入图片描述该方法的目标函数如公式9,即训练关于全局模型参数θ的具体任务参数θ‘,使其在从p(T )上采样的各个任务上误差最小。
在这里插入图片描述整个训练的流程如下伪代码,有内外两个循环,外循环是训练meta learner的参数θ,即一个全局的模型,内循环对每个采样任务分别做梯度下降,进而在全局模型上做梯度下降(a gradient through a gradient)。在这里插入图片描述效果对比

比较one/fewshot learning的方法一般采用Omniglot和miniImagenet两个数据集,由于前者相对比较简单,准确率已经比较容易达到99%,所以这里只给出miniImagenet上的对比测试结果。miniImagenet的数据集从 https://drive.google.com/file/d/0B3Irx3uQNoBMQ1FlNXJsZUdYWEE/view 这里下载。
参考文献

[1] G Koch, R Zemel, and R Salakhutdinov. Siamese neural networks for one-shot image recognition. In ICML Deep Learning workshop, 2015.
[2] Oriol Vinyals, Charles Blundell, Tim Lillicrap, Daan Wierstra, et al. Matching networks for one shot learning. In Advances in Neural Information Processing Systems, pages 3630–3638, 2016.
[3] Jake Snell, Kevin Swersky, and Richard S Zemel. Prototypical networks for few-shot learning. arXiv preprint arXiv:1703.05175, 2017.
[4] Victor Garcia, Joan Bruna. Few-shot learning with graph neural networs. Under review as a conference paper at ICLR 2018.
[5] Santoro, Adam, Bartunov, Sergey, Botvinick, Matthew, Wierstra, Daan, and Lillicrap, Timothy. Meta-learning with memory-augmented neural networks. In International Conference on Machine Learning (ICML), 2016.
[6] Ravi, Sachin and Larochelle, Hugo. Optimization as a model for few-shot learning. In International Conference on Learning Representations (ICLR), 2017.
[7] Chelsea Finn, Pieter Abbeel, and Sergey Levine. Model-agnostic meta-learning for fast adaptation of deep networks. arXiv preprint arXiv:1703.03400, 2017.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小样本学习(one/few-shot learning) 的相关文章

  • 深度学习中的随机梯度下降(SGD)简介

    随机梯度下降 Stochastic Gradient Descent SGD 是梯度下降算法的一个扩展 机器学习中反复出现的一个问题是好的泛化需要大的训练集 但大的训练集的计算代价也更大 机器学习算法中的代价函数通常可以分解成每个样本的代价
  • 深度学习网络篇——VGGNet(Part1 网络结构&训练环节)

    我们上篇文章了解了一下NIN 接下来我们来了解一下VGGNet 可以说是另一波的跪舔和膜拜 VGGNet主要是分为两篇文章 第一篇文章来分享一下VGGNet的网络结构还有训练环节 第二篇文章是分享VGGNet做的分类实验和总结 此为第一篇
  • 基于Pytorch的模型推理

    训练部分说明 假设我们现在有两个文件 first file train py 用于训练模型 second file inference py 用于推理检测 在train py文件中我们使用了定义了一个类 里面声明了我的网络模型 例如 cla
  • DOTA: A Large-scale Dataset for Object Detection in Aerial Images 翻译

    DOTA 用于航空图像中目标检测的大规模数据集 原文 https arxiv org pdf 1711 10398 pdf 官网 https captain whu github io DOTA dataset https captain
  • 3D人体重建方法漫谈

    转自 https blog csdn net Asimov Liu article details 96442990 1 概述 2 模型匹配的方法 2 1SMPL Skinned Multi Person Linear model 模型 2
  • Android平台深度学习--NNAPI

    转自 http blog sina com cn s blog 602f87700102y62v html 1 Android 8 1 API 27 NNAPI 人工智能神经网络API 如 TensorFlow 神经网络 API 能够向设备
  • 目标检测基础

    什么是目标检测 简单来说就是 检测图片中物体所在的位置 本文只介绍用深度学习的方法进行目标检测 同过举出几个特性来帮助各位理解目标检测任务 同时建议学习目标检测应先具备物体人工智能算法基础和物体分类现实基础 特性1 Bounding Box
  • 联邦学习 深度学习对抗攻击

    联邦学习本身 联邦学习 实际上是一种加密的分布式机器学习技术 参与各方可以在不披露底层数据和底层数据的加密 混淆 形态的前提下共建模型 如果机构之间的数据无法互通 一家企业一家机构数据量有限 或者是少数巨头公司垄断大量数据 而小公司很难获得
  • 几乎最全的中文NLP资源库

    NLP民工的乐园 The Most Powerful NLP Weapon Arsenal NLP民工的乐园 几乎最全的中文NLP资源库 词库 工具包 学习资料 在入门到熟悉NLP的过程中 用到了很多github上的包 遂整理了一下 分享在
  • 深度学习中的优化算法之Adam

    之前在https blog csdn net fengbingchun article details 124909910 介绍过深度学习中的优化算法Adadelta 这里介绍下深度学习的另一种优化算法Adam 论文名字为 ADAM A M
  • Emojify – Create your own emoji with Deep Learning 通过深度学习创建你自己的表情

    全文总览 本文目的 原文链接 我的电脑环境 数据集下载 代码下载 本文目的 深度学习初级项目 Emojify Create your own emoji with Deep Learning 通过深度学习创建你自己的表情 本文旨在描述源代码
  • PyTorch训练简单的全连接神经网络:手写数字识别

    文章目录 pytorch 神经网络训练demo 输出结果 来源 pytorch 神经网络训练demo 数据集 MNIST 该数据集的内容是手写数字识别 其分为两部分 分别含有60000张训练图片和10000张测试图片 神经网络 全连接网络
  • 决策树(Decision Tree)简介

    决策树 Decision Tree 及其变种是另一类将输入空间分成不同的区域 每个区域有独立参数的算法 决策树分类算法是一种基于实例的归纳学习方法 它能从给定的无序的训练样本中 提炼出树型的分类模型 树中的每个非叶子节点记录了使用哪个特征来
  • Going Deeper with convolutions

    Going Deeper with convolutions 转载请注明 http blog csdn net stdcoutzyx article details 40759903 本篇论文是针对ImageNet2014的比赛 论文中的方
  • Matting(抠图)--用深度学习自动去除照片背景

    转自 https zhuanlan zhihu com p 38031181 https zhuanlan zhihu com p 151212267 现在又有一个 AI 能干 Photoshop 的活了 自动抠图 一键去除照片背景 这款
  • cifar数据集介绍及到图像转换的实现

    CIFAR是一个用于普通物体识别的数据集 CIFAR数据集分为两种 CIFAR 10和CIFAR 100 The CIFAR 10 and CIFAR 100 are labeled subsets of the 80 million ti
  • 当我们谈人工智能 我们在谈论什么

    我们对一个事物的认识模糊往往是因为宣传过剩冲淡了理论的真实 我们陷在狂欢里 暂时忘记为什么要狂欢 如何踏上这趟飞速发展的列车成为越来越多人心心念念的事情 人工智能的浪潮更像是新闻舆论炒起来的话题 城外的人想进去 城内的人也不想出来 当我们谈
  • 经典网络ResNet介绍

    经典网络ResNet Residual Networks 由Kaiming He等人于2015年提出 论文名为 Deep Residual Learning for Image Recognition 论文见 https arxiv org
  • 全网最最最轻量级检测网络 yolo-fastest 快速上手

    文章目录 0x01 Yolo Fastest 0x02 Prepare step1 clone step2 make step3 run darknet 0x03 Train step1 获取权重文件 step2 准备数据集 step3 修
  • Anchor是什么?

    1 选择性搜索 Selective Search 先介绍一下传统的人脸识别算法 是怎么检测出图片中的人脸的 以下图为例 如果我们要检测图中小女孩的人脸位置 一个比较简单暴力的方法就是滑窗 我们使用不同大小 不同长宽比的候选框在整幅图像上进行

随机推荐

  • API接口的设计思路

    API接口设计是软件开发中非常重要的一环 良好的设计规范能够提高开发效率 减少问题和错误 并增强系统的可维护性和可扩展性 本文从程序员的视角 讨论一些常见的API接口设计规范 一 遵循RESTful原则 REST Representatio
  • Notepad++作死,国产文本编辑器Notepad--发布

    作死的Notepad Notepad 和 Notepad 都是基于 Windows 的文本编辑器 通常用于编写和编辑纯文本文件 这两个应用程序都是简单的轻量级程序 提供基本的文本编辑功能 Notepad 是一口君经常使用的一款文本编辑软件
  • 最佳实践:基于vite3的monorepo前端工程搭建

    一 技术栈选择 1 代码库管理方式 Monorepo 将多个项目存放在同一个代码库中 选择理由1 多个应用 可以按业务线产品粒度划分 在同一个repo管理 便于统一管理代码规范 共享工作流 选择理由2 解决跨项目 应用之间物理层面的代码复用
  • openstack Storage 组件 Swift 和 Cinder

    Storage 组件 Swift 和 Cinder 本文将介绍 OpenStack Block Swift 和 Object Glance 存储 解释它如何融入到整体架构中 并展示它的操作方式 本文还将在介绍这些工具的过程中了解了如何安装
  • CMake GUI工具使用 MinGW 64构建工程

    系列文章目录 文章目录 系列文章目录 前言 一 open Project是灰色 前言 CMake GUI 打开 CMake GUI 在 Where is the source code 字段中 选择 Krita 源代码目录 E krita
  • 学习笔记-汉诺塔 分治算法

    用分治算法解决汉诺塔 分治法是一种很重要的算法 字面上的解释是 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即子问题的解的合并 这个技巧是很多高效
  • vue(十二)——vue3新特性之Teleport

    teleport是什么 teleport其实就是vue3新增的一个内置组件 其实就是一个新增标签 teleport的作用 官方解释 将其插槽内容渲染到 DOM 中的另一个位置 简单来说就是将dom节点挂载到你指定的位置 遮挡层案例举例 遮挡
  • Linux 设置文件夹可读可写

    在 Linux 系统中 可以使用 chmod 命令来更改文件夹的读写权限 设置文件夹可读可写 可以使用如下命令 chmod R777 path to folder 其中 chmod 是更改文件权限的命令 R 是递归更改权限 包括子文件夹和文
  • AD中拖动器件,无法移动在一起如何解决

    1 AD PCB拖动器件 无法移动在一起时如何解决 在PCB 界面 按下快捷键O P进入 preference对话框 找到PCB Edit gt Interactive Routing gt Dragging gt Component Pu
  • QT中文显示问题

    问题 http topic csdn net u 20090320 10 287c7dba 29c0 4d76 af75 4d19104f544e html C C code QTextCodec text QTextCodec codec
  • 【Java视频教程等百度云资源分享】

    韩顺平javase 87讲 密码 hsp789 链接 https pan baidu com s 1eNCyvFcVHsd7P4gdvrFqtw密码 el1y 韩顺平javaee 66讲 密码 hsp789 链接 HTTPS pan bai
  • Error occurred when evaluating apply callback【计算应用回调时发生错误】

    Error occurred when evaluating apply callback 在simulink里面的serial configuration模块里面选择串口是出现这个报错 首先我使用的是虚拟串口 com1和com2连接 前几
  • java线程屏障CyclicBarrier

    CyclicBarrier允许一组线程在达到一个公共的屏障点时相互等待 它在涉及固定大小的线程组 并且这些线程必须相互等待的程序中非常有用 CyclicBarrier可以在等待的线程被释放后被重用 构造方法 CyclicBarrier in
  • 解决微信小程序中在其他页面无法使用app.js中获取的userInfo或openid的问题

    问题 最近写小程序中 在app js里获取用户的openid和userinfo 并存储为全局变量 getUserInfo function var that this wx getUserInfo success function res
  • 服务器虚拟机如何连接显示器,Windows 10:如何在VMware虚拟机上使用双显示器

    VMware不允许您为任何客户机操作系统使用更多的监视器 但是 您可以绕过此默认设置并将双监视器与VMware虚拟机配合使用 无论您在虚拟机中安装了哪个操作系统 如果您有多个显示器 您都可以使用它们 默认情况下 VMware仅检测一个监视器
  • Hadoop分布式生态

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 Hadoop系统架构 二 HDFS 1 设计理念 2 架构原理 2 文件写入与读取 4 数据备份 三 MapReduce 1 设计思想 2 架构原理 3
  • imblearn:随机过采样(过采样)

    随机过采样的核心思想 随机的复制 重复少数类样本 最终使得少数类与多数类的个数相同从而得到一个新的均衡的数据集 最简单的过采样方法 imblearn from imblearn over sampling import RandomOver
  • 字符集、编码、Oracle

    目录 一 字符集与编码常识 字符集 编码 ASCII GB2312 GBK GB18030 第二部分 Oracle中的编码与字符集 1 为什么需要两个字符集 2 字符集名称的玄机 3 例子很重要 3 1 准备两个数据库 3 2 工具很重要
  • 为虾米下载《分布式网站负载压力测试工具》变成了《黄色小说》?

    时间早上8点 有一条QQ消息来源 2013 05 24 8 20 20 你好 我在http wst cyqdata com 页面下载压力测试工具时解压后的内容是小说 当然了 一般早上我都不在人间 所以到了中午很疑惑的回复了 号过去 下午1点
  • 小样本学习(one/few-shot learning)

    原文 https blog csdn net mao feng article details 78939864 原博地址 https blog csdn net xhw205 article details 79491649 小样本学习