基于特征分段度量方法的少样本学习

2023-02-17 01:54冯兴杰王晨昊
计算机应用与软件 2023年1期
关键词:度量类别分段

冯兴杰 王晨昊

1(中国民航大学计算机科学与技术学院 天津 300300) 2(中国民航大学信息网络中心 天津 300300)

0 引 言

深度学习在计算机视觉任务上的成功是以大规模标记数据为基础的,针对不同的类别从海量数据中学习不同的特征进而做出判别。然而在现实生活中,许多任务难以收集到足够的数据用于训练,例如医学图像识别、稀有动植物识别任务等,即使拥有足够的数据,这些数据的标记也通常需要领域专家进行手工标注,高昂的成本大幅度限制了传统深度学习方法的性能。数据的低可用性迫使分类方法发生改变,如何摆脱或减轻深度学习技术对数据量的依赖成为了近年来一个非常重要的研究方向。

在标记数据稀少的情况下,人类相比于传统的深度学习方法,具有更强的从少量样本中学习的能力:在看见某物体仅有一次或几次的情况下,如果再次遇见同类样本,人类能够很快地识别出来。受此启发,人们提出了少样本学习问题。少样本学习旨在通过每个类别极少或较少的训练样本来学习泛化分类器,使之能够保持较高的分类精度的同时可以扩展识别新的类别,解决当下数据不足的问题。当每一类可利用的带标签样本个数为K时,我们称为K-shot学习,其中K一般不超过20。

已有的少样本学习的方法主要包括以下几种:迁移学习方法通过在大规模数据集上训练得到带参数的分类器,然后在少样本任务数据上对最后一层的权重进行微调,可以得到好的表现[1],但这种方法只适用于训练数据集与少样本任务数据相似的情况,且仍存在过拟合,但相比于使用L2距离的k近邻方法效果仍要好很多。除此之外,简单的旋转、镜像等数据增强操作在少样本问题中的作用十分有限,研究更先进的数据增强方法也是一个可行的研究方向,由此出现了基于GAN的数据增强方法[2],通过生成对抗网络学习生成更多的“正样本”数据帮助模型进行训练。还有基于度量的学习也是一种常用的少样本学习方法,该方法通过对样本间距离分布进行建模,使同类样本靠近、异类样本远离,该方法包括以孪生网络[3]、匹配网络[4]、原型网络[5]和关联网络[6]等为代表的经典少样本学习模型。

在少样本学习领域,度量学习是主要的少样本学习方法之一,微调和数据增强作为少样本学习的辅助方法也起到了一定的作用,但只能缓解过拟合现象,不能解决,因此本文选择以度量方式作为研究方向。在已有的基于度量方法的模型研究中,少样本的学习策略都遵循学习如何学习的元学习框架,即N-way K-shot方法,它从基类数据集中抽取少量样本构建学习任务,优化现有模型以在这些任务上获得好的表现,已有的多数研究集中于研究如何改进元学习框架。

我们认为,度量方法中的特征提取模块和分类模块代表的是两个不同的学习任务,尤其是在每一类带标签样本仅有一个的极端情况下,直接使用深度学习方法很容易出现过拟合的现象。这可能是由于元学习策略的工作方式虽然有助于下游任务(少样本分类)效果的提升,但却损害了模型的通用性(弱化了特征提取模块的学习能力)。为了解决这个问题并提升分类效果,我们将训练分解为两个阶段:首先是预训练阶段,我们在基类数据上用传统的端到端方法训练分类器以获得强大的嵌入能力,然后将其迁移到元学习框架下的特征提取模块;接着在元学习微调阶段,我们利用嵌入模块提取给定样本所属类别的平均特征,其次对特征分段进行余弦距离计算并求均值,最后将查询样本按照最近质心进行分类。良好的预训练、强大的特征提取网络结合分段度量的方法,我们的模型在mini-imagenet数据集上获得更好的识别效果。

1 相关研究

早期少样本学习的研究最早追溯到2006年,李飞飞等[7]首次提出单样本学习方法。近年来随着深度学习技术的应用及局限性的凸显,人们又重新兴起对少样本研究的兴趣。已有的许多方法使用N-way K-shot元学习策略,从一组辅助任务中提取一些可转移的知识,通过对已有类别的学习来对新的类别进行预测,这有助于模型在很好地解决目标样本稀少问题的同时,而不必担心将深度模型应用在稀疏数据问题上而可能出现的过拟合现象。

