CLIP模型
1. 模型架构:双编码器
CLIP 采用了一个简洁而强大的双塔结构(Dual-Encoder),由两个核心组件构成:
a) 图像编码器 (Image Encoder)
功能:将输入图像转换为一个高维向量表示(特征嵌入)。
实现:CLIP 论文中尝试了多种架构,如:
ResNet-50、ResNet-101、ResNet-50x4、ResNet-50x16、ResNet-50x64(基于 EfficientNet 的改进版)。
Vision Transformer (ViT):如 ViT-B/32, ViT-B/16, ViT-L/14。
输出:一个固定大小的特征向量(例如,512 或 768 维)。最终,性能最好的模型是 ViT-L/14。
b) 文本编码器 (Text Encoder)
功能:将输入文本描述转换为一个相同高维空间中的向量表示。
实现:采用了 Transformer 架构(具体是 GPT-2 的修改版)。
输入处理:文本被截断或填充至最大长度(77 个 token)。文本前后会添加 [SOS] 和 [EOS] 令牌。
输出:使用 [EOS] 令牌对应的输出作为整个文本的聚合特征向量。其维度与图像特征向量相同。
关键:两个编码器将图像和文本分别映射到同一个多模态嵌入空间。在这个空间里,语义相似的图像和文本的向量距离很近。
2. 训练过程:对比学习
这是 CLIP 成功的最关键之处。其训练过程非常巧妙。
构建批次:从一个巨大的数据集中采样一个 batch 的
N
个图像-文本对。编码:图像编码器处理所有
N
张图像,得到N
个图像特征向量I_1, I_2, ..., I_N
。文本编码器处理所有N
个文本,得到N
个文本特征向量T_1, T_2, ..., T_N
。计算相似度矩阵:计算所有图像和所有文本特征向量之间的点积(相似度),得到一个
N x N
的矩阵。对角线上的元素
(I_i, T_i)
是正样本对(它们是匹配的)。非对角线上的元素
(I_i, T_j where i != j)
是负样本对(它们是不匹配的)。
优化目标:模型的学习目标是最大化正样本对的相似度,同时最小化负样本对的相似度。
对称损失函数:使用一个对称的交叉熵损失函数,分别从“图像->文本”和“文本->图像”两个方向计算损失,然后取平均。
图像->文本:对于每张图像
I_i
,将其与所有文本计算相似度,做一个N
分类,目标类别是i
。文本->图像:对于每个文本
T_i
,将其与所有图像计算相似度,做一个N
分类,目标类别是i
。
这种批内对比学习的方式效率极高,模型从海量的负样本中学会了区分细微的差别。
3. 零样本推理:真正强大的地方
训练好的 CLIP 模型无需任何微调,就可以用于执行多种下游任务。其零样本推理流程如下:
任务定义:将任何分类任务转化为图像-文本匹配任务。
例如,ImageNet 分类不再是“1000 选 1”,而是“判断图片最匹配哪个文本描述”。
构建文本提示:为数据集的每个类别创建文本描述。
原始标签:
"dog"
,"cat"
提示工程:
"a photo of a {label}"
->"a photo of a dog"
,"a photo of a cat"
提示工程能显著提升性能,因为模型是在自然语言句子上训练的,而不是孤立的单词。
编码与计算:
图像编码器处理输入图像,得到特征向量
I
。文本编码器处理所有候选文本提示(如 1000 个 ImageNet 类别提示),得到一组文本特征向量
{T_1, T_2, ..., T_K}
。
相似度计算与选择:计算图像特征
I
与每一个文本特征T_k
的余弦相似度。预测:选择相似度最高的文本提示所对应的类别作为图像的预测结果。
“零样本” 体现在:模型在训练时从未见过ImageNet 的图片和其人工标注的“狗”、“猫”标签,但它通过理解“a photo of a dog”这个自然语言描述,成功地对图像进行了分类。
4. 主要特点与优势
强大的零样本性能:在多个图像分类基准上,无需任何数据集特定的训练,就能达到甚至超过有监督的 ResNet-50。
极高的泛化能力:可以应用于几乎任何视觉概念,只要能用语言描述。它打破了传统模型封闭的类别限制。
多任务能力:同一个模型无需改动,即可用于图像分类、图像检索、图像生成引导(如 DALL·E 2, Stable Diffusion)、动作识别、地理定位等多种任务。
鲁棒性:对数据的分布偏移(如艺术风格、素描)表现出比传统模型更好的鲁棒性。
总结来说,CLIP 是一个开创性的工作,它通过简单的对比学习目标,在超大规模图像-文本对上进行训练,成功地创建了一个能够深刻理解视觉内容与自然语言之间联系的模型,并为“基础模型”时代的到来奠定了重要基石。