大模型学习笔记------CLIP模型详解
- 1、为什么提出CLIP模型
- 2、CLIP模型详解
- 3、CLIP模型的意义
- 4、一些思考
上文说到,多模态大模型应该是非常有发展前景的,首先来学习 CLIP(Contrastive Language-Image Pretraining)这个多模态模型。CLIP模型由OpenAI提出,是一种多模态模型,能够将图像和文本通过对比学习的方式映射到一个共享的向量空间中,使其具备跨模态理解能力。
1、为什么提出CLIP模型
最开始的时候,OpenAI的想法非常超前,想通过“输入图片,直接生成文本”,即直接通过文本对图像进行理解与表达。但是这个难度太大了,训练成本太高,模型的收敛非常缓慢,因此就想到通过对比学习的方式训练一个图文模型,这样就诞生了CLIP模型。
其实,我认为还有其他的原因,比如图生文模型可能无法准确生成对多种表达的理解,因为它只能生成单一的文字描述。对比学习训练的CLIP模型能够理解多样化的文字表达(如“猫”、“小猫”、“喵星人”),并匹配相关图像,这种鲁棒性使其能适应不同语言和表达风格的描述。
2、CLIP模型详解
2.1 CLIP模型之双塔结构/双流架构
CLIP模型采用的是双塔结构或是称为双流架构,具体的模型图如下所示:
从上面的模型结构就可以知道,对比学习的精髓是什么,即图文对比相似度的一种方式。文本编码器主要是提取文本信息,图像编码器主要是提取图像信息。本质上,图像与文本的信息特征就是向量,同时两个编码器提取的特征维度是相同的。这就是所谓的文本与图像流的输出在嵌入空间中进行对比学习,以实现图像和文本的语义对齐。
从底层原理考虑,图像与文本的对齐其实就是在学习图像与文本的相似度。对比学习是CLIP模型的核心,它通过比较正样本(匹配的图像-文本对,即图中对角线上N个匹配的图像-文本对)和负样本(不匹配的对,即N^2-N个没有匹配的图像-文本对)来训练模型。那就很好理解了,我认为两个数据流形成的对角线部分的值应该趋向于1。
在源代码中,文本编码器是transformer,图像编码器测试了各种版本的ResNet(经过Efficientnet最优宽度深度分辨率)和VIT。实质上,文本编码器可以是任何一个网络,比如BERT,甚至可以是GPT。而图像编码器那就更多了,只要是提取编码特征都是可以的,比如transformer的各种改进型,我认为甚至可以使用Mamba进行尝试。
2.2 CLIP模型之模型推理
CLIP模型训练完成以后如何进行推理呢,文章中给了一个相对比较好理解的图像进行描述(Prompt+图像),如下所示::
当CLIP模型预训练完成后, CLIP 转换为零样本分类器。在推理中将数据集的所有类转换为标题(即Prompt),例如 “a photo of a {subject}”,将给定的类别分别填入subject,并预测 CLIP 估计的标题类与给定图像的最佳配对。也就是在编码完成后,拿图像特征跟文本特征比cos相似度,跟哪个特征距离最近,这张图像就属于对应的类别。
3、CLIP模型的意义
CLIP模型是一种图像+语言的多模态模型,它的出现我认为有如下几个比较重要的影响:
跨模态理解能力的突破
- 联合视觉与语言:CLIP将视觉和文本信息映射到同一个空间中,使模型能够理解图像与文字的语义关联。例如,CLIP可以识别“狗”的图片并知道其对应的文本描述为“狗”,这突破了传统单模态模型的限制。
- 增强任务灵活性:CLIP无需重新训练便可在图像分类、物体检测等任务中泛化。这种基于对比学习的方法使得模型能够在广泛任务中适应不同的输入格式(文本或图像)。
开放式的推理
CLIP在图像分类中并不依赖固定的标签集,而是可以接受任意文字描述作为标签,从而实现开放标签分类。模型可以根据输入的文本描述对图像进行分类,这在现实应用中更具灵活性,也更符合人类的推理习惯。
4、一些思考
1)不直接进行图生文而是采用对比学习(CLIP)的方式的其他原因
CLIP模型的核心是对比学习,这一方法使得模型能够有效地将图像和文本进行关联。在对比学习的框架下,CLIP通过构建图像和文本之间的相似度比较来进行训练,而不是直接生成图像或文本,这种训练的优势在于它允许模型在没有精确配对数据的情况下进行学习。
CLIP的设计使其能够处理见过的类别。通过比学习,模型可以在没有样本(即零样本)的情况下,对未见类别的图像进行分类。
CLIP其实可以进行多标签的学习,即对同一张图像可以有不同的表达,进而在推理过程中可以通过图像确定多个文本标签的相似度。
2)CLIP模型可以应用到哪些领域
- 图像分类任务:CLIP可以用于图像分类任务,通过将图像与文本标签进行比较,判断图像属于哪个类别。由于问题1的原因,CLIP模型在处理小样本分类时尤其有效。
- 内容检索:通过输入文本查询,CLIP模型能够从大量图像中检索出与之匹配的图像,反之亦然。这在图像搜索引擎和推荐系统中是非常有用的。
其实,很多人说CLIP可以应用到生成任务,这一点我并不否认,但是,总感觉仅凭CLIP模型完成生成任务并不现实,尤其是比较完成的图生文或是文生图任务。