好,我把它重新整理成一版正常 Markdown + LaTeX 的阅读版学习笔记。这次公式都直接放在正文里,方便你复习。
《Object Hallucination in Image Captioning》学习笔记¶
Rohrbach et al., EMNLP 2018
1. 这篇论文到底研究什么?¶
论文关注一个很具体的问题:
Image Captioning 模型会不会说出图片里根本不存在的物体?为什么会这样?
例如图片里只有一个人在吃饭,模型却生成:
A man is eating with a fork.
如果图片实际上没有 fork,那么 fork 就是 object hallucination。
在这篇论文之前,图像描述通常主要用:
- BLEU
- METEOR
- CIDEr
- SPICE
评价。
但这些指标主要衡量:
模型生成的句子和人工参考 caption 像不像。
它们并不能很好回答:
模型说出来的物体到底存不存在于图片中?
因此作者提出了 CHAIR。
2. CHAIR:论文最重要的贡献¶
CHAIR 全称:
Caption Hallucination Assessment with Image Relevance
它专门衡量 caption 中的 object hallucination。
作者利用:
- MSCOCO reference captions
- MSCOCO object annotations
判断某个生成出来的 object 是否真的存在。
2.1 CHAIR\(_i\)¶
Instance-level hallucination。
公式:
意思是:
模型说出来的所有物体中,有多大比例是假的。
例如:
A man riding a horse next to a dog and a chair.
假设图片里:
- man ✅
- horse ✅
- dog ❌
- chair ❌
那么:
2.2 CHAIR\(_s\)¶
Sentence-level hallucination。
意思是:
有多少句话至少发生了一次 object hallucination。
比如 100 张图片生成 100 个 caption,其中 20 个 caption 至少出现一个不存在的物体:
注意:
CHAIR 越低越好。
3. Image Consistency:这个幻觉是不是“视觉看错了”?¶
作者训练了一个只看图片的 object classification model。
对于某个物体词 \(w\),计算:
其中:
- \(I\):图片
- \(w\):物体,例如
fork
假设 caption 模型 hallucinate 了:
fork
但是纯视觉模型也认为:
那么说明:
虽然
fork按 ground truth 是错的,但从视觉上确实很容易把图片误判成有 fork。
因此这个 hallucination:
Image Consistency 高
更可能是:
visual misclassification / visual ambiguity
导致的。
反过来:
说明图片本身几乎不支持 fork。
那就要怀疑它是不是语言模型自己脑补的。
4. Language Consistency:是不是语言先验导致的?¶
作者又训练了一个:
完全不看图片,只根据前文预测下一个词的 LSTM Language Model。
例如:
A man is eating at a table with a ...
Language Model 预测:
- fork
- spoon
- plate
- knife
- dog
如果 Caption Model hallucinate 的是 fork,而 fork 在纯语言模型里排名第一:
作者定义:
所以:
非常高。
意思是:
即使完全不看图片,仅根据语言上下文,也特别容易生成
fork。
因此这个 hallucination 很可能来自:
language prior / linguistic bias
4.1 两者怎么一起理解?¶
可以简单记:
| 指标 | 问题 |
|---|---|
| Image Consistency | “是不是图像看错了?” |
| Language Consistency | “是不是语言模型顺嘴脑补了?” |
比如 hallucinate fork:
但:
那么:
Image Consistency 很低
Language Consistency 很高
说明这个错误明显更符合:
语言先验
而不是视觉证据。
5. 论文比较了哪些模型?¶
作者比较了两大因素:
Model Architecture¶
不同模型结构是否影响 hallucination。
Learning Objective¶
不同训练目标是否影响 hallucination。
6. FC 是什么?¶
FC 是一个非常基础的 CNN + LSTM captioning model。
你现在可以这样理解:
Image
↓
ResNet
↓
Convolutional feature map
↓
Average Pooling
↓
Global visual feature vector
↓
映射后初始化 LSTM
↓
LSTM
↓
Caption
最重要的特点:
整张图首先被压缩成一个 global feature vector。
然后这个视觉向量主要在最开始用于初始化 LSTM。
所以可以记:
FC = 整张图片压成一个向量,然后 LSTM 写句子。
7. TopDown 是什么?¶
TopDown 最大的不同是:
不那么早把图片所有空间信息压成一个向量。
它保留多个空间区域的视觉特征:
然后在生成每一个词的时候,通过 attention 决定:
现在应该重点看哪些区域?
大致:
Image
↓
ResNet
↓
Spatial Features
v1 v2 v3 ... vk
↓
Attention LSTM
↓
计算当前应该关注哪些区域
↓
Attended Visual Feature
↓
Language LSTM
↓
Next Word
比如生成:
A man riding a horse
生成 man:
attention 看人。
生成 horse:
attention 转向马。
8. TopDown 和 ViT 的 attention 是一回事吗?¶
不是完全一样。
TopDown:
语言生成状态 → 选择图像区域
ViT:
image patch ↔ image patch 做 self-attention
ViT 把图片切成:
每个 patch 变成一个视觉 token。
然后 self-attention 可以直接建立不同区域之间的关系。
例如:
左边一个人,右边一只狗。
CNN 通常需要经过多层卷积逐渐建立远距离关系。
而 ViT 中:
人的 patch 可以直接 attention 到狗的 patch。
所以 Transformer 更自然地支持长距离区域交互。
9. TopDown-BB¶
TopDown 普通版本 attention 的是:
CNN spatial feature map。
TopDown-BB attention 的则是:
object detector 提出的 object proposal / bounding-box region features。
也就是:
vs.
因此 TopDown-BB 更接近:
object-level visual grounding
10. NBT¶
NBT:
Neural Baby Talk
相比 TopDown-BB,它会更加显式地使用 object detection。
可以粗略理解成:
所以它更强调:
句子里说出来的物体,应该真的和图像中检测到的物体对应。
11. TopDown Deconstruction:非常重要的消融实验¶
作者把完整 TopDown 一步一步拆成 FC:
目的是:
到底是哪一个组件影响 hallucination?
而不是直接:
TD 比 FC 好 → 所以肯定是 attention 的功劳。
第一步:TopDown → NoAttention¶
去掉:
learned attention mechanism
原来:
现在:
也就是:
仍然保留 spatial features,但模型不能动态决定“现在看哪里”。
第二步:NoAttention → NoConv¶
这一步非常关键。
NoAttention 仍然有:
也就是 spatial features。
NoConv 则提前:
得到:
也就是:
不再给 captioning 网络空间 feature map,只给一个 pooled global vector。
注意:
不是把 CNN 删掉!
ResNet 依然存在。
删掉的是:
空间化的 convolutional representation。
第三步:NoConv → SingleLayer¶
原来两个 LSTM:
变成:
也就是:
去掉一层 LSTM。
第四步:SingleLayer → FC¶
SingleLayer:
global image feature 每个时间步都输入。
类似:
FC:
visual feature 只在最开始初始化 LSTM。
之后:
所以最后一刀是:
去掉 per-step visual input。
12. 五个模型完整对比¶
| 模型 | Spatial feature | Attention | LSTM 数量 | 图像信息 |
|---|---|---|---|---|
| TopDown | ✅ | ✅ | 2 | 动态选择视觉区域 |
| NoAttention | ✅ | ❌ | 2 | spatial feature 直接聚合 |
| NoConv | ❌ | ❌ | 2 | global pooled feature |
| SingleLayer | ❌ | ❌ | 1 | global feature 每步输入 |
| FC | ❌ | ❌ | 1 | global feature 初始化一次 |
最关键的观察:
NoAttention → NoConv 时 hallucination 明显增加。
所以作者认为:
TopDown 好,不一定只是因为 attention。
更重要的是:
模型能够访问细粒度 spatial visual information。
13. 为什么 FC 反而可能比 SingleLayer 好?¶
这个结果一开始很反直觉。
SingleLayer:
每个时间步都把 global image feature 再输入一次。
FC:
只在开始时用一次。
为什么 FC 反而 hallucination 更少?
因为 SingleLayer 每一步收到的并不是:
“现在生成 dog 时专门给一个 dog region。”
而是:
同一个已经池化过的粗糙 global feature。
所以:
反复喂同一个 \(v\),并没有增加新的视觉证据。
作者甚至推测可能产生:
对 global visual feature 的 overfitting。
因此:
视觉信息输入次数多,不代表 visual grounding 更强。
真正重要的是:
视觉信息本身够不够细粒度、够不够有区分力。
14. Cross Entropy¶
普通 captioning 训练方式。
目标:
意思就是:
给你人工 caption,逐词教模型正确答案。
例如:
A man riding a horse.
模型在:
A man riding a ...
之后应该提高:
所以 CE 本质是:
逐 token 模仿 ground-truth caption。
15. Self-Critical¶
Self-Critical 属于强化学习。
它真正想优化的是:
即:
生成完整 caption 后,看 CIDEr reward。
如果一句话 CIDEr 高:
提高生成这句话的概率。
CIDEr 低:
降低概率。
所以 CE 和 SC 最简单的区别:
| CE | SC |
|---|---|
| 优化每个 token | 优化整句 |
| ground truth likelihood | CIDEr reward |
| supervised learning | reinforcement learning |
16. 强化学习是不是“不优化 Loss”?¶
更准确地说:
RL 的最终目标不是传统 prediction error,而是最大化 expected reward。
例如:
但实际训练时依然需要构造一个可以反向传播的 loss。
比如形式上:
所以:
reward 是最终任务目标,loss 是实现这个目标的优化工具。
17. CIDEr 是什么?¶
CIDEr:
Consensus-based Image Description Evaluation
衡量:
模型 caption 和多个人工 reference caption 的一致程度。
主要比较:
- 1-gram
- 2-gram
- 3-gram
- 4-gram
并采用类似 TF-IDF 的思想。
可以粗略理解:
所以 CIDEr 更关心:
“你说得和人类像不像?”
而不是:
“你说的每一个物体是不是真的存在?”
18. CIDEr 和 hallucination 可以同时升高¶
这是论文非常重要的结论。
Self-Critical 直接优化 CIDEr。
结果模型可能:
同时:
也就是:
caption benchmark 得分提高了,hallucination 反而更严重。
所以:
这是整篇论文最重要的思想之一。
19. GAN¶
GAN:
Generative Adversarial Network
在这里用于让 caption:
更自然、更 diverse、更 human-like。
有:
- Generator:生成 caption
- Discriminator:判断是人写的还是机器生成的
所以 GAN 更关注:
语言是不是像人。
并不直接等同于:
视觉内容是否完全正确。
20. Beam Size¶
Beam Search 每一步同时保留若干条最有希望的生成路径。
例如:
beam size = 5
代表同时保留 5 条候选序列。
注意论文里的结论不能简单总结成:
beam 越大 → hallucination 越多。
实际上:
对 CE 模型¶
更大的 beam 往往可能:
减少 hallucination。
对 SC 模型¶
效果不同,有时更大的 beam:
反而增加 hallucination。
所以:
beam size 对 hallucination 的作用和 training objective 有关。
21. Karpathy Test¶
Karpathy split 是 MSCOCO captioning 的经典划分。
通常:
- train
- 5k validation
- 5k test
论文在 Karpathy Test 上做常规比较。
22. Robust Test¶
Robust split 更特殊。
它刻意减少 train/test 之间的 object composition 重叠。
目的:
看看模型遇到训练时没见过的物体组合时还能不能正确描述。
例如训练常见:
测试突然出现:
如果模型严重依赖 object co-occurrence:
就容易 hallucinate 训练中常见的搭配。
因此 Robust Test 更容易暴露:
language bias / co-occurrence bias。
23. What Are the Likely Causes of Hallucination?¶
这一节是全文最值得看的部分之一。
作者主要得到两个结论。
第一:Fine-grained Visual Feature 很重要¶
TopDown → NoAttention:
hallucination 变差一些。
NoAttention → NoConv:
hallucination 明显恶化。
所以:
真正重要的不仅仅是 attention,而是保留 spatial visual information。
第二:Language Bias 是 hallucination 的重要原因¶
作者发现:
hallucination 少的模型,错误通常更 image-consistent。
而:
hallucination 多的模型,错误通常更 language-consistent。
所以:
也就是说:
当视觉证据不够强时,模型容易退回训练数据中的语言和 object co-occurrence 规律。
24. Robust Test 进一步证明了什么?¶
在 Robust Test 中:
Image Consistency 下降。
但:
Language Consistency 基本保持。
说明:
测试时新的视觉组合让视觉推理更困难,但训练过程中形成的语言偏置仍然非常强。
于是:
25. 一个非常有意思的训练现象¶
作者观察 FC 模型训练过程。
训练早期:
hallucination 更 language-consistent。
训练后期:
hallucination 逐渐更 image-consistent。
作者的解释是:
模型可能首先学会生成流畅的语言,然后才慢慢学会真正利用视觉信息。
这个思想放到今天的 MLLM 依然很有意义。
因为现在:
LLM 的语言能力异常强。
但:
强语言能力 ≠ 强视觉 grounding。
26. TD-Restrict¶
TD-Restrict 是一个实验分析工具。
作者利用 ground truth:
已经知道哪些 object 不存在。
然后把不存在物体对应词的:
设成极小。
也就是:
强行禁止模型 hallucinate 这些 object。
目的不是提出一个真实可部署的方法,而是测试:
如果我强行消除 hallucination,传统 caption metric 会不会自动变好?
答案:
不一定。
甚至可能:
但:
因此再次证明:
CIDEr 不等于 visual faithfulness。
27. Pearson Correlation 在这篇论文里干什么?¶
论文主要用它回答两个问题。
问题 1:传统指标能不能代表“不 hallucinate”?¶
计算:
以及:
结果:
相关性整体比较弱。
所以:
CIDEr 高,不能可靠说明 hallucination 少。
问题 2:CHAIR 能不能提供额外信息?¶
作者又比较自动指标和 human judgment 的相关性。
例如:
再比较:
加入 CHAIR 后:
与 human judgment 的相关性提高。
说明:
CHAIR 捕捉到了传统 caption metric 没有捕捉的信息。
这个实验设计非常值得以后科研借鉴。
28. Hallucination 可能会产生连锁反应¶
论文还发现:
第一次 hallucinate 后,后面的生成轨迹经常也会改变。
因为 caption 是自回归生成:
如果:
错了,那么之后所有 token 都是在错误上下文条件下继续生成。
于是可能产生:
hallucination cascade / error propagation
这和今天 LLM 的 hallucination 机制也非常相似。
29. Discussion 最重要的观点¶
Discussion 基本是在强调:
① Object hallucination 是系统性问题¶
不是偶尔出错。
② 传统 caption metrics 不够¶
语言质量好,不等于视觉忠实。
③ Visual grounding 很重要¶
模型必须真正利用图片,而不是主要依赖语言统计规律。
④ Attention 不是万能答案¶
细粒度 spatial visual features 本身可能更加关键。
⑤ Hallucination 不只是一个错词¶
它会影响后续整个生成轨迹。
⑥ 未来评价应该把 Image Relevance 单独考虑¶
不能只看:
“和参考答案像不像。”
还应该看:
“是不是忠实于图片。”
30. 和现代 ViT + LLM 的关系¶
以前:
后来:
现在:
架构已经完全不同了。
但核心矛盾几乎没有变:
2018¶
现在¶
甚至现代 LLM 的语言先验强得多。
所以一个核心 hallucination 问题依然是:
模型到底是在根据图片回答,还是根据自己强大的世界知识和语言习惯回答?
31. 这篇论文最值得你以后科研借鉴的东西¶
我觉得不是 FC、NBT 这些旧模型,而是它的研究方法。
① 发现一个现有指标没有覆盖的问题¶
原来大家看:
作者说:
不够,还有 visual hallucination。
于是提出:
② 不只提出指标,还验证指标是否有意义¶
做:
- Pearson correlation
- human evaluation
- TD-Restrict
证明:
CHAIR 不是在重复已有指标。
③ 不只测“有多少错误”,还分析“错误从哪里来”¶
设计:
- Image Consistency
- Language Consistency
把:
进一步变成:
这非常值得学习。
④ 做 controlled ablation¶
不是直接:
TD 比 FC 好,所以 attention 好。
而是:
逐步隔离因素。
这个实验设计非常漂亮。
⑤ 检查 benchmark optimization 是否产生副作用¶
Self-Critical:
但:
这说明:
优化 benchmark 本身可能改变模型行为,甚至产生意外副作用。
以后你做 MLLM hallucination,这个思想非常重要。
32. 如果只记住 6 句话¶
一个月后如果忘掉具体模型,只需要记:
1. CHAIR 是专门测 object hallucination 的,分 CHAIR\(_s\) 和 CHAIR\(_i\)。
2. CIDEr 高不代表 hallucination 少。
3. Self-Critical 可以同时让 CIDEr 上升、hallucination 上升。
4. 幻觉多的模型更容易产生 language-consistent errors,说明 language prior 是重要来源。
5. TopDown 消融说明,细粒度 spatial visual features 对减少 hallucination 很重要,不只是 attention 本身。
6. 多模态 hallucination 的核心矛盾之一,就是:
当语言先验压过真实视觉证据时:
这也是这篇 2018 年论文到现在依然值得读的核心原因。