随着CLIP的出现,如何将大规模预训练的模型高效地迁移到小样本的下游任务中,成为了一个新的挑战。
根据方法策略的不同可以分为两类:Prompt-based方法和Adapter-based方法。Prompt-based和Adapter-based方法中,我们又可以根据梯度是否经过编码器,将其细分为两类:梯度经过编码器的方法和梯度不经过编码器的方法。此外,一部分迁移的方法专注于给定少样本的情况,另一部分迁移的方法则专注于测试时适应。
梯度经过编码器的Prompt-based方法可以分为:文本模态、视觉模态和双模态。
文本模态的Prompt Learning:CoOp(Context Optimization)将NLP领域的Prompt Learning迁移到视觉语言模型中。给定少量数据集和模板(如“a photo of [class]”),CoOp优化前几个输入的token,使模型能够更好地适应特定任务。TPT(Test-time Prompt Tunning)在测试时适应的过程中最小化不同增强视角的平均熵来优化prompt,与CoOp方法可以无缝集成。
视觉模态的Prompt Learning:VPT在视觉输入中嵌入可学习的token,将这些token作为额外的输入嵌入到视觉编码器中,对视觉特征进行调整。
双模态的Prompt Learning:UPT在将双模态的可学习的token送入编码器之前,经过一个Transformer网络处理,增强了模态之间token的表达能力。MaPle在文本和视觉端的token之间加入了一个可学习的线性层,使得两种模态的token耦合,产生更强的联系。Prompt-align将MaPle进一步扩展至测试时适应,计算支持集的图片的编码之后的token的均值和方差并在测试时将测试图片的token的均值和方差向支持集拉近。
梯度经过编码器的Adapter-based方法有CLIP-LoRA和MMA(Multi-modal Adapter)。CLIP-LoRA将LoRA微调大语言模型的经验应用到少样本微调中,通过微调CLIP模型文本端和图像端的Query、Key和Value矩阵,实现高效的参数更新。MMA在Transformer层之间加入了文本和图像端耦合的Adapter模块,增强了多模态信息的融合。
梯度不经过编码器的Prompt-based主要为TaskRes。TaskRes在文本端学习一个残差,仅调整文本编码器的输出。相比CoOp,TaskRes方法简单更小,效果更佳。类似的,TPS方法选择在测试时调整改残差。梯度不经过编码器意味我们只需要编码一次,同时我们可以更好的利用外部知识,因为我们不受到CoOp中模版的限制。我们可以向LLM中获得更加丰富的Prompt,参考CuPL的工作。
梯度不经过编码器的Adapter-based的方法:Tip-Adapter使用一个简单的缓存模块,将训练集的图像特征存成Key,标签作为Value。测试时,输入图像通过编码器得到的特征作为Query,与缓存中的Key进行匹配,实现快速的少样本适应。CaFo利用大型语言模型(LLM)的外部知识扩充概念,并借助生成模型来扩充少量的数据集,提高模型的泛化能力。DMN设计了一个动态记忆和静态记忆模块,随着测试样本的增多,动态记忆不断被填满,提高模型性能。TDA设置了一个正样本缓存模块和负样本缓存模块,随着测试样本的不断增多,更新缓存模块。Dual-Adapter和Cluster-Adapter:这两种方法在视觉和文本端针对编码后的原型共同学习残差,增强了多模态的适应性。DPE则在测试时适应的过程中共同学习文本和图像端的残差,保持了模型的泛化能力。
通过对以上方法的调研,我发现当前的高效迁移学习方法存在以下主要问题和挑战:
1.高效迁移学习加剧了CLIP模型的类别偏差
现有的高效迁移学习方法虽然能够在少样本学习中提升模型的性能,但也加剧了CLIP模型在零样本任务中固有的类别偏差问题。CLIP模型基于大规模的多模态数据进行训练,天然具有良好的泛化能力,但由于类别分布的不均匀,模型对某些类别的学习较为充分,而对其他类别的学习则几乎完全失败。在少样本场景中,这种偏差更加明显,因为少数类别的训练样本更为稀少,模型容易忽略这些类别,甚至出现类别完全崩塌的现象。例如,使用CoOp等Prompt-based方法时,模型可能过度拟合于频繁出现的类别,对罕见类别的表现却极差。
2.测试时过度依赖监督信号,训练与测试不统一
现有的一些测试时适应的方法在测试阶段过度依赖监督信号,同时缺乏训练和测试的统一。DMN和TDA这两种方法在测试时引入了伪标签或缓存模块,对测试数据施加了明确的监督信号。虽然在理论上提升了模型的测试准确性,但却忽视了对数据分布的学习能力,可能导致模型的确认偏差,进一步扩大类别之间的差异。目前,仅有DMN,TPT+CoOp,TPS+TaskRes可以做到在既能给定小样本的情况下训练,又能测试时适应,一个高效准确的方法应当既能在有数据的情况下适应,也能在测试时适应。
3.模型参数和超参数复杂度增加,应用成本高
为了提升模型的性能,现有的高效迁移学习方法往往增加了大量的参数和超参数,导致模型复杂度和应用成本增加。Tip-Adapter对于不同的数据集,需要设置不同的参数,人为地加入了先验知识,缺乏统一的标准。MaPLe等方法在模型结构中引入了较多新的可学习层或模块,增加了模型的参数量和复杂度。超参数过多不仅增加了模型训练和调试的难度,也使得方法之间缺乏公平的比较,影响了实际应用。
4.文本与图像模态利用不足,模态融合效果不佳
当前的方法在多模态信息的融合上存在明显不足,具体表现在:Prompt生成未结合图像信息:现有的Prompt多依赖于预设的模板或外部的语言模型生成,未能根据输入图像的内容动态调整,导致文本和图像模态之间的联系不足。视觉端的噪声干扰:如VPT方法在视觉端引入可学习的token,但这些token与输入图像的实际内容并无直接关系,无法根据图像的变化进行灵活调整。少样本情况下,模型容易受到图像中的背景噪声干扰,无法有效提取前景目标的信息。
5.训练集拟合与CLIP基础模型泛化能力的平衡
现有的高效迁移学习方法在提高模型适应性的同时,往往会过度拟合训练集,导致CLIP基础模型的泛化能力下降。现有的解决方案主要有两种,残差学习方法:TaskRes、Dual-Adapter、Cluster-Adapter等方法通过在编码器输出上学习残差,尝试在拟合训练集和保持模型泛化能力之间取得平衡。一致性正则方法:CoPrompt,在微调的过程中引入对比损失,保持微调后的模型与原始模型之间的特征一致性,避免过度偏离原始模型的分布。然而,这些方法在实际应用中仍需要在性能和泛化能力之间进行权衡,找到最佳的平衡点。
最后我认为未来的研究应该从以下几个方向上展开:
1、平衡类别学习,减少偏差:未来可以探索新的损失函数或数据平衡策略,减少类别偏差。
2、统一训练和测试策略:耦合训练和测试时适应,减少对测试时伪标签的依赖
3、降低模型复杂度,提高实用性:简化模型结构,减少参数和超参数的数量。
4、加强模态融合,提升多模态协同效果:在Prompt生成和特征提取过程中,充分利用图像和文本的模态信息,增强多模态协同效果
5、保持模型的泛化能力,避免过度拟合:引入其他领域的方法,在微调的同时保持原始模型的泛化特性,避免过度拟合训练集。
(随手写的,很多优秀的方法现在回看依然没有写上,如一致性正则的一些方法,以及一些最新的方法)
标签:模态,高效,Prompt,模型,测试,视觉,迁移,方法,Adapter From: https://www.cnblogs.com/zhaihaotian/p/18515706