半真半假会破坏基于相似度的检索 Half-Truths Break Similarity-Based Retrieval
CLIP 类检索会被错细节迷惑;CS-CLIP 用 unit 级监督修复该漏洞。
前置知识
CLIP 双编码器与对比学习
CLIP 通过一个图像编码器 $f_\phi$ 和一个文本编码器 $g_\phi$,把图像和文本映射到同一个单位球上的向量空间,用对称的 InfoNCE-style 对比损失 $\mathcal{L}_{I\to T}+\mathcal{L}_{T\to I}$ 训练:每个 batch 里匹配对是正样本,其余都是负样本。推理时只需算余弦相似度 $s(I,T)=f_\phi(I)^\top g_\phi(T)$,因此可以高效地做大规模图–文检索。
本文的对象就是 CLIP 这种 dual encoder,理解它把图–文检索简化为「一次矩阵乘」的机制,才能明白为什么「加一句错的话相似度反而升高」会成为一个系统性问题。
对比学习的硬负样本(hard negatives)
标准 CLIP 只用 batch 内的非匹配对作为负样本,这些负样本往往和正样本差异很大,难度太低。NegCLIP 等工作提出构造 sentence-level hard negatives:把 caption 里若干词打乱或换成其他词得到 $\tilde{T}$,让它在文本空间里和 $T$ 很近,但语义不同,然后把这些 foil 加进对比损失的分母。
本文正是建立在 NegCLIP 风格硬负样本之上,并指出 sentence-level 监督还不够,需要把监督进一步下沉到 entity / relation 这样的 unit 层面。
组合理解(compositional understanding)
组合理解指模型能否正确区分「红色方块和蓝色圆」与「蓝色方块和红色圆」这种最小语义差异的句子对。常用 benchmark 包括 ARO、Winoground、SugarCrepe、VALSE、VL-Checklist 等,通过精心编辑过的 caption foil 来检验属性绑定、关系、词序等能力。
本文同时评估了 16 个组合 benchmark,发现 half-truth 修复与这些通用组合 benchmark 的提升高度相关,说明这个新诊断不是孤立的玩具测试。
合取谬误(conjunction fallacy)
Tversky & Kahneman (1983) 发现的认知偏差:人在直觉判断中认为合取命题「A 且 B」比单一命题「A」更可能发生,即使逻辑上 A∩B ⊂ A 因此更不可能。关键因素是合取命题里增加的「B」看起来更具体、更贴近情境。
作者把 CLIP 的 half-truth 漏洞类比成合取谬误——增加一个看似具体的错误细节让模型觉得更相关。这给研究动机提供了认知科学层面的诠释。
研究动机
现有的 CLIP 类 dual encoder 在图–文检索时存在一个反直觉的系统性漏洞:当一个正确的简短描述后面追加一个「看起来流畅合理但其实与图像不符」的细节时,模型给出的相似度不降反升。作者在 MS-COCO 验证集上系统性地构造这种「half-truth」样本,发现 zero-shot CLIP 只能在大约 40.6% 的情况下正确地把原始短描述排在带错误细节的更长描述之上;如果追加的错误细节是一个 relation(而非单纯实体),这个比例甚至跌到 32.9%——远低于随机猜测的 50%。即便换用 SigLIP (45.7%)、SigLIP2 (54.6%)、用 sentence-level hard negatives 微调过的 NegCLIP (56.5%) 等更强模型,整体 AccHT 仍然贴近或低于随机水平,尤其是 relation 类追加最顽固。这一失败模式与既有 benchmark(如 ARO、Winoground)所测的「交换/重排」型编辑互为补充:现有评测覆盖了「把对的信息打乱」,但忽略了「追加错的信息」这一类更贴近用户逐步细化查询的现实场景。
本文的目标是本文提出一个明确、可量化的目标:把 CLIP 类模型在 half-truth 场景下「anchor 应当比 half-truth 更相关」这一约束的命中率从 40.6% 大幅提升到接近人类直觉的 70% 以上;同时在不修改 dual-encoder 推理架构、不引入额外 inference cost 的前提下,把在 16 个既有 compositional benchmark 上的平均 I2T 准确率至少提升 5 个百分点,从而证明「解决 half-truth」不是一个孤立诊断而是通向更广泛组合理解的钥匙。
与已有工作不同的是,既有提升组合能力的方法大致分三类:(1)数据级——构造 sentence-level 硬负样本或合成 hard caption(NegCLIP、CE-CLIP、DeGLA 等),但这些 foil 在句子级做扰动,对单个实体或关系是否被真正「验证过」仍缺乏直接监督;(2)结构级——加 region、scene graph、辅助模块(FSC-CLIP、Structure-CLIP、FILIP 等),要么改动架构要么增加额外标注;(3)loss 级——加视觉–语言匹配之外的目标(ReadCLIP、CycleCLIP 等),仍属于句对句级别的语义压力。本文独到之处是把监督下沉到 caption 的最小语义单元(entity 与 relation unit),用一个 LLM pipeline 自动生成与每个 unit 对应的 minimal-edit foil,然后在保持标准 dual-encoder 推理的同时,把 unit-level 对比损失和 NegCLIP 风格的 sentence-level 损失并行加到总目标上,从「零件级」补足训练信号的细粒度。
核心方法
CS-CLIP 的核心直觉非常朴素:CLIP 的全局对比损失把整句 caption 当成一个不可拆的整体来对齐图像,相当于教学生「整段话和图匹配」,却从不抽查「这段话里的主语、谓语、宾语对不对」。一旦考试题变成「在对的句子里塞一个错的名词或错的关系」,学生大概率被蒙混过关——因为 bag-of-features 的相似度会被新出现的、看起来合理的词汇抬高。CS-CLIP 的技术路线就是在保留全局对齐的同时,给每个 entity / relation unit 单独配一个 minimal-edit foil(例如把「brown horse」改成「white horse」、「horse near barn」改成「horse inside barn」),并通过 unit-level contrastive loss 让图像 embedding 与正确 unit 的相似度高于与其 foil 的相似度,同时把其他 in-batch units 当作隐式负样本。这相当于在原本的「整句考试」之外加了一份「单词 / 关系随堂测验」,而推理时仍用原来的 dual-encoder 架构和余弦打分,因此 zero deployment cost。
与 NegCLIP 等 sentence-level hard-negative 方法相比,CS-CLIP 最本质的区别是「监督粒度从句子下沉到 unit」。NegCLIP 的 foil 是被打乱词序的整句 caption,它只让模型学到「这整句不要匹配」,但模型完全可以靠「抓住里面几个主要实体词」就完成判别;CS-CLIP 的 foil 则是针对单个 entity(换头名词或属性)或单个 relation(换谓词、换主宾、换 argument)的最小语义翻转,它强制模型在共享的上下文里分辨「这一个零件对不对」。第二个本质区别是「监督信号是在标准架构外加平行 loss,不动 inference」:与 FSC-CLIP、Structure-CLIP 等加 region 或 scene-graph 的方法相比,CS-CLIP 训练时多了一个 unit-level 头 $\mathcal{L}_{\text{unit}}$(公式 5),用相同的文本编码器把 unit 和 foil 编码为短句向量,再与图像向量做对比;测试时则把这部分监督完全丢弃,不增加任何额外模块、不改变打分方式,因此可以即插即用地替换 CLIP backbone。
方法步骤详情
完整流程可分四步。第一步是 unit 解析与 foil 生成:用一个文本-only 的 Qwen3-8B-AWQ(vLLM 部署)按结构化 JSON 输出每个 caption 的 entity unit $e\in E(T)$(如「a brown horse」「three dogs」)和 relation unit $r=\langle e_s,p,e_o\rangle$(如「person riding horse」),对每个 unit 再调用同一个 LLM 生成 1–4 个 minimal-edit foil——entity foil 替换 head noun 或单一属性,relation foil 替换 predicate、交换 subject/object(仅当 predicate 非对称时)或替换单个 argument,并叠加规则后处理剔除同义词、重复编辑、对称 swap 等。第二步是 unit 采样:对每个 batch 中的图像–caption 对 $(I_i, T_i)$,以概率 $p_{\text{rel}}=1.0$ 采样一个 relation unit,否则采样一个 entity unit(最多 $K=2$ 个 entity 的合取),并同步取它的 foil $\tilde{U}$;采样数量 $N_u=2$ 个 unit/foil 对。第三步是 unit-level 损失:用相同的文本编码器 $g_\phi$ 把 unit 和 foil 编码为归一化向量 $u_{i,k}, \tilde{u}_{i,k}$,图像编码为 $v_i$,定义带可学习温度 $\tau$ 的相似度 $\kappa(x,y)=\exp(x^\top y/\tau)$,然后用对称的 image-to-unit 与 unit-to-image 双向 InfoNCE 公式(公式 3–4),把 $\tilde{u}_{i,k}$ 显式加入 image-to-unit 的分母,让正确 unit 的归一化相似度高于其 foil 与所有 in-batch units。第四步是联合训练:最终目标 $\mathcal{L}_{\text{CS}}=\mathcal{L}_{\text{global}}+\lambda_u\mathcal{L}_{\text{unit}}$(公式 6),其中 $\mathcal{L}_{\text{global}}$ 采用 NegCLIP 风格 sentence-level 硬负样本,$\lambda_u=0.5$。整套训练在 OpenCLIP 框架上做 25 个 epoch 的微调(ViT-B/32,8×A100,AdamW,lr=5e-6,weight decay=1e-2,batch size=128),测试时推理完全回到标准双编码器 + 余弦打分。
技术新颖性
技术新颖性体现在三方面。其一,提出了一种新的 failure mode 诊断——half-truth diagnostic,并形式化为 $\text{Acc}_{HT}=\Pr[s(I,A)>s(I,A^-)]$,把「追加错误细节是否被惩罚」这一原本只能靠人眼感觉的现象变成可量化指标;论文还在 COCO 上用 5000 张图构造了 $N=25{,}606$ 对 anchor/half-truth,覆盖 entity 与 relation 两类追加。其二,把 unit parsing 与 foil generation 做成可复现的纯文本 LLM pipeline(Qwen3-8B-AWQ + vLLM + 结构化 JSON + 后处理规则),免去了昂贵的人工标注,且 foils 同时支持 object-change、attribute-change、predicate-change、role swap、argument-corruption 等多种编辑类型。其三,把 unit-level 对比损失与 sentence-level 损失以加权求和的形式并联,验证了「细粒度监督 + 粗粒度对齐」可以共存:消融实验(Table 4)显示只加 unit-foil(无 sentence negatives)就能把 relation AccHT 从 36.9% 拉到 63.7%,再叠回 sentence negatives 后还能再涨 1.8 个点,证明两者提供互补信号。
实验结果
在主表 Table 1 上,CS-CLIP(ViT-B/32)把 COCO half-truth 的整体 AccHT 拉到 69.3%,相比 zero-shot CLIP 提升 +28.7 个点,mean similarity gap $\Delta=+0.017$ 也是所有方法中最高的;其中 entity 加成 75.4%(+22.5)、relation 加成 65.5%(+32.6),relation 这一项相对零样本 CLIP 从 32.9% 翻了近一倍,并且把 NegCLIP 在 relation 上仍低于随机的 48.3% 反转成显著高于随机。在 16 个 compositional benchmark 的平均 I2T 准确率(Table 11)上,CS-CLIP 以 57.8% 居首,比 CLIP(52.1%)高 5.7 个点,比 FSC-CLIP(57.4%)、ReadCLIP(56.9%)、DeGLA(56.2%)、NegCLIP(55.3%)都更优;其中 ARO 86.9%(+38.4)、VL-CheckList 79.2%(+12.1)、ColorFoil 90.5%(+6.3)、SugarCrepe 82.2%(+5.4)、SPEC 36.1%(+3.4)等几乎所有 benchmark 都稳定正收益,只有 MMVP(13.3%)和 Winoground(29.8%)与 CLIP 持平。Figure 5 进一步显示 $\text{Acc}_{HT}$ 与 I2T 平均准确率在所有对比模型上呈正相关,CS-CLIP 同时位于右上角,验证「half-truth 修复 ≈ 组合能力提升」。在 paired benchmark 的双向表现(Table 13)上,CS-CLIP 平均 Group Accuracy 27.3%(最佳),尤其在 Winoground T2I 上拿到 13.0%(所有方法里第一),说明 unit 监督同时利好 I2T 和 T2I 两个方向。下游任务(Table 14–15)方面:zero-shot 分类平均 Acc@1 由 CLIP 的 63.6% 降到 59.9%(-3.7),与 NegCLIP(58.2%)、FSC-CLIP(61.2%)处于同一量级,是 COCO 微调的常见 trade-off;而图–文检索的 Recall@1(CS-CLIP 56.8% I2T / 71.7% T2I)反而显著高于 CLIP(45.2% / 62.7%),在 Flickr8k 上拿到 67.3% I2T、81.5% T2I,说明组合改善对真实描述更详细的检索场景有直接收益。消融(Table 4)证实了三个信号互补:仅全局句级负样本(Variant 2)只能把 relation AccHT 拉到 48.3%(仍低于随机);仅 unit + foil(Variant 4)把 relation 拉到 63.7%;三者相加(Variant 6)最终达到 65.5% relation 与 69.3% 整体。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Half-Truth 整体诊断(COCO validation) | AccHT (%) 越高越好 | 69.3(CS-CLIP, ViT-B/32) | 40.6(zero-shot CLIP) | +28.7 个百分点 |
| Half-Truth entity 加成 | AccHT (%) | 75.4 | 52.9(zero-shot CLIP) | +22.5 |
| Half-Truth relation 加成 | AccHT (%) | 65.5 | 32.9(zero-shot CLIP) | +32.6 |
| Compositional 平均(16 个 benchmark) | I2T 准确率 (%) | 57.8 | 52.1(zero-shot CLIP) | +5.7 |
| ARO(属性绑定 + 关系 + 词序) | I2T 准确率 (%) | 86.9 | 48.5(zero-shot CLIP) | +38.4 |
| VL-CheckList(对象/属性/关系审计) | I2T 准确率 (%) | 79.2 | 67.1(zero-shot CLIP) | +12.1 |
| Paired compositional(平均 7 数据集) | Group Accuracy (%) | 27.3 | 25.9(zero-shot CLIP) | +1.4(且在所有方法里最高) |
| Flickr8k 检索 | Recall@1 I2T (%) | 67.3 | 56.2(zero-shot CLIP) | +11.1 |
| ImageNet-1k 零样本分类 | Acc@1 (%) | 58.9 | 60.2(zero-shot CLIP) | -1.3(COCO 微调的常见代价) |
局限与改进
作者明确承认的局限有三:(1)unit parsing 完全靠文本端 LLM(Qwen3-8B-AWQ),可能产生 artifacts 或漏掉图中存在但 caption 没有写的视觉细节,导致 unit 抽取本身就带有 caption-only bias;(2)在 COCO 上微调会牺牲一定的 zero-shot 通用分类能力(Acc@1 63.6→59.9),与 NegCLIP / FSC-CLIP 等微调方法的 trade-off 同量级,并非新问题;(3)提升 half-truth 性能不等于保证事实正确性或人口统计公平,模型仍可能反映训练数据中的偏差。从我自己的观察看,还有几点值得注意:MMVP(13.3%)和 Winoground(29.8%)几乎和 CLIP 持平,说明模型对细粒度视觉属性(颜色细微差别、空间方位)的判别仍很弱,unit-level 监督主要解决的是「整体关系是否被验证过」而不是「像素级视觉 grounding」;此外 relation 类 AccHT 虽然提升到 65.5%,但仍有约 1/3 的情况模型仍偏好带错关系的 half-truth,绝对水平离人类仍有距离;Table 16 进一步显示采样策略对结果相当敏感(relation 概率 $p=0$ 时 relation AccHT 仅 55.2%),意味着实际收益对 prompt 工程和采样细节依赖较强,换 caption 分布或换 LLM 时需要重新调参。
独立分析的弱点
独立分析来看,三个具体场景比较脆弱。其一,LLM-only unit parser 在复杂长描述或包含抽象、隐喻性表达的 caption 上可能给出不稳定 / 多义 / 不视觉化的 unit,导致 foil 质量参差,进而污染 unit-level 监督——改进方向是引入 visual grounding(如用 detection/segmentation 给每个 noun phrase 绑定区域,让 LLM 在生成 foil 时参考视觉证据),或者用 self-consistency + confidence 过滤低质量 unit。其二,目前 foil 编辑类型(object change、attribute change、predicate change、role swap 等)虽覆盖了常见错误,但缺少「否定」「否定范围」「计数」类编辑,而 Table 12 显示所有模型在 Negation 与 Counting 上的准确率分别只有 27–37% 和 24–39%,扩展 foil 模板以包含否定/数量扰动可能直接帮到这两类能力。其三,unit-level 损失只作用在文本侧的 embedding,对视觉侧没有对称的 unit 监督;如果同时给图像做 sub-region 级的对齐(例如用 GradCAM 或开放词汇检测器得到 region embedding,再与 unit embedding 对比),可以打破「文本知道对、图像不知道对」的瓶颈,尤其对 relation 类需要验证「哪个实体出现在哪个位置」的场景可能收益更大。
未来方向
作者在文末与 Limitations 章节给出三条明确延伸:image-side half-truths(在正确的图上加错的对象、关系)、joint image-text parsing(联合视觉 grounding 来生成 unit)、把 unit-level 监督从 fine-tuning 阶段上移到大规模 pretraining 阶段以缓解 zero-shot trade-off。基于本文成果还值得探索的方向包括:(1)把 unit foil 范式扩展到 video–text 检索和 audio–text 检索,把「unit」泛化为时间窗口或声学事件;(2)把 AccHT 作为训练过程中的在线诊断指标,而不仅是事后评估,可能替代或补充现有的 compositional eval;(3)把 unit 监督与 instruction tuning 结合,看是否能复用到多模态大模型(MLLM)以修复它们的 negation / role 错乱问题;(4)探索 unit-level 监督对模型可解释性的影响——既然每个 unit 都有显式的 foil,是否可以基于 unit 相似度做局部归因,让 CLIP 类模型首次具备「可被质疑的局部证据」。
复现评估
复现门槛相对友好。代码已在 GitHub 开源(https://github.com/kargibora/CS-CLIP/),基于 OpenCLIP 框架实现,主要改动集中在数据构造(Qwen3-8B-AWQ + vLLM 的 JSON pipeline)和 loss(多了一个 unit-level contrastive head)。数据上,训练用 MS-COCO Karpathy split,half-truth 诊断默认采样 5000 张图、构造 25,606 对样本;16 个 compositional benchmark 都是公开的(ARO、SugarCrepe、SugarCrepe++、Winoground、VALSE、VL-Checklist、What’sUp、SPEC、VisMin、COLA、ColorFoil、ColorSwap、COCO-CF、MMVP、NegBench、BLA),附录 Table 8 给出引用和协议。算力方面,主实验为 25 epoch × batch size 128 的 ViT-B/32 微调,使用 8×A100;不同 backbone 的 scaling 实验(ViT-B/16、ViT-L/14)也给出了完整数字(Table 2),其中 ViT-L/14 把 half-truth 整体 AccHT 推到 73.1%、compositional I2T 推到 59.5%,可见算力上限越高收益越大。复现难度主要在于 LLM 解析 pipeline 需要 Qwen3-8B-AWQ(4-bit AWQ 量化 + vLLM 部署),附录 Table 5 给出全部超参;以及 Appendix F 给出 unit 采样($N$, $p_{\text{rel}}$, swap 概率)和优化超参(lr, weight decay, batch size)的完整 ablation,提示换数据或换模型时可能需要重新调 $\lambda_u$ 和采样比例。
论文图表
用一张图展示 half-truth 漏洞:从一段「elephants near log」的短描述出发,CLIP / NegCLIP 都把追加了「elephants away from log」(错关系)或「elephants and zebras」(错实体)的 half-truth 相似度(0.25 / 0.22)判得比 anchor 还高,而 CS-CLIP 给出 anchor 0.30、HT1 0.22、HT2 0.23 的反向打分。
这是全文最具冲击力的「问题可视化」:一个具体 COCO 例子就让读者一眼明白「CLIP 居然偏好错句」的反直觉程度,奠定了整篇 paper 的问题陈述。
柱状图对比 CLIP、NegCLIP、SigLIP、SigLIP2 在 entity / relation / overall 三个 AccHT 上的表现,零样本 CLIP 整体 40.6%、relation 32.9%(均低于 50% 随机基线),SigLIP2 整体 54.6%、relation 45.2%,虚线标出 50% 随机猜测线。
用极紧凑的方式量化「关系类追加比实体类追加更难」这一关键发现,并直观展示为何这是一个稳定存在的失败模式而非单点 case。
延续 Figure 10,列出 SPEC(absolute_size / count / existence / relative_size 等)、SugarCrepe(SC)与 SugarCrepe++ 各子集、VALSE(actions / coreference / counting / existence / noun phrases / plurals / relations)、VL-CheckList(attr_* 与 obj_* 与 rel_* 子项)、VisMin(attribute / counting / object / relation)、Winoground 等子集上五种模型相对 CLIP 的差值。
细粒度子集证据的第二部分,揭示 MMVP 多数子集、SPEC absolute_spatial 等空间推理子集上所有模型都接近零收益的共性弱项。