Low-Rank Few-Shot Adaptation of Vision-Language Models论文阅读
视觉语言模型的低秩少样本自适应code: https://github.com/MaxZanella/CLIP-LoRA摘要背景视觉语言模型的少样本自适应提升了模型的泛化能力少量标注样本即可在下游任务适配。现有问题现有研究集中在 提示学习Adapter方向, 忽略了参数高效微调PEFT方向的成果。现有视觉语言模型的少样本学习 训练过程繁琐依赖专属任务的超精细调参限制了方法的实际落地。解决方法引入LORA11个数据集上实验与当前基于提示、适配器的 SOTA 方法对比。实验结果大幅缩短实验耗时 ; 无需针对不同数据集进行单独调参本文的优异结果并非否定提示学习与适配器方案的研究价值。1. IntroductionCLIP基于 图文对 和 对比学习实现 图片特征 和 文本提示词 的表征对齐。即可完成零样本预测。当前普遍模型的计算开销和显存占用问题。应运而生PEFT。主流 PEFT 方案分为四类选取原有参数子集微调、添加小型可训练模块适配器、新增可学习提示 token、以及近年新兴的低秩自适应LoRA。CLIP 原始论文曾证明更精细的文本描述能大幅提升零样本预测精度这一发现直接催生了提示微调技术。提示学习提升零样本预测精度但微调开销大。提示学习的缺点少样本学习下的适配器方法性能高度依赖一系列超参数学习率、训练轮数、图文特征融合权重等必须针对每个下游数据集单独在验证集上做密集网格搜索调参验证集用来试不同超参数超参数人为选定范围遍历测试。这一过程需要额外标注样本还会带来巨大计算开销导致方法难以迁移到全新任务。适配器方法的缺点贡献探究了 LoRA 落地的各类设计选择选择视觉编码器、文本编码器还是两者同时微调选定需要适配的权重矩阵以及低秩矩阵的秩大小无需针对不同数据集在验证集上做密集超参搜索2. Related workPEFT根据训练参数的选择方式介绍了PEFT的四类方法。选择性微调方法仅挑选模型原有权重中的一部分进行训练。典型代表为 BitFit该方法仅微调 Transformer 块中注意力层与多层感知机MLP层的偏置项还有部分工作通过模型剪枝生成任务专属的参数子集用于微调。适配器方法在冻结原始模型结构的基础上插入额外的可训练模块例如对深层特征做平移与缩放变换。适用于视觉语言任务但其核心缺陷在于微调后会新增大量参数带来更高的推理延迟。提示微调 / Token 微调在输入序列或模型中间层加入可学习 Token。该方案在视觉语言少样本、零样本学习中格外流行它用可学习的软提示替代人工设计、难以优化的固定模板提示。该技术最初仅用于文本提示后续研究拓展至在 Transformer 视觉模块内训练视觉 Token。低秩自适应LoRA冻结原始模型权重仅添加低秩矩阵显式建模权重的更新量。推理阶段合并权重相比原始模型不会产生额外推理延迟。目前学术界已衍生出多种 LoRA 变体一部分研究为每层权重动态分配自适应秩一部分聚焦提升模型性能还有一部分通过量化降低显存占用。视觉语言领域的少样本学习MaPLe [26]在视觉编码器与文本编码器的中间层均插入可学习向量并且让每层的图文提示向量相互关联。3. Few-shot fine-tuning for VLMs介绍本文使用的基础符号和定义。在基于视觉语言模型的分类任务中给定k个候选类别为每一类构造对应的文本描述就是提示词记Ck为一张第k类物体的照片。令表示文本嵌入为文本编码器的参数。输入图像, 视觉编码器, 映射至与文本维度相同的归一化嵌入空间得到图像特征。零样本预测沿用同样的逻辑将图像的视觉特征f和文本的嵌入t 两两匹配计算余弦相似度。得到预测得分。预测得分经过softmax得到后验概率表示输入图像为类别k的概率。选取概率最大的类别作为预测结果。⭐可以试试少样本的情况下我们需要对模型做进一步的自适应微调。总样本数为N每类样本数量 N/K即 shot 数通常远小于 16。为标注图像xi的独热标签若图像属于第 k 类则否则为 0。训练时最小化交叉熵损失函数。补充在少样本Few-shot设定下该数值通常小于 16也就是每类仅提供1/2/4/8/16 张标注图片用于训练优化该损失函数主要有两条路径微调输入提示序列 c_k 即CoOp方法。新增一组可训练参数并更新即适配器类方法。下面介绍主流方法P 和 A 。提示微调P软提示微调 优化文本输入处的连续可学习向量该思路也可拓展至模型中间层 。若模型基于 Transformer 架构这类可学习向量同样能插入视觉编码器内部。提示微调能显著提升分类精度但它的微调计算开销极大优化难度更高文本输入向量每一次梯度更新都需要完整反向传播遍历整个模型。适配器A在冻结预训练模型原有参数的基础上新增一组可训练模块。适配器可理解为特征变换模块一般堆叠多层嵌入编码器的瓶颈位置用来学习融合图像与文本特征的变换关系。分类的得分公式为以下仍用交叉熵函数作为损失函数。CLIP-Adapter [14] 增加多层感知机对特征做变换Tip-Adapter [61] 新增缓存模块通过标注样本特征两两相似度计算类别得分并将该得分与文本提示嵌入融合。这类方法相比提示微调能够降低计算量但性能高度依赖关键超参数且必须针对每个下游任务单独调优需要在验证集上做大规模参数搜索不仅消耗额外标注样本还会带来巨大计算开销。注释CLIP 各版本自带温度缩放系数 T该参数在预训练阶段与模型参数同步优化。4. CLIP-LoRA前向传播计算公式矩阵 A 采用何凯明初始化Kaiming 初始化随机赋值矩阵 B 初始化为全零矩阵。该初始化方式意味着训练开始前不存在权重增量更新模型输出与原始预训练模型完全一致。在 LoRA 原始论文中低秩矩阵被作用于基于 Transformer 架构的注意力权重矩阵上。LoRA for VLMs.将 LoRA 应用于视觉模型最直接的思路是给视觉编码器与文本编码器的全部权重矩阵都配置低秩模块。但少样本场景下可用监督数据本身十分有限因此本文仅在查询Q、键K、值V这三类权重矩阵上部署低秩矩阵并统一设置秩 r2 。LoRA 模块的输入处加入 dropout 层做正则化丢弃概率p0.25。训练迭代次数设置为 500*(N/K)。 学习率\余弦学习率调度器batch_size 32单块 24G 显存的 GPU。以上所有超参数在全部实验中固定不变。针对所有数据集输入提示词统一采用最简模板一张[第k类名称]的照片凸显 无需复杂人工设计初始提示、通用性强的优势。 本文将 LoRA 模块部署在视觉、文本编码器的每一层中。第 6 节将探究 LoRA 放置位置带来的性能影响实验证明部分任务必须同时对图文双编码器做适配才能取得理想效果。5. Few-shot learning取 10 个细粒度分类数据集。1 场景数据集 SUN397 [52]、2 飞机数据集 Aircraft [37]、3 卫星图像数据集 EuroSAT [18]、4 汽车数据集 StanfordCars [28]、5 美食数据集 Food101 [2]、6 宠物数据集 OxfordPets [40]、7 花卉数据集 Flower102 [39]、8 通用物体数据集 Caltech101 [12]、9 纹理数据集 DTD [8]、10 人体动作数据集 UCF101 [46]此外还使用了 11 ImageNet [9] 数据集。去衡量少样本图像分类算法的性能。细粒度分类对大类下的小类进行分类如不同品种的狗1.每个类别至少有100张。 2.每个类别100张 3.遥感图像分类数据集。10 个地物类别如农田、森林、城市、草地、水体等共27,000 张标注图像。图像为多光谱影像覆盖13个光谱波段空间分辨率10米/像素图像尺寸64×64像素。 4.196 类汽车每个类别大致按 50-50 划分 5.每个类别有 750 张训练图像和 250 张人工审核的测试图像 6.每个类别约200张 7.每个类别包含 40 到 258 张图像 8.每个类别约有40到800张图像多数类别约50张 9.每个类别120张图像 10.视频动作识别数据集 11.完整版包含约 1,500 万张图像横跨 2.2 万个类别。在实际研究中最常用的是 ILSVRC2012 子集包含 1,000 个物体类别共 1,331,167 张图像。每个类别数量这么多这也可以来做少样本吗对比算法Comparative methods.文章与以下算法进行对比。基于提示的算法包含 4 个可学习 Token 的 CoOp [63]、包含 16 个可学习 Token 的 CoOp [63]、CoCoOp [62]、PLOT[5]KgCoOp [53]、MaPLe [26]实验采用原文 “基类到新类” 的训练流程、16 Token 版本的 ProGrad [64]。基于适配器的算法Tip-Adapter-F [61]我们将其验证集规模缩减至 min (每类样本数4)TaskRes [55]实验结果展示整体来看CLIP-LoRA 综合表现更优在 ImageNet、UCF101、Aircraft 数据集上提升尤为显著但该方法在 Food101、OxfordPet 两个数据集上效果稍弱在这两组数据集上少样本学习带来的性能提升十分有限。究其原因是本文仅采用基础交叉熵损失未引入额外正则化约束⭐CoOp 也存在同样的性能短板而 ProGrad 这类带有显式正则化机制的方法则不会出现该问题。附录中提供了包含 2-shots、8-shots 样本设置在内的完整详细实验结果。CLIP-LoRA 在多种视觉骨干网络下均可保持稳定优异的性能表现。如图 2 所示不论是 ViT-B/16,ViT-B/32还是ViT-L/14 CLIP-LoRA 的平均精度都优于其余各类少样本算法。6. How to apply LoRA for VLMs?三项核心设计要点(1) 选择微调视觉编码器、文本编码器其中之一或是双编码器一同微调同时确定需要微调的具体网络层(2) 选定参与微调的注意力权重矩阵(3) 为低秩矩阵设置合理的秩数值。整体而言同时微调图文双编码器能够取得最优平均精度。本文实验验证在编码器全部层级中都挂载 LoRA 模块是更稳妥高效的选择。反观大语言模型领域的 AdaLoRA [60]该算法提出给网络中层与末层分配更高的秩、首层使用低秩配置整体效果更佳。将这类动态秩分配策略迁移至视觉语言模型会是一个具备研究价值的未来方向。7. Conclusion本文采用一套固定超参数方案完成视觉语言模型VLM的少样本适配工作。希望本次研究能够启发后续相关工作一方面可以延续本方案简洁、高效、超参数固定的设计思路开发新算法另一方面也可为自适应超参数配置的研究提供清晰的设计参考。