读文献-2

本文最后更新于 2026年10月22日 晚上

论文名称:Learning Transferable Visual Models From Natural Language Supervision

阅读日期:2026.10.22

所属方向与编号:通用基础论文-03

预知识:

1
2
3
4
5
6
7
8
9
# L1归一化
def l1_normalize(x, axis=-1, eps=1e-8):
norm = np.sum(np.abs(x), axis=axis, keepdims=True)
return x / (norm + eps)

# L2归一化
def l2_normalize(x, axis=-1, eps=1e-8):
norm = np.linalg.norm(x, ord=2, axis=axis, keepdims=True)
return x / (norm + eps)
  1. L1:管比例、频次、稀疏,适合统计特征;

  2. L2:管方向、相似度、检索,所有Embedding通用;

  3. L2归一后点积等价余弦相似度,是工业界向量检索的核心基石;

  4. 永远区分:归一化是预处理,正则化是损失惩罚。


  • 零样本 (Zero-shot) 模型没见过某个任务/数据集的任何训练样本,直接就能做。像一个人没学过法语单词,但靠语言能力猜出意思
  • 少样本 (Few-shot, k-shot) 只给模型每个类别 k 个例子(如 4-shot = 每类 4 张图)
  • 嵌入 (Embedding) 把图像或文字变成一串数字(向量)。语义相近的东西,向量在空间中距离也近。”猫”和”狗”的向量近,和”飞机”的远
  • 对比学习 (Contrastive Learning) 让”该配对的东西”向量靠近,”不该配对的”向量远离。就像教孩子认图卡:图和正确的词放一起,错误的词排除掉
  • 线性探针 (Linear Probe) 冻结预训练模型,只在其输出的特征上训练一个简单的逻辑回归分类器。用来检验特征本身的质量——如果简单分类器都能用好,说明特征很棒
  • 分布偏移 (Distribution Shift) 测试数据的来源和训练数据不一样。比如模型在杂志照片上训练,考试却用手机随手拍的照片
  • prompt / 提示工程 通过精心设计输入文字的”措辞模板”来提升模型表现。如把类别名”狗”包装成”一张狗的照片”再输入
  • batch 一次训练同时处理的样本组。CLIP 用了超大的 32,768
  1. 这篇论文要解决什么问题?

  解决计算机视觉模型“不通用、不可扩展”的问题——让视觉模型像 GPT 一样,直接从互联网海量图文数据中学习,从而不需要人工标注、不需要重新训练,就能零样本完成任意视觉任务。


  1. 这篇论文干了什么?

    1. 造了一个大规模数据集(WIT,WebImageText)

      • 从互联网收集 4 亿(图像,文本)对

      • 用 50 万个查询词搜索,每个查询最多保留 2 万对,尽量覆盖所有视觉概念

    2. 设计并训练了 CLIP 模型

      • 方法极简:给定一批 N 对图文,预测哪张图配哪段文字,而不是生成文字的具体内容

      • 效率发现:这个“配对”任务比“预测文字内容”的任务在零样本迁移效率上高约 12 倍

      • 架构:图像编码器(改进 ResNet 或 ViT)+ 文本编码器(Transformer),共享一个多模态嵌入空间

    3. 做了大规模实验验证 (核心!!!!!!!!!)

    注:

      对于本篇论文,大篇幅的使用实验,验证了使用所提到的 CLIP 的架构,去训练出的参数是可以应用到任何视觉任务的 ,这个证明本身就是本篇论文的最大的贡献。

      也就是说,clip经过训练后的模型参数,在推理时,输入图片和文字描述,会生成相应的向量,然后根据相似度进行图文匹配

    CLIP 训练好之后,怎么准备数据、怎么使用?

    1. 快速给图片打类别标签,类别可以随时改
      • a. 准备图片
      • b. 写类别名(这就是全部的”数据准备”)
      • 套提示模板(加提示能提升精度,论文证明的)
      • 推理+预测结果
    2. 图片检索、内容审核、素材管理
      • 准备自己的图库
      • 首先每个图片 encode_image() 存成向量库
      • 输入一句话,直接返回相关的图片

    其他先关的用法…….. 。


  1. 输入和输出分别是什么?

  本文对于模型的设计描述比较少,但是原文中提到“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 的文本编码器在测试时临时“生成”了一个零样本线性分类器。


读文献-2
http://one-and-one-fourth.github.io/2026/10/22/研究生/读文献记录1/
作者
一又四分之一
发布于
2026年10月22日
更新于
2026年10月22日
许可协议