小样本学习

小样本学习的概念最早从计算机视觉(computer vision)[8]领域兴起, 近几年受到广泛关注, 在图像分类任务中已有很多性能优异的算法模型[9-11].但是在自然语言处理领域(natural language processing)[12]的发展较为缓慢, 原因在于图像和语言特性不同.图像相比文本更为客观, 所以当样本数量较少时, 图像的特征提取比文本更加容易[13].不过近年来, 小样本学习在自然语言处理领域也有了一些研究和发展[14-16].根据所采用方法的不同, 本文将小样本学习分为基于模型微调、基于数据增强和基于迁移学习这3种.基于模型微调的方法首先在含有大量数据的源数据集上训练一个分类模型, 然后在含有少量数据的目标数据集上对模型进行微调.但这种做法可能导致模型过拟合, 因为少量数据并不能很好地反映大量数据的真实分布情况.为解决上述过拟合的问题, 基于数据增强和基于迁移学习的小样本学习方法被提出.基于数据增强的方法是利用辅助数据集或者辅助信息增强目标数据集中样本的特征或扩充对目标数据集, 使模型能更好地提取特征.本文根据学习方法的不同, 将基于数据增强的小样本学习方法进一步细分为基于无标签数据、基于数据合成和基于特征增强这3类方法.基于迁移学习的方法是目前比较前沿的方法, 是指将已经学会的知识迁移到一个新的领域中.本文根据学习框架, 将基于迁移学习的方法细分为基于度量学习、基于元学习和基于图神经网络(graph neural network)的方法.在度量学习的框架下, 目前已有许多性能较好的小样本学习模型, 例如比较著名的原型网络(prototypical network)[9]和匹配网络(matching network)[17]等.基于元学习的方法不仅在目标任务上训练模型, 并且从许多不同的任务中学习元知识, 当一个新的任务到来时, 利用元知识调整模型参数, 使模型能够快速收敛.近年来, 随着图神经网络的兴起, 研究者将图神经网络也应用到小样本学习中, 取得了先进的结果.

除了图像分类和文本分类这两个主要任务, 许多其他任务。
基于模型微调的小样本学习

基于模型微调的方法是小样本学习较为传统的方法, 该方法通常在大规模数据上预训练模型, 在目标小样本数据集上对神经网络模型的全连接层或者顶端几层进行参数微调, 得到微调后的模型.若目标数据集和源数据集分布较类似, 可采用模型微调的方法.

为了使微调后的小样本分类模型取得较好的效果, 使用何种微调方法需要被考虑.Howard等人[14]在2018年提出了一个通用微调语言模型(universal language model fine-tuning, 简称ULMFit).与其他模型不同的是, 此方法使用了语言模型而非深度神经网络.该模型分为3个阶段: (1) 语言模型预训练; (2) 语言模型微调; (3) 分类器微调.该模型的创新点在于改变学习速率来微调语言模型, 主要体现在两个方面.

  1. 传统方法认为, 模型每一层学习速率相同; 而ULMFit中, 语言模型的每一层学习速率均不相同.模型底层表示普遍特征, 这些特征不需要很大调整, 所以学习速率较慢; 而高层特征更具有独特性, 更能体现出任务和数据的独有特征, 于是高层特征需要用更大的学习速率学习.总体看来, 模型底层到最高层学习速率不断加快.

  2. 对于模型中的同一层, 当迭代次数变化时, 自身学习率也会相应地产生变化.作者提出了斜三角学习率的概念, 当迭代次数从0开始增加时, 学习速率逐渐变大; 当迭代次数增长到某个固定值时, 此时已经学习到了足够知识, 固定值之后的学习率又开始逐步下降.

论文从纵向和横向两个维度学习速率的变化对语言模型进行微调, 让模型更快地在小样本数据集上收敛; 同时, 让模型学习到的知识更符合目标任务.另外, Nakamura等人[42]提出了一种微调方法, 主要包含以下几个机制: (1) 在小样本类别上再训练的过程使用更低的学习率; (2) 在微调阶段使用自适应的梯度优化器; 3) 当源数据集和目标数据集之间存在较大差异性时, 可以通过调整整个网络来实现.

基于模型微调的方法较简单, 但是在真实场景中, 目标数据集和源数据集往往并不类似, 采用模型微调的方法会导致模型在目标数据集上过拟合.为解决模型在目标数据集上过拟合的问题, 两种解决思路被提出: 基于数据增强和基于迁移学习的方法.这两种方法将在接下来的两个章节中依次介绍.
2 基于数据增强的小样本学习

小样本学习的根本问题在于样本量过少, 从而导致样本多样性变低.在数据量有限的情况下, 可以通过数据增强(data augmentation)[43]来提高样本多样性.数据增强指借助辅助数据或辅助信息, 对原有的小样本数据集进行数据扩充或特征增强.数据扩充是向原有数据集添加新的数据, 可以是无标签数据或者合成的带标签数据; 特征增强是在原样本的特征空间中添加便于分类的特征, 增加特征多样性.基于上述概念, 本文将基于数据增强的方法分为基于无标签数据、基于数据合成和基于特征增强的方法三种.接下来, 就这3种方法分别介绍小样本学习的进展.
2.1 基于无标签数据的方法

