深度神经网络往往要求为每个新任务收集大量标记训练数据,实用性也因此受到限制。给定来自一组源任务的数据,有两种迁移学习方法可以克服这种限制:小样本学习 (FSL) 和自监督学习 (SSL)。前者通过在源任务中设计元集(episode),模拟使用少量标记样本解决新任务的挑战,从而学习“如何学习”。相比之下,后者在所有源任务中利用无标注的代理任务来学习可泛化的特征表示。
AI科技评论今天为大家介绍一篇来自人民大学高瓴人工智能学院卢志武老师实验室团队提出的模型,论文已于被ICLR 2021接收。
本文提出了一种新的实例级和元集级代理任务 (IEPT) 框架,将 SSL 紧密集成到 FSL 中。大量实验表明,本文提出的模型(即带有 IEPT 框架的 FSL)进一步实现了先进的小样本分类性能。
论文地址:https://openreview.net/pdf/a68102247933495b5b77811b3b5299cf97a108f4.pdf
开源代码:https://github.com/rucmlcv/IEPT_FSL
1
背景介绍
深度卷积神经网络 (CNN)在广泛的应用领域取得了巨大成功,尤其是在视觉识别方面。然而,CNNs强大的学习能力依赖于大量人工标注的训练数据。在实践中,对于许多视觉识别任务,足够的手动注释要么收集成本太高,要么不可行(例如,对于稀有对象类),这严重限制了 CNN 在实际应用场景中的实用性。最近一系列工作尝试从两个不同的角度减轻这种限制,产生了两个流行的研究方向:小样本学习(FSL)和自监督学习(SSL),这两个方向都旨在将从一组源任务的数据中学到的知识转移到新的目标任务上。
FSL通常采用元学习范式,它旨在学习一种从少数标记样本中学习的算法,该算法在新的任务中能很好地泛化。为此,它采用了一种元集训练策略——源任务被安排成学习元集,每个元集包含 n 个类和每个类的 k 个标记样本,以模拟目标任务的设置。然后对 CNN 模型的一部分(例如,特征提取子网、分类层或参数初始化)进行元学习,以快速适应新任务。
SSL则不需要对源数据进行标注,而是利用源任务数据上的无标注代理任务,希望可以从源任务中学习任务可泛化的特征表示,以便在目标任务中快速适应。这样的代理任务在实例级别获得自我监督的信号,例如旋转和上下文预测、拼图求解和着色。
由于 FSL 和 SSL 都旨在通过从一组源任务转移知识,从而减弱为目标任务收集大量标记训练数据的需要,因此本文考虑将它们组合在一个框架中。实际上,最近的两项工作[1, 2]提议通过在 FSL 模型中添加辅助 SSL 代理任务来将 SSL 集成到 FSL 中。它表明 SSL 学习目标与 FSL 的学习目标是互补的,将它们结合起来可以提高 FSL 的性能。然而,在[1, 2]中,SSL 与 FSL 以一种表面的方式结合:它仅作为每个单独训练实例的单独辅助任务,没有影响FSL 模型“元集式”的训练过程。重要的是,忽略了样本的类标签,实例级 SSL 学习目标本身就很弱。
由于跨元集元学习是大多数当代 FSL 模型的本质,本文认为单独添加实例级 SSL 代理任务无法充分利用上述 FSL 和 SSL 的互补性,为此需要更紧密和更深入的集成。
2
本文方法
- 问题设置
FSL分类任务以元集形式进行训练与测试,每个n-way k-shot训练元集从训练集 中随机采样而来,其中训练集的类标签空间与测试集的类标签空间没有重叠。每个元集包含一个支持集和一个查询集:从训练集中随机抽取一组n个类别,然后分别从中的每个类别抽取k个支持样本和q个查询样本生成和。
- 基本模型
本文采用 ProtoNet [3]作为基本的 FSL 模型,该模型具有特征提取 CNN 和简单的非参数分类器。
具体地,在一个元集中,ProtoNet 固定特征提取器并计算每个类的平均特征表示:
通过计算每个查询样本的特征表示与对应类的原型特征表示之间的距离,可以优化用于元学习的损失函数:
- IEPT框架
具体来说,给定一个 FSL 元集,我们首先对每个实例图片应用几何变换以生成扩展元集。在实例级别,转换识别任务按照标准 SSL 实现,即通过一个辅助识别分类损失。而在元集级别,本文设计了两个 SSL-FSL 混合学习目标:(1)最大化FSL 分类器对来自不同扩展元集的预测的一致性,以此作为元集级别的代理任务。(2) 聚合从不同元集的每个实例中提取的特征,以构建用于元学习的单个 FSL 分类器。
实例级SSL目标是使FSL模型学习到有效的特征表示,从而能识别不同的旋转变换,具体实现即通过交叉熵分类损失来实现。
任务级SSL目标是使FSL 分类器为不同扩展元集中的每个实例生成一致的分类概率分布,具体用KL-散度来衡量损失:
为了捕捉具有不同转换的实例之间的相关性,并了解如何最好地将它们组合起来进行元学习,本文部署了基于transformer [4]的一个实例注意模块,聚合不同转换的实例特征以形成聚合特征。
然后将聚合特征输入到 FSL 分类器以定义聚合FSL 任务的分类损失:
最后的训练损失由四部分组成,其中两者为有监督的分类损失,另两者为自监督的损失:
3
实验
本文选择了两个广泛使用的 FSL 数据集:miniImageNet [5] 和 tieredImageNet [6],均为从 ImageNet 采样的子集。
miniImageNet由总共 100 个类(每类 600 张图像)组成,训练/验证/测试拆分设置为 64/16/20 个类。tieredImageNet是一个更大的数据集,总共包括 608 个类(每个类近 1,200 张图像),分为 351/97/160 个类用于训练/验证/测试。
实验结果:我们分别采用conv4-64,conv4-512和resnet-12作为CNN骨干网络,分别在两个数据集上进行FSL分类,结果见表1。
本文将IEPT 与两组基线进行比较:(1)最近的基于 SSL 的 FSL 方法 (2) 代表性的/最新的 FSL 方法(无 SSL)。5-way 1/5-shot 两种设置的FSL的对比结果如表 1 所示。
我们观察到:
1、 与代表性/最新的 FSL 方法(无 SSL)相比,IEPT 在所有数据集和所有设置下都实现了最佳性能,验证了带有IEPT的FSL方法有效性。
2、IEPT 也明显优于仅使用实例级别代理任务的两种基于 SSL 的 FSL 方法,证明了元集级别的SSL 到 FSL 的集成的重要性。
3、IEPT 比 ProtoNet 实现了 2% 到 5%的效果提升。由于IEPT 以 ProtoNet 作为基线方法,因此获得的提升证明了 SSL 为 FSL 带来了显著收益。如表3所示,本文也证明了IEPT在细粒度 FSL 和跨域 FSL 设置上的有效性。
4
结语
本文提出了一种新的实例级和元集级代理任务 (IEPT) 框架,用于将 SSL 集成到 FSL 中。除了传统的实例级代理任务之外,我们还首次为 FSL 引入了具有自监督的元集级别代理任务。
此外,我们还通过引入集成transformer模块开发了一个扩展-集成框架,以充分利用 FSL 的扩展集。在两个基准上的大量实验表明,本文提出的模型(即带有 IEPT 的 FSL)有效性得到了验证。
[1]. Gidaris, et al. Boosting few-shot visual learning with self-supervision. ICCV 2019.
[2]. Su, et al. When does self-supervision improve few-shot learning? ECCV 2020.
[3]. Snell, Prototypical networks for few-shot learning. NIPS 2017.
[4]. Vaswani, et al. Attention is all you need. NIPS 2017.
[5]. Vinyals,et al. Matching networks for one shot learning. NIPS 2016.
[6]. Ren, et al. Meta-learning for semi-supervised few-shot classification. ICLR 2018.