预训练:预训练作为计算机视觉中的常见做法,与许多视觉任务相关。它通常需要一个在其他数据集(如imagenet)上预先训练的模型,以帮助另一个模型。Chen等[8]提出了一种被忽视的meta-baseline方法,通过在所有基类上预先训练分类器并在基于最近质心的少样本分类算法上进行元学习,从而在很大程度上领先于最新的方法。同时,Zhou等[9]在研究长尾分布的数据中发现,使用类平衡策略虽然可以提升网络结构中的分类器部分的性能,但却损害了类表示(特征提取部分)学习的效果,因此提出两阶段的学习策略,将模型的学习过程分为表征学习和分类器学习两部分,并获得有益的结果。

度量学习:度量学习方法尝试学习适当的特征嵌入空间,其中相同类别的图像相似而不同类别的图像互不相同。可以通过最近邻搜索获得结果。对于少样本学习,Lake等[10]在2015年提出一个分层贝叶斯模型;Koch等[3]同年提出基于孪生网络的少样本学习模型,通过样本对之间的加权L1距离进行相似度学习;Vinyals等[4]在2016年提出的匹配网络,通过在训练期间抽样小批量数据来模拟测试任务,同时在编码模块添加了注意力机制,有效地提高了测试时的泛化表现;2017年Snell等[5]用欧几里得距离代替余弦距离,并将支持集嵌入向量的均值作为每一类构建的原型表示,将分类问题转化成嵌入空间中的最近邻问题,在少样本学习问题中得到较好的效果;Sung等[6]在2018年提出关联网络,它用深度学习度量替换以往的固定度量方法,获得非常好的测试效果。

基于已有研究,我们提出一种新的双分支分段度量模型架构。通过在所有基类上预先训练分类器,并在基于最近质心的少样本分类算法上进行基于分段度量的元学习,我们的模型能够获得更好的嵌入模块,并减轻过拟合的问题。

2 本文方法

2.1 问题定义

少样本分类的一种流行解决方案是应用元学习策略,通过将数据集分为不同元任务的子集,以学习如何根据任务变化来适应模型。具体过程如下:给定用于训练少样本图像分类模型的数据集,它包含三个部分:训练集Dtrain、支持集Dsupport和测试集Dtest。训练集有一个单独的类别空间,每个类别都有大量带标签的图像样本。Dtrain中的这些类别定义为基础类别Cbase。相反,支持集Dsupport和测试集Dtest具有与训练集Dtrain不相交的相同类别空间。Dsupport和Dtest中的类别定义为新颖类别Cnovel。如果支持集包含N个新颖类别,并且每个新颖类别都有K个图像示例,则此少样本学习问题定义为N-way K-shot学习。少样本学习的目的是通过使用训练集和支持集来学习图像分类模型,该模型能够在K较小时,对来自新颖类别中的测试图像准确地进行分类。

2.2 模型结构

图1展示了本文网络的总体架构,模型的训练过程由两个阶段完成。上半部分表示预训练过程:在基类数据集上训练带有一个全连接层的双线性CNN网络,训练完成删除全连接层得到BCNN编码器。下半部分展示了5-way 1-shot的任务训练过程:同时对支持集的5个样本及查询样本进行编码,得到不同类别的特征表示;分段度量模块对得到的特征分段进行相似度计算,获得表示特征段间相似度的距离矩阵,我们对矩阵的特征段维度计算均值得到查询样本所属类别的预测概率,最后应用argmax函数得到预测类别。

图1 本文模型网络结构示意图

(1) 表征学习。我们选择resnet12作为双线性卷积神经网络的两个分支,它的结构如图2所示。由4个残差块组成,每个残差块具有3个卷积层。每个卷积层都有一个3×3的内核,然后是批量归一化层和Leaky ReLU激活层。四个残差块中的卷积层通道数分别为64、128、256、512,在每个残差块之后应用2×2的最大池化层。网络输入为80×80大小的图像,最后对得到的512×5×5特征图执行reshape操作后进行外积计算,得到262 144维特征向量。

图2 resnet12网络结构图

BCNN由两个特征提取器组成,其输出在图像的每个位置使用外积相乘,并合并以获得图像表示。假设BCNN的两个分支分别为A和B,对于输入图像I,其输出分别为fA(I)∈RnA×L和fB(I)∈RnB×L,其中nA、nB表示输出的维数,L表示空间位置。图像在位置l的双线性特征表示bl由式(1)得到,其中bl∈RnA×nB。

bl=fA(l,I)fB(l,I)T

(1)

合并图像在不同位置的外积结果,得到图像的最终表示x(I),如式(2)所示,其中x∈RD×1(D=nA×nB)。

(2)

