本文记录近期阅读过的小样本跨域相关论文,每一篇文章都经过了自己的深入思考和总结,按照:解决什么问题、动机、方法、数据集、结论和启发的顺序进行总结,同时会有部分细节的补充。
论文链接:https://arxiv.org/abs/2001.08735
缓解各个域上的分布不同带来的性能差异。
1.feature-wise transformation layers(特征转换层),通过仿射变换增强图像特征在训练阶段模拟不同域下的各种特征分布。
2.为了捕捉不同域下特征分布的变化,使用元学习的方法优化feature-wise transformation layers的超参数。
**在训练阶段通过特征转换层模拟图像特征的各种分布。**动机图如下:
创新点1:使用特征转换层来模拟从不同领的任务中提取的各种图像特征分布。 特征转换层与方法无关,可以应用于各种基于度量的小样本分类方法,以提高它们对未知域的泛化能力。
创新点2:提出一种元学习的方法来优化特征转换层的超参数。 与参数手动调整过程相比,所提出的元学习算法能够为特征转换层找到超参数,以捕获各个域中图像特征分布的变化。(使用一个学会学习的方法去搜索特征转换层的超参数。maml相似的优化方法)
评估了三个基于度量的小样本分类模型和图神经网络的性能,并进行了域泛化设置下的实验。 实验表明,所提出的特征转换层可以有效地提高基于度量的模型对未知域的泛化能力。 还通过用于学习特征转换层超参数的元学习方案展示了进一步的性能改进。 具体实现:集成特征转换层,将具有仿射变换的特征激活调制到特征编码器中。感觉和 CVPR2022 在编码器中插入模块的方法有点像。方法图如下:
方式:在BN层后面插入了feature-wise transformation layer。multiple levels:在BN层后面加的这个变换,而BN在不同的层,所以是multiple levels.参数更新:训练的时候根据在可见域上的loss去更新encoder和度量方法的参数。根据在未知域上的loss去更新the feature-wise transformation layers的参数。
mini-imagenet 永远当作源域,从这几个域中(CUB, Cars, Places, and Plantae)筛选出一个unseen域。
本文归根结底是提出了一个即插即用的特征转换模块来增加源域的特征多样性,以达到最大限度的涵盖多种特征的目的,从而尽可能拉近源域与目标域的分布距离。将该模块放入任何基于度量的模型中,都会有效果上的提升。还提出一个元学习的方法来优化特征转换模块的超参数。根据实验结果看,元学习的调参方法相对会提升至少2%,是有效的。
结论1:**跨域的关键性难题:从任务中提取的图像特征在不可见区域的分布与可见区域的分布有显著差异,不同域上提取得到的特征分布是非常不同的。
**启发1:所提出的用于调节中间层的特征激活的特征转换层(通过应用随机仿射转换)也可以被视为一种正则化网络训练的方法。
结论2:为什么能提高the generalization ability of the metric function M?直观上,特征编码器E与特征转换层相结合可以产生更多样化的特征分布,从而提高度量函数M的泛化能力。与ICLR那篇文章极其相似,都是通过调整编码器的参数来调整度量函数。
结论3:t-sne可视化的:在特征转换层的帮助下,从不同域提取的特征之间的距离变得更小。
结论4:提出的“学习到学习”方案可以进一步帮助特征转换层捕获不同领域特征分布的变化,从而缩小领域差距,提高基于度量的模型的泛化能力。因为适应不同域的参数是不断变化的,所以证明了可学习参数的重要性。
为什么在要在测试时候去掉特征转换层?
我们回到特征转换层的本质—— augmenting the image features.所以,特征转换层本质上是一个数据增强操作,和我们普通的图像裁剪,旋转等等是一样的。所以我们在验证包括测试的时候,是不需要再增强数据的,特征转换层只是为了模拟不可见域的特征分布,提升模型的泛化性。所以,我们在val和test的的时候,是不需要它的。
也就是说,开始的时候特征转换层的目的是扩大训练集的数据分布,根据更大的数据分布得到的loss去更新优化编码器和度量函数。
然而特征转换层在扩大数据集起到数据增强作用的时候不是盲目的在扩大,而是根据,当前的编码器和度量函数在不可见域的损失去更新自己的参数,这样就能向着不可见域的方向去转换。
论文链接:https://arxiv.org/pdf/2010.06498.pdf
作者认为当域的跨度较大时,low-level的特征仍然可用,但是high-level的特征不再适用于新的域。本文提出的表示融合方法:将深度神经网络的不同抽象层次统一为一个表示。通过Hebbian learners acting实现表示融合。
Insight 1.作者认为,现在的cross domain meta-learning方法使用图片的高层特征作为分类器的输入,但是domain shift可能会导致一些高级的概念(如人的耳朵、鼻子、眼睛)在源域和目标域之间不共享。
2.而图片中的低层特征(如线条、正方形)仍然可以共享和使用。作者的想要把低层特征作为分类器的输入,这更有利于domain shift。
3.但是特征是高层还是低层并不是一个能 量化 的概念,这取决于目标域和源域之间的距离。
4.为此,他使用特征融合方法把不同层级的特征融合起来,通过训练,模型会自己选择使用什么层级的特征。这个特征可以在源域和目标域之间共享。
提取各个level的特征,也就是网络的不同阶段的特征。
其中低level受跨域的影响较小,高level受跨域的影响较大。表示融合采用一种快速自适应的系统来检测深度神经网络中不同抽象层次的相关信息。具体做法:根据当前的episode灵活地选择特征的特异性。通过表示融合来实现这一目标,其中Hebbian学习规则并行应用于骨干网络不同层次的多个层。这将为每个抽象级别产生一个单独的预测。最后的分类结果是由各自的Hebbian学习器产生的对数的和得到的。
Method:
(1)在源域预训练模型
(2)在目标域,分别把神经网络的最后L层作为最后一层,使用hebb rule做微调(hebb rule类似于反向传播,但速度更快),得到L个分类器。
(3)对于测试数据,L个分类器会得到L个结果,通过softmax得到最终的预测结果。
CDFSL和miniImagenet AND tieredImagenet
**结论1:**当域转换比较小的时候元学习是奏效的;当域转换比较大的时候,作者认为主要是high level的概念有很大的差别。low-level的概念仍然可用。
**结论2:**另一个有趣的发现是,对于具有最大域偏移的数据集ChestX数据集,较低级别的特征变得重要。一般来说,unseen域离原始领域越远,来自较低层次的特征就越重要,即与原始领域不太特定的特征。那是不是我from scratch开始训练得到的模型在跨域上的效果更好?应该不是,from scratch训练的ViT模型本身的准确率就很低。
**结论3:**使用FID比较了CDFSL中的四个数据集与miniimagenet的差异程度,Fre?chet-Inception-Distance (FID)是一种用于评估图像生成模型质量的指标。FID值越小,表示生成图像与真实图像越接近,模型质量越高。四个数据集与miniimagenet之间的相似程度的由大到小排序:EouroSAT、CropDiease、ISIC2018、ChestX,这也刚好与跨域场景下这几个数据集准确率的顺序相符。域差的越远越难分类,准确率越低。
知识1:Hebbian学习是一种基于这样一个理念的学习方式:当两个神经元一起被激活时,它们之间的连接会被加强。它得名于加拿大神经心理学家Donald Hebb,他在1949年首次提出了这个理论。
知识2:因为在测试的时候是采样的进行测试,所以有一个加减的值,95%置信区间指的是对样本平均值的置信区间,可以解释为“在重复抽样的情况下,我们有95%的把握认为该区间包含了真实总体的平均值”
论文链接:https://openaccess.thecvf.com/content/ICCV2021/papers/Li_Universal_Representation_Learning_From_Multiple_Domains_for_Few-Shot_Classification_ICCV_2021_paper.pdf
可见域与不可见域之间模型通用性的问题,采用了特征约束和结果约束,目的是学习各个域之间通用的特征。
通用特征的定义: works equally well in multiple domain。
**学习一个单一的通用特征提取器fφ,它是从多个特征提取器fφ?中蒸馏得到的。**在元测试阶段,我们使用线性变换Aθ来进一步完善通用表征,以适应未见过的域。
使用一个a single multi-domain network(通过不同域上的网络蒸馏得到)的好处有两点:
1.都蒸馏到一个网络,这个单一的网络在时间和和空间消耗上更小,在meta test阶段更快。
2.蒸馏了多个域的网络的知识,multi-domain representations能包含对应于各个域的所需要的信息.
总共十三个数据集(包括metadateset),前八个用来训练并且测试域内的性能,后五个用来评估跨域的性能。
跨域的关键是:
利用领域中的共性,同时尽量减少干扰。**作者认为使用多个域的特征表示是跨域泛化性成功的关键,**能学习到通用于各个域特征。
论文链接:https://proceedings.mlr.press/v162/luo22c/luo22c.pdf
本文发现通道在不同的任务上有不同的重要程度。
然而卷积在这方面并不敏感,或者在这种转换下给出错误的回应。channel bias problem存在并且分布转换扩大之后这个问题越严重。
不同的类别关注于不同的有判别性的信息!不同的任务使用不同的具有判别性的通道特征!不同的通道检测不同的对象!而这个通道特征的重要程度就体现在MMC的大小。本文为了适应不同的任务,才去调节MMC,让他更平滑。
本文并不是选择通道,而是直接使用数学的方式调节通道!
本文通过直觉上和实验上证明了不同的任务对通道的敏感程度是不一样的,也就是说当遇到新的任务时,模型之前关注的通道(参数),在新的任务上并不奏效。针对这一问题,本文提出了一种使得通道变得平滑的转换(数学转换公式1),能抑制数值较大的通道,放大数值较小的通道,通过这种变化使得通道变得更加平滑。同时,本文通过大量的实验证明提出方法的有效性。并根据实验进行了充分的解释,提出了很多有用的结论。
自己的数据集,没有与任何方法对比,自己与自己的不同方式对比说明通道的重要性。
最大的启发就是:不同的图像表示通道负责检测不同的对象。
那么,self attention的多个头数学方法的转换很难模仿,有没有其他的方法对通道或者头进行调整以适应不同的类/域/粒度?
论文链接:https://porikli.com/mysite/pdfs/porikli%202022%20-%20ConFeSS%20A%20framework%20for%20single%20source%20cross-domain%20few-shot%20learning.pdf
本文提出了一个对比学习和特征选择系统,的小样本学习框架Confess, 解决了基类和新类之间存在较大域偏移的问题。
目前的方法在源域和目标域存在较大域间偏差时实用性较差。本文认为:
1)无监督学习可以缓解监督崩溃问题,并且训练得到的模型可以更好地推广到目标域中。
2)因为源数据集和目标数据集之间存在很大差异,因此对源任务有用的特征可能对目标任务没有帮助,甚至有害。所以本文期望在小样本的情况下,通过提取**更少的特征(通过筛选)**来提升泛化性能。
第一步:通过一个feature masking module去约束筛选对目标域样本相关的特征。
第二步:根据筛选出来的特征对backbone进行regularizing(通过一个新的损失约束筛选目标域的特征)。这两步都是在目标域上进行。而第一步的筛选模块实际上与SENet类似,都是通道维度的筛选。同时增加了好几个损失去确保筛选的到特征的质量。Channel Importance Matters论文表明,ConFeSS的成功可能是由于在转移到新任务时放弃了过于自信的通道,从而缓解了通道偏见问题。
CDFSL
结论1:对源任务有用的特性可能对目标任务没有帮助,甚至是有害的。启发:方法中的第一步,我可以在模型训练的过程中使用unseen的图片进行源域上patch的筛选,训练出与当前域最为相似最为接近的特征,在测试的时候也只使用对unseen域最为相似的特征去进行学习。**先筛选,再学习。**也就是说模型本身已经很好的学习到各个卷积核各种通道的特征了,但是到了新的域并不到用哪个,所以需要这种mask的方式去学习用哪个通道去进行新域上的分类。是选特征而不是调整特征。
**启发:**1.learns an additional deep metric function,这是一个可以拓展的点,如果能得到一个更加有效的度量方式,能适用于所有的基于度量学习的方法,那么将是一个很大的突破。
2.本文是单源域跨域的小样本分类问题,训练集只是一个域,而不是多个域,与上面的方法没有可比性。
3.本文给出的对比学习适用于迁移学习的解释:因为对比学习的特征更侧重于容易适应的中低级特征。
4.对于较少的shot设置,特征掩蔽模块更为重要。(特征掩码也就是通道特征的选择),shot多了不需要掩码操作:因为50个shot设置有大量的训练样本,并且不需要掩蔽模块。也就是说shot少的时候需要掩码来辅助,而shot多了finetune就能学的很好了。
5.在某些数据集中数据增强起反作用。
论文链接:
https://openreview.net/pdf?id=H-iABMvzIc
本文最大的创新点:在连续的训练迭代中切换域。
同时切换域的过程中有那两点的约束。
DSL有两个约束条件:
1)深度模型不应该在当前迭代中过度拟合该领域(不能在当前域记住的过多);
2)深度模型不应该忘记其他领域已经学过的知识(再遇到相同或者相似的域,能直接用学过的知识)。是从这两个角度去分析跨域模型。
本文的训练方式与传统的训练方式不同:DSL不是简单地混合所有域来构造一个mini-batch(图1 (a)),而是在每次训练迭代中只包含一个域,并在下一个迭代中切换到另一个域。这种领域转换学习方式的一个重要优点是,它可以抑制从特定领域知识中学习到特定域的知识。两点限制:the domain-specific prompter作用:防止在当前域上过拟合。the domain-general teacher作用:防止遗忘已经学习到的域知识。
将mini-imagenet作为源域,在其他域上评估与混合训练之后评估,没有与其他人的方法作比较,自己与自己做的比较。
结论1.跨域泛化能力可以从训练阶段继承到测试阶段。
结论2:忘记了特定领域的知识是有好处的,忘记领域泛化的常识是有害的。
小trick:测试阶段的分类器和训练阶段的分类器是不一样的,这也是之前的工作常用的方式。本文重点关注与训练阶段encoder F和classifier Y的学习。(因为本文就是训练方式上的改进)。创新:修改了交叉熵损失和KLD损失。
细节1:每个mini-batch(对应一次迭代)在一个域,不断地再各个域之间循环采样训练。
结论3:若在单一域上使用本文的方法,发现提升不明显。作者给的解释:单一域不能发挥优势,本文的训练方法发挥了多域的优势:域切换学习方式可以更好地忽略域特定知识,从而提高跨域泛化能力(与ICLR2023密集型预测任务训练方式类似)。
与下一篇对比:叙述DSL与FWT的不同之处:DSL的特点是其新颖的快速切换方式,并发现这种方式促进了领域知识的学习。其次,DSL进一步考虑了多域训练策略中的两个约束,即深度模型不应过度拟合每一个域,并保持对学习到的知识与其他域共享的识别。最后,DSL实现了比FWT更好的跨域效果(章节4.2)。
论文链接:https://openaccess.thecvf.com/content/CVPR2022/papers/Li_Cross-Domain_Few-Shot_Learning_With_Task-Specific_Adapters_CVPR_2022_paper.pdf
提出直接在一个小的支持集上从头开始学习特定任务的权重,而不是动态地估计它们。
适应Feature extractor adaptation时候存在的问题:
非常高维度的特征与a small number of support samples之间的不对称的优化。
a->b是之前的工作,c->d是本文的工作。本文方法好处:训练的时候只训练特征提取的部分,训练结束后丢掉classer,只训练adapter和pre-classifier transformation β。
解决方法:attach task-specific adapters directly to the existing task-agnostic model。其中ra和Aβ是可选择的结构(对ra来说使用残差比串行好,对Aβ来说使用矩阵比向量好。),作者尝试了很多种。训练的时候只训练特征提取的部分,训练结束后丢掉classer,只训练ra和Aβ。Aβ是上一篇论文的方法。
总共十三个数据集(包括metadateset),前八个用来训练并且测试域内的性能,后五个用来评估跨域的性能。
局限性:fixed adapter parameterizations ,不够灵活。参数是可学习的,也要把结构变成可学习的?
说明了在跨域问题中有根据域的不同去调整参数是至关重要的。
论文链接:https://arxiv.dosf.top/pdf/2303.14969.pdf
提出了一个解决小样本的稠密预测任务的通用的模型,可以同时解决十几种稠密预测任务。
VTM 的设计灵感源于类比人类的思维过程:给定一个新任务的少量示例,人类可以根据示例之间的相似性快速将类似的输出分配给类似的输入,同时也可以根据给定的上下文灵活变通输入和输出之间在哪些层面相似。本文使用基于图像块(patch)级别的非参数匹配实现了密集预测的类比过程。模型被启发出了捕捉图像块中相似性的能力。对应贡献1
主要有两点贡献:1.提出了vtm匹配:首先根据已有的带标签的样本来得到样本的patch与标签之间的相似度关系,然后用这个相似度关系去预测。这个相似度关系灵活的使用了自注意力机制。qkv的设定刚好满足支持集图像、支持集标签、查询集图像之间的匹配需求。2、将不同的任务划分成了单通道任务,增加了任务的数量。同时为每一个通道任务设置了bias parameters以适应不同任务。
Taskonomy
1.匹配的方式很值得学习,灵活的使用了自注意力机制。
2.也可以类似的使用bias参数的方法,或者使用类似的形式对通道进行调整来解决跨域问题。
结论1:相似函数的调整是根据调整前面的qkv矩阵实现的,调整这个参数跟调整图像之间的相似度函数有什么联系?这两者是一回事吗?这两部分的参数是分开的,即scaled dot-product attention的参数与bias parameters是分开的,但是bias parameters在scaled dot-product attention参数之前,这是一个前向的过程,前面的结果(不同任务的参数)会直接对后面的匹配函数的参数产生影响。
所以作者说“我们通过切换特定于任务的参数θ t,自适应地调节相似性函数。
需要运行代码查看:
1.vit每一层输出的的维度。
2.bias peramters是怎么发挥作用的。
论文链接:https://arxiv.dosf.top/pdf/2301.12246.pdf
本文通过对各个阶段的分析为小样本问题带来启发。
分析各类训练算法(元训练)和适应算法(元测试时候使用)之间的关系,通过不同算法之间的组合。
通过对比试验得到以下结论:
结论1:相比shots增加,way越多准确率越高。shot越高也会带来一定的错误率的降低,但是不如way越多带来的性能的提升明显,即看的多不如看的广。这种差异揭示了**小样本分类和其他任务之间的内在差异:**虽然在训练过程中每个类别看到更多的样本确实有助于识别同一类中的新样本,但在新任务中识别以前未见过的类可能没有那么大的帮助。另一方面,看到更多的类可以帮助模型学习更多潜在有用的知识,这些知识可能有助于区分新的类。
BSCD-FSL(CDFSL)和 Meta-Dataset
结论4:与通常的理解不同,即时数据稀少的时候,在各种适应算法中finetune的效果依然不错,不会出现过拟合adaptation算法使用finetuing的时候,way和shot越多效果越好,finetuing比较依赖于数据的量,越多越好。finetuing对数据量很敏感,support size越大,finetune的效果越好。
结论5:改变训练算法不会影响测试算法的性能,两者无关。
结论6:**大模型并不能解决所有的问题,**除非包括所有可能的任务。使用最佳有效的模型和最佳重要的数据去适应不同的任务是至关重要的。
结论7:**自监督的方式在细粒度的图像上表现得不好,**作者猜测是因为自监督更加倾向于关注图像中的全局信息。
结论8:主干网络和finetune时候微调线性层的学习率不一样:分离finetune和backbone的学习率的的好处是使得性能提升很明显。
结论9:因为miniimagenet等数据集与BSCD-FSL等数据集的区别,(BSCD-FSL)有丰富的支持集,support set size比较大的数据集适合finetune的方法。所以minuimagenet等数据集的sota不依赖于适应算法(如finetune),而BSCD-FSL等数据集依赖适应算法。
结论10:aligning training knowledge and knowledge needed in adaptation是一个可科研可拓展的关键的点。
结论11:作者认为尽管finetune效果不错,但是仍然有更好的等待我们去发现。