基于无标签数据的方法是指利用无标签数据对小样本数据集进行扩充, 常见的方法有半监督学习[44, 45]和直推式学习[46]等.半监督学习是机器学习领域研究的重点问题[47], 将半监督方法应用到小样本学习现在已经有了许多尝试.2016年, Wang等人[48]在半监督学习的思想下, 同时受到CNN可迁移性的启发, 提出利用一个附加的无监督元训练阶段, 让多个顶层单元接触真实世界中大量的无标注数据.通过鼓励这些单元学习无标注数据中低密度分离器的diverse sets, 捕获一个更通用的、更丰富的对视觉世界的描述, 将这些单元从与特定的类别集的联系中解耦出来(也就是不仅仅能表示特定的数据集).作者提出了一个无监督的margin最大化函数来联合估计高密度区域的影响并推测低密度分离器.低密度分离器(LDS)模块可以插入任何标准的CNN架构的顶层.除此之外, Boney等人[49]在2018年提出使用MAML[11]模型来进行半监督学习, 利用无标签数据调整嵌入函数的参数, 用带标签数据调整分类器的参数.MAML算法本文将在第3.2节详细介绍.2018年, Ren等人[50]在原型网络[9]的基础上进行改进, 加入了无标注数据, 取得了更高的准确率.此模型本文将在第3.1节进行详细介绍.

直推式学习可看作半监督学习的子问题.直推式学习假设未标注数据是测试数据, 目的是在这些未标记数据上取得最佳泛化能力.Liu等人[51]使用了直推式学习的方法, 在2019年提出了转导传播网络(transductive propagation network)来解决小样本问题.转导传播网络分为4个阶段: 特征嵌入、图构建、标签传播和损失计算.该模型在特征嵌入阶段, 将所有的标注数据和无标注数据通过嵌入函数f映射到向量空间中; 在图构建阶段, 使用构建函数g将嵌入向量构建为无向图中的节点, 连边权重由两个节点计算高斯相似度得到; 随后, 根据公式F*=(I-αS)(-1)Y来进行标签传播(其中, F*是标签预测结果, S是归一化之后的连边权重, Y是初始标签的矩阵), 让标签从标注数据传播到无标注数据; 最后, 通过交叉熵函数计算损失, 用反向传播更新嵌入函数和构建函数的参数.另外, Hou等人[52]也提出了一个交叉注意力网络(cross attention network), 基于直推式学习的思想, 利用注意力机制为每对类特征和查询生成交叉注意映射对特征进行采样, 突出目标对象区域, 使提取的特征更具鉴别性.其次, 提出了一种转换推理算法, 为了缓解数据量过少的问题, 迭代地利用未标记的查询集以增加支持集, 从而使类别特性更具代表性.
2.2 基于数据合成的方法

基于数据合成的方法是指为小样本类别合成新的带标签数据来扩充训练数据, 常用的算法有生成对抗网络(generative adversarial net)[53]等.Mehrotra等人[54]将GAN应用到小样本学习中, 提出了生成对抗残差成对网络(generative adversarial residual pairwise network)来解决单样本学习问题.算法使用基于GAN的生成器网络对不可见的数据分布提供有效的正则表示, 用残差成对网络作为判别器来度量成对样本的相似性, 如图 1的流程图所示.
[点击查看原图] Fig. 1 An indicative figure of generative adversarial residual pairwise network[54] 图 1 生成对抗残差成对网络示意图[54]

● 输入样本为xt, 为了防止生成器简单复制原样本, 首先对xt进行破坏得到损坏样本 x ~ t {\tilde x_t} x~t, 将 x ~ t {\tilde x_t} x~t输入到生成器G中得到生成样本x, x的另一个来源是真实的数据集.

● 其次, xt空间变换后输入到判别器D中, 同时输入的还有样本x.

● 随后, 判别器会给出3种判别结果: (1) x是真实样本, 并且x与xt不同; (2) x是真实样本, 并且x与xt相似; (3) x是假样本.

除了基于GAN的数据合成方法, Hariharan等人[55]提出了一种新的方法, 该方法分为两个阶段: 表示学习阶段和小样本学习阶段.

● 表示学习阶段是指在含有大量数据的源数据集上学习一个通用的表示模型, 在此阶段中, 作者提出一个新的损失函数——平方梯度量级损失(SGM)$ {L}_{D}^{SGM}(\phi , W)=\frac{1}{\left|D\right|}{\displaystyle \sum _{(x,y)\in D}\alpha (W,(x),y)\left|\right|\phi (x)|{|}^{2}}$来提升表示学习的效果.

● 小样本学习阶段是指在少量数据的新类别中微调模型, 在此阶段中, 本文提出了生成新数据的方法来为小样本类别进行数据增强.

作者认为, 属于同一类别的两个样本之间存在着一个转换.那么给定新类别的一个样本x, 通过这个转换, 生成器G可以生成属于该类别的新样本.

