Note
CLIP 如何通过对比学习连接图像和文本?
介绍双编码器、图文配对、对比学习目标与零样本应用。
请解释 CLIP 模型的工作原理。它是如何通过对比学习来连接图像和文本的?
CLIP(Contrastive Language-Image Pre-training)是一个通过在海量图文对数据上进行预训练,从而学会将图像和文本关联起来的 foundational model。它的核心是利用 对比学习(Contrastive Learning) 来打通视觉和语言两个模态。
工作原理如下:
-
双编码器架构(Dual-Encoder Architecture):
- 图像编码器(Image Encoder): 通常是一个标准的视觉模型,如ResNet或Vision Transformer (ViT),负责将输入的图像转换成一个高维的特征向量。
- 文本编码器(Text Encoder): 通常是一个Transformer模型,负责将输入的文本描述转换成一个同维度的高维特征向量。
-
共享嵌入空间(Shared Embedding Space): 模型的目标是将图像和文本的特征向量投影到一个共享的多模态嵌入空间中。在这个空间里,语义相似的图像和文本的向量应该彼此靠近。
-
对比学习训练目标: 训练过程在一个包含N个(图像,文本)对的批次(Batch)中进行:
- 正样本(Positive Pairs): 对于批次中的任意一个图像,其对应的文本描述是唯一的正样本。反之亦然。
- 负样本(Negative Pairs): 批次中所有其他的(N-1)个文本描述都是该图像的负样本。同理,所有其他的(N-1)个图像也是该文本的负样本。
- 目标函数(InfoNCE Loss): 模型的目标是最大化正样本对(匹配的图文)特征向量之间的余弦相似度,同时最小化所有负样本对(不匹配的图文)特征向量之间的余弦相似度。
- 通过这种方式,模型被“逼迫”去学习图像内容和文本描述之间的内在联系。例如,当看到一张猫的图片和文本“a photo of a cat”时,模型会提高它们的相似度;而当看到猫的图片和文本“a photo of a dog”时,则会降低它们的相似度。
经过大规模数据(4亿图文对)的训练,CLIP的编码器能够生成高度泛化的、语义丰富的特征,使其在零样本(zero-shot)图像分类等任务上表现出色,因为它能理解自然语言描述的视觉概念。