Few-Shot Learning with Global Class Representations笔记整理
1 Introduction
在小样本学习(Few-Shot Learning, FSL)问题上,对于base classes中的每个类别,我们往往有充足的训练数据;对于那些novel classes中的每个类别,我们只有少量的带标签的数据。FSL旨在利用base calsses中大量的数据,来学习出一个可以对novel classes中的数据标签准确辨别的模型。
注:base class和novel class是本文作者自己创造的词汇,我没有想到很好的翻译方法。在文章里,base class指拥有充足样本的类别(用于训练);novel class指的是那些只有少量样本的类(用于测试)。
现在解决小样本学习问题一般都使用元学习的方法,但是元学习的做法也有一定的局限性,因为它们往往只使用了源数据(source data),但是对于目标数据却几乎没有使用,即使在经历过fine-tuning阶段,也无法保证能学习到满足目标数据需求的模型。(比如,要辨别一个动物是不是猫,但现在手头上只有5张猫的照片以及大量狗,狮子,鸟的照片。这个时候元学习的一般做法是先在狗,狮子和鸟的照片上进行训练,训练好后再用5张猫的照片来进行微调。)
而作者在本文提出的方法同时使用5张猫(novel classes)的照片和大量狗,狮子,鸟(base classes)的照片来进行训练,作者把这称为全局表征(global class representations)。
因为将novel class在的少量数据和base class中的大量数据一起训练的话,势必会有样本不平衡的问题,作者使用两种方法来解决这一问题:
- 合成novel class的新样本;
- 引入片段训练(episodic training)。
2 Contributions
- 提出将base classes 和novel classes同时作为全局表征来进行小样本学习的训练;
3 Method
在这一节将首先介绍本方法的两个模块:表征注册模块和样本合成模块。然后再介绍如何将这两个模块合并起来,最后介绍如何将此方法拓展到生成式FSL的设定中(generalized FSL)。其中使用 f i = F ( x i ) f_i = F(x_i) fi=F(xi)表示一个样本 x i x_i xi经过特征抽取器F之后得到的视觉特征。
3.1 样本合成模块
本模块用于解决类别不平衡问题,共分为两步:第一步用原始样本生成新的样本,第二步用第一步获取的所有样本合成一个新样本。
首先对novel classes在的原始样本使用random cropping, random fipping和data hallucination操作(这三个方法出自论文:Low-shot learning from imaginary data.)来为每个novel class生成 k t k_t kt个样本。
对于一个novel class c j c_j cj,作者先从中随机挑选出 k r k_r kr个样本,具体操作如下:
k r ^ ∼ U ( 0 , k t ) , k r = ⌈ k r ^ ⌉ \hat{k_r} \sim U(0,k_t),\\ k_r = \lceil \hat{k_r} \rceil kr^∼U(0,kt),kr=⌈kr^⌉
其中, U ( a , b ) U(a,b) U(a,b)是平均分布。
对于一个novel class,再从 0 ∼ 1 0 \sim 1 0∼1平均分布中选出 k r k_r kr个值 { v 1 , . . . , v k r } \{ v_1,...,v_{k_r}\} { v1,...,vkr}