Wang等人[56]将元学习与数据生成相结合, 提出了通过数据生成模型生成虚拟数据来扩充样本的多样性, 并结合当前比较先进的元学习方法, 通过端到端方法共同训练生成模型和分类算法.通过让现有图像的一些属性和特征发生变化, 如拍照姿态改变、光照改变、位置迁移等, 迁移到新的样本上, 从而生成具有不同变化的新样本图像, 实现数据的扩充.此外, 本模型可以套用任何元学习模型, 具有灵活性.

但是现有的数据生成方法具有以下缺点: (1) 没有捕捉到复杂的数据分布; (2) 不能泛化到小样本的类别; (3) 生成的特征不具有可解释性.Xian等人[57]为解决上述问题, 将变分编码器(VAE)和GAN进行结合, 充分利用了两者的优势集成了一个新的网络f-VAEGAN-D2.这个网络再完成小样本学习图像分类的同时, 能够将生成样本的特征空间通过自然语言的形式表现出来, 具有可解释性.Chen等人[58]对此继续研究, 提出可以利用元学习对训练集的图像对支持集进行插值, 形成扩充的支持集集合: 首先, 从元训练集的集合中每一类随机选择几个样本, 形成集合G; 其次, 针对某个任务提取支持集的特征, 形成最近邻分类器, 对集合G中的所有图像分类, 找到概率最高的N个图像; 将对应的图像加权得到扩充的图像, 图像标签与原图像保持一致; 最后, 用扩充的支持集与查询样本计算分类损失, 用来优化权重生成子网络.
2.3 基于特征增强的方法

以上两种方法都是利用辅助数据来增强样本空间, 除此之外, 还可通过增强样本特征空间来提高样本的多样性, 因为小样本学习的一个关键是如何得到一个泛化性好的特征提取器.Dixit等人[59]提出了AGA(attributed- guided augmentation)模型学习合成数据的映射, 使样本的属性处于期望的值或强度.然而, 将基于合成数据的网络应用到真实图像中具有迁移学习的问题, 但之前的方法都不适用于具有姿态物体的迁移, AGA是一个解决方法, 但是它的轨迹是离散的, 不能连续.所以基于此, Liu等人[60]提出了特征迁移网络(FATTEN), 用于描述物体姿态变化引起的运动轨迹变化.与其他特征提取不同的是, 该方法对物品的外观和姿态分别有一个预测器.网络包括一个编码器和一个解码器, 编码器将CNN对目标图像的特征x映射为一对外观A(x)和姿态P(x)参数, 然后, 解码器需要这些参数产生相应的特征向量x.

此外, Schwartz等人[61]提出了Delta编码器, 通过看到少量样本来为不可见的类别合成新样本, 将合成样本用于训练分类器.该模型既能提取同类训练样本之间可转移的类内变形, 也能将这些增量应用到新类别的小样本中, 以便有效地合成新类样本.但此方法的特征增强过于简单, 无法显著改善分类边界[1].为解决这个问题, Chen等人[62]提出了一个双向网络TriNet, 他们认为, 图像的每个类别在语义空间中具有更丰富的特征, 所以通过标签语义空间和图像特征空间的相互映射, 可以对图像的特征进行增强.该模型用一个4层卷积神经网络ResNet-18提取图像的视觉特征, 再通过TriNet的编码器将视觉特征映射到语义空间, 在语义空间中进行数据增强; 之后, 通过TriNet的解码器将增强后的语义特征映射回图像的特征空间.例如, shark这个类别在语义空间中与已知的一些类别fish, whale_shark和halobios距离较近, 即代表它们的语义相似, TriNet可借用这些邻近类别的特征来调整网络中用于特征提取的参数, 帮助模型更好地提取图像特征.

但是在上面的方法中, 分类网络通常提取的特征只关注最具有判别性的区域, 而忽略了其他判别性较弱的区域, 不利于网络的泛化.为了解决这个问题, Shen等人[63]提出可以把固定的注意力机制换成不确定的注意力机制M.输入的图像经提取特征后进行平均池化, 分类得到交叉熵损失l.用l对M求梯度, 得到使l最大的更新方向从而更新M.其次, 将提取的特征与更新后的M相乘, 得到对抗特征, 得到分类损失l1; 将初始特征再经过多个卷积, 得到一维特征对其分类, 得到分类损失l2.这两个分类器共享参数, 从而使得高层特征对底层特征具有一定的指导作用, 从而优化网络.

通过梳理基于数据增强的小样本学习模型的研究进展, 可以思考未来的两个改进方向.

  1. 更好地利用无标注数据.由于真实世界中存在着大量的无标注数据, 不利用这些数据会损失很多信息, 更好、更合理地使用无标注数据, 是一个非常重要的改进方向.

  2. 更好地利用辅助特征.小样本学习中, 由于样本量过少导致特征多样性降低.为提高特征多样性, 可利用辅助数据集或者辅助属性进行特征增强, 从而帮助模型更好地提取特征来提升分类的准确率.
    3 基于迁移学习的小样本学习