通过外积计算,双线性结构能够融合两组特征映射,得到包含图像更丰富信息的特征向量x,我们将其看作是一组nB个子向量xt:

x=[x1;x2;…;xt;…;xnB],∀t:xt∈RnA×1

(3)

式中:xt是fA的所有特征映射由fB的第t个特征映射融合得到,这类似于注意机制中的乘法特征相互作用。每个融合后的特征映射倾向于聚焦所表达对象的隐式部分,因此,xt可以被视为该部分的特征描述。预训练阶段的目的是获得好的特征编码器,因此在模型的最后一层,我们仅添加了一层全连接帮助学习网络参数。对于一个N-way K-shot任务中某一类别k的Nk个图像表示,我们通过将图像输入预训练得到的BCNN编码器获得,然后经过式(4)得到所属类别的特征表示Xk,这里的类别表示为该类别所有样本的平均表示。

(4)

(2) 分段度量。支持集样本的每个类别的信息都被编码成一个特征向量,分段度量模块的任务是将这些中间类别级的表示映射到它们对应的类别中。我们对得到的类别表示Xk和查询图像Xq的特征表示进行分段比较:262 144维特征向量被分为64段,即8个子向量xt为一段;计算每个类别表示的每一段特征xj与查询图像Xq对应位置特征qj的余弦相似度,用所有分段的余弦相似度平均值作为查询图像与该类别质心的距离。式(5)为分段后类别k的表示,其中j为分段数量,我们设置j为64。

(5)

预测查询样本Xq属于类k的概率为:

(6)

通过在基类数据集Dtrain上预训练分类器得到特征编码模块;元学习阶段我们继续从基类Dtrain的训练数据中采样N-way K-shot任务。在每个任务的支持集上计算等式(4)定义的类别质心Xk,然后与查询样本的特征表示Xq一同输入式(6)得到每个类别的预测概率分布。根据p和查询样本的标签计算出每个任务的交叉熵损失。

3 实验与分析

为了评估模型性能,我们选择Mini-Imagenet数据集[4]作为基准数据集。所有实验都围绕相同的基本任务:N-way K-shot。在元学习阶段,每一次的元训练任务都提供一个元训练数据集,包含N类没有训练过的新类,每类K个标注样本,然后基于元训练集预测测试图像属于这N类中的某一类。因此,此任务的随机性能为1/N。我们将已有研究中基于度量方法的少样本学习模型作为基准模型,与提出的网络模型进行了比较。本文的实验环境如表1所示。

表1 实验环境介绍

3.1 Mini-imagenet数据集

Mini-ImageNet数据集[4]通常用于评估少样本分类算法,是目前少样本学习的标准基准。它由从ImageNet随机采样的100个类别组成;每个类别包含600张尺寸为84×84像素的图像。由于匹配网络[4]在提出该数据集时未提供具体类别,我们使用文献[18]中的类别版本。其中64个类进行元训练,16个类进行元验证,其余20个类进行元测试。

3.2 实验过程

首先,我们在基类数据集上训练双线性特征学习模块:重设样本尺寸为80×80像素,应用随机水平翻转作为数据增强方法,预训练阶段的优化器选择SGD优化器,动量为0.9,学习率从0.1开始,衰减因子为0.1。我们在2个GPU上训练了100个epoch,批处理大小为128,学习率在第90个epoch处下降。

在元学习阶段,我们使用SGD优化器,其动量为0.9,固定学习率为0.001。我们在2个GPU上训练20个epoch,批处理大小为4,即每个训练批次包含4个少样本任务以计算平均损失。其中度量模块将特征向量分为64个特征组,分别进行余弦相似度的计算并将均值作为最终的预测结果。

测试过程我们采样了800个测试任务以评估性能,每个测试任务均包括每类15个共75个查询样本。

3.3 实验结果

我们的对比模型选择包括未知模型元学习MAML、匹配网络、原型网络以及关联网络,还包括近年来多个方法:SNAIL方法通过时序卷积获取过去信息,把上下文信息当作无序的键值对,结合软注意力模块帮助模型精确查找定位有用信息[14];MetaOpNet方法使用线性分类器,将特征分类规划为凸学习问题,通以少量计算成本地增加获得了比最近邻方法更大的收益[15];MTL方法集合迁移学习和元学习算法实现小样本任务,通过元学习器训练得到放缩和平移参数,实现网络对新类数据集的迁移,同时提出课程学习的训练方式,由简到难训练网络,提高损失收敛速度[16];代表特征网络学习一个线性映射,根据类支持集中样本的不同明显程度,给N个类支持向量分配合适的权重,映射得到相对均值更加鲁棒的类代表特征[17];Meta-baseline方法充分利用了预训练分类器和元学习的优势,通过在所有基类上预先训练分类器,并在基于最近质心的少样本(few-shot)分类算法上进行元学习,实验结果大大优于目前最先进的方法,为进一步理解用于少样本学习的元学习框架提供了思路[18]。

