大模型学习笔记------CLIP模型解读与思考
- 1、为什么提出CLIP模型
- 2、CLIP模型详解
- 3、CLIP模型的重要意义
上文已经讲到,我认为多模态的大模型是最有前途的大模型,首先学习的就是CLIP这个模型。 CLIP(Contrastive Language-Image Pretraining)模型由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的跨模态理解使得图文搜索与生成更为精准,它可以通过简单的文字描述来查找对应图像,或者通过图像找到与之相关的文字描述。