迁移学习是指利用旧知识来学习新知识, 主要目标是将已经学会的知识很快地迁移到一个新的领域中[64].举例说明: 一个程序员在掌握了C语言的前提下, 能够更快地理解和学习Python语言.迁移学习主要解决的一个问题是小样本问题.基于模型微调的方法在源数据集和目标数据集分布大致相同时有效, 分布不相似时会导致过拟合问题.迁移学习则解决了这个问题.迁移学习只需要源领域和目标领域存在一定关联, 使得在源领域和数据中学习到的知识和特征能够帮助在目标领域训练分类模型, 从而实现知识在不同领域之间的迁移.一般来说, 源领域和目标领域之间的关联性越强, 那么迁移学习的效果就会越好[65].近年来, 迁移学习这个新兴的学习框架受到了越来越多研究人员的关注, 很多性能优异的小样本算法模型被提出.在迁移学习中, 数据集被划分为3部分: 训练集(training set)、支持集(support set)和查询集(query set).其中, 训练集是指源数据集, 一般包含大量的标注数据; 支持集是指目标领域中的训练样本, 包含少量标注数据; 查询集是目标领域中的测试样本.

随着深度学习的发展, 深度神经网络常被用来学习样本的嵌入函数, 如卷积神经网络(convolutional neural network)[66]、循环神经网络(recurrent neural network)[67]和长短期记忆网络(long short-term memory)等.在图像分类任务中, 常使用卷积神经网络作为嵌入网络, 比较常用的变型包括VGG, Inception, Resnet等.Wang等人[68]基于迁移学习的思想, 在2016年提出了回归网络(regression network)来解决小样本问题.他们认为: 一个由少量样本训练的模型和一个由大量样本训练的模型之间存在一个通用的忽略类别的转换T, 这个转换T由回归网络学习得到.通过T的转换, 可以把由小样本训练得到的效果不佳的模型, 映射为由大量样本训练得到的效果较好的模型.两个模型的转换实质上是模型参数的映射, 即, 将一个模型的权重映射到另一个模型.

近年来, 随着迁移学习的兴起, 与之相关的模型也不断涌现.但是在以前的迁移学习算法中, 源网络中的某一层迁移到目标网络中的某一层是人工给定的, 并且是将所有的特征映射都迁移, 没有考虑迁移到哪里和迁移多少的问题.Jang等人[69]专注于迁移学习中迁移什么(what)和迁移到哪里(where)的问题, 提出利用元学习来学习迁移特征映射的权重和迁移层的权重来解决这个问题, 同时提出了一步学习的策略, 只用一步来适应目标数据集.该方法同时在小样本数据集上进行了实验, 但是效果提升没有大规模数据集多.根据迁移学习的方法不同, 本文将其分为基于度量学习、基于元学习和基于图神经网络的方法这3类.接下来就这3类方法中典型的算法模型及研究进展进行介绍.
3.1 基于度量学习的方法

在数学概念中, 度量指衡量两个元素之间距离的函数, 也叫做距离函数[70].度量学习也称为相似度学习, 是指通过给定的距离函数计算两个样本之间的距离, 从而度量它们的相似度[71].在深度学习中, 我们通常采用欧氏距离、马氏距离和余弦相似度等[72, 73]作为距离函数.将度量学习的框架应用到小样本学习上, 顾名思义, 就是通过计算待分类样本和已知分类样本之间的距离, 找到邻近类别来确定待分类样本的分类结果.基于度量学习方法的通用流程如图 2所示, 该框架具有两个模块: 嵌入模块和度量模块, 将样本通过嵌入模块嵌入向量空间, 再根据度量模块给出相似度得分.基于度量学习的方法通常采用episodic training, 是指将数据集分为多个任务进行训练, 每个任务从训练集中随机采样C-way K-shot的样本, 即选出C个类别, 每个类别含有K个样本, 通过多次采样构建多个任务.当进行训练时, 将多个任务依次输入到模型中, 这就是episodic training.在测试时, 一般从剩余的样本中选取一个batch来进行测试.
[点击查看原图] Fig. 2 Generalized flow chart of the metric learning based models[17] 图 2 基于度量学习的模型通用流程图[17]

Koch等人[74]在2015年最先提出使用孪生神经网络(siamese neural network)进行单样本图像识别.孪生神经网络是一种相似性度量模型, 当类别数多但每个类别的样本数量少的情况下, 可用于类别的识别.孪生神经网络从数据中学习度量, 进而利用学习到的度量比较和匹配未知类别的样本, 两个孪生神经网络共享一套参数和权重.其主要思想是: 通过嵌入函数将输入映射到目标空间, 使用简单的距离函数进行相似度计算.孪生神经网络在训练阶段最小化一对相同类别样本的损失, 最大化一对不同类别样本的损失.该模型使用两个CNN提取输入图像的特征, 将图像映射成向量.输入是一对样本而不是单个样本, 同一类样本标签为1, 不同类为0;然后, 通过交叉熵函数计算损失.对于单样本学习, 训练集中每个类别只有一个样本, 所以测试集中的每张图像和训练集中的每个样本都组成一个样本对, 依次输入到孪生神经网络中, 得到每对样本的距离.选取距离最小的训练样本的标签作为测试样本的类别, 从而完成分类.

