读文献-2
本文最后更新于 2026年10月22日 晚上
论文名称:Learning Transferable Visual Models From Natural Language Supervision
阅读日期:2026.10.22
所属方向与编号:通用基础论文-03
预知识:
1 | |
L1:管比例、频次、稀疏,适合统计特征;
L2:管方向、相似度、检索,所有Embedding通用;
L2归一后点积等价余弦相似度,是工业界向量检索的核心基石;
永远区分:归一化是预处理,正则化是损失惩罚。
- 零样本 (Zero-shot) 模型没见过某个任务/数据集的任何训练样本,直接就能做。像一个人没学过法语单词,但靠语言能力猜出意思
- 少样本 (Few-shot, k-shot) 只给模型每个类别 k 个例子(如 4-shot = 每类 4 张图)
- 嵌入 (Embedding) 把图像或文字变成一串数字(向量)。语义相近的东西,向量在空间中距离也近。”猫”和”狗”的向量近,和”飞机”的远
- 对比学习 (Contrastive Learning) 让”该配对的东西”向量靠近,”不该配对的”向量远离。就像教孩子认图卡:图和正确的词放一起,错误的词排除掉
- 线性探针 (Linear Probe) 冻结预训练模型,只在其输出的特征上训练一个简单的逻辑回归分类器。用来检验特征本身的质量——如果简单分类器都能用好,说明特征很棒
- 分布偏移 (Distribution Shift) 测试数据的来源和训练数据不一样。比如模型在杂志照片上训练,考试却用手机随手拍的照片
- prompt / 提示工程 通过精心设计输入文字的”措辞模板”来提升模型表现。如把类别名”狗”包装成”一张狗的照片”再输入
- batch 一次训练同时处理的样本组。CLIP 用了超大的 32,768
- 这篇论文要解决什么问题?
解决计算机视觉模型“不通用、不可扩展”的问题——让视觉模型像 GPT 一样,直接从互联网海量图文数据中学习,从而不需要人工标注、不需要重新训练,就能零样本完成任意视觉任务。
这篇论文干了什么?
造了一个大规模数据集(WIT,WebImageText)
从互联网收集 4 亿(图像,文本)对
用 50 万个查询词搜索,每个查询最多保留 2 万对,尽量覆盖所有视觉概念
设计并训练了 CLIP 模型
方法极简:给定一批 N 对图文,预测哪张图配哪段文字,而不是生成文字的具体内容
效率发现:这个“配对”任务比“预测文字内容”的任务在零样本迁移效率上高约 12 倍
架构:图像编码器(改进 ResNet 或 ViT)+ 文本编码器(Transformer),共享一个多模态嵌入空间
做了大规模实验验证 (核心!!!!!!!!!)
注:
对于本篇论文,大篇幅的使用实验,验证了使用所提到的 CLIP 的架构,去训练出的参数是可以应用到任何视觉任务的 ,这个证明本身就是本篇论文的最大的贡献。
也就是说,clip经过训练后的模型参数,在推理时,输入图片和文字描述,会生成相应的向量,然后根据相似度进行图文匹配
CLIP 训练好之后,怎么准备数据、怎么使用?
- 快速给图片打类别标签,类别可以随时改
- a. 准备图片
- b. 写类别名(这就是全部的”数据准备”)
- 套提示模板(加提示能提升精度,论文证明的)
- 推理+预测结果
- 图片检索、内容审核、素材管理
- 准备自己的图库
- 首先每个图片 encode_image() 存成向量库
- 输入一句话,直接返回相关的图片
其他先关的用法…….. 。
- 输入和输出分别是什么?
本文对于模型的设计描述比较少,但是原文中提到“Enabled by the large amounts of publicly available data of this form on the internet, we create a new dataset of 400 million (image, text) pairs and demonstrate that a simplified version of ConVIRT trained from scratch, which we call CLIP, for Contrastive Language-Image Pre-training, is an efficient method of learning from natural language supervision.”, 也就是后面这篇文献中的ConVIRT模型的简化版本 Contrastive Learning of Medical Visual Representations from Paired Images and Text
基于ConVIRT,CLIP主要做出了以下简化:
- ConVIRT中的 image encoder 的参数是 ImageNet 初始化的,而 CLIP 直接用 random 初始化;
- ConVIRT的 projection head 是 non-linear 的,而 CLIP 采用 linear 的 projection;
- CLIP去掉了 ConVIRT 中 text transformatio(指均匀从text中采样句子),因为 CLIP 数据集中有很多只出现过一次的(image,text);
- CLIP的 image transformation 只用了 resize 和 squared crop;
- CLIP loss中的 temperature 参数τ是可学的。
训练阶段:
输入是一个 batch 的图文对:
$$
{(I_i, T_i)}_{i=1}^N
$$
其中:
- $I_i$:一张图像;
- $T_i$:与这张图配对的一段文本,通常是标题、说明、alt-text 等;
- $N$:batch size,论文里很大,达到 32,768。
模型内部输出:
- 图像特征:$I_f = \text{ImageEncoder}(I)$
- 文本特征:$T_f = \text{TextEncoder}(T)$
再经过线性投影和 L2 归一化,得到多模态嵌入:
$$
I_e = \text{L2Norm}(I_f W_i), \quad T_e = \text{L2Norm}(T_f W_t)
$$
然后输出一个相似度矩阵:
$$
\text{logits}_{ij} = \tau \cdot (I_{e,i} \cdot T_{e,j})
$$
也就是 batch 内每张图和每段文本的余弦相似度,乘以可学习温度 $\tau$。
训练目标是让对角线上的真匹配对相似度高,非对角线上的错配相似度低,用对称交叉熵损失。
推理 / 零样本分类阶段
输入是:
- 一张待分类图像 $I$;
- 一组候选类别文本,比如 ImageNet 的 1000 个类名,通常会套上提示模板:
$$
\text{“a photo of a {label}.”}
$$
输出是:
- 图像和每个类别文本的相似度;
- 经过 softmax 后得到类别概率分布;
- 取概率最高的类别作为预测结果。
本质上,CLIP 的文本编码器在测试时临时“生成”了一个零样本线性分类器。