小样本学习和迁移学习

迁移学习

transfer learning大家都知道,一个典型例子就是在Imagenet训练一个backbone,然后在另一个新的数据集上(比如cifar、cub)的训练集微调(fine-tune)backbone,然后在这个新的数据集的测试集上对模型进行测试。

那为什么不在新数据上从头train一个模型?我们都知道,Imagenet图片量很大,且图片所覆盖的域较为全面,可以近似看作对真实世界数据分布的刻画,因此希望在ImageNet上训练的模型能够提取通用的图片特征,而这种通用的特征很可能能迁移到下游一个没有见过的图片域。因此广泛认为,在ImageNet(或者更大的数据集)上训练一个backbone,然后再微调是最好的方式。这也是为什么这两年大家如此钟爱于超大数据预训练模型,有监督半监督自监督应有尽有,就是想着像bert一样造一个万能模型解决一切任务。

域适应

域适应,是最近几年比较火的一个技术方向。顾名思义,域适应就是要适应不同的域。详细一点说,就是我们有数据集A,但是我们却希望能够在数据集B上应用我们的模型,数据集A和数据集B有联系,但是不一样。比如,我们想训练一个漫画图片识别的模型,识别出来漫画中不同的物体。但是我们没有标注好的漫画图片 (Target),只有大量的现实生活中的照片 (Source)。这两个数据集有着千丝万缕的联系,但是又存在比较大的差别,从而引出域适应方法。

通常,我们把Source 和 Target 上的数据,都投影到某一个共同的空间上。在这个空间上Source 和 Target的数据差异会变小,就可以当成同一个数据集了,我们就能用各种分类器在这个空间上进行训练。

域自适应问题定义为:源域(source domain)和目标域(target domain)共享相同的特征和类别,但是特征分布不同,如何利用信息丰富的源域样本来提升目标域模型的性能。源域与测试样本不同的域,源域具有丰富的监督标注信息;目标域是测试样本所在的领域,目标域无标签或者只有少量标签。源域和目标域往往属于同一类任务,但是分布不同。

transfer learning有一个区别于domain adaptation的非常关键的点,即训练时的数据集和微调时的数据集的图片不仅domain不同,category也通常是不一样的(域适应的category一样,但transfer learning的不一样)。

由于category不同,导致微调时原有的网络分类层不能用了,要重新学习一个;

而由于domain不一样了,backbone提取的特征也不够具有判别性了,因此需要finetune backbone。后面将看到,从这两点将直指few-shot learning核心问题。

meta learning与few-shot learning的关系

首先,few-shot learning的背景是:基于少量样本训练一个模型。通常,在使用常规训练策略的情况下,少量样本会导致模型过拟合,所以要探索其他学习策略。few-shot learning的目标任务是单任务。

meta learning面对的任务是多任务,meta learning需要学到多个任务中最好的模型参数,本质是让模型能更快速适应新任务:在multi-task下学习tasks’ meta knowledge。

至此可发现,meta learning与few-shot learning具有一个共同点:需要在某个任务上快速适应(fast adapt),快速适应指的是在少量样本下就适应到该任务。因此,few-shot learning可以使用meta learning来处理。

对于few-shot learning,为了克服只有少量样本的缺陷,可以利用meta learning的多任务假设,如果假设有多个任务并且多个任务是相似的,则可以弥补少量样本的单任务学习(虽然没有目标任务上的大量训练样本,但可以使用大量相似任务(每个任务都是少量样本)作为补偿),比如:我们在这些多任务上进行基于度量的学习,从而强化模型对目标任务(少样本单任务)的感知能力。

discussion about transfer and few-shot

transfer learning的setting,是假设我们能够接触到足够多的目标数据集的labeled data的,但在实际应用时,往往目标数据集的labeled data是不足的。因此,这种setting在预训练模型十分重要的当下,是极具价值的。那么这个setting和few-shot learning有什么关系?

这个在transfer learning目标域labeled data不足的setting,就是我们常说的few-shot image classification,或者也可以叫做few-shot transfer。现在清楚了,few-shot image classification其实等价于限制目标域labeled data数量的transfer learning,那么问题来了,transfer learning基本就finetune一条路,玩不出花,为啥一旦把目标域数据量限制到很小,就出现了各种百花齐放的方法呢?这些方法包括但不仅限于meta-learning、conventional training、metric-based method、generation-based method、linear classification、dense-feature based method。

回顾19年谷歌发布于CVPR的一篇论文:Do Better ImageNet Models Transfer Better? 该文探究了ImageNet上训练的模型的transfer learning效果。论文中的图9给出了transfer learning随着目标域labeled data数量增长时的效果变化,图片如下:

红色的线为finetune方法效果,绿色的线为冻住backbone,用目标域数据训练一个线性logistic分类器的效果,紫色为在目标数据集上从头训练一个模型。

首先,紫色线效果不行,说明transfer的必要性。其次,重要发现在于finetune和线性分类的performance在给定不同目标域数据量的差异。

在目标域labeled data数据量较大情况下,finetune通常占据压倒性优势,但在few-shot场景下,finetune方法往往比不过冻住backbone的线性分类方法,注意到,该论文虽然降低了每类别的样本数目,但没有降低类别数目,而这些数据集上类别数目都很大,如果我们自己做新的实验,当类别数目变小时两种方法差异更大,这表示finetune效果与labeled data数据总量正相关。这种现象,仔细思考其实很好理解,因为finetune backbone调整的参数量过多,在few-shot setting下很容易使得模型过拟合。这也解释了为什么MAML这类基于finetune的方法在few-shot learning下表现明显不如metric-based method等其他冻住backbone的方法。

既然不能finetune,那么理所当然地,在源域所学得的network backbone质量就至关重要。换句话说,从backbone得出的feature需要足够generalizable。这一目标正是19-21年整个 few-shot community关注的重点之一 ,而该目标又恰好和这两年基于linear protocol evaluation的对比学习一致。此时,few-shot learning本质问题至此来到了vision problem的深水区:怎么学得一个泛化能力极强的visual representation,使得在遇到下游极端奇异且少量labeled data时仍表现良好?或者说,现有学得的visual representation在很奇怪的图片上时仍然存在怎样的问题?这些问题都是传统transfer learning(finetune)不具有的,也是few-shot learning的核心问题之一。从早期的元学习,到后来metric-based pretraining(cosine classifier)以及加各种自监督学习、蒸馏学习,目标都是学一个更好的特征表示。

如果看过Big Transfer(BiT),可能会问一个问题:是不是只要数据量足够大,特征表示就足够好,小样本分类问题就解决了?回答应该是,部分程度解决。首先小样本分类效果和源域数据集大小在绝大部分目标数据集上是正相关关系,因此增大训练数据量是一个非常好的途径;但是,实验发现,这一增长在某些domain gap差距较大的数据集上,特别是实际遇到的真实应用场景中,是有上限的,如果不能从根本探究清楚pretrained visual representation在小样本下存在的问题,或者不使用除finetune之外的目标数据集adaptation方法,这一瓶颈看上去将无法解决。因此,few-shot image classfication这一问题有其独特价值,与image representation learning的核心问题紧密相关。

few-shot learning进一步思考

用于提取特征的backbone从源域训练学习到general image representation之后,在测试时,即在目标域上few-shot任务的所有图片,不管是support(few-shot的训练样本)图片还是query(few-shot的测试样本)图片,大部分方法均会先将其转为representation再进行下一步操作。这导向另一个问题,即在给定的提取representation的backbone下,如何最大化利用support set这些少量图片的representation构造一个分类器,使该分类器具有良好泛化能力?把图像represention的潜力发挥到极致的方法很多,而这直接导致了few-shot learning方法的百花齐放。

当目标域的类别在backbone训练时没有见过:backbone会不知道在纷繁复杂的图片中应该关注什么信息。比如一张图,一个人牵着一只狗,标签为人,但由于网络在训练时可能只把狗作为标签(比如imagenet),因此提取特征时便关注狗去了,而不是人。为解决这类问题,dense-feature based方法应运而生,其核心思想是backbone出来的feature不经过global pooling,保留了spatial信息,对比不同图片的spatial feature map,从中找出对应关系,这样如果有两张图,其共性是人而不是狗,那通过这种人和人的对应关系就能把狗这一confounding factor(混杂因子)给去除。这一类方法论文如:CAN、CTX、DeepEMD、LDAMF、MCL。

可以看到,训练学得一个good representation,和测试时从有限labeled data建立一个好的分类器在一般的任务中是可以统一起来的。如果要真正解决问题,还是要探究visual representation在目标域labeled data是few-shot时所存在的核心问题,这样的研究很少;涉及如何给定pretrained feature,做到快速task adaptation,核心点是:

取pretrained feature之精华,去其糟粕。

从support set feature及query feature中最大化可用信息,比如从support set中找类内共性,或者找support feature和query feature之间的对应关系,或者从训练集中找寻并利用和support set的相似图片,它们可以统称为task adaptation。

原文链接:https://blog.csdn.net/qq_40943760/article/details/124676806

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值