Vinyals等人[17]继续就单样本学习问题进行深入探讨, 在2016年提出了匹配网络(matching network), 该网络可将带标签的小样本数据和不带标签的样本映射到对应的标签上.针对单样本学习问题, 该模型使用LSTM将样本映射到低维向量空间中, 新样本与每个带标签样本计算相似度, 使用核密度估计函数(kernel density estimation)输出预测标签.核密度估计函数专注于从数据样本本身出发来研究数据的分布特征, 是在概率论中用来估计未知的密度函数, 属于非参数检验方法.该模型在两个方面进行了创新.

● 一是在模型层面提出了匹配网络的概念.匹配网络使用公式$ \widehat{y}={\displaystyle \sum {i=1}^{k}a(\widehat{x},{x}{i}){y}_{i}} 计算目标样本与已知标签样本之间的相似度 , 其中 , 支持集 计算目标样本与已知标签样本之间的相似度, 其中, 支持集 计算目标样本与已知标签样本之间的相似度,其中,支持集S = { ({x_i},{y_i})} _{i = 1}^k$, x ^ \hat x x^是待分类样本, y ^ \hat y y^是待分类样本的预测标签.在此公式中, a可以看作注意力机制, yi看作约束于xi的记忆单元, 即匹配网络在计算中引入了外部记忆和注意力机制.

● 二是训练过程中保持训练集和测试集的匹配.这与机器学习中独立同分布的概念相似, 在保证训练集和测试集独立同分布的条件下, 训练模型在测试集上也能取得较好的效果.

Jiang等人[75]基于匹配网络的思想, 将嵌入函数改进为4层的卷积神经网络, 分别采用双向LSTM和基于注意力机制的LSTM算法深入提取训练样本和测试样本中更加关键和有用的特征并进行编码; 最后, 在平方欧氏距离上利用softmax非线性分类器对测试样本分类.实验结果表明, 改进的匹配网络在类别数更多而样本数较少的复杂场景下具有更好的分类效果.

在基于度量学习的单样本图像分类方面, 上述方法都是从图像本身特征出发, 没有考虑到分类标签这一信息.Wang等人[76]认为需要将图像的分类标签纳入考虑, 并提出了多注意力网络模型(multi-attention network).该模型使用GloVe Embedding将图像的标签嵌入到向量空间, 通过构建标签语义特征和图像特征之间的注意力机制, 得到一张图像属于该标签的特征主要集中于哪一个部分(单注意力)或哪几个部分(多注意力), 利用注意力机制更新该图像的向量, 最后通过距离函数计算相似度得到分类结果.

尽管上述模型已经取得了较好的成果, 但它们针对的都是单样本学习问题.为了进一步深入解决小样本问题, Snell等人[9]在2017年提出了原型网络(prototypical network).作者认为, 每个类别在向量空间中都存在一个原型(prototype), 也称作类别中心点.原型网络使用深度神经网络将图像映射成向量, 对于同属一个类别的样本, 求得这一类样本向量的平均值作为该类别的原型.通过不断训练模型和最小化损失函数, 使得同一类别内的样本距离更为靠近, 不同类别的样本更为远离, 从而更新嵌入函数的参数.原型网络的思路如图 3所示, 输入样本x, 比较x的向量和每个类别原型的欧式距离.根据计算发现, x与原型2的距离更近, 也就代表x与原型2所代表的类别更为相似, 于是将x分到类别2.
[点击查看原图] Fig. 3 A case study of prototypical networks[9] 图 3 原型网络样例[9]

原型网络的思想和实现方法都十分简单明晰, 但效果与之前的工作相比得到了一定的提升.但是仅仅使用标注数据得到的结果不一定是准确的, 因为样本量太少会导致分类边界偏差.针对这个不足之处, Ren等人[50]于2018年在原型网络的基础上进行扩展, 使用了半监督学习的思想, 在训练集中加入了不带标签的数据来改善分类边界.实验证明: 无标签数据的加入, 提高了分类效果.原因在于: 原型网络只使用带标签数据进行原型的计算, 但是带标签数据数量较少导致了类别中心的计算不准确; 而改进的网络加入了无标签数据之后, 对类别的原型进行了修正, 使得待分类样本能够得到正确的分类.论文中对这种使用半监督方法的原型网络提出了3种变型.

● 第1种, 所有的无标签数据都属于带标签的数据所属的类别.在这种假设下, 将无标签数据和带标签数据一起计算新的原型.

● 第2种, 无标签数据要么属于带标签数据所属的类别, 要么属于一个另外的类——干扰类(distractor class).干扰类开始以原点(0, 0)作为原型, 模型学习的是干扰类的半径.

