什么是 k-shot 学习
Daisy Author

我在阅读 CLIP 论文的过程中,首次接触到了 k-shot 的概念,比如 CLIP 在 ImageNet 数据集上 zero-shot 预测取得和预训练 ResNet50 基线相持平的成绩。于是上网查阅关于 k-shot learning 的相关知识,并写此文记录。

本文仅讨论 k-shot 学习的定义,而不对具体使用 k-shot 的深度学习方法做讨论展开。

什么是 k-shot 学习

K-shot 学习是一种机器学习方法,其中模型仅从每个类别的k个标记示例中学习(k为很小的数字,一般为1~5)。K-shot 学习利用元学习(学会学习)和迁移学习,能够利用极其有限的数据实现快速适应。

在 k-shot 学习中,模型首先在大型数据集进行预训练,以学习捕获数据内语义关系和属性的特征表示,这种基本表示本质上告诉模型不同的输入如何相互关联。

元学习优化模型的学习过程本身,教它如何从几个例子中快速吸收新概念。该模型学习更新规则,使其能够以数据高效的方式快速适应新任务。

当面临每类只有 k 个标记示例的新任务时,模型可以利用先前的元学习知识来智能地微调新数据集。通过将少数镜头与其预先训练的表示进行比较,模型可以调整其参数以适应新任务,以实现有效的分类和泛化。

这种从每类仅 k 个示例中快速学习新概念的能力消除了需要大型训练集的限制。 K-shot 学习为模型提供了一个极其灵活的框架,可以动态扩展到具有稀缺标记示例的新数据。

相关术语

支持集(Support Set):由新数据类别的少数标记样本组成,预训练模型能看见的新类别带标签样本。

查询集(Query Set):查询集由来自新旧数据类别的样本组成,预训练模型在支持集获取知识后,在查询集进行推理。

N-way K-shot 学习方案:描述模型将要处理的少样本问题。N-way 表示模型需要泛化 N 个类别,K-shot定义了 N 个类别中每个类别的支持集中可用的标记样本数量。

为什么要 K-shot Learning

传统的监督学习方法使用大量的标记数据进行训练。此外,测试集包含的数据样本不仅与训练集属于同一类别,而且必须来自相似的统计分布。例如,由手机拍摄的图像创建的数据集在统计上与由高级数码单反相机拍摄的图像创建的数据集不同。这通常称为域转移。

K-shot Learning 通过以下方式缓解了上述问题:

  1. 训练模型不需要大量昂贵的标记数据,因为顾名思义,目标是仅使用少量标记样本进行泛化。
  2. 由于预先训练的模型(在广泛的数据集上训练过的模型,例如在 ImageNet 上训练的模型)可以扩展到新的数据类别,因此无需从头开始重新训练模型,从而节省了大量的计算量力量。
  3. 模型还可以通过仅接触有限的先验信息来了解罕见的数据类别。
  4. 即使模型已经使用统计上不同的数据分布进行了预训练,只要支持集中的数据和查询集中的数据是一致的,它也可以用于扩展到其他数据域。

Zero-shot Learning(ZSL)

K = 0 的 k-shot 被成为零样本学习,是一种无监督学习范式。顾名思义,它不依靠新类别的少量标注数据就可以对新类别实现有效的分类泛化。

零样本学习在没有任何类标记示例的情况下,如何获取与该类相关的知识?零样本学习利用辅助信息:文本描述、属性、嵌入表示或者与当前任务相关的其他语义信息

打个简单的比方,想象一个孩子想了解鸟的样子。在类似于监督学习(FSL)的过程中,孩子通过观看动物图片书中标有“鸟”的图像来学习。接下来,她会认出一只鸟,因为它与她已经见过的鸟图像相似。但在 ZSL 场景中,没有此类标记示例可用。相反,孩子可能会阅读有关鸟类的百科全书条目,并了解到它们是小型或中型动物,有羽毛、喙和翅膀,可以在空中飞翔。然后,她将能够识别现实世界中的一只鸟,即使她以前从未见过鸟,因为她已经学会了鸟的概念。

迁移学习

为了最大限度地减少训练所需要的时间资源,以及识别从未见过地类所需要的辅助信息量,ZSL通常利用迁移学习。

迁移学习有以下几个类别:

  • 基于模型的迁移学习 (预训练-微调范式、知识蒸馏)
  • 基于样本的迁移学习 (提高样本权重)
  • 基于特征的迁移学习

迁移学习主要用于将类和样本表示为语义嵌入的 ZSL 方法,将学到的知识转移到新任务和不同类别的过程也称为领域适应。

结论

现有的深度学习方法的表现往往和数据量有着很大的挂钩,就像 CLIP 之所以能够在 zero-shot 模式下取得和先前方法提高如此巨大的精度,一定程度上也是因为它训练所用到的十亿级别的数据量和很高的模型复杂度。对大量标记数据的需求与计算成本的高昂成为深度学习发展的绊脚石。

K-shot Learning 提供了解决这个问题的一个新思路,它允许将预训练的深度学习模型拓展到新数据,无需重新训练,只需要几个标记好的新数据可以获得较好的泛化性,虽然听一些老师说,K-shot 学习中诸如 元学习等小数据学习范式前景不被看好,但这还是为未来的深度学习发展开辟了新思路。

参考文献

[1] Everything you need to know about Few-Shot Learning
[2] What is k-shot learning?
[3] What is zero-shot learning?
[4] Zero-shot learning | WIKI