CLIP 论文阅读笔记
定义
- 论文标题:Learning transferable visual models from natural language supervision
- CLIP 定义为 Contrastive Language-Image Pre-training
- 无监督的训练范式:通过正类和负类样本的比较,看到正类就拉近,看到负类就拉远
目的
从自然语言的监督信号学习迁移性能好的模型,目的是学一个泛化性能好的特征,从而在各种数据集和任务,不需要训练,直接推理就可以获得好的效果。
- 对比学习预训练
- 创建 label 分类器,用 prompt engineering 的方式将文本变成句子
- 使用 zero-shot 进行推理
摘要
之前的数据集有固定的类,但是如果推理任务需要一个其他的类,这个类难道要新训练一个模型吗?该方法可以通过 zero-shot,可以通过对语义信息(而不依赖预训练的图片信息)的摘取,从而识别新出现的 image,在任何新的类上进行下游任务的推理。采用的是对比学习的方法,采样了 400million 的 pair。
引入
- 自回归和 MLM 的训练方式都是自监督的预训练,目标函数和下游任务无关,只是通过预训练得到一个泛化性能好的特征
- 模型架构也和下游任务无关
- 之前的工作,有的数据集不够大,有的模型不够好。这篇文章的数据集使用 400million 的图像文本对,模型使用 8 个 models 进行对比,在 30 个 CV 的数据集上进行测试
- 线性探测:区分微调,线性探测完全冻结预训练参数,只是增加分类的线性头部。使用线性探测 (linear probe) 的方式,发现对 ImageNet 的固定的 1000 个 label,效果依然比 SOTA 的 resnet 等模型效果要好
方法
自然语言监督优势
- 只需要收集<图片,文本>对这种无监督的数据,无需标注
- 监督信号是文本,不需要学习 imagenet 的 1-N 这种 gold label,输出自由度大
- 学到的特征不是单单视觉特征,而是多模态特征,很容易做 zero-shot 学习
构建数据集
- 现有工作:instagram 数据集的图片,hashtag 对,很多都是无效语义信息,并且数量不够,只有 15million
- 自己构造 400million 的数据集,叫 WebImageText 数据集
预训练的任务方式
- 预测型任务:如果给定一张图片,可以解释的语言就太多了
- 对比学习:只需要判断图片和文本是否配对 随着约束不断放宽,从预测到对比学习,性能提升 4 倍
细节
- 图像和文本的 encoder 没有使用预训练的,而是从头训练
- 展示层没有使用非线性层,而是线性层
- 数据增强只使用了裁剪
- 没有设置超参数 temperature 作用于 softmax,而是把它作为一个可学习参数
- 训练:视觉模型选择 resnet 变体和 ViT,优化器 Adam,使用权重衰退抑制过拟合,提高泛化能力,32 个 epochs,3w 个 minibatch,混合精度训练
Zero-shot
Prompt Engineering
- 目的是模拟预训练的文本格式,将 label 转换成句子
- 现有问题:Polysemy(多意性),只用一个单词 label 来匹配图片,会有语义多意性;Distribution Gap(分布偏差),预训练采用的文本通常是句子,因此微调为了模拟这种方式
- 解决办法:Prompt Engineering,使用不同的提示词和句子。研究发现对于 OCR 任务,如果对于想要识别的物体用双引号扩起来,往往效果更好
- Prompt Ensembling:使用多次推理,将结果综合起来考虑
Few-shot
- LinearProbe-Clip:冻住 image 的 encoder,添加有标签的线性分类头