与以上方法的对比结果如表2所示,在5-way 1-shot和5-way 5-shot识别任务上,分别达到64.33%和80.11%的准确率,相比于使用Resnet12的Meta-baseline方法分别提高了1.16百分点和0.85百分点的准确率。在与已有方法的对比中,本文模型取得了具有竞争力的结果。

表2 与其他方法对比(%)

3.4 消融实验

我们对不同嵌入模块进行了对比,在仅使用Resnet12作为主干网络的模型上进行训练,并添加我们的分段度量模块(分段数为16),结果在5-way 1-shot和5-way 5-shot上也分别得到0.33百分点和0.1百分点的提升,如表3所示。同时当主干网络为BCNN时,采用分段度量方法也相比于Meta-baseline模型分别获得0.32百分点和0.5百分点的改进,进一步证明了分段方法对目标任务的有效性。当主干模型从Resnet12替换到本文提到的BCNN时,两个少样本任务分别得到0.84百分点和0.35百分点的明显提升,这证明了让模型更好地利用具有更强可传递性的预训练表示在少样本元学习框架下的重要性。

表3 与不同嵌入模块效果对比(%)

除此之外,我们在实验中修改分段个数,查看其对分类结果的影响。由于分段数只能为2的倍数,所以实验对[2,4,8,16,32,64,128,256]中的不同段数进行了相关实验,实验结果如表4所示。

表4 不同分段数对比(%)

当分段数为2和4时,由于表示能力极小,分类准确率没有任何提升,较小的分段数更接近于未分段状态;当分段数从4上升至8时,5-way 5-shot任务的测试结果有了较为明显的变化,得到0.24百分点的提升。继续提升分段数量,测试结果均有一定提升,当分段数为64时少样本分类任务的准确率达到最高。但是,随着分段数继续成倍增长,分类结果出现了明显的下降趋势。因此,64为分段数的最佳选择,实验表明合适的分段数有助于分类器从特征空间捕捉更好的分类边界。

3.5 结果分析

为什么分段度量相比全局度量方法较好?我们分析认为全局度量由于具有较大的表示能力而具有过拟合性;对特征向量进行分段,分段后的每一组都代表了输入图像的局部特征,通过对这些局部特征的度量学习,我们可以获得更有意义的可比性并能够适当减轻过度拟合。这在视觉环境中有直观的表现,即一些特征相比其他特征更显著,这取决于所对比的图像类别。本文方法中通过特征提取模块得到的双线性特征向量被视为一组子向量,每个子向量描述对象的部分特征,分段度量的操作实现了这样的功能:对比检查局部特征之间的相似度,测试查询图像是否属于所描述的类别。与以往的全局度量方法不同,分段度量的方法通过对特征空间的不同部分学习不同的余弦距离度量,获得样本类别之间正确的分类边界,帮助模型聚焦于更具区分性的显著特征,从而获得更好的辨别能力。实验结果显示,分段度量在一定程度上优于全局方法。

4 结 语

在本文研究中,我们基于度量学习的方法提出了双线性分段度量模型,这是一种更适合少样本学习的深度度量网络。首先,我们在基类数据上进行分类预训练,然后使用迁移学习将得到的网络参数(经验)应用到元学习的特征提取模块;在度量模块,我们对得到的特征向量分段进行余弦距离计算并求均值,这有利于图像特征的相似性判断。通过有效的预训练参数、更强大的特征提取结构和分段度量的方法,我们提出的模型在复杂场景数据集mini-imagenet上获得更好的分类表现。

预训练方法已经被证明有助于下游任务的表征学习,而近期研究表明:在预训练有效的情况下,自训练比预训练工作得更好[19]。未来,我们将尝试使用自训练方法,以解决少样本学习问题。

猜你喜欢
度量类别分段
鲍文慧《度量空间之一》
模糊度量空间的强嵌入
一类连续和不连续分段线性系统的周期解研究
迷向表示分为6个不可约直和的旗流形上不变爱因斯坦度量
分段计算时间
壮字喃字同形字的三种类别及简要分析
3米2分段大力士“大”在哪儿?
地质异常的奇异性度量与隐伏源致矿异常识别
服务类别
多类别复合资源的空间匹配