跨模态对比学习原理与挑战
跨模态对比学习的目标是:把不同模态中语义一致的样本拉近,把语义不一致的样本推远。最典型的是图文对比学习,例如 CLIP、ALIGN、SigLIP。
简单说:
图像:一只狗在草地上奔跑
文本:"a dog running on the grass"
训练目标:
图像 embedding 与 正确文本 embedding 更接近
图像 embedding 与 其他文本 embedding 更远
CLIP 就是典型代表,它使用大规模图文对训练视觉编码器和文本编码器,让模型学习“哪张图片和哪段文本匹配”,并展示出较强的 zero-shot 能力。([arXiv][1])
1. 基本架构
经典跨模态对比学习一般采用双塔结构:
Image Encoder Text Encoder
↓ ↓
image embedding text embedding
↓ ↓
similarity(image, text)
以图文为例:
图像 I_i → Vision Encoder → v_i
文本 T_i → Text Encoder → t_i
然后计算相似度:
sim(v_i, t_j) = cosine(v_i, t_j)
其中:
- i = j:正样本,图像和文本匹配;
- i ≠ j:负样本,图像和文本不匹配。
2. InfoNCE / CLIP 损失
一个 batch 中有 N 对图文样本:
(I_1, T_1), (I_2, T_2), …, (I_N, T_N)
对于第 i 张图像,正确文本是 T_i,其他 T_j 都被当作负样本。
图像到文本方向的损失为:
Li2t=−1N∑i=1Nlogexp(sim(vi,ti)/τ)∑j=1Nexp(sim(vi,tj)/τ)
\\mathcal{L}_{i2t}=
-\\frac{1}{N}
\\sum_{i=1}^{N}
\\log
\\frac{
\\exp(\\mathrm{sim}(v_i,t_i)/\\tau)
}{
\\sum_{j=1}^{N}
\\exp(\\mathrm{sim}(v_i,t_j)/\\tau)
}
Li2t=−N1i=1∑Nlog∑j=1Nexp(sim(vi,tj)/τ)exp(sim(vi,ti)/τ)
文本到图像方向的损失为:
Lt2i=−1N∑i=1Nlogexp(sim(ti,vi)/τ)∑j=1Nexp(sim(ti,vj)/τ)
\\mathcal{L}_{t2i}=
-\\frac{1}{N}
\\sum_{i=1}^{N}
\\log
\\frac{
\\exp(\\mathrm{sim}(t_i,v_i)/\\tau)
}{
\\sum_{j=1}^{N}
\\exp(\\mathrm{sim}(t_i,v_j)/\\tau)
}
Lt2i=−N1i=1∑Nlog∑j=1Nexp(sim(ti,vj)/τ)exp(sim(ti,vi)/τ)
最终损失:
L=12(Li2t+Lt2i)
\\mathcal{L}=
\\frac{1}{2}
(
\\mathcal{L}_{i2t}
+
\\mathcal{L}_{t2i}
)
L=21(Li2t+Lt2i)
其中 τττ 是温度系数,用来控制相似度分布的尖锐程度。InfoNCE 最早在 Contrastive Predictive Coding 中被广泛使用,用于让模型从高维数据中学习有用表示。([arXiv][2])
3. 训练过程
典型训练流程如下:
Step 1: 准备图文 / 音文 / 视频文本配对数据
Step 2: 分别输入不同模态编码器
Step 3: 得到统一维度的 embedding
Step 4: 计算跨模态相似度矩阵
Step 5: 正样本拉近,负样本推远
Step 6: 训练完成后用于检索、分类、VQA、MLLM 对齐等任务
例如一个 batch 中有 4 对图文:
T1 T2 T3 T4
I1 正 负 负 负
I2 负 正 负 负
I3 负 负 正 负
I4 负 负 负 正
模型要让对角线上的匹配分数最高。
4. 为什么跨模态对比学习有效?
它有效的原因主要有三点。
第一,它把不同模态映射到同一个语义空间。图像、文本、音频、视频虽然输入形式不同,但经过编码后可以在 embedding 空间中直接比较。
第二,它利用了大规模弱监督数据。CLIP 使用大规模图文对进行自然语言监督,ALIGN 则进一步强调可以利用大规模 noisy image-alt-text 数据进行视觉语言表示学习。([arXiv][1])
第三,它天然支持 zero-shot。训练完成后,可以把类别标签写成文本 prompt,例如:
"a photo of a dog"
"a photo of a cat"
"a photo of a car"
然后比较图像 embedding 与这些文本 embedding 的相似度,选择最相似的类别。
5. 与 MLLM 的关系
在 MLLM 中,跨模态对比学习通常用于预对齐阶段:
Vision Encoder
↓
视觉 embedding
↓
与文本 embedding 对齐
↓
接入 LLM / Q-Former / Projector / Cross-Attention
它的作用是让视觉编码器先具备基本的语言语义对齐能力,再把视觉特征送入大语言模型。
对减少幻觉也有帮助,因为更好的视觉-文本对齐可以让模型更准确地区分:
图中有什么
图中没有什么
哪个文本描述与图像一致
哪个文本描述只是语言先验
但它不能单独解决 MLLM 幻觉,因为对比学习通常只学习全局图文匹配,不一定能保证细粒度 grounding、数量、空间关系和 OCR 细节都正确。
6. 典型代表模型
| CLIP | 图像-文本双塔对比学习 | zero-shot 能力强,结构简单 |
| ALIGN | 使用大规模 noisy 图文数据 | 强调数据规模和弱清洗 |
| SigLIP | 用 sigmoid loss 替代 softmax 对比损失 | 不需要全局 batch 相似度归一化,更利于扩展 |
| ALBEF / BLIP 类模型 | 对比学习 + 跨模态融合 | 更适合 VQA、caption 等生成/理解任务 |
| VideoCLIP 类模型 | 视频-文本对比 | 学习动作、事件、时序语义 |
SigLIP 提出 pairwise sigmoid loss,不同于标准 softmax 对比学习,它不依赖全局相似度归一化,因此在 batch size 和训练扩展性上更灵活。([arXiv][3])
7. 主要挑战
7.1 语义粒度不匹配
图像包含大量细节,但文本描述通常很粗略。
例如:
图像:两个人、一个桌子、三杯水、一个手机、一个背包
文本:"two people sitting at a table"
文本只描述了部分内容。如果模型把未描述的对象都当作负信息,就会学到错误对齐。
这会导致:
图像中有手机,但 caption 没写手机
模型可能无法稳定学习手机相关特征
7.2 假负样本问题
在 batch 内,其他样本通常被当作负样本。但有些“负样本”其实语义上也匹配。
例如:
Image: 一只金毛犬在草地上
Text A: "a dog on the grass" 正样本
Text B: "a golden retriever outside" 被当作负样本,但其实也对
这就是 false negative。它会让模型把本该接近的语义强行推远。
7.3 图文数据噪声大
互联网图文对常常存在弱匹配、错配、广告文本、标题党、无关描述等问题。ALIGN 明确利用了大规模 noisy alt-text 数据,但这种设置也带来噪声鲁棒性挑战。([arXiv][4])
例如:
图片:一辆汽车
alt-text:"click here for more information"
这种样本会破坏图文对齐质量。
7.4 只学全局匹配,缺少局部 grounding
CLIP 类双塔模型通常判断整张图和整段文本是否匹配,但它不一定知道:
"red cup" 对应图中哪个区域
"man holding phone" 中 phone 在哪里
"left of the table" 的空间关系是否成立
因此它擅长粗粒度语义检索,但在以下任务上容易不足:
小目标识别
精确计数
空间关系判断
OCR 文本识别
细粒度属性理解
复杂场景推理
7.5 语言先验与共现偏置
跨模态对比学习可能学到数据中的共现关系,而不是视觉因果证据。
例如:
snow → ski
table → chair
keyboard → mouse
beach → surfboard
当模型看到 snow,即使图中没有 ski,也可能提高 ski 相关文本的相似度。这种共现偏置会进一步影响 MLLM,形成对象幻觉。
7.6 难负样本不足
普通 batch 内负样本很多,但大多太简单。
例如:
图像:猫
负样本:飞机、汽车、厨房
这些负样本容易区分,模型很快学会。但真正困难的是:
猫 vs 狐狸
金毛 vs 拉布拉多
红色杯子 vs 橙色杯子
三个人 vs 四个人
拿手机 vs 拿遥控器
如果缺少 hard negative,模型的细粒度区分能力会不足。
7.7 大 batch 与计算开销
标准 CLIP 损失通常依赖 batch 内所有图文两两相似度,复杂度接近:
N × N similarity matrix
batch 越大,负样本越多,效果通常越好,但显存、通信和计算成本也越高。SigLIP 试图通过 pairwise sigmoid loss 减少对全局归一化的依赖,从而提升扩展性。([arXiv][3])
7.8 跨模态信息不对称
不同模态的信息密度不同。
例如:
图像:高维、连续、包含空间细节
文本:离散、抽象、压缩后的语义
音频:连续、时间依赖强
视频:空间 + 时间 + 动作 + 事件
简单地把它们压缩到一个 embedding 空间,容易丢失模态特有信息。
7.9 对组合关系理解不足
对比学习容易学到“对象出现”,但不一定学会组合关系。
例如模型可能知道:
man
horse
riding
但未必能稳定区分:
man riding horse
horse standing beside man
man feeding horse
horse pulling man
这对 MLLM 的复杂视觉推理影响很大。
7.10 长尾类别和细粒度领域不足
互联网数据中常见类别很多,专业领域和长尾类别较少。例如:
医学影像
工业缺陷
遥感目标
芯片型号
材料显微图
罕见动物
专业仪器
如果训练数据中这些概念稀缺,跨模态 embedding 就难以稳定对齐。
8. 常见改进方向
8.1 引入 hard negative mining
构造更难的负样本:
相似类别负样本:猫 vs 狐狸
属性负样本:红车 vs 蓝车
数量负样本:三个人 vs 四个人
关系负样本:A 在 B 左边 vs A 在 B 右边
OCR 负样本:12345 vs 12346
这样可以提升细粒度判别能力。
8.2 加入 region-level 对比学习
不要只做全局图文匹配,而是增加局部区域和短语的对齐:
image region ↔ noun phrase
bbox / mask ↔ object text
OCR box ↔ text string
person region ↔ attribute phrase
结构上可以变成:
Global image-text contrast
+ Region-phrase contrast
+ Object-attribute contrast
+ OCR-text contrast
这样更有利于减少 MLLM 的对象幻觉和属性幻觉。
8.3 多粒度对比学习
同时进行:
image ↔ caption
region ↔ phrase
object ↔ label
video clip ↔ sentence
frame ↔ action word
audio segment ↔ transcript
这样能缓解单一全局 embedding 表达能力不足的问题。
8.4 结合生成式目标
对比学习擅长判别,但不擅长生成细节。因此很多 MLLM 会结合:
contrastive loss
+ caption generation loss
+ VQA loss
+ OCR loss
+ grounding loss
这样既能保持跨模态对齐,又能提升生成式理解能力。
8.5 数据清洗与重加权
对 noisy 图文对可以做:
低质量文本过滤
图文相似度预筛选
OCR 噪声过滤
重复样本去重
长尾类别重采样
高质量人工数据加权
对于专业领域,应加入领域图文对,否则模型容易只学到通用语义。
8.6 引入反事实样本
构造视觉差别很小但语义不同的样本:
红车 → 蓝车
三个人 → 四个人
拿杯子 → 拿手机
有狗 → 无狗
文字 123 → 128
这可以减少模型依赖语言共现,而是关注真实视觉证据。
9. 对 MLLM 低幻觉训练的启示
如果目的是减少 MLLM 幻觉,不能只使用普通 CLIP 式全局对比学习。更推荐:
全局图文对比
+ 区域-短语对比
+ 对象存在/不存在对比
+ 属性 hard negative
+ OCR 对比
+ 空间关系对比
+ claim-level verification
也就是说,要从:
Image ↔ Caption
升级为:
Image ↔ Caption
Region ↔ Phrase
Object ↔ Attribute
OCR Region ↔ Text
Object Pair ↔ Relation
Claim ↔ Visual Evidence
这样才能真正服务于低幻觉 MLLM。
总结
跨模态对比学习的本质是:
把不同模态中语义一致的样本拉近,
把语义不一致的样本推远。
它的核心价值是:
统一多模态语义空间
提升 zero-shot 能力
增强图文/音文/视频文本检索
为 MLLM 提供视觉-语言预对齐能力
但主要挑战是:
图文噪声
假负样本
语义粒度不匹配
缺少局部 grounding
语言共现偏置
hard negative 不足
计算成本高
细粒度关系理解弱
专业长尾类别不足
概括:跨模态对比学习能让模型知道“图像和文本是否语义相关”,但要让 MLLM 少幻觉,还必须进一步加入区域级对齐、困难负样本、反事实监督、grounding 和验证机制。
参考链接:
[1]: https://arxiv.org/abs/2103.00020?utm_source=chatgpt.com “Learning Transferable Visual Models From Natural Language Supervision”
[2]: https://arxiv.org/abs/1807.03748?utm_source=chatgpt.com “Representation Learning with Contrastive Predictive Coding”
[3]: https://arxiv.org/abs/2303.15343?utm_source=chatgpt.com “[2303.15343] Sigmoid Loss for Language Image Pre-Training”
[4]: https://arxiv.org/abs/2102.05918?utm_source=chatgpt.com “Scaling Up Visual and Vision-Language Representation …”

