下面是普通正文版,不用代码块、不用写作块。
VCD:Visual Contrastive Decoding 学习笔记¶
论文:Mitigating Object Hallucinations in Large Vision-Language Models through Visual Contrastive Decoding
核心关键词:
- LVLM Object Hallucination
- Statistical Bias
- Language Prior / Unimodal Prior
- Visual Uncertainty
- Contrastive Decoding
- Training-free
- Adaptive Plausibility Constraint
一、论文研究的问题是什么?¶
VCD 关注的是 Large Vision-Language Models(LVLMs)中的 Object Hallucination。
所谓 object hallucination,就是:
模型生成了图片中实际不存在的物体。
例如图片中只有:
- 一个男人
- 一张桌子
- 一台电脑
但模型描述:
A man is sitting at a table with a laptop and a cup of coffee.
其中 cup of coffee 如果图片里不存在,就是 object hallucination。
从 token 生成角度来看,可以理解为:
模型错误地给了与当前视觉输入不一致的物体 token 较高概率,并最终将其生成。
二、VLM 和 LVLM¶
1. VLM¶
VLM = Vision-Language Model
泛指同时处理视觉与语言信息的模型。
早期 VLM 经常针对某一个具体任务,例如:
- Image Captioning
- VQA
- Image-Text Retrieval
- Visual Grounding
2. LVLM¶
LVLM = Large Vision-Language Model
可以看作 VLM 中规模更大、通常接入强大 LLM 的一类:
典型结构:
例如:
- LLaVA
- InstructBLIP
- MiniGPT-4
- Qwen-VL
LLaVA 属于典型 LVLM。
LVLM 相比传统 VLM 的一个重要特点是:
LLM 自身已经具有非常强的语言能力和世界知识。
这虽然增强了模型能力,但也带来了更强的 language prior,因此模型即使视觉证据不足,也可能生成听起来非常合理的内容。
三、Visual Instruction Fine-tuning¶
Visual Instruction Fine-tuning 可以理解成:
使用大量“图片 + 人类指令 + 理想回答”的数据,让模型学会根据自然语言指令完成各种视觉任务。
训练样本可以表示为:
例如:
- Image + “Describe this image.” → 图片描述
- Image + “What color is the car?” → Red.
- Image + “How many people are there?” → Three.
相比传统模型只针对单一任务训练,Visual Instruction Fine-tuning 让 LVLM 可以根据不同自然语言 instruction 灵活执行不同任务。
LLaVA 是这一路线的重要代表。
四、Object Hallucination 的两个核心原因¶
VCD 全文反复强调两个概念:
和
它们也是理解 VCD 的核心。
1. Statistical Bias¶
指训练数据中存在大量物体共现统计规律,模型把这些规律错误地当成当前图像中的真实证据。
例如训练数据中:
经常一起出现。
于是当模型在当前图片里看到 table 时,即使图片里没有 chair,也容易生成 chair。
可以粗略记成:
图看了一半,根据过去的数据经验脑补另一半。
更加严谨地说,它来自:
训练数据中的 object co-occurrence statistical bias。
所以最好不要正式称作“图像先验”,更准确的说法是:
视觉侧 / 数据侧的共现先验。
2. Language Prior / Unimodal Prior¶
LVLM 中的 LLM 已经通过海量文本学到了强大的语言统计规律。
例如已经生成:
A man is sitting at a dining table with a ...
即使完全不看图片,LLM 也可能认为:
- cup
- food
- plate
这些词接在后面非常合理。
也就是模型可能过度依赖:
而没有充分利用:
因此:
Language Prior = 话说了一半,根据语言经验脑补另外半句。
3. 两者共同点¶
它们本质上都属于:
模型不是完全依据当前视觉证据,而是在依靠过去学到的统计规律进行“猜测”。
可以这样记:
五、VCD 之前,幻觉缓解方法主要有哪些流派?¶
到 VCD 这个阶段,可以把已有 hallucination mitigation 方法粗略分成以下几类。
1. Fine-grained Visual-Language Alignment¶
核心思想:
加强视觉信息和文本之间的细粒度对齐,让模型生成某个词时能够找到真实视觉依据。
Fine-grained 是什么?¶
“粒度”就是:
一个问题被拆得有多细。
粗粒度:
细粒度:
甚至:
所以 fine-grained alignment 就是:
不只让整图和整句大致匹配,而是让 region、object、attribute、word 等更细的单位对齐。
代表方法包括:
- Fine-grained Contrastive Learning
- ROI Feature Fusion
ROI = Region of Interest。
ROI Feature Fusion 的思想是:
不只使用整张图的全局特征,还把具体 object region 的局部视觉特征融合进生成过程。
2. Data Augmentation / Reducing Object Co-occurrence Bias¶
核心思想:
通过重新构造训练数据,打破训练数据中过强的 object co-occurrence。
例如原数据经常:
模型容易学成:
于是数据增强可以增加:
这样的样本,削弱这种虚假关联。
这一类方法本质上是在:
因此通常需要重新训练或 fine-tune。
3. Hallucination-targeted Fine-tuning / Instruction Tuning¶
进入 LVLM 阶段以后,一类直接的方法是:
专门构造“教模型不要产生幻觉”的训练数据,再 fine-tune LVLM。
代表工作:
M-HalDetect¶
构建 hallucination 专项数据,对不同类型的 hallucination 进行细粒度标注,然后用于训练模型。
LRV-Instruction¶
构建大量 positive + negative visual instruction。
例如图片里没有狗,但故意问:
What color is the dog?
正确答案应该是:
There is no dog in the image.
而不是顺着错误前提继续编狗的颜色。
这种方法通过增加 negative instructions,让模型学会拒绝错误视觉前提。
4. RLHF / Preference Alignment¶
RLHF:
即:
基于人类反馈的强化学习。
基本过程:
↓
↓
训练:
↓
再利用强化学习优化模型,使其更倾向于生成高 reward 的回答。
在多模态 hallucination 中,可以让人类更偏好:
更符合图片事实、更少 hallucination 的回答。
LLaVA-RLHF 就属于这一类。
这一类方法通常需要:
- 人类 preference 数据
- Reward Model
- 额外训练
- 大量计算资源
5. Post-hoc Revision¶
Post-hoc:
事后处理 / 事后修正。
基本流程:
代表工作:
LURE¶
LURE 训练一个专门的 Hallucination Revisor。
它不是让 Revisor 从头生成,而是:
已经有一个可能包含 hallucination 的回答,再让 Revisor 对可疑部分进行修改。
LURE 分析发现 hallucination 与以下因素有关:
- Object co-occurrence
- Model uncertainty
- Generation position
Revisor 的任务可以理解成:
优点:
纠错任务比从头生成任务搜索空间更小。
但 Revisor 本身也不是绝对不会 hallucinate,因此可能出现:
- over-correction
- 删除真实物体
- 引入新的错误
6. Inference-time / Decoding-time Intervention¶
代表:
它和前面方法最大的区别是:
不重新训练模型,不构造新的 hallucination 数据集,而是在推理阶段修改 decoding。
因此属于:
六、为什么作者要提出 VCD?¶
前面这些方法虽然有效,但经常需要:
- 专门构造训练数据
- 人工标注
- Fine-tuning
- RLHF
- Reward Model
- Revisor
- 额外训练资源
因此作者认为需要一种:
的方法。
也就是:
不改变模型参数,不重新训练,只修改推理过程,就减少 hallucination。
这就是 VCD 的主要 motivation。
需要注意:
training-free ≠ computation-free
VCD 不需要额外训练,但推理时需要额外处理扰动图,因此 inference cost 会增加。
七、Encoding 和 Decoding¶
Encoding¶
Encoding 可以理解成:
把原始输入转化成模型内部可以处理的表示。
例如文本:
图像:
Tokenization 本身更偏预处理,encoding 更强调形成内部表示。
Decoding¶
Decoding 是:
根据内部状态一步一步决定最终输出哪个 token。
大致过程:
VCD 主要就在:
进行干预。
八、LVLM 普通生成公式¶
论文写:
其中:
- \(\theta\):模型参数
- \(v\):visual input
- \(x\):textual query
- \(y_t\):第 \(t\) 个生成 token
- \(y_{<t}\):此前已经生成的 token
- \(p_\theta\):模型预测概率分布
其中:
表示:
从某个概率分布中采样。
所以:
就是:
下一个 token \(y_t\) 从模型当前预测的概率分布里生成。
Logit¶
Logit 就是:
模型给每个 token 的原始分数。
例如:
| Token | Logit |
|---|---|
| dog | 3 |
| cat | 2 |
| chair | 0 |
| tree | -1 |
Logit:
- 可以是正数
- 可以是负数
- 不要求加起来等于 1
因此还不是概率。
exp¶
指数运算会把 logit 转换成正值。
再经过归一化,就得到:
这就是 Softmax。
因此整个过程可以记成:
九、VCD 的核心假设:Visual Uncertainty¶
作者认为:
高质量、可靠的视觉输入可以让模型更多依据真实图像生成答案。
但如果视觉信息变得模糊、不确定:
模型就会更加依赖:
因此:
例如:
原图里:
table + laptop,没有 cup。
清晰图片时,模型可能知道没有 cup。
但图片被破坏以后,模型看不清:
“table + laptop 好像经常和 cup 一起出现。”
于是:
十、如何人为制造 Visual Uncertainty?¶
作者借鉴 diffusion model 的前向加噪过程,对图片不断加入 Gaussian Noise。
大致过程:
其中:
- \(v_0\):原始清晰图片
- \(v_T\):经过多步加噪后的 distorted image
论文中的:
本质上就是:
每一步按照 Gaussian Distribution 给图片加入随机噪声。
其中:
控制加噪强度。
可以粗略记成:
不需要掌握 diffusion 公式推导,只要知道:
VCD 利用可控 Gaussian noise 人为降低视觉输入可靠性。
十一、VCD 最核心的方法¶
给定:
- 原始图像 \(v\)
- 扰动图像 \(v'\)
- query \(x\)
LVLM 分别产生两套输出分布。
原图:
扰动图:
然后 VCD 构造:
这个公式可以重新写成:
这个形式更容易理解。
十二、VCD 核心直觉¶
假设:
| token | 原图 logit | 扰动图 logit |
|---|---|---|
| dog | 8 | 2 |
| chair | 5 | 4.5 |
对于 dog:
说明图片被破坏以后,dog 的分数大幅下降。
意味着:
dog 很依赖真实视觉信息。
而 chair:
几乎没有变化。
意味着:
图片看不清以后模型还是想生成 chair。
说明 chair 很可能主要来自:
- Language Prior
- Statistical Bias
而不是真实视觉证据。
因此 VCD 的思想就是:
更可能是真实视觉信息支持的 token。
而:
更可能来自语言先验和统计偏差。
十三、\(\alpha\) 的作用¶
公式:
其中:
控制 contrast 的强度。
可以记成:
如果:
那么:
VCD 就退化为普通 decoding。
\(\alpha\) 越大:
越强调原图和扰动图之间的差异。
\(\alpha\) 是人为设定的 hyperparameter,不是模型自动学习出来的。
十四、为什么 VCD 需要 Adaptive Plausibility Constraint?¶
单纯 VCD 有一个潜在问题:
“原图和扰动图差异大”不一定代表这个 token 本身合理。
某些本来概率极低、非常离谱的 token,也可能因为 contrast 被意外放大。
因此作者增加:
十五、Adaptive Plausibility Constraint¶
作者定义:
人话:
只允许原图下概率至少达到“当前最大概率 × \(\beta\)”的 token 参与 VCD。
例如:
最高概率:
如果:
那么阈值:
只保留:
的 token。
例如:
| Token | Probability | 保留 |
|---|---|---|
| dog | 0.60 | ✓ |
| cat | 0.20 | ✓ |
| running | 0.10 | ✓ |
| tree | 0.04 | × |
| refrigerator | 0.0001 | × |
因此:
对于原图下本身概率很低的 token,通过动态阈值提前排除,避免其因为对比解码而被错误放大,从而防止 VCD 引入新的不合理输出。
十六、为什么叫 Adaptive?¶
因为这个阈值不是固定概率,例如:
而是:
随着模型当前最大概率变化。
因此模型越确定:
筛选阈值也会上升。
模型越犹豫:
会保留更多候选。
所以这是一个动态调整的 plausibility threshold。
十七、三个最重要的超参数¶
论文默认:
可以直接记成:
分别对应:
- Contrastive decoding strength
- Adaptive plausibility constraint
- Gaussian noise / visual uncertainty
十八、VCD 完整流程¶
整个 VCD 可以压缩成:
Step 1:原图预测¶
Step 2:构造扰动图¶
Step 3:扰动图预测¶
Step 4:过滤离谱 token¶
根据:
只保留合理候选。
Step 5:Contrastive Re-weighting¶
Step 6:Softmax¶
Step 7:Sampling¶
再使用:
- Direct Sampling
- Nucleus Sampling
- Beam Search
等正常 decoding strategy 选择 token。
十九、VCD 到底是不是“识别幻觉后删除”?¶
不是。
VCD 并不是:
而是:
在 hallucination token 真正生成之前,重新调整所有候选 token 的竞争关系。
它更加奖励:
于是那些主要由:
- language prior
- statistical bias
支撑的 token 会相对失去竞争力。
所以 VCD 属于:
而不是 post-hoc correction。
二十、VCD 是不是 Data Augmentation?¶
严格来说不是。
传统 Data Augmentation:
VCD:
不更新参数。
因此更准确的说法是:
Inference-time input perturbation + contrastive decoding
而不是传统意义上的 data augmentation。
二十一、VCD 和 Classifier-Free Guidance 的关系¶
VCD 的公式:
和 diffusion 中 classifier-free guidance 的:
形式非常相似。
Classifier-free guidance:
比较有 condition 和无 condition 的预测,从而放大 condition 的影响。
VCD:
比较正常视觉输入和视觉信息被破坏后的预测,从而放大真实视觉信息的影响。
因此 VCD 的创新并不是:
第一次提出两个输出分布相减。
而是:
把 contrastive decoding / classifier-free guidance 的思想迁移到了 LVLM hallucination 问题,并提出用 distorted visual input 构造 contrastive branch。
二十二、Regular 和 VCD 实验设置¶
论文中的:
Regular¶
VCD¶
二者使用相同 sampling strategy。
因此实验是在控制:
唯一主要区别就是有没有使用 VCD。
二十三、POPE¶
POPE:
Polling-based Object Probing Evaluation
主要评估:
形式:
Is there a dog in the image?
回答:
Yes / No
正负样本各占约 50%。
三个 negative sampling setting:
Random¶
从图片中不存在的 object 中随机抽。
Popular¶
从数据集中高频 object 中选择不存在的 object。
Adversarial¶
优先选择:
与图片真实 object 经常共现、但当前图片里不存在的 object。
因此:
难度通常不断上升。
这也是为什么 POPE 可以很好测试 statistical bias。
如果模型越来越容易被 adversarial samples 骗,就说明 object co-occurrence bias 对 hallucination 有明显贡献。
指标:
- Accuracy
- Precision
- Recall
- F1
二十四、VCD 为什么再次讨论 POPE 的 Random → Popular → Adversarial?¶
虽然 POPE 原论文已经发现过这种趋势,但 VCD 再次展示它的意义是:
用自己的模型和实验设置重新验证 VCD 的核心假设。
即:
支持:
所以这里属于:
hypothesis validation / supporting evidence
而不是一个新的 POPE 发现。
二十五、MME¶
MME 不是一个单独的“指标”,而是一个:
包含多种 perception 和 cognition 子任务。
VCD 主要使用其中:
Object-level hallucination¶
- Existence
- Count
Attribute-level hallucination¶
- Position
- Color
这已经属于比单纯“有没有 hallucination”更加细粒度的评估。
二十六、Accuracy 和 Accuracy+¶
MME 中:
Accuracy¶
普通单题准确率:
Accuracy+¶
同一张图片的一对互补问题必须:
才算正确。
例如:
Is there a dog? → Yes
Is there a cat? → No
必须两个都答对。
因此 Accuracy+ 更严格,可以减少模型单纯依赖:
“一直回答 Yes”
之类 bias 获得高分的可能性。
MME 常用:
二十七、VCD 在 Position 上效果有限¶
从 MME 结果来看,VCD 对:
- Existence
- Count
- Color
等维度的改善相对更稳定。
但对于:
提升并不稳定,部分模型甚至出现轻微下降。
因此更严谨的表述是:
VCD 对 Position 类空间关系判断的改善有限且不稳定。
不应直接说:
VCD 对 Position 无效。
因为论文并没有专门进行 statistical significance test。
可能的原因是:
Position 更依赖精细 spatial relation reasoning,而 VCD 的 Gaussian noise 本身也会破坏空间关系信息。
因此:
在 Position 类任务中未必能够像 object existence 那样干净地表示“有效视觉证据”。
二十八、Visual Uncertainty Ablation¶
作者进一步研究:
随着 Gaussian noise steps 增加,object hallucination 如何变化?
结果:
说明:
这一实验主要不是证明 VCD 本身有多强,而是在验证:
VCD 构造 distorted image 作为 contrastive branch 的合理性。
也就是说:
扰动图确实可以放大模型对 language prior 和 statistical bias 的依赖,因此能够暴露 hallucination tendency。
二十九、LLaVA-Bench 与开放式生成¶
LLaVA-Bench (In-the-Wild) 是一个规模较小的开放式 LVLM benchmark。
包含:
- 24 张图片
- 60 个问题
主要覆盖:
- Conversation
- Detailed Description
- Complex Reasoning
它不是大规模统计 benchmark,而更像:
小而精的开放式能力测试。
因为样本规模较小,所以不应把它当作唯一证据。
三十、为什么还要测 Open-ended Generation?¶
POPE / MME 很多任务都是:
作者希望证明:
VCD 不是只会“刷结构化 hallucination benchmark”。
因此进一步在 LLaVA-Bench 测开放式生成,并使用 GPT-4V 辅助评价。
作者想证明两件事。
1. Accuracy 提高¶
说明开放式回答也更贴合图片、更少 hallucination。
2. Detailedness 提高¶
说明 VCD 并不是简单:
“少说话,从而少犯错。”
如果模型为了避免 hallucination 什么都不敢说,确实可能让 hallucination 下降,但回答质量也会恶化。
因此作者希望证明:
同时:
不过:
GPT-4V-aided evaluation 属于 model-as-a-judge,作为补充证据可以,但没有 POPE 这类结构化 benchmark 那么直接。
三十一、VCD 对 General Capability 的影响¶
作者还利用 MME 等 benchmark 研究:
VCD 在降低 hallucination 的同时,会不会损害 LVLM 的其他能力?
这是一个非常重要的问题。
因为最简单的“防幻觉”方式可能是:
模型什么都少说、什么都回答 No。
这样 hallucination 可能下降,但模型本身也废了。
因此理想情况是:
同时:
最好还能:
VCD 实验显示 perception-related tasks 整体上倾向于提升,但提升幅度并不是都很大,并且部分其他任务存在轻微下降。
因此比较严谨的结论应该是:
VCD 在若干视觉感知任务上带来一定改善,同时整体上没有严重破坏模型原有能力。
而不是:
VCD 全面显著提升模型所有综合能力。
三十二、实验图表需要批判性阅读¶
阅读实验结果时不能只看作者正文中的:
- consistent improvement
- substantial improvement
- significant improvement
还应该自己检查:
- 实际提升多少?
- 是否有下降的子任务?
- 是否有 error bar?
- 是否进行了 statistical significance test?
- 柱状图纵轴是否从 0 开始?
- 是否存在 benchmark selection bias?
- 是否只测了对方法特别有利的任务?
论文中某些柱状图纵轴并非从 0 开始,因此视觉上可能会放大小幅差距。
所以阅读实验图时应区分:
和:
前者只表示:
大部分结果方向一致。
并不代表:
提升幅度非常大。
三十三、VCD 的主要优点¶
1. Training-free¶
不需要:
- 重新训练 LVLM
- hallucination-specific dataset
- RLHF
- Reward Model
- Revisor
2. Plug-and-play¶
可以作用于多个不同 LVLM family,例如:
- LLaVA
- InstructBLIP
- Qwen-VL
3. 方法直观¶
核心思想非常清晰:
如果某个 token 在视觉证据被破坏后仍然保持很高概率,那么它可能主要依赖语言先验或统计偏差。
4. 不只是事后修改¶
VCD 在:
直接改变候选 token 的概率竞争,因此错误可以在真正生成之前被压制。
三十四、VCD 的潜在局限¶
1. 推理成本增加¶
虽然 training-free,但需要:
因此 inference cost 增加。
2. 并非所有 hallucination 都来自 language prior / statistical bias¶
VCD 的核心假设是:
但实际 hallucination 原因可能更加复杂。
3. 对 Position 等空间关系任务帮助有限¶
说明:
VCD 对 object existence 类型 hallucination 可能更擅长,而对于精细空间关系等问题并不一定稳定有效。
4. Distorted Image 本身可能破坏有用视觉信息¶
高斯噪声不仅会放大 language prior,也会同时破坏:
- Object
- Attribute
- Spatial Relation
- Fine-grained Detail
因此 contrastive signal 并不一定始终完美代表“hallucination tendency”。
5. \(\alpha,\beta,\gamma\) 是人为设定的超参数¶
分别需要实验选择:
说明方法仍然存在一定的 hyperparameter sensitivity。
三十五、VCD 与此前方法的整体对比¶
| 方法流派 | 核心思想 | 是否额外训练 | 何时干预 |
|---|---|---|---|
| Fine-grained Alignment | 加强视觉与语言局部对应 | 是 | 训练阶段 |
| Data Augmentation | 打破 object co-occurrence bias | 是 | 训练阶段 |
| Hallucination Fine-tuning | 专门构造防幻觉数据训练模型 | 是 | 训练阶段 |
| RLHF | 用人类偏好训练模型更可信地回答 | 是 | 训练阶段 |
| Post-hoc / LURE | 输出之后通过 Revisor 修改 | Revisor 需要训练 | 生成之后 |
| VCD | 原图与扰动图做 Contrastive Decoding | 否 | 生成过程中 |
因此 VCD 的核心定位可以总结为:
三十六、整篇 VCD 最核心的逻辑链¶
把整篇论文压缩成一条线:
Step 1:发现问题来源¶
LVLM hallucination 很大程度上受到:
影响。
Step 2:提出假设¶
视觉信息越不可靠:
模型越依赖:
从而:
Step 3:人为放大问题¶
给原图加入 Gaussian Noise:
让模型的:
statistical bias / language prior
更加明显。
Step 4:构造 Contrast¶
比较:
和:
如果某个 token:
说明它更依赖真实视觉信息。
如果:
说明它可能主要依赖语言先验或共现偏差。
Step 5:重新调整 token 分数¶
增强真正有视觉依据的 token。
Step 6:过滤异常 token¶
利用:
动态过滤原图下本来就极低概率的 token,防止 VCD 矫枉过正。
Step 7:正常生成¶
三十七、一句话理解 VCD¶
如果只允许记一句:
VCD 故意破坏图像来暴露模型在缺乏视觉证据时的“瞎猜倾向”,然后把正常图像预测与这种瞎猜倾向进行对比,在每个 token 生成前重新调整概率,使模型更依赖真实视觉信息,而不是 statistical bias 和 language prior。
再口语一点:
“图都看不清了你还特别想说的东西,我就怀疑你是在瞎猜;只有原图清楚时你才特别想说的东西,我更愿意相信是真的看到了。”
这就是 VCD 的核心。