CLIP (对比语言-图像预训练) 是一种旨在通过训练大量配对图像-文本示例来学习图像和文本之间共享表示的模型。它使用双编码器架构:一个编码器处理图像(例如,Vision Transformer 或 ResNet),另一个编码器处理文本(例如,基于 Transformer 的文本编码器)。两个编码器都将其输入映射到共享嵌入空间中,在该空间中,语义相似的图像和文本被定位在一起。核心思想是对照学习:在训练期间,模型学习最大化正确图像-文本对的嵌入之间的相似性,同时最小化不正确对的相似性。 例如,一只狗的图像和文本“一只棕色的狗”会在嵌入空间中被拉得更近,而同一图像会与不相关的文本(如“一辆蓝色的汽车”)推开。
训练过程涉及将批量的图像-文本对输入到两个编码器中。 每张图像通过图像编码器转换为嵌入向量,每个文本通过文本编码器转换为单独的向量。 然后应用对比损失函数(通常是归一化 softmax 的一种形式)。 对于批处理中的每张图像,模型计算其与批处理中所有文本嵌入的相似度得分,反之亦然。 损失鼓励正确的对(例如,图像 1 与文本 1)具有高相似度得分,而不正确的对(例如,图像 1 与文本 2)具有低得分。 一个关键细节是温度参数的使用,该参数缩放相似度得分以控制 softmax 分布的“清晰度”。 CLIP 在 4 亿个公开可用的图像-文本对上进行了训练,使其能够在各种视觉和文本概念上进行泛化,而无需特定于任务的微调。 编码器是从头开始训练的,这避免了来自预训练模型的偏差,并确保了两种模式之间的对齐。
CLIP 的嵌入支持零样本图像分类和跨模态检索等应用。 例如,要对猫的图像进行分类,您可以为“一张猫的照片”或“一张狗的照片”等标签生成文本嵌入,并将它们的余弦相似度与图像嵌入进行比较。 具有最高相似度的标签成为预测。 开发人员还可以使用 CLIP 执行图像搜索等任务,方法是编码查询文本(例如,“山上的日落”)并查找嵌入最接近查询的图像。 但是,CLIP 具有局限性:其性能取决于其训练数据的多样性,因此利基或特定于文化的概念可能无法得到很好的表示。 此外,除非文本提示很精确,否则嵌入可能无法捕获细粒度的细节(例如,区分相似的鸟类)。 尽管存在这些警告,但 CLIP 通过将图像和文本理解统一到一个框架中,为多模态系统提供了灵活的基础。