● 第3种, 无标签数据要么属于已知的类别, 要么被掩盖(masked).这种变型的提出, 是因为第2种假设的不合理性.第2种假设下, 把所有没有标签的数据分到同一个类显然是不符合实际场景的, 所以作者又提出了一种新的算法: masked K-means算法.在这种假设下, 论文用一个多层感知机(multi-layer perception, 简称MLP)来学习每个类的半径和斜率, 用这两个参数和距离得到一个没有标签的数据属于每个类别的概率.

作者认为: 一个样本离原型越远, 它就越容易被掩盖.但是上面的网络在计算时均没有考虑样本的权重, 只是做了一个简单的平均数计算.在很多情况下, 用来计算原型的样本的重要程度是不同的, 尤其当样本是噪声数据的时候, 体现的更为明显.受到这个问题的驱动, Gao等人[77]提出了基于人工注意力的原型网络.相比于传统的原型网络, 该模型多了两个部件: 样本级别的注意力机制和特征级别的注意力机制, 来分别捕捉对分类更重要的样本和特征.作者分别用含有0%, 10%, 30%和50%的噪声数据集进行了效果评测, 均比baseline取得了更好的效果; 并且噪声越多, 提升效果越好.说明该模型具有很好的鲁棒性.Sun等人[78]也为解决这个问题提出了层次注意力原型网络(HAPN), 比起传统的原型网络添加了特征级别、词语级别和样本级别的3种注意力机制.词语级别的注意力机制是文本分类中常用的方法, 在这里不再赘述.基于人工注意力的原型网络和层次注意力原型网络均添加了样本级别和特征级别的注意力机制, 表明不同的样本和特征对于分类任务的重要性确实不同, 只做简单的平均计算是远远不够的, 需要对样本的特征进行加权处理.

上述模型都是基于距离函数来计算相似度, 这样虽然简单易操作, 但有时候距离函数却并不适用于一些特定的任务.针对这个问题, 一些研究人员提出可以使用深度神经网络来进行度量[1].Sung等人[79]在2018年提出了一个新的模型——关系网络(relation network, 简称RN), 该模型分为两个模块: 嵌入模块和关系模块.其中, 嵌入模块f是一个4层的卷积神经网络, 用来学习样本到低维向量空间的嵌入; 关系模块g是一个相似度比较模块, 使用ReLU来进行相似度计算, 用来输出两个样本的相似度得分.关系网络在3种问题上作了讨论.

  1. 单样本学习.每种类别有一个支持样本x, 嵌入向量为f(x), 针对查询样本y获得嵌入向量f(y), C(f(x), f(y))表示两个向量的连接, 将这个连接后的向量放到关系模块g中, 得到相似度打分, 完成分类.

  2. 小样本学习.对于每一类的支持样本, 将它们的嵌入向量相加作为整个类别的特征映射.剩下的过程和单样本学习相同.

  3. 零样本学习.对于没有标注样本的问题, 利用每个类别的语义特征嵌入向量v, 使用新的嵌入函数f2, 得到这个类别的特征映射f2(v), 剩下过程与上面相同.

在关系网络的基础上, Zhang等人[10]提出了深度比较网络(deep comparison network, 简称DCN), 将嵌入学习分解为一系列模块, 并将每个模块与一个关系模块配对.关系模块利用相应嵌入模块的表示计算一个非线性度量对匹配进行打分.为了保证所有嵌入模块的特征都被使用, 关系模块被深度监控.最后, 通过学习噪声调节器进一步提高泛化性.Hilliard等人[80]也使用了一种新的体系结构, 抛弃了传统的度量学习方法, 通过训练一个网络来执行类别之间的比较, 而不是依赖于静态度量比较.该网络可以决定一个类的哪些方面对于分类比较重要, 从而更好地区分类别边界.

之前的方法注意力集中在一阶统计量的概念表示上, Li等人[81]提出了一个协方差度量网络(CovaMNet), 在基于小样本分类任务的分布一致性上, 利用了协方差表示和协方差矩阵, 其中, 协方差表示用来捕获二阶统计信息, 协方差矩阵用来衡量query样本与新类别之间的分布一致性.但由于现有的方法忽略了局部特征的信息, 为了捕捉局部特征, Li等人[82]又提出了深度最近邻神经网络(DN4).与其他方法的最大不同是: 在最后一层用图像到类别的局部描述符来代替图像级别的特征测量, 查询样本在进行特征映射时, 为每个空间特征计算一个相似性.针对一个查询样本特征映射的每个空间特征, 找到支持特征映射中最相近的K个特征来计算相似性, 最后将所有位置相似性加和, 得到此查询样本的相似性.

但是上面的方法是针对每个任务提取不同的特征, 仍旧忽略了支持集中所有图像之间的语义关系.受到这个想法的驱动, Li等人[83]提出可以利用模型整合支持集中所有图像的信息, 从而找到最具有判别性的特征.

● 首先, 根据支持集得到一个channel attention; 随后, 对所有的图像应用channel attention, 对于支持集中的图像提取特征, 经过一个卷积层求得原型; 将所有类连接, 得到一个特征; 再经过卷积, 得到一个channel attention.

● 其次, 将支持集特征和查询样本特征经过一个卷积层, 与上述得到的attention相乘, 得到更具有判别性的特征.

