当前位置: 代码迷 >> 综合 >> Prototypical Networks for Few-shot Learning
  详细解决方案

Prototypical Networks for Few-shot Learning

热度:24   发布时间:2023-11-01 05:22:18.0

小样本学习的原型网络

文章目录

      • 泛读
        • 摘要
        • 标题
        • 主要思想
        • 结论
      • 精读
        • 小样本的定义
        • C-way K-shot
        • 零样本定义
        • 最近的两种方法
        • 聚类
        • 符号
        • 模型
        • 实验
        • 模型结构
        • 实验结论
      • 总结

泛读

摘要

对于小样本分类问题,我们提出了一种原型网络,在该网络中,分类器必须归纳到训练集中未看到的新类别,而每个新类别仅给出少量示例。
原型网络学习一个度量空间,在该度量空间中,可以通过计算到每个类的原型表示的距离来执行分类
与最近的小样本学习方法相比,它们反映了一种更简单的归纳偏差,在这种有限的数据条件下是有益的,并且取得了优异的成绩。
我们提供的分析表明,一些简单的设计决策可以对涉及复杂的体系结构选择和元学习的最新方法产生实质性的改进。
我们进一步将原型网络扩展到零样本学习,并在CU-Birds数据集上获得最新的结果。

标题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Teq0YeXK-1622198825843)(en-resource://database/2172:1)]

  1. 介绍
  2. 原型网络
    1. 符号介绍
    2. 模型
    3. 原型网络作为混合密度估计
    4. 重新解释为线性模型
    5. 与匹配网络的比较
    6. 设计选择
    7. 0样本越习
  3. 实验
    1. 全方位小样本分类
    2. 在miniImageNet上小样本分类
    3. 在CUB数据集上零样本分类
  4. 相关工作
  5. 结论

主要思想

我们通过解决过度拟合的关键问题来解决小样本学习的问题。
由于数据受到严格限制,因此我们假设分类器应具有非常简单的归纳偏差。
我们的方法,即原型网络,是基于这样的想法,即存在一种嵌入,其中每个类的点都围绕一个原型表示进行聚类。
为此,我们使用神经网络学习输入到嵌入空间的非线性映射,并以类的原型作为其在嵌入空间中的支持集的平均值。
然后,只需查找最接近的类原型,即可对嵌入式查询点执行分类。
我们采用相同的方法来解决零击学习。
在这里,每个类都带有元数据,该数据提供了对该类的高级描述,而不是少数带有标签的示例。
因此,我们学习将元数据嵌入到共享空间中,以用作每个类的原型。

结论

我们提出了一种简单的原型学习网络的简单方法,该方法基于以下想法:我们可以在神经网络学习的表示空间中通过其实例来表示每个类。
我们使用情境训练对这些网络进行训练,使其在小样本下表现出色。
该方法比最近的元学习方法简单得多,并且效率更高,并且即使没有为匹配网络开发复杂的扩展,也可以产生好的结果(尽管这些扩展也可以应用于原型网络)。
我们展示了如何通过仔细考虑选择的距离度量并修改情景学习程序来极大地提高性能。
我们进一步演示了如何将原型网络推广到零样本,并在CUB-200数据集上实现最新的结果。
未来工作的自然方向是利用除平方欧几里德距离以外的布雷格曼散度,该散度与球状高斯以外的类条件分布相对应。
我们对此进行了初步探索,包括学习每个类每个维度的差异。
这并没有带来任何经验上的收获,这表明嵌入网络本身具有足够的灵活性,而无需每类额外的拟合参数。
总体而言,原型网络的简单性和有效性使它成为小样本学习的有前途的方法。

精读

小样本的定义

Few-shot classification is a task in which a classifier must be adapted to accommodate new classes not seen in training, given only a few examples of each of these classes.

小样本分类是一项任务,其中必须对分类器进行调整以适应培训中未看到的新类别,仅给出每个类别的几个示例。

C-way K-shot

few-shot 的训练集中包含了很多的类别,每个类别中有多个样本。
在训练阶段,会在训练集中随机抽取 C 个类别,每个类别 K 个样本(总共 CK 个数据),构建一个 meta-task,作为模型的支撑集(support set)输入;再从这 C 个类中剩余的数据中抽取一批(batch)样本作为模型的预测对象(batch set)。即要求模型从 C* K 个数据中学会如何区分这 C 个类别,这样的任务被称为 C-way K-shot 问题。

零样本定义

零样本学习对于每个类给出类的元数据向量,而不是给出一个类的多个点。
在这里插入图片描述

最近的两种方法

Oriol Vinyals, Charles Blundell, Tim Lillicrap, Daan Wierstra, et al. Matching networks for one shotlearning. In Advances in Neural Information Processing Systems, pages 3630–3638, 2016.

提出了一种匹配网络,该网络在标记的示例集(支持集)的学习嵌入中使用注意力机制来预测未标记点(查询集)的类别。 匹配网络可以解释为嵌入空间中应用的加权最近邻分类器。
值得注意的是,该模型在训练过程中使用了称为“情节”的采样迷你批处理,其中每个情节旨在通过对类以及数据点进行二次采样来模仿小样本任务。
情节的使用使训练问题更加忠实于测试环境,从而提高了概括性。

Sachin Ravi and Hugo Larochelle. Optimization as a model for few-shot learning. International Conference on Learning Representations, 2017.

进一步提出了间歇式训练的想法 并提出一种元学习方法来进行少量学习。 他们的方法涉及训练LSTM,以产生给定情节的分类器更新,从而将其很好地推广到 测试集。 在这里,LSTM元学习者不是在多个情节上训练单个模型,而是学习为每个情节训练定制模型。

聚类

Our approach, prototypical networks, is based on the idea that there exists an embedding in which points cluster around a single prototype representation for each class.

我们的方法,即原型网络,是基于以下想法:存在一个嵌入,在这个嵌入中每个类都围绕一个原型进行聚类。

为此,我们使用神经网络学习了输入到嵌入空间的非线性映射,并且将一个类的原型取为其支持集在嵌入空间中的的平均值。

即可对嵌入式查询点执行分类,只需找到最接近的类原型。

我们遵循相同的方法来解决 zero-shot learning;这里每个类都带有元数据对类的高级描述,而不是少数带有标签的示例。

因此,我们学习将元数据嵌入到共享空间中,以用作每个类的原型。

通过为嵌入式查询点找到最接近的类原型来执行分类。

在这里插入图片描述

特别是,我们将原型网络与聚类相关联,以证明当使用Bregman发散度计算距离(例如平方欧几里德距离)时,将类均值用作原型是合理的。距离的选择至关重要,因为欧几里得距离远胜过更常用的余弦相似度。

符号

在这里插入图片描述

模型

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

实验

Omniglot 是一个收集自50个字母的1623个手写字符的数据集。

miniImageNet数据集最初是由Vinyals等人提出的[29],它来源于更大的ILSVRC-12数据集[26]。Vinyals et al.[29]使用的分割由6万幅84 × 84大小的彩色图像组成,分为100个类,每个类有600个样本。

模型结构

四组卷积,每组有:

  • 3 * 3的64个卷积核
  • batch Normalization
  • ReLU
  • 2 * 2 max-pooling

通过SGD和Adam训练
学习率初始为10?310^{-3}10?3,每2000episodes将学习率降低一半
没有batch Normalization以外的正则化

在这里插入图片描述

实验结论

使用欧式距离比余弦距离要好,这个结论不光是对 Prototypical Networks 而言,甚至在 Matching Networks 上也成立;
进行 N-way k-shot 训练时,N 的值越大,总体上看来模型效果会越好,可能是因为训练时类别数多会导致模型能更好地学习到不同类别之间的细微差别,从而提高了泛化性

总结

和聚类算法好像

使用欧氏距离代替余弦相似度

采用episode

模型要做的就是将support set中的数据映射到一个embedding空间中,然后对同类数据的embedding平均作为原型的embedding;同时在预测的时候将输入数据也映射到这个embedding空间中,计算出该embedding与各个原型的距离后,选择距离最小的类别作为预测结果。也就是说这个模型需要做的事为:

  1. 训练一个encoder
  2. 选择合适的距离度量方法
  相关解决方案