← All writing多模态:从像素到内容理解 · 02

CLIP:让图像和文字在同一空间相遇

亲手构造 B×B 相似度矩阵,理解对比学习、负样本、温度和零样本分类的局限。

Read the English edition →

CLIP:让图像和文字在同一空间相遇

两个 encoder,一次配对任务

图像 encoder 与文本 encoder 各输出向量,投影到同一维度并归一化。一个 batch 有 B 个图文配对,矩阵 [B,B]。对角线是匹配对,其余位置通常作为 batch negatives。图找文与文找图分别做交叉熵,平均成对称目标。

一个重要陷阱:非对角线不一定语义错误。两张不同猫图可能都匹配“a cat”。False negatives 和重复 caption 会影响学习;batch 组织与数据清理是目标的一部分,不是只要公式写对就完成。

温度改变的是竞争强度

温度小会放大相似度差异,使分布更尖锐,梯度也随之变化。把全部相似度都乘以一个很大的数,训练可能更容易过度自信。训练中可学习的 logit scale 与推理时人为改阈值不是同一个动作。

import torch
import torch.nn.functional as F
image = F.normalize(torch.randn(4, 8), dim=-1)
text = F.normalize(torch.randn(4, 8), dim=-1)
s = image @ text.T / .07
y = torch.arange(4)
loss = (F.cross_entropy(s,y)+F.cross_entropy(s.T,y))/2
print(loss.item())

随机向量只能检查 shape 和 loss 实现。配套 Notebook 加载真实 CLIP,并对自己提供的图片和候选描述运行前向。

零样本分类为什么依赖候选集合?

把“a photo of a cat”等类别描述编码,与图像比较,softmax 后排序。概率是在这些候选标签之间归一化的相对得分;即使图片根本不属于任何一个类别,也会给出最大值。增加一个相似标签会改变归一化分母。Prompt wording、语言和类别粒度也影响排序。

内容理解还包括关系、数数、OCR、时间顺序与细粒度属性,整体图文相似并不能证明这些能力。应使用反事实描述,例如“人推车”与“车撞人”,检查是否仅靠对象词匹配。

自测

问题: 只有一个候选标签时,softmax 得 1,意味着模型确信吗?

展开答案不是。单元素 softmax 永远是 1。需要原始分数、合适的拒识方法和独立验证集来判断未知类别。

原始资料与继续阅读

资料核对:2026-09-10。教学示例不代表生产基准;框架 API 和模型支持请以所链接版本为准。

PYTHON · WEBASSEMBLY · NO GPU

改代码,再验证你的预测

真实 Python 在独立 Worker 中运行,只用标准库;60 秒自动终止。完整 PyTorch 和模型权重实验请打开 Notebook。

运行后显示实际输出。
配套完整 Notebook

逐格检查张量、运行实验;环境要求与执行状态见首个单元。

在 Colab 打开 ↗下载 Notebook