● 最后, 对于更新后的特征做度量学习.

由上面的模型可以看出: 基于度量学习的方法经历了从解决单样本问题到解决小样本问题再到同时解决小样本问题和零样本问题的变革, 模型逐渐趋近于成熟; 同时, 也经历了从基于传统距离函数的方法到基于深度网络的方法的改进.继续采用基于传统距离函数的方法很难在小样本分类准确率方面得到较大的提升, 所以加强对基于神经网络进行度量方法的研究, 将是今后重点关注的方向.
3.2 基于元学习的方法

元学习(meta-learning)也叫做学会学习(learning to learn)[84], 是机器学习领域一个前沿的研究框架, 针对于解决模型如何学习的问题.元学习的目的是让模型获得一种学习能力, 这种学习能力可以让模型自动学习到一些元知识.元知识指在模型训练过程之外可以学习到的知识, 比如模型的超参数、神经网络的初始参数、神经网络的结构和优化器等[85].在小样本学习中, 元学习具体指从大量的先验任务中学习到元知识, 利用以往的先验知识来指导模型在新任务(即小样本任务)中更快地学习.元学习中的数据集通常分为元训练集和元测试集, 二者均包含了原始模型所需要的训练集和测试集.如图 4所示, 分类模型的数据集包括训练集和测试集; 元学习模型的数据集包括元训练集和元测试集, 其中, 元训练集和元测试集均包含训练集和测试集.
[点击查看原图] Fig. 4 Example of meta-learning dataset[86] 图 4 元学习数据集实例[86]

早在2001年, Hochreiter等人[87]就证明了记忆神经网络可适用于元学习.在此工作的基础上, Santoro等人[88]在2016年提出了基于记忆增强的神经网络(memory-augmented neural networks, 简称MANN)来解决单样本学习问题.作者使用了神经图灵机(neural Turing machine, 简称NTM)[89]作为MANN的基本模型, 因为NTM作为一种可微的MANN, 可以直接通过梯度下降进行训练.神经图灵机既可以通过缓慢权重更新来实现长期存储, 又能够通过记忆库实现短期存储, 这与元学习的思想完全一致.作者致力于让神经图灵机学习到一种策略, 这个策略可以指导NTM将样本类型放入到记忆库中, 同时指导它今后如何通过这些类型进行预测或者分类.

MANN是元学习方法在单样本学习问题上较早且较成功的一次尝试, 此后, 应用元学习框架解决小样本问题逐渐进入人们的视野.在2017年, Munkhdalai等人[90]继续采用元学习的框架来解决单样本分类的问题, 并提出了一个新的模型——元网络(meta network).元网络主要分为两个部分: base-learner和meta-learner, 还有一个额外的记忆块, 这个记忆块可以帮助模型快速学习.

Base-learner在任务空间中学习, meta-learner在抽象的元空间中持续学习并且从不同的任务中获取元知识.当新任务到来时, base-learner对当前任务进行分析, 并将元信息反馈给meta-learner; Meta-learner收到元信息之后, 根据元信息对自身和base-learner快速参数化.具体来说, 元网络分为一个缓慢权重化的过程和一个快速权重化的过程, 在学习不同任务之间的泛化信息时权重更新缓慢, 而当对一个新任务快速适应时, 则需要快速权重化.

基于模型微调、基于数据增强和基于迁移学习的方法这3类, 其中, 基于数据增强的方法可以细分为基于无标签数据、基于数据合成和基于特征增强的方法这3种, 基于迁移学习的方法可以细分为基于度量学习、基于元学习和基于图神经网络的方法这3种.

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604896.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习方法的重要性

原贴:https://www.cnblogs.com/feily/p/13999204.html 原贴:https://36kr.com/p/1236733055209095 1、 “一万小时定律”的正确和误区 正确: 天才和大师的非凡,不是真的天资超人一等,而是付出了持续不断的努力&…

C++:菱形继承与菱形虚拟继承

一、菱形继承 单继承:一个子类只有一个直接父类时称这个继承关系为单继承 多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承 菱形继承:菱形继承是多继承的一种特殊情况,派生类继承自两个间接基类,而这…

MVC与MVVM架构模式

1、MVC MVC:Model-View-Controller,即模型-视图-控制器 MVC模式是一种非常经典的软件架构模式。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式结合在一种解决方案中,从而可以解决许多设计问题。 MV…

C++缺省参数、函数重载、引用

