小样本学习One-shot
2024/1/14
1. 什么是One-shot
单样本学习(One-shot learning)是机器学习领域的一个研究方向,重点是让模型能够仅通过一个训练样本来学习信息。
什么是一个训练样本:
指的是模型训练过程中只使用一个或少量例子或数据点来学习一个特定类别或任务。
如果实在难以理解可以找一篇论文直接看
2. One-shot相关论文
2.1 Siamese Neural Networks for One-Shot Image Recognition
本文使用孪生网络结构解决小样本分类任务,使用结构相同的两个网络分别提取两幅图像的特征,使用\(L1\)度量提取出的两幅图的特征信息,如果\(L1\)小那么他们可能属于同一类物体,否则属于不同物体。
2.1.1 网络结构
孪生网络两分支结构相同,卷积层的通道数都是64的倍数,卷积核的尺寸由\(10*10\)下降到\(7*7\),再到\(4*4\),卷积步长均为1,最大池化层的池化窗口为\(2*2\),最后两层为全连接层,第一个将特征展开为长度为4096的一维特征向量,并于另一个提取特征计算\(L1\)距离。第二个全连接层则是将距离向量压缩为一个值,并利用sigmoid函数转化为相似程度得分。
除了最后两层使用sigmoid作为激活函数,其他层使用Relu作为激活函数。
2.1.2 创新
本文通过引入距离度量的方式来解决少样本分类的问题,然而具有很大的局限性,孪生网络对于两个图像之间的差别非常的敏感(包括位置、颜色),当同一个物体出现在图像的左上角和图像的右下角时,提取的特征信息可能截然不同的,并且在通过全连接层后,空间位置信息会被破坏,可能会导致误分类。
解决这两个问题通常是利用更深的神经网络提取特征,更深网络的有效训练需要更多的数据集,这与One-shot本质冲突。
为了解决问题,后来提出了元学习方法。
2.2 Prototypical Networks for Few-shot Learning (neurips.cc)
本文基于存在embedding的想法,将每个数据看作一个点,这些点围绕每个类的单个原型表示(prototype representation)进行聚集。为了做到这点,文中使用神经网络学习了一个非线性映射,利用神经网络将输入映射到一个embedding space,每个类的原型(Prototype)就是这个类的 support set 所有样本embedding的均值。
预测时,将需要分类的图像输入训练好的embedding网络中,映射到嵌入空间里面,新样例embedding和这些prototype哪个最接近便分到该类别。
对于zero-shot而言,每个类都带有给出类高度描述(high-level description)的元数据,而不是少量的标记数据。模型学习将元数据嵌入到共享空间中,作为每个类的原型。
Embedding 技术将原始数据从高维度空间映射到低维度空间,有助于减少数据的复杂性和计算资源的需求,并提高模型的训练和推理效率;Embedding 向量是连续的,因此可以在数学上进行操作,如向量加法、减法和点积等。这使得模型能够更好地理解数据之间的关系;
2.2.1 网络结构
如上图所示,左边是Few-shot,其原型\(c_\mathrm{k}\)就是Support集中每个类别样本嵌入的均值;右边是Zero-shot, 其原型\(c_\mathrm{k}\)是通过嵌入的类的元数据\(\mathrm{v_k}\)计算的。
模型要做的就是将support set中的数据映射到一个embedding空间中,然后对同类数据的embedding平均作为原型的embedding;同时在预测的时候将输入数据也映射到这个embedding空间中,计算出该embedding与各个原型的距离后,选择距离最小的类别作为预测结果。也就是说这个模型需要做的事为:
- 训练一个encoder
- 选择合适的距离度量方法
2.2.2 创新
- 采用平方欧氏距离作为距离度量方式,取代了常用的余弦距离
- 采用Episode小批量梯度下降训练法,并在训练过程中使用包含更多类别的样本
但是仍然存在问题,如何保证网络对数据特征的提取足够抽象,让每个类别之间的差距足够明显,还有小批量样本中的特殊样本使原型发生偏移的问题如何解决。
2.3Matching Networks for One Shot Learning (neurips.cc)
文章采用一种带有嵌入特征提取器的最近邻方法实现了小样本或单样本分类任务,该论文先于Prototypical Networks,可以参考上面2.2部分。
2.3.1 网络结构
![[img4.png]]
特征提取器可采用常见的VGG或Inception网络,作者设计了一种简单的四级网络结构用于图像分类任务的特征提取,每级网络由一个64通道的3*3卷积层,一个批规范化层,
2.3.2 创新
- 创新性的采用匹配的形式实现小样本分类任务,引入最近邻算法的思想解决了深度学习算法在小样本的条件下无法充分优化参数而导致的过拟合问题,且利用带有注意力机制和记忆模块的神经网络解决了普通最近邻算法过度依赖度量函数的问题,将样本的特征信息映射到更高维度更抽象的特征空间中。
- 新型的训练策略,一个训练任务中包含支持集和Batch样本
受到非参量化算法的限制,随着支持集S的增长,每次迭代的计算量也会随之快速增长,导致计算速度降低。此外,在测试时必须提供包含目标样本类别在内的支持集,否则他只能从支持集所包含的类别中选择最为接近的一个输出其类别,而不能输出正确的类别。