做者 | 岳中琪
git
编辑 | 陈彩娴github
本文主要介绍一篇被NeurIPS 2020接受的论文《Interventional Few-Shot Learning》。算法
这篇工做根据小样本学习当中的因果关系,提出了一种新的基于因果干预的分类器IFSL,去除了预训练带来的掺杂效果,在各类方法上取得了稳定的提高。安全
主要的优点有:
微信
普遍适用于各类基于微调(fine-tune)或是元学习(meta-learning)的方法,即插即用;网络
无需额外的训练步骤,原来模型咋训练,加上IFSL仍是咋训练;架构
若是预训练数据集不公开,好比一些商用数据集只公开分类器和特征提取器,那么元学习的方法就不适用了,只能用微调。在这种状况下,IFSL仍是能够大幅提升性能。机器学习
论文连接:https://arxiv.org/pdf/2009.13000.pdf性能
Github开源地址:https://github.com/yue-zhongqi/ifsl学习
论文第一做者:岳中琪,目前是阿里巴巴和新加坡南洋理工大学联合博士项目在读2年级,在MReal实验室进行迁移学习和因果关系方面的研究,导师是张含望老师。本科是由新加坡企业奖学金全额赞助、在南洋理工大学毕业。
1
小样本学习的介绍
2019年,Open AI Five以碾压的表现打败了Dota2世界冠军战队OG,然而在这使人惊叹的表现背后,是12.8万个CPU和256块P100数个月训练的结果,至关于不间断练习了45000年的游戏。
很显然,目前一个鲁棒的机器学习模型还难以离开大量的数据、长时间的训练以及高昂的训练成本。而小样本学习就致力于经过极少的训练数据(1-5个样本/类)来实现模型的泛化。
那么,如何进行小样本学习呢?
这一点咱们能够观察人是如何快速学习的。例如一我的玩策略游戏帝国时代很厉害,那么若是去学习诸如星际争霸的其余策略游戏,就比较容易上手,由于能够运用之前的游戏经验,一通百通。一样的,对于机器而言,在少许样本上快速泛化的核心,就是借助先验知识。
预训练是(Pre-training)你们都熟悉且很是有效的获取先验知识的方法。具体就是在大型数据集上,学习一个强大的神经网络做为特征提取器,例如CV里面常见的在ImageNet上预训练的ResNet网络,或是NLP里面在Wikipedia上训练的BERT,都表明一种特征表达的先验知识。
在预训练基础上,咱们只需在样本数量少的目标任务中,微调部分(例如只训练最后一层fc分类器)或者所有网络的参数,便获得了一个能够解决小样本学习问题的模型。
预训练至关于给了小样本学习一个好的起点,就像一我的在上课前预习了大量的知识点。不过想要更上一层楼,还须要有效的学习方法。元学习(meta learning)的目的就是找到这种方法。
具体来讲,咱们能够从预训练集中,每次采样出来一个“沙盒”版小样本任务,例如选5个类,每一个类选5张图片做为训练集(support set),再选15张做为测试集(query set),而后咱们要求模型在support set训练的结果,可以在query set上面取得好的表现。
其实这种学习策略在咱们身边随处可见,例如准备考试的时候,咱们会提早作一些模拟测试,了解题型,规划答题节奏等等,这就是一种元学习。在小样本学习的实际操做中,咱们可使用元学习训练一个模型的初始化参数(MAML),或是一个分类器参数的生成网络(LEO)等等。
经过元学习获得的知识,就构成了一种学习方法的先验知识,在预训练的网络之上,进一步提高小样本学习的表现。
综上所述,小样本学习的解决思路,能够用下面这张图来归纳:
咱们先在一个大的数据集 上面预训练一个特征提取网络 ,以后咱们既能够直接使用 在每个小样本任务中微调(红色方块的Fine-Tuning);
也能够进一步使用元学习(Meta-Learning),将 拆成一个个由support set 和query set 组成的沙盒任务 ,训练高效的学习方法 ;
元学习结束之后,咱们就能够用这种高效的学习方法,在小样本学习的任务中进行微调(绿色方块的Fine-Tuning)。
小样本学习的两种解决思路
2
亦正亦邪的预训练
预训练是小样本学习中一个核心的环节,不管是基于微调的,仍是基于元学习的方法,都以预训练为开始。那么从常理来讲,更强的预训练,应该会带来更好的小样本学习的表现,例如在现有文献中,使用更深层的神经网络架构WRN-28-10的微调结果,每每会比相对较浅的ResNet-10表现好不少。
然而咱们在微调的实验中发现(见左边的直方图),虽然平均WRN-28-10(strong )更好,但当query set和support set区别很大的时候,结果是偏偏相反的,浅层的ResNet-10反而表现更佳!这是为何呢?
上图的右边是一个 和 区别很大的例子,其中预训练时候见过的草的颜色是support set里的一个误导因素,分类器容易踩坑,以草的颜色(见过)而非动物自己(没见过)做为分类依据。
而越强的预训练模型,这些见过的草,相比于没见过的动物,就会产生越鲁棒的特征,对于分类器就更加误导了,聪明反被聪明误。
为何这个问题一直没有被发现呢?
其实就是由于被现有方法基于随机取样后平均的评估策略所掩盖了。
咱们的工做也首次为这个现象提供了解释。
具体来讲,刚才讲的这个悖论是由小样本学习当中的因果关系形成的。预训练在带来丰富的先验知识的同时,也成了学习过程当中的一个混杂因子(confounder),使得分类器难以找到样本特征和样本标注之间真实的因果关系。咱们用一张因果图来具体说明。
: 这里 表明预训练的先验知识, 表明图片的特征表示,箭头的意思是,咱们用预训练获得的特征提取器,得到样本的特征.
: 其中C表明一个样本X在预训练数据流形上面的投影;一个例子是eigenface,咱们将高维的训练集(),经过PCA找到这些图片的基(也就是eigenface),这样一张人脸图片(),就能够被表示成这些基的线性组合,而线性组合的系数就是 。相似的现象在深度学习的训练中也会出现,具体能够参考咱们论文里面的引用。
: 当咱们用特征 训练一个分类器预测标签 的时候,分类器会不可避免的使用 里面的信息;也就是说 是特征里面低维度信息的影响,而 是 里没有包含的冗余信息带来的影响。
在这个因果图中,注意到 是 和 的共因( ),这样 被叫作 和 的混杂因子,从而致使观测到的 ,被混杂的关系 污染,而不能反映 和 间真实的因果关系了,刚才分类器被草的颜色迷惑的缘由,其实就是分类器使用了 里“草”的语义信息,做为分类狮子的依据。
那么当存在混杂因子的时候,咱们应该如何学习 真实的因果关系呢?这就要用到干预(intervention),即 。干预 会切断因果图中全部指向 的箭头(以下图),这样以前产生混杂的这条路 被堵住了,咱们就能安全的学习想要的因果关系了。
咱们的这篇工做使用后门调整(backdoor adjustment)来实现 ,咱们的因果图对应的后门调整是:
具体来讲,就是对预训练的知识 进行分层(见图中的 ),每一层有本身的分类器 ,而后把每层分类器的结果经过先验几率 平均起来。
关于混杂因子、干预和后门调整的具体介绍,你们能够参考一下咱们组王谭写的《无监督的视觉常识特征学习——因果关系上的一点探索》(CVPR 2020)(论文连接: https://zhuanlan.zhihu.com/p/111306353)。
3
基于干预的去混杂
预训练在带来特征表达的先验知识的同时,也成为了混杂因子而迷惑了分类器的训练,而咱们打算经过对预训练知识分层,而后用后门调整来找到 和 之间真实的因果关系。下面讲具体如何实现分层和后门调整。
咱们是从预训练的神经网络所自带的两个属性来寻找分层的灵感的:1)特征维度,例如ResNet-10是512维的特征,每个维度表明CNN里面的一个通道,对应了图片中的一些视觉信息;2)预训练的类别,例如在miniImageNet上预训练所使用的64个类,那么预训练所获得的64类分类器,就能够看做对预训练数据集知识的一种蒸馏(knowledge distillation)。
基于这些灵感,咱们提出了三种不一样的实现方案,分别是基于特征的调整(feature-wise adjustment),基于类别的调整(class-wise adjustment)以及两种结合起来(combined adjustment)。具体这三种调整是如何对应后门调整公式的,你们能够参考论文第三章,这里我只是讲一下具体的实现。
基于特征的调整:将特征向量 劈成 等份,在每一份对应的维度里学一个分类器,最终 是把 个分类器softmax后的几率算个平均。例如把ResNet-10的512维分红4份,每128维为一份,学习4个分类器;
基于类别的调整:首先咱们在预训练的个类中,各自算一个平均特征 ,即把全部属于这个类的图片特征平均一下;对于任务当中的一个样本特征 ,咱们用预训练的分类器算出这个样本属于 个类的几率 ,使用和,咱们能算出来一个新的特征向量 ;而后咱们把原始特征 和这个 拼起来,用来训练分类器,注意这里只训练了一个分类器,不过度类器输入的维度是 维度的二倍;
结合调整:至关于先作基于类别的调整,再作基于特征的调整。仍是以ResNet-10和N=4为例子,对于每个样本 ,咱们算出之后,把和各自劈成4份,而后一一对应的拼起来(好比的前128维拼上的前128维),而后训练4个分类器, 一样是把4个分类器的输出几率算个平均。
能够看到,咱们基于干预的这个方法只改变了分类器的架构,所以能够广泛的加入基于微调或元学习的小样本学习方法,而且无需增长额外的训练步骤。
4
实验结果
4.1 广泛适用,涨点明显
由于咱们的方法是在分类器层面的改动,因此能够广泛的加入到各类微调和元学习的方法当中。咱们在经常使用的微调方法(linear,cosine和k-NN),以及5种不一样思路的元学习方法上面作了大量的验证,在miniImageNet和tieredImageNet上面取得了广泛的提升。
4.2 去除预训练的混杂
咱们提出了一种新的Hardness-specific Acc来诊断小样本学习。对于每个测试样本,根据它和训练集support set的类似程度,咱们定义了一个难度系数,这样咱们能够观察模型在不一样测试样本难度下的表现,而越难的样本就越容易在上面被预训练的知识误导。
下图展现了微调当中baseline和ifsl的hardness-specific acc,能够看到IFSL(实线)在各个难度下都超过了baseline(虚线),说明起到了去除混杂的做用。更详细的分析能够参考论文。
4.3 帮助模型聚焦物体
模型在作预测的时候,是根据图片上的哪一部分呢?
咱们提出了CAM-Acc:在一张图片上先计算Grad-CAM分数(越高表明模型越关注这一部分),CAM-Acc是Grad-CAM分数高于0.9的区域中,在物体bounding box内部的比重。
咱们来看一下Grad-CAM可视化的结果,以及CAM-Acc的表现。经过可视化和CAM-Acc的分数,能够看到IFSL的模型的确可以多注意物体自己。固然也有失败的时候,好比看到当物体过小的时候(蚂蚁),baseline和IFSL都只能依赖背景中的context去作预测了。
5
结语
预训练的先验知识,是近些年来小样本学习分数快速提高的重要缘由。
咱们的这篇工做,实际上是从因果的角度分析了预训练对于学习一个分类模型的影响,揭示了基于 的分类器会被先验知识混杂,想固然的作出预测;
而基于干预 的去混杂方法,就是在一个不熟悉的小样本学习任务中,平衡先验知识的影响,作到三思然后行。在这个思路下,咱们提出了IFSL分类器,简单、普适且有效。
事实上,这种对先验知识的处理方法,能够被应用于任何使用预训练的任务当中,由于下游任务中的训练数据,比起大规模预训练来讲,都至关于小样本学习了。
https://zhuanlan.zhihu.com/p/260876366
[博文视点赠书福利]
在10月1日头条《》留言区留言,谈一谈你对这两本书的见解或有关的学习、竞赛等经历。
AI 科技评论将会在留言区选出15名读者,送出《阿里云天池大赛赛题解析——机器学习篇》10本,《集成学习:基础与算法》5本,每人最多得到其中一本。
活动规则:
1. 在留言区留言,留言点赞最高的前 15 位读者将得到赠书,活动结束后,中奖读者将按照点赞排名由高到低的顺序优先挑选两本书中的其中一本,得到赠书的读者请添加AI科技评论官方微信(aitechreview)。
2. 留言内容会有筛选,例如“选我上去”等内容将不会被筛选,亦不会中奖。
3. 本活动时间为2020年10月1日 - 2020年10月8日(23:00),活动推送内仅容许中奖一次。