一、缺省参数 1.1缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void func(int n 0) {cout << n << endl; }int main() {func();func…

营销H5测试综述

H5页面是营销域最常见的一种运营形式&#xff0c;业务通过H5来提供服务&#xff0c;可以满足用户对于便捷、高效和低成本的需求。H5页面是业务直面用户的端点&#xff0c;其质量保证工作显得尤为重要。各业务的功能实现具有通用性&#xff0c;相应也有共性的测试方法&#xff0…

【C语言】字符函数和字符串函数--超详解

前言&#xff1a; 在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了⽅便操作字符和字符串&#xff0c;C语⾔标准库中提供了 ⼀系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 1. 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#…

Java 线程池之 ThreadPoolExecutor

Java线程池&#xff0c;特别是ThreadPoolExecutor&#xff0c;是构建高性能、可扩展应用程序的基石之一。它不仅关乎效率&#xff0c;还直接关系到资源管理与系统稳定性。想象一下&#xff0c;如果每来一个请求就创建一个新的线程&#xff0c;服务器怕是很快就要举白旗了。而Th…

Web Component fancy-components

css-doodle 组件库 fancy-components 组件库使用 yarn add fancy-components使用&#xff1a; import { FcBubbles } from fancy-components new FcBubbles() //要用哪个就new哪个 new 这里可能会报错eslink,eslintrc.js中处理报错 module.exports {rules: {no-new: off} …

【智能算法应用】基于麻雀搜索算法的二维最大熵图像阈值分割

目录 1.算法原理2.数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.数学模型 最大熵法是由 Kapur 于 1985 年所提出的&#xff0c; 该方法的阈值选取标准取决于图像中最大化分 割的目标区域和背景区域…

初学java

注意点 1.使用关键字long的时候&#xff0c;在其赋值的时候要在后面加上大写或者小写的l&#xff0c;个人推荐大写&#xff0c;小写与数‘1’难区分。 2.函数的名字要与文件夹的名字相同&#xff0c;并且文件夹后面一定要有.java。例如这个的名字是Main,函数就得用这个&#x…

python+pycharm安装教程

介绍 Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python语法和动态类型&#xff0c;以及解释型语言的本质&#xff0c;使它成为多数平台上写脚本和快速开发应用的编程语言&#xff0c;Python解释器易于扩展&#xff0c;可以使用C、C或其他可以通过…

国科大深度学习期末历年试卷

本文借鉴 国科大深度学习复习 深度学习期末 深度学习2020 一&#xff0e;名词解释&#xff08;每个2分&#xff0c;共10分&#xff09; 深度学习&#xff0c;稀疏自编码器&#xff0c;正则化&#xff0c;集成学习&#xff0c;Dropout 二&#xff0e;简答题&#xff08;每题…

Autoxjs 实践-Spring Boot 集成 WebSocket

概述 最近弄了福袋工具&#xff0c;由于工具运行中&#xff0c;不好查看福袋结果&#xff0c;所以我想将福袋工具运行数据返回到后台&#xff0c;做数据统计、之后工具会越来越多&#xff0c;就弄了个后台&#xff0c;方便管理。 实现效果 WebSocket&#xff1f; websocket是…

机器学习:基于TF-IDF算法、决策树,使用NLTK库对亚马逊美食评论进行情绪分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition

motivation :现有方法方法无法准确定位身体部位&#xff0c;不同的身体部位可以出现在同一个条纹(如手臂和躯干)&#xff0c;一个部分可以出现在不同帧(如手)的不同条纹上。其次&#xff0c;不同的身体部位具有不同的尺度&#xff0c;即使是不同帧中的同一部分也可以出现在不同…

【光速上手 Hydra 】一行代码自动跑多次实验,Hydra 中的 Multirun 参数如何使用?

Hydra 是一个开源的 Python 框架&#xff0c;简化了研究和其他复杂应用的开发。其关键特性是能够通过组合动态地创建一个分层次的配置&#xff0c;并通过配置文件和命令行进行覆盖。Hydra 的名称来源于其能够运行多个类似的作业 - 就像一个有多个头的九头蛇一样。 主要特性&am…

泽众财务RPA机器人常见五个应用场景

泽众RPA&#xff08;即机器人流程自动化&#xff0c;Robotic Process Automation, RPA&#xff09;解决方案是依托于各类先进信息技术手段的虚拟劳动力 &#xff08;数字劳动力&#xff09;&#xff0c;根据预先设定的程序操作指令对任务进行自动化处理&#xff0c;实现业务流程…

解锁机械之美:发动机设备拆解可视化揭秘

在现代工程技术的世界里&#xff0c;发动机作为机械设备的心脏&#xff0c;始终扮演着至关重要的角色。图扑的发动机设备拆解可视化技术&#xff0c;以其独特的视角和精确的细节&#xff0c;为我们开启了一扇了解复杂机械结构的新窗。通过高清晰度的三维图像和动画&#xff0c;…

在阿里云K8S容器中,部署websocket应用程序的总结

一、背景 有一个websocket应用程序&#xff0c;使用spring boot框架开发&#xff0c;http端口号是6005&#xff0c;提供的是websocket服务&#xff0c;所以它还监听一个8889端口的tcp协议。 现在要把它部署到阿里云的k8s容器里&#xff0c;本文着重描述service层的配置。 因…

鸿蒙开发接口Ability框架:【 (ServiceExtensionAbility)】

ServiceExtensionAbility ServiceExtensionAbility模块提供ServiceExtension服务扩展相关接口的能力。 说明&#xff1a; 本模块首批接口从API version 9开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 本模块接口仅可在Stage模型下使用。 导入…
最新文章