对比学习损失函数系列(4/4):CLIP 对比学习目标

副标题 / 摘要 CLIP 把图像与文本放到同一嵌入空间,用双向 InfoNCE 进行对齐。本文从损失函数视角梳理 CLIP 的训练目标,并给出最小可运行示例。 预计阅读时长:14~18 分钟 标签:clip、multimodal、contrastive-learning SEO 关键词:CLIP, 对比学习, 多模态, InfoNCE 元描述:从损失函数角度拆解 CLIP 的双向对齐目标与工程应用。 系列导航 (1/4)对比损失 Contrastive Loss (2/4)三元组损失 Triplet Loss (3/4)InfoNCE + SimCLR (4/4)CLIP 对比学习目标(本文) 目标读者 想理解 CLIP 训练目标与公式的读者 需要在工程中使用图文对齐模型的实践者 希望把对比学习扩展到多模态的开发者 背景 / 动机 相比单模态对比学习,CLIP 的挑战在于“跨模态对齐”。 只要目标函数对齐得当,图像与文本就能通过相似度统一度量。 核心概念 图像/文本编码器:分别把图像与文本映射为向量。 双向对齐:图像检索文本 + 文本检索图像。 温度参数:控制相似度分布的尖锐程度。 A — Algorithm(题目与算法) 用通俗语言说明主题内容 CLIP 的损失可以理解为“图像-文本的双向匹配”。 在一个 batch 中,正确图文对要排在最前面。 基础示例(1) 图像:一只狗 文本:“a photo of a dog” 与 “a red car” 目标:图像与狗文本更相近 基础示例(2) 在相似度矩阵中,对角线应该最大。 实践指南 / 步骤 图像与文本分别编码成向量。 L2 归一化,计算相似度矩阵。 用双向交叉熵训练(图像检索文本 + 文本检索图像)。 监控相似度矩阵是否“对角线突出”。 可运行示例(最小 CLIP 损失) import torch import torch.nn.functional as F torch.manual_seed(42) N, D = 4, 8 image = F.normalize(torch.randn(N, D), dim=-1) text = F.normalize(torch.randn(N, D), dim=-1) logits = image @ text.T / 0.07 labels = torch.arange(N) loss_i = F.cross_entropy(logits, labels) loss_t = F.cross_entropy(logits.T, labels) loss = (loss_i + loss_t) / 2 print(loss.item()) C — Concepts(核心思想) 方法类型 CLIP 属于多模态对比学习,核心是对齐图像与文本的共享嵌入空间。 ...

2026年1月24日 · 2 分钟 · map[name:Jeanphilo]