总体思路

首先是利用了 对比性训练的优良效果 并且同时计算了 文本 encoder 的数值以及 image encoder 的数值,将二者计算得到的两类数据分别计算 cosine 相似性,找到最大相似的文字进行 classify
这个思路将输入变成了两个:text + image, 这样事实上将可以分的类别变大了,只要图片及其对应文字类别同时存在就可以非常好的实现分类 (不用 categorial label 的限制 从而不需要依赖于现有数据集对于图片内容的要求)

![[clip_model.png]]

来自 NLP 界的无监督属性

CLIP 使用了一种类似 NLP 中无监督学习的方式,不依赖单一标签,而是将图像和自然语言文本对(例如一张图像和一段描述该图像的文字)作为输入。这种方法的核心是对比学习

监督学习的局限性

标注成本高:为每种物体手动标注数据代价非常高。
类别受限:模型的知识局限于训练时的标签,难以扩展到未见过的类别。
迁移困难:在迁移到新任务时,模型需要重新训练或微调,且效果可能不如预期。

零样本学习 zero-shot

主要依赖于知识的广泛迁移,模型通过处理大量的文本数据(例如,预训练模型如 GPT 或 BERT)学习到了广泛的语义和结构知识。这样一来,即便没有见过某些具体的标签或任务描述,模型也能理解并生成合理的答案

少样本学习 few-shot

少量的训练样本来完成学习,例如 1-shot 在企鹅识别的领域一般指提供一张相关企鹅的照片进行训练
少样本学习在迁移领域的效果会好很多

对比学习 contrastive learning advantage

成对输入:CLIP 接受一张图像和一段描述该图像的文本作为正样本对(也就是相关联的图像-文本配对),比如一张“猫咪”的图片和描述为“一只在沙发上休息的猫”。
正样本与负样本对比:对于每个正样本对,CLIP 还会提供一些负样本对(即不相关的图像或文本),比如将“猫咪”的图片和“在公园里玩耍的狗”配对,或者给“猫咪”的文本配一张“汽车”的图片。
目标:模型通过学习将正确的图像-文本对匹配得更紧密,即增加正样本对的相似度,同时减少负样本对的相似度。这样,模型就能学会图像和文本之间的关联关系
CLIP 在训练的时候将正样本放在了公共空间矩阵的对角线位置上

训练数据集的预处理

Prompt Engineering

原单词输入的局限性

由于英文单词时常会具有多个含义,因此直接以单词的形式输入可能会导致歧义而降低了训练的准确性

模版

通过简单的嵌入一个 this is a photo of {prompt} 的句式模版就让整个识别结果提升了 1.3%
不仅如此,也可以根据数据集特点 (比如 mnist 可以额外加上描述词 of type number)
或者可以加上一些 “many”, “clean” 等定语限定