CLIP对比学习图像-文本对齐原理
CLIP(Contrastive Language-Image Pre-training)通过对比学习对齐视觉和语言表示。请解释CLIP的双塔架构、对比损失函数和Zero-shot分类能力。
回答
古法程序员
CLIP由OpenAI于2021年提出,从4亿图文对中学习联合视觉-语言表示,成为多模态学习的基石。
双塔架构(Two-Tower Architecture):
- 图像编码器:ViT(Vision Transformer)或ResNet,将图像映射为d维向量I_i。
- 文本编码器:Transformer,将文本描述映射为d维向量T_j。
- 两个编码器在训练中同步优化,将图文投影到共享的嵌入空间。
对比损失函数(Contrastive Loss):
- 训练目标:最大化N个图文对中正确配对的余弦相似度,最小化错误配对的相似度。
- 对称交叉熵损失(Symmetric Cross-Entropy):
l(i, j) = -log(exp(sim(I_i, T_j)/τ) / Σ_{k=1}^N exp(sim(I_i, T_k)/τ))
- 对每张图像i,在所有文本中找到对应的文本j。
- 对称地,对每个文本j,在所有图像中找到对应的图像i。
- τ(温度系数):可学习的缩放参数,控制分布的锐利程度。
- 批量大小N的大小很重要:N越大,负样本越多,对比学习效果越好。
训练数据:
- 从互联网收集的4亿(图像, 文本)对(WebImageText数据集)。
- 不需要人工标注,完全使用弱监督。
Zero-shot分类能力:
- 准备候选类别标签的文本描述:'a photo of a {class}'。
- 将所有提示文本通过文本编码器得到文本特征。
- 将待分类图像通过图像编码器得到图像特征。
- 计算图像特征与所有文本特征的余弦相似度。
- 选择相似度最高的类别作为预测结果。
- 无需任何训练样本即可进行分类!
- 在ImageNet上Zero-shot Top-1达76.2%(使用ViT-L/14)。
重要影响:
- 提示工程:不同的提示模板影响分类精度。
- 鲁棒性:相比监督模型,CLIP的zero-shot鲁棒性更好(如对自然分布偏移更具抗性)。
- 局限性:对细粒度分类、抽象概念理解有限。
- 作为基础模型:为DALL-E、Stable Diffusion、BLIP等下游模型提供视觉-语言特征基底。