突破预训练与存储瓶颈:利用视觉语言模型提升无监督领域自适应 !
共 18703字,需浏览 38分钟
·
2024-07-19 09:00
点击下方卡片,关注「集智书童」公众号
前沿AI视觉感知全栈知识👉「分类、检测、分割、关键点、车道线检测、3D视觉(分割、检测)、多模态、目标跟踪、NerF」
欢迎扫描上方二维码,加入「集智书童-知识星球」,日常分享论文、学习笔记、问题解决方案、部署方案以及全栈式答疑,期待交流!
本文的重点是利用视觉语言预训练(VLP)模型对无监督领域适应(UDA)中的两个重要挑战进行思考。
首先,UDA的性能很大程度依赖于预训练模型,例如,一些文章显示只使用ViT模型即可取得与CNN相关的UDA先进方法近似的性能,目前常用的预训练模型一般基于ImageNet预训练。然而,随着近年来VLP技术的兴起,VLP 模型在 UDA 中的潜力在很大程度上仍未得到开发,VLP 模型的丰富表征对于增强 UDA 任务具有重大前景。为了解决这个问题,我们提出了一种称为跨模态知识蒸馏(CMKD)的新方法,利用 VLP 模型作为教师模型来指导目标领域的学习过程,从而产生先进的性能。
其次,当前的 UDA 范式涉及为每个任务训练单独的模型,随着任务数量的增长,会导致巨大的存储开销。为了克服这一挑战,我们引入了残差稀疏训练(RST),利用了 VLP 广泛的预训练所带来的好处,该技术只需要对 VLP 模型参数进行极少量参数调整(大约 0.1%∼0.5%)即可实现与全参数微调相当的性能。
论文被 TCSVT 2024接收,代码已开源。
-
论文链接:https://ieeexplore.ieee.org/abstract/document/10505301 -
代码链接:https://github.com/Wenlve-Zhou/VLP-UDA
1. 研究动机
图1 VLP模型微调和UDA部署的概述
1.1 关于预训练模型的思考
无监督领域自适应可以有效缓解domain shift带来的模型性能下降问题,因此,该领域一直是机器学习的研究热点。在计算机视觉领域中,研究者们做出了重要的贡献,通常做法是基于ImageNet预训练模型进行UDA方法设计,例如,基于对抗训练的特征对齐方法【1】,或Cross-attention机制等【2】。在大规模视觉语言预训练时代,VLP 模型获得了巨大的关注。大规模的预训练赋予了模型丰富的表征能力,为推动 UDA 任务提供了巨大的潜力。然而,与基于视觉预训练模型的UDA研究相比,基于VLP模型的UDA研究仍较少研究者关注。因此,我们主要关注基于VLP模型的UDA技术,本文使用CLIP【3】模型进行研究。
从参数训练角度来看,以往的大部分UDA技术也可视为对神经网络的Fine-Tuning。在计算机视觉的其他领域中,为了利用CLIP模型的预训练特征并在相关任务上使用,研究者们会保留CLIP模型的视觉编码器而将文本编码器丢弃,仅对visual encoder进行微调(如图1(a)(i)所示)。然而,在UDA领域中,仅对视觉编码器微调或许不是最好的选择。Text Encoder可视为包含大量的通用知识,若将域适应过程与人类学习过程类比,在新的任务场景或需掌握一项新的技能时,人类的基础技能(如语言、常识等)起非常重要的作用。基础知识可以帮助我们自身快速实现场景适应或任务学习。
而另一种做法则是保留文本编码器,但同时冻结视觉和文本编码器,利用Prompt Tuning方法对模型进行训练(如图1(a)(ii)所示),这种类型的做法也是目前基于VLP模型研究UDA的研究者们常用的思路。例如DAPL【4】采用“An image of [Domain] [Class]”的形式进行Prompt Tuning;PDA【5】引入基于提示的分布对齐技术,采用双分支提示微调范式。但冻结视觉编码器,Prompt Tuning本质上只是在Linear Probe范式下学习一个决策平面,视觉编码器的表征决定了UDA任务的上限,因此,尽管Prompt Tuning范式很好地保留了Text Encoder蕴含的通用知识,但恐怕未能完全释放VLP的潜力。
1.2 权重存储瓶颈
一直以来,UDA领域主要关注的还是如何更好提升模型在目标域上的性能,但似乎很少有研究者对权重存储问题进行思考。举个例子,目前流行的Benchmark——DomainNet,共有6个子领域,通过两两构建域适应任务可以构建30个迁移任务,即要存储30个模型权重。以近年来常用VIT-Base为例,单个模型参数量约为86M参数,30个迁移子任务共需存储2.58B参数量,像最近比较出圈的MiniCPM小钢(由面壁智能推出的一款相对轻量化的大模型)也仅2.8B参数量。而在真实场景中,随着场景的变化和任务的需求,模型权重的存储开销可能会更大。
一种可行的思路是探索大型语言模型(LLM)中的参数高效微调(PEFT)技术中的结构化重参数体系,通过在训练阶段训练一些额外的参数,利用结构化参数化技术可在不增加额外推理开销情况下实现模型微调,在对下游任务进行权重存储时,仅需保存额外的训练参数即可,LoRA【6】是该技术的代表。LoRA设计所依赖的假设是LLM在适应新任务时具有低秩特性,然而,UDA通常使用ResNet-50和ViT-Base作为基线模型,LoRA等技术在UDA领域中是否适用仍未可知。
2. 研究亮点
针对上述挑战,我们分别提出了跨模态知识蒸馏(Cross-Modal Knowledge Distillation, CMKD) 和 残差稀疏训练(Residual Sparse Training, RST)。
-
跨模态知识蒸馏(CMKD):利用VLP模型作为教师模型,利用文本编码器的通用知识引导目标域的学习过程,从而实现领先的性能,如图1(a)(iii)。CMKD具有简洁的特性,可作为Baseline与不同的技术进行结合,进一步提升任务性能。
-
残差稀疏训练(RST):只需对VLP模型参数进行微调(约0.1%∼0.5%),即可实现与完全微调相当的性能,大大减少了模型存储开销。当进行模型部署时,选择由RST训练所获得超稀疏权重与预训练模型权重简单相加,即可获得下游任务模型权重,如图1(b)(ii)所示。
除此之外,由于CMKD需要微调视觉编码器,尽管可以取得更优的性能,但无疑会破坏了CLIP的零样本推理能力。而RST与CMKD的结合,可以很好地解决该问题,当需要转注于下游任务时,可以将RST的权重与预训练的权重相加获得下游任务模型权重,而需要专注于通用任务时,则用原始预训练权重即可。
3. 论文方法
3.1 预备知识: CLIP的基本原理
图2 CLIP模型的概述
CLIP模型是经典的视觉文本预训练双塔模型,包含一个图像编码器 和文本编码器 ,图2为训练和推理过程。CLIP通过图像——文本对的方式进行推理,其中文本编码器的输入形式为“a photo of a [CLASS]”,[CLASS]代表类别的名称,如“bus”,“train”等。正样本对由图像 和对应的文本 组成,而负样本对则由图像 和不相关的文本 构成,其中 。
由于模型在训练阶段已利用大量图像文本对以对比学习方式进行训练,因此,当给定K个类别([CLASS])时,对于图像 ,模型预测属于类别 的概率为:
在我们提出的方法CMKD中,我们将同时使用文本编码器和视觉编码器来进行无监督领域适应训练。在训练过程中,我们引入了一个下游任务头 ,与视觉编码器结合以构建下游模型,同时保持文本编码器处于冻结状态。由于CLIP在包含4亿图像-文本对的数据集上进行了广泛的预训练,我们认为 可视为源自预训练模型的常识推理。这种通用知识增强了下游模型的适应能力,使其能够执行无监督领域适应。此外,在推理阶段,我们省略了文本编码器,以减轻推理过程的负担,具体过程如图3所示。
图3 CMKD方法示意图
3.2 跨模态知识蒸馏
基于此前的分析,我们希望能在领域自适应过程中,知识蒸馏技术能够将CLIP模型在预训练阶段的通用知识辅助模型在目标域的训练。经典的知识蒸馏架构【7】利用KL散度来最小化学生模型和教师模型分布之间的差异,促进有效的知识迁移,可以表示为:
其中 表示真实标签, 表示学生模型的输出, 表示教师模型的输出, 是stop-gradient的操作。为了方便表述,第一项为学生模型的预测与真实情况之间的差异,在论文中我们称为称为任务项 。第二项评估学生模型和教师模型的预测之间的差异,我们称为蒸馏项 。参数 表示trade-off。
然而,由于目标域中缺乏相应的标签,执行任务项 变得具有挑战性。为了采用类比任务项方式训练,我们采用自训练方式(Self-Training)进行学习。常见的做法是利用吉布斯熵最小化对无标记数据进行训练。然而,相关论文表明将吉布斯熵作为优化目标会使得模型的预测过度自信,不利于无标注数据学习。因此,我们使用较弱的惩罚项,基尼不纯度进行(Gini-Impurity,GI)进行自训练,其中目标和梯度函数可以表示为:
其中, 表示任务头的输出, 指可训练的参数,即任务头和视觉编码器参数集合。
对于蒸馏项 ,一种直观的方法是直接利用vanilla KD中的 ,写为:在传统的知识蒸馏任务中,教师模型在标注的数据上进行训练,提供的软分布的准确性能得到保证,然而,CLIP模型提供的软分布来自零样本推理的概率分布,在目标域中的准确性无法得到保证。因此,我们认为在CMKD架构中,教师模型的输出不应该作为明确的训练目标指导模型训练,其作用应该是作为一种约束,防止模型在无标签的目标域中“误入歧途”,首先给出我们设计的蒸馏项:可以简单地对公式(6)的梯度进行计算,可得:在CMKD中,蒸馏项同样是基于基尼不纯度设计的自训练形式,但将公式(8)与公式(4)进行比较,可以发现,教师分布 作为一种约束参与自训练,当教师分布与学生分布不一致时,当前样本的自训练强度则会下降。因此,CMKD的形式可以写为:
在原始的知识蒸馏任务中,超参数 是通过认为经验确定,用来在任务项和蒸馏项之间取得平衡。然而,在UDA过程中,由于缺乏正确的标签,多数情况下可能都不能朝着正确的方向进行训练,因此我们设计了一种动态机制,为每个样本都分配一个不同的 。动机也十分简单,当学生分布与教师分布一致性较低时,任务项的权重应该要变低防止模型可能在不正确的方向上进行过多的训练,动态机制可写为:
最后,基于CMKD的UDA的优化目标为:
为源域上的监督损失。
3.3 残差稀疏训练
在1.2小节中,我们讨论了在领域自适应中的存储挑战,基于结构化重参数的参数高效微调给出了可行的解决思路,以LoRA为例,仅需微调及存储极少量的参数即可使模型适应至于下游任务,LoRA的形式也十分简单:
其中 为预训练权重矩阵,更新的部分 由低秩矩阵来降低训练时的参数量,其中 , , 。
LoRA的重要假设是,是LLM在任务适配过程中权重的改变量是低秩的。然而,UDA领域常见的基线模型是ResNet50和VIT-B,LoRA的假设可能无法适用于我们的任务,因此,我们将目标转向另一个重要的特性——稀疏性,并提出残差稀疏训练(RST):
其中 是UDA训练期间的任务权重。训练过程完成后,可以使用残差范式获得稀疏权重 ,如下式所示:
因此,通过这种转变,方法的核心从学习稀疏权重 转移到学习与 非常相似的权重。我们采用一种简单的方法,通过将权重变化的幅度与预定义的阈值 进行比较来确定是否保留预训练的权重,写为:
残差稀疏训练十分简单,无需修改网络结构,也不会改变原来模型的推理方式,在pytorch的实现中也仅有两行核心代码,下面给出RST训练和推理过程的伪代码:
图4 RST算法表
4. 实验
-
在实验中,我们与主流的SoTA方法进行比较,包含基于不同模型架构实现的方法,包含ResNet50,ResNet101和VIT-B三种不同的模型架构。
-
我们涉及到的Benchmark共有六个常用的基准,分别为Office-Home,Office-31,Visda-2017,ImageCLEF-DA,DomainNet以及Digits: MNIST-USPS-SVHN。
-
由于基于CLIP的Fine-Tuning是一项具有挑战性任务,不能用UDA常用超参数组合,我们探索出在UDA任务中,适用于CLIP的Fine-Tuning超参数组合,为后面的研究者研究UDA下CLIP Fine-Tuning提供了思路。
-
在PEFT相关的实验中,我们将RST与LoRA等流行的PEFT进行了比较,并提出下游任务参数量(Downstream Parameters,DSP)来衡量需要存储的权重大小。
4.1 实验结果
4.1.1 UDA相关实验
图5 Office-Home 实验结果
图6 Office-31 / Digits / ImageCLEF 实验结果
图7 Visda-2017 实验结果
图8 DomainNet 实验结果
4.1.2 PEFT相关实验
图9 RST与流行的PEFT比较的实验结果
在该部分中,我们主要考虑与不会改变推理过程的PEFT方法进行比较,像LoRA等方法在轻量模型中表现欠佳,而RST在性能与存储开销(DSP)中,都展现出优良的性能。
4.1.3 超参数选择
图10 关于CLIP微调的超参数选择
CLIP-1 和 CLIP-2代表不同的超参数配置,其中CLIP-1与常见UDA方法使用ImageNet预训练模型的超参数配置基本保持一致,而CLIP-2则是我们最后筛选出的超参数组合。
具体而言,CLIP-1和CLIP-2最大的不同是学习率配比。UDA常见的学习率配比是Task head和Backbone的比例为10:1,而在CLIP-2中,对于VIT模型而言,比例为1,000:1,而对于ResNet模型而言,比例为10,000:1,换言之,CLIP模型的Fine-tuning过程中,Backbone要用更小的学习率。另外,在整个训练过程中,ResNet的BN层需要冻结,这点对实验结果影响很大。
图11 关于不同的 对性能和参数量的分析
更多的消融实验和对比实验请详见原文和附录。
5. 结论和不足
本文针对UDA领域中预训练模型和存储问题,分别提出了CMKD和RST进行求解,实验结果表明,我们的方法取得了一定的效果。然而,CMKD目前只考虑了CLIP范式的文本-视觉预训练模型,其他的VLP范式是否可行?更广泛的任务,如检测、分割呢?
另外,RST虽然取得了一定的效果,但目前的RST无法像LoRA等方法精确控制下游任务需要保存的参数量,这对于实际使用而言,或许存在一定的障碍,这些问题希望在后面的工作中都可以得到回答。
6. 论文以外的讨论
-
在这篇工作投稿收录后,读到一些论文和RST的思想是类似的,也想和大家分享下。首先是diff-purning【8】,这篇论文是做NLP领域的PEFT,思想和RST几乎是一致的,而且这个工作比我们的工作要早。两个工作最大的不同就是关于稀疏权重的学习,diff-purning主要还是通过稀疏训练的方法,通过BP算法学习稀疏权重;而我们的方法则暴力得多,直接通过阈值进行学习。后来,我们也在小容量模型上实现了diff-purning但是发现效果还是不如rst这种阈值选择的机制。无独有偶,类似的结论也在ICLR 2024【9】的一篇扩散模型工作得到了类似的结论,作者分别实现了训练和卡阈值的两种参数选择性机制,但也是发现卡阈值的方式会有更好的效果。或许这种硬机制在小容量模型中会更有效,但是具体原因还需要以后进行深入分析。
-
最近也有一些同学在基于rst实现一些别的任务,例如类增量学习,发现rst可以帮助模型更好地收敛;我们在附录里面的跨域分割、光流估计任务也表明了rst同样有意想不到的效果,更多细节大家可以查阅附录。
参考文献
【1】 Unsupervised domain adaptation by backpropagation.
【2】 Cdtrans: Cross-domain transformer for unsupervised domain adaptation.
【3】 Learning transferable visual models from natural language supervision.
【4】 Domain adaptation via prompt learning.
【5】 Prompt-Based Distribution Alignment for Unsupervised Domain Adaptation.
【6】 Lora: Low-rank adaptation of large language models.
【7】 Distilling the knowledge in a neural network.
【8】 Parameter-efficient transfer learning with diff pruning.
【9】 Salun: Empowering machine unlearning via gradient-based weight saliency in both image classification and generation.
扫码加入👉「集智书童」交流群
(备注:方向+学校/公司+昵称)