CLIP 如何用对比学习对齐图像与文本?
先用自己的话答,再看参考说法
60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。
别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。
参考内容当前已显示;开始口述后会暂时隐藏。
面试时怎么答
回答 CLIP 时建议画出 Batch 内的 \(N \times N\) 相似度矩阵:图像塔和文本塔分别编码并归一化,对角线是真实配对,其余是负例,两个方向各做一次交叉熵。别把它说成逐 Token 生成模型。追问温度或 Batch Size 时,说明温度控制分布尖锐度,大 Batch 提供更多负例,也更依赖配对质量。
可以这样答:
CLIP 用图像编码器和文本编码器分别得到归一化向量,在一个 Batch 内计算所有图文对的相似度矩阵。真实配对位于对角线,其余配对作为负例;训练同时优化图像检索文本和文本检索图像的交叉熵,并用可学习温度控制分布尖锐度。这样得到共享语义空间,可用于跨模态检索和零样本分类,但效果高度依赖配对数据质量。
核心回答
CLIP 使用图像编码器和文本编码器分别把一批配对的图像、文本映射到同一个向量空间。对归一化后的向量计算两两余弦相似度,使正确图文对的相似度升高、批内不匹配组合的相似度降低。若 Batch 大小为 \(B\),会得到 \(B \times B\) 的相似度矩阵;对每张图找正确文本、对每段文本找正确图像各做一次交叉熵,最后取两者平均。
设归一化图像表示为 \(v_i\),文本表示为 \(t_j\),相似度 Logit 可写为 \(s_{ij} = \exp(a)\,v_i^{\top}t_j\),其中 \(a\) 是可学习的对数尺度,等价于学习温度的倒数。正确配对位于矩阵对角线,其他组合充当批内负样本。训练完成后,零样本分类可以把类别写成自然语言 Prompt,再比较图像与各类别文本表示的相似度。
展开说明
CLIP 的关键不是把图像翻译成一句话,而是学习一个可比较的共享表示空间。若 \(S\) 是 \(B \times B\) 相似度矩阵、正确配对标签是对角线索引,其对称目标可概括为:
\[\mathcal{L} = \frac{1}{2}\left[ \operatorname{CE}(S, \text{labels}) + \operatorname{CE}(S^\top, \text{labels}) \right]\]具体过程包括:
- 图像编码器可以是 ResNet 或 Vision Transformer,输出单个全局图像向量。
- 文本编码器把文本序列压成一个文本向量。
- 两侧向量经过线性投影和 L2 归一化,因此点积就是余弦相似度。
- 图到文损失按相似度矩阵的每一行做分类,文到图损失按每一列做分类,形成对称目标。
大 Batch 能提供更多批内负样本,通常有助于学习更有区分度的表示,但并非“越大必然越好”。同一概念的不同图片或描述可能被误当成负样本;跨设备收集特征还会增加通信与显存压力。实际效果同时依赖数据规模、配对噪声、文本覆盖和编码器容量。
工程实践
分布式训练要确认相似度矩阵是否包含其他设备上的样本、梯度是否按预期回传,并监控可学习 Logit Scale,避免其过大导致 Softmax 过尖。数据侧应去重并检查一图多文、近重复图片和错误配对,否则“假负样本”会污染目标。评估不能只看训练 Loss,还应同时测零样本分类、图文双向检索、不同语言与长尾类别,并固定 Prompt 模板做可复现比较。
常见追问
- 正样本和负样本如何构造? 同一数据行中的图像与文本是正样本,Batch 内其余组合通常作为负样本;若语义重复,它们可能成为假负样本。
- 为什么 CLIP 喜欢较大的 Batch? 更大的 Batch 提供更多且更丰富的批内负样本,但会增加全局特征通信和相似度矩阵计算,并不能替代高质量数据。
- Temperature 有什么作用? 它控制相似度 Logit 的尺度;温度低时分布更尖锐,温度高时更平滑,CLIP 通过可学习尺度自动调节这一强度。
- CLIP 是否直接生成文本? 原始 CLIP 只学习图文表示和相似度,不包含自回归文本解码器;生成式 VLM 需要额外的语言模型与连接模块。
一句话复习
CLIP 用双编码器和对称的批内对比损失,把匹配图文拉近、非匹配组合推远,从而得到可零样本迁移的共享表示空间。
参考资料
评论与补充
评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。
正在连接站内评论服务…
正在加载评论…
还没有评论,你可以先写下自己的理解或追问。