这篇文章被AAAI2021录用,于2021年2月挂在arxiv上,在arxiv上面的题目是Partial Is Better Than All: Revisiting Fine-tuning Strategy for Few-shot Learning,论文的一作来自卡内基梅隆大学和港科大。
文章的研究点是在少样本学习中如何更好地迁移知识,针对的是有监督少样本学习算法。作者提出在现存的元学习和非元学习少样本算法中,算法在完成基类数据对网络的训练后,往往会固定特征提取器的参数,将其直接用于新类的少样本学习任务。
而作者认为基类数据和新类数据的数据分布间或多或少会存在差异,如果不加改动地直接将特征提取器用于新类的少样本学习,那么可能会存在偏差并带来性能的下降。
基于此,作者提出了一种部分训练的迁移算法,该算法可以灵活插入到现有的少样本学习算法中,帮助特征提取器在新类的少样本学习中可以实现部分参数的微调,以更好地适应这些新类别。
本博文介绍论文的整体思想和算法流程,希望读者已经具备了少样本学习方面的知识。
作者认为现有的少样本学习算法中,都是在有大量带标签样本的基类数据上学习获得特征提取器,再将其迁移到只有少量带标签样本的新类数据上使用,通常为了减少过拟合现象的发生,特征提取器的网络参数会被固定。不论是基于元学习的少样本学习算法如MAML、Prototypical Net,还是非元学习的少样本学习算法如 Dynamic Few-Shot Visual Learning without Forgetting,都采用了这样的迁移方法。
在基类数据和新类数据的数据分布接近时,固定特征提取器或其他网络(比如基于教师-学生网络的少样本学习算法中的教师网络,这个算法类别是我自己分的,具体指的什么可以参考我的这篇论文)的参数是可行的,最终可以获得不错的效果。但是当两个数据集分布相差较大时,迁移的效果就会变差。
这种说法是可以被理解的,也确实是迁移学习中需要解决的问题。在一般的迁移学习问题中,部分算法会采用在新数据集上对全部网络的参数进行微调。但在少样本学习中,这种方法难以实行。因为少样本学习中新数据集的带标签样本量极小,每类大概只有1、5或10个有标签样本,这样的数据量难以支撑对庞大网络的微调。
为了解决少样本学习中的迁移后网络微调问题,论文提出了基于遗传算法的微调策略选择方法,它可以插入现存的少样本学习算法中,用来实现迁移后基于少量新类数据的网络部分微调。
理解了论文的目的后,就可以发现论文的算法核心就是网络微调的策略设计。
作者使用了一种简单的网络微调原则,(我们均将特征提取器作为要微调的网络)即为网络的每一层选择一个学习率,学习率的选择空间是人为给定的,当学习率为0时,代表该层参数固定。所有层的学习率选择结果构成了一个学习策略,记为 V l r V_{lr} Vlr。
我们需要选择出最优学习策略来完成之后在新类上的网络微调,这个最优学习策略就是能使网络在该策略下进行微调后,获得的分类效果最好,可以表示为:
那么最优学习策略该如何确定呢?微调网络每一层的学习率该如何选择呢?
按照最简单的选择方法,我们可以将学习策略的全部可能性都列出来,一一带入网络进行微调测试,最后选择出在新类数据集上能使最终的分类准确率最高的策略。
但是这种方法具有两个缺点:
因此作者提出了遗传算法,借助遗传算法中的突变和交叉,在不进行枚举学习策略的情况下实现最佳探索。(重点!重点!重点!)
同时为了解决上述第二个缺点,作者利用独立分离出来的验证集数据进行最优策略的选择(验证集中的类别和基类、新类均不同),并且认为该最优策略适用于全部的新类数据。从而避免对每个基于新类的少样本任务都进行一遍最优学习策略选择。
额,感觉这样也有不足啊,最好还是能对每个少样本任务做到自适应选择最优策略,不过本文的方法不行
在论文中,每一层网络参数的学习率选择空间都是 {0, 0.01, 0.1, 1.0}
在了解了作者的意图和整体思路后,算法就容易理解了。
论文提出的算法流程可以分成三大过程,如下图所示,分别是基类数据训练过程、遗传选择最优学习策略、使用最优学习策略在新类数据集上对网络微调并测试准确率。这三个过程分别对应图中的(a)、(b)、(c)。下面具体介绍每一过程的做法。
由于论文算法是寄生于现存少样本学习算法中的,因此下面在介绍算法具体过程时仅以训练特征提取器的过程为例,而不会描述出一个完整的少样本学习算法。
这是算法的第一步,要使用基类数据集训练一个特征提取器,用于后续的迁移学习中。这一过程就按照现存少样本学习算法中的要求完成即可,没有创新点的加入。
完成特征提取器的训练后,就要为网络的微调选择一个最优的学习策略 v ∗ v^* v∗,作者提出遗传算法来完成选择。这一过程基于验证集完成(即微调时使用的训练样本和计算准确率使用的测试样本均来自验证集),下面展示遗传算法的大致流程。
论文中没有讲明基因突变和基因交叉的具体实现方法,不过基于传统的遗传算法,我猜测作者是将学习策略构造成二进制编码的形式,突变即是对原二进制编码中的一位或几位取反,交叉是对两个二进制编码求异或。
最后,在面对新类构成的少样本学习任务时,采用第二步获得的最优学习策略以及FSL任务中的support set,对特征提取器进行微调即可。并可以在query set上测试准确率,判断学习策略是否有效。
论文在CUB和miniImageNet数据集上进行了实验。
作者将自动搜寻学习策略、手动选择训练参数和固定训练参数这三种情况进行了对比,实验结果如下。可以看出论文中的自动搜寻策略可以少量提升准确率。
作者还对跨数据集的迁移进行了实验,从miniImageNet向CUB200-2012迁移,实验结果如下,可以看出本文的算法可以大幅度提升少样本分类准确率。说明当基类和新类差距较大时,选择策略起到的作用更大。
之前也有一些论文以解决少样本学习中的迁移问题为目的,它们在基类和新类差距大的时候起更大的作用(比如miniImageNet向CUB200-2012的迁移)。对于一般的数据集如miniImageNet 中基类向新类的迁移,起的作用可能并不大。
但是对于更大的数据分布差距,比如由自然图像向X射线图像迁移,这类算法可能起不到作用,还需要寻找其他的方式完成知识迁移。此时,可迁移的知识量应该是很少的。