首页 > 编程知识 正文

小样本学习综述,神经网络小样本学习

时间:2023-05-06 08:50:06 阅读:235853 作者:1376

Meta-learning(元学习)

虽然目前很多暴力堆算力堆数据的模型取得了很好的效果,但由于有些数据很难收集到,或者大量的标注耗费人力太多,关于元学习的研究也很多。特别是比如人类往往只需要通过少量数据就能做到快速学习,甚至不需要数据仅仅凭概念就可以完成推理。这种能力基本就属于元学习的范畴,或者机器学习领域中的zero-shot,few-shot learning了,首先看看概念:

Meta-learning,元学习。学习怎么去学习。所谓“元”对应着人类在幼儿时期就掌握的对世界的基础知识和行为模式的理解,即一个泛化性强的初始网络,再加上一个对新任务快速适应的学习能力。所以元学习的目标就表现在提高泛化能力,获得好的参数,通过少量计算就可以实现比较好的效果。

元学习目前主要针对小样本学习问题,原学习的训练和测试都以少样本任务为基本单元,每个任务拥有个自己的训练数据集和测试数据集,也成为支持集和查询集,它在训练和测试阶段都只使用小样本数据。

Zore-shot learning,零样本学习。支持集为训练集,其为带标签的seen classes,查询集为测试集即unseen classes,零样本学习将识别与每个没见过的类在语义上与见过的类之间的相关知识。也就是,如果我们知道马长什么样子,知道斑马长得像马且有条纹,那么我们就算没见过也可以识别出斑马。One-shot learning,一样本学习。即当新未见过的类别只有一个的样本时,希望模型可以通过已经学习到的旧类别去预测新类别。此时的meta-learing就不是想传统监督学习那样,为了总结某个类的分布中存在的共享信息和模式,而是试图学习存在于任务分布上的规律(也就是怎么去学习)。Few-shot learning,少样本学习。机器学习模型在学习了一定类别的大量数据后,新的未见类是少量的样本就能快速学习。C-way K-shot 问题。训练集中有很多类别,选出C个类别,每个类别选出K个样本,作为支持集,再从C个类别中抽取剩余的batch作为测试集。

主要的目标是提高泛化能力,获得好的参数,通过少量计算就可以实现比较好的效果。管与它的研究方法可以分为五个方向:

基于度量学习。度量指衡量两个元素之间距离的函数,也叫做距离函数,所以度量学习也称为相似度学习,是指通过给定的距离函数计算两个样本之间的距离,从而度量它们的相似度。所以这个方向的方法主要都是根据度量模块给出相似度得分来预测类别。基于泛化性强的初始化。主要就是MAML模型(Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks),其将梯度下降和损失优化的任务数据分类,从而能有比较好的泛化能力。基于优化器。一般认为基于梯度的优化方法需要很多步的迭代才比较好,基于梯度优化的方法主要是利用优化梯度下降的方法来训练网络,如引入LSTM。基于额外外部存储。仅仅用神经网络容易过拟合,所以这种方法主要是用外部存储来更新。然后依据反馈信号及时地调整其结构和参数空间, 进而能够在新环境中通过累计经验提升表现性能。基于数据增强方法。生成虚拟数据为模型提供额外的训练信号。具体做法比如在N-way分类任务中,额外增加一维到N+1即表示是否为虚假数据集。

接下来整理一些比较有代表性的度量学习文章:

无私的绿草 Neural Networks
孪生神经网络是一种相似性度量模型,当类别数多但每个类别的样本数量少的情况下可用于类别的识别。主要思想是通过嵌入函数将输入映射到目标空间,使用简单的距离函数进行相似度计算,然后在训练阶段最小化一对相同类别样本pair的损失同时最大化一对不同类别样本pair的损失。

模型结果如上图,先用cnn 提取特征Embedding,然后计算距离最后预测概率这两个输入是否是same class,同类为1,不同为0,损失计算是交叉熵。之所以叫孪生是因为两个孪生神经网络共享一套参数和权重(即一个cnn来抽特征)。

然后看看test阶段如何做的,比如对于one-shot来说,由于训练集中每个类别只有一个样本,所以测试集中的每张图像和训练集中的每个样本都组成一个样本对,依次输入到孪生神经网络中,得到每对样本的距离,选取距离最小的训练样本的标签作为测试样本的类别,从而完成分类。


Match Network
也是度量学习,与上面那个不一样的地方在于其从一对以一变成了一对多的关系,如上图的输入变成了多个带类别的样本和不带类别的样本。所以该网络的目的是可以将带标签的小样本数据和不带标签的样本映射到对应的标签上。使用的网络同样是CNN,然后新样本会和每一个向量都计算相似度最后得到得分。


Prototypical Networks
同样的还有原型网络(Prototypical Networks),类似k-means,作者认为每个类别在向量空间中都存在一个原型,即类别的中心点,所以对于映射后的样本求均值得到某类别的原型,训练loss使同类样本接近,而不同类样本远离。但是因为样本量太少会导致分类边界偏差,所有可以使用半监督的想法做出一些改进:

所有的无标签数据都属于带标签的数据所属的类别,将无标签数据和带标签数据一起计算新的原型。无标签数据要么属于带标签数据所属的类别,要么属于一个另外的类——干扰类(distractor class)。干扰类开始以原点(0,0)作为原型,模型学习的是干扰类的半径。无标签数据要么属于已知的类别,要么被掩盖(masked)。


Relation Networks
如上图,跟Match Network很像,但是利用了relation module来确定这个metric计算距离的方式,该模型分为两个模块:嵌入模块和关系模块,嵌入f仍然是CNN,关系模块 g 是一个相似度比较模块,使用 ReLU 来进行相似度计算,用来输出两个样本的相似度得分。

零样本学习。利用每个类别的语义特征嵌入向量 v,使用新的嵌入函数f,得到这个类别的特征映射。单样本学习。每种类别有一个支持集样本 x,嵌入向量为 f(x),然后针对查询样本 y,也获得嵌入向量f(y),最后由C(f(x),f(y))表示两个向量的连接,将这个连接后的向量放到关系模块 g 中,得到相似度打分,完成分类。小样本学习。对于每一类的支持集样本,将它们的嵌入向量相加作为整个类别的特征映射,剩下的过程和单样本学习相同。


下一篇博文整理它的应用:
Zero-Shot Image Retrieval(零样本跨模态检索)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。