这里提出了一种简单而有效的基于多模态预训练模型CLIP的小样本微调算法,通过将跨模态信息(例如文字标签)作为训练样本加入cross-entropy loss进行微调,即可用一个简单的线性分类器在十一个图像识别训练集中取得SOTA效果。基于CLIP的微调新范式!训练速度和性能均创新高

CLIP~_模态

基于CLIP的微调新范式(cross-modal adaptation):仅用线性分类器即可超越CoOp,Tip-Adapter等多种算法在小样本图像识别训练集上的性能。 

Multimodality Helps Unimodality: Cross-Modal Few-Shot Learning with Multimodal Models[1]

主页链接:https://linzhiqiu.github.io/papers/cross_modal/

论文:https://arxiv.org/abs/2301.06267

代码链接:https://github.com/linzhiqiu/cross_modal_adaptation

论文总结: 我们提出了一种简单而有效的基于多模态预训练模型CLIP的小样本微调算法,通过将跨模态信息(例如文字标签)作为训练样本加入cross-entropy loss进行微调,即可用一个简单的线性分类器在十一个图像识别训练集中取得SOTA效果。我们的方法(cross-modal adaptation)的训练速度和性能均大幅优于先前基于prompting、adapter或ensemble的算法,例如CoOp、CoCoOp、Tip-Adapter和WiSE-FT等。此外,实验表明了我们的算法在OOD测试集(比如ImageNet-V2和Sketch等)上也具备良好泛化能力,并可以适应多种输入模态(例如音频)。我们希望这项工作能为未来的多模态学习提供有益的参考价值,也可以取代传统的linear-probing来作为未来预训练模型的衡量基准。

小样本学习(Few-shot learning)是机器学习领域的一个重要方向,然而基于深度学习的识别算法仍然无法达到人类甚至婴儿在此类任务上的性能。我们认为这一现象主要是因为现阶段的小样本学习任务往往只考虑单一模态的训练样本,例如只用少量图像来训练一个分类器。然而,大量神经科学的研究1 2指出人脑在学习新概念的时候会利用跨模态的信息,比如语言或者音频。

CLIP~_线性分类器_02

这一跨模态学习的现象在当前以CLIP为代表的预训练模型上尤为突出。CLIP在各大图像识别任务上都取得了非常先进的“zero-shot”识别性能, 即是仅用文本的信息(标签名)就可以取得非常优异的分类结果。此类模型利用了“contrastive learning”(对比学习)使得不同模态的样本能在同一个空间中对齐。基于此,我们提出了一个简单的基于CLIP的小样本微调算法,即是将跨模态的信息(比如文本标签)作为额外的训练样本,同图像样本一起用来优化softmax (cross-entropy) loss。

CLIP~_线性分类器_03

实验结果:

对于图像识别而言,几乎所有的数据集(例如ImageNet等)都会附带每个class的文本标签,因此我们的方法可以得益于这类数据集自带的“免费”跨模态信息来进行训练。在训练过程中,我们只需要微调一个线性分类器(Cross-modal Linear Probing),既可以取得SOTA的效果。同时,我们也可以部分微调CLIP的图像特征提取器来取得更好的性能,例如神经网络的最后一层 (Cross-modal Partial Finetuning):

CLIP~_图像识别_04

因为我们的方法仅需要微调很少的参数,我们的训练成本和速度较之前方法也得以优化了好几倍。需要注意的是,我们所比较的方法,例如CoOp和Tip-adapter等均利用了同样的跨模态文本标签信息。在这一基础上,我们发现我们提出的损失函数仍然可以提升以往方法的性能: 

CLIP~_图像识别_05

结论与展望:

Cross-modal adaptation先进的实验结果证明了CLIP这一类的多模态模型的最优微调范式一定要利用跨模态的信息,这一点和单模态微调(例如prompting和adapter之于大语言模型)有显著的区别。

在论文中我们还展示了我们方法在OOD(out-of-distribution)测试集上,例如ImageNetV2和ImageNet-Sketch上的优越泛化性能。同时我们基于AudioCLIP[5]提出了第一个小样本视觉音频识别任务ImageNet-ESC,并证明了我们的方法也能够利用音频来提升图像识别的性能(或者用图像来提升音频识别的性能)。基于此,我们希望跨模态微调(cross-modal adaptation)能够取代单模态微调,成为未来预训练模型的性能衡量基准。

 PyTorch代码:

CLIP~_模态_06