跳转至

好,我把它重新整理成一版正常 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。

公式:

\[ \mathrm{CHAIR}_i= \frac{\text{hallucinated object instances}} {\text{all mentioned object instances}} \]

意思是:

模型说出来的所有物体中,有多大比例是假的。

例如:

A man riding a horse next to a dog and a chair.

假设图片里:

  • man ✅
  • horse ✅
  • dog ❌
  • chair ❌

那么:

\[ \mathrm{CHAIR}_i=\frac{2}{4}=50\% \]

2.2 CHAIR\(_s\)

Sentence-level hallucination。

\[ \mathrm{CHAIR}_s= \frac{\text{captions containing at least one hallucinated object}} {\text{all captions}} \]

意思是:

有多少句话至少发生了一次 object hallucination。

比如 100 张图片生成 100 个 caption,其中 20 个 caption 至少出现一个不存在的物体:

\[ \mathrm{CHAIR}_s=20\% \]

注意:

CHAIR 越低越好。


3. Image Consistency:这个幻觉是不是“视觉看错了”?

作者训练了一个只看图片的 object classification model。

对于某个物体词 \(w\),计算:

\[ P(w\mid I) \]

其中:

  • \(I\):图片
  • \(w\):物体,例如 fork

假设 caption 模型 hallucinate 了:

fork

但是纯视觉模型也认为:

\[ P(\mathrm{fork}\mid I)=0.85 \]

那么说明:

虽然 fork 按 ground truth 是错的,但从视觉上确实很容易把图片误判成有 fork。

因此这个 hallucination:

Image Consistency 高

更可能是:

visual misclassification / visual ambiguity

导致的。

反过来:

\[ P(\mathrm{fork}\mid I)=0.01 \]

说明图片本身几乎不支持 fork。

那就要怀疑它是不是语言模型自己脑补的。


4. Language Consistency:是不是语言先验导致的?

作者又训练了一个:

完全不看图片,只根据前文预测下一个词的 LSTM Language Model。

例如:

A man is eating at a table with a ...

Language Model 预测:

  1. fork
  2. spoon
  3. plate
  4. knife
  5. dog

如果 Caption Model hallucinate 的是 fork,而 fork 在纯语言模型里排名第一:

\[ R(\mathrm{fork})=1 \]

作者定义:

\[ \mathrm{LanguageConsistency}(w)=\frac{1}{R(w)} \]

所以:

\[ \frac{1}{R(\mathrm{fork})}=1 \]

非常高。

意思是:

即使完全不看图片,仅根据语言上下文,也特别容易生成 fork。

因此这个 hallucination 很可能来自:

language prior / linguistic bias


4.1 两者怎么一起理解?

可以简单记:

指标 问题
Image Consistency “是不是图像看错了?”
Language Consistency “是不是语言模型顺嘴脑补了?”

比如 hallucinate fork:

\[ P(\mathrm{fork}\mid I)=0.02 \]

但:

\[ R(\mathrm{fork})=1 \]

那么:

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 最大的不同是:

不那么早把图片所有空间信息压成一个向量。

它保留多个空间区域的视觉特征:

\[ v_1,v_2,\cdots,v_K \]

然后在生成每一个词的时候,通过 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_1,patch_2,\cdots,patch_N \]

每个 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。

也就是:

TopDown
CNN spatial regions
        ↓
Attention

vs.

TopDown-BB
Object detector
 ↓
person box
dog box
table box
...
 ↓
Attention

因此 TopDown-BB 更接近:

object-level visual grounding


10. NBT

NBT:

Neural Baby Talk

相比 TopDown-BB,它会更加显式地使用 object detection。

可以粗略理解成:

Image
 ↓
Object Detector
 ↓
person / dog / table / ...
 ↓
生成语言结构
 ↓
把检测到的具体 object grounding 到句子中的名词位置

所以它更强调:

句子里说出来的物体,应该真的和图像中检测到的物体对应。


11. TopDown Deconstruction:非常重要的消融实验

作者把完整 TopDown 一步一步拆成 FC:

\[ \text{TopDown} \rightarrow \text{NoAttention} \rightarrow \text{NoConv} \rightarrow \text{SingleLayer} \rightarrow \text{FC} \]

目的是:

到底是哪一个组件影响 hallucination?

而不是直接:

TD 比 FC 好 → 所以肯定是 attention 的功劳。


第一步:TopDown → NoAttention

去掉:

learned attention mechanism

原来:

spatial features
 ↓
learned attention
 ↓
当前视觉特征

现在:

spatial features
 ↓
mean pooling
 ↓
当前视觉表示

也就是:

仍然保留 spatial features,但模型不能动态决定“现在看哪里”。


第二步:NoAttention → NoConv

这一步非常关键。

NoAttention 仍然有:

\[ v_1,v_2,\cdots,v_K \]

也就是 spatial features。

NoConv 则提前:

\[ \text{AveragePool}(v_1,\cdots,v_K) \]

得到:

\[ v_{\text{global}} \]

也就是:

不再给 captioning 网络空间 feature map,只给一个 pooled global vector。

注意:

不是把 CNN 删掉!

ResNet 依然存在。

删掉的是:

空间化的 convolutional representation。


第三步:NoConv → SingleLayer

原来两个 LSTM:

LSTM 1
 ↓
LSTM 2

变成:

LSTM

也就是:

去掉一层 LSTM。


第四步:SingleLayer → FC

SingleLayer:

global image feature 每个时间步都输入。

类似:

\[ h_t= \mathrm{LSTM}(w_{t-1},v,h_{t-1}) \]

FC:

visual feature 只在最开始初始化 LSTM。

之后:

\[ h_t= \mathrm{LSTM}(w_{t-1},h_{t-1}) \]

所以最后一刀是:

去掉 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 + word1 → LSTM
v + word2 → LSTM
v + word3 → LSTM

反复喂同一个 \(v\),并没有增加新的视觉证据。

作者甚至推测可能产生:

对 global visual feature 的 overfitting。

因此:

视觉信息输入次数多,不代表 visual grounding 更强。

真正重要的是:

视觉信息本身够不够细粒度、够不够有区分力。


14. Cross Entropy

普通 captioning 训练方式。

目标:

\[ \mathcal L_{\mathrm{CE}} = -\sum_t \log P(w_t^{GT}\mid w_{<t}^{GT},I) \]

意思就是:

给你人工 caption,逐词教模型正确答案。

例如:

A man riding a horse.

模型在:

A man riding a ...

之后应该提高:

\[ P(\mathrm{horse}) \]

所以 CE 本质是:

逐 token 模仿 ground-truth caption。


15. Self-Critical

Self-Critical 属于强化学习。

它真正想优化的是:

\[ \max_\theta \mathbb E[ \mathrm{CIDEr} ] \]

即:

生成完整 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。

例如:

\[ \max_\theta \mathbb E[R] \]

但实际训练时依然需要构造一个可以反向传播的 loss。

比如形式上:

\[ \mathcal L_{\mathrm{RL}} = -(R-b) \sum_t \log P(w_t) \]

所以:

reward 是最终任务目标,loss 是实现这个目标的优化工具。


17. CIDEr 是什么?

CIDEr:

Consensus-based Image Description Evaluation

衡量:

模型 caption 和多个人工 reference caption 的一致程度。

主要比较:

  • 1-gram
  • 2-gram
  • 3-gram
  • 4-gram

并采用类似 TF-IDF 的思想。

可以粗略理解:

\[ CIDEr \approx \text{reference caption 与生成 caption 的加权 n-gram 相似度} \]

所以 CIDEr 更关心:

“你说得和人类像不像?”

而不是:

“你说的每一个物体是不是真的存在?”


18. CIDEr 和 hallucination 可以同时升高

这是论文非常重要的结论。

Self-Critical 直接优化 CIDEr。

结果模型可能:

\[ CIDEr \uparrow \]

同时:

\[ CHAIR \uparrow \]

也就是:

caption benchmark 得分提高了,hallucination 反而更严重。

所以:

\[ \text{Caption Quality Metric} \neq \text{Visual Faithfulness} \]

这是整篇论文最重要的思想之一。


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 重叠。

目的:

看看模型遇到训练时没见过的物体组合时还能不能正确描述。

例如训练常见:

dog + frisbee
person + horse
table + chair

测试突然出现:

dog + suitcase
person + elephant

如果模型严重依赖 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。

所以:

\[ \text{Hallucination} \approx \text{visual evidence weak} + \text{language prior strong} \]

也就是说:

当视觉证据不够强时,模型容易退回训练数据中的语言和 object co-occurrence 规律。


24. Robust Test 进一步证明了什么?

在 Robust Test 中:

Image Consistency 下降。

但:

Language Consistency 基本保持。

说明:

测试时新的视觉组合让视觉推理更困难,但训练过程中形成的语言偏置仍然非常强。

于是:

Visual grounding ↓
Language prior 不变
        ↓
Hallucination ↑

25. 一个非常有意思的训练现象

作者观察 FC 模型训练过程。

训练早期:

hallucination 更 language-consistent。

训练后期:

hallucination 逐渐更 image-consistent。

作者的解释是:

模型可能首先学会生成流畅的语言,然后才慢慢学会真正利用视觉信息。

这个思想放到今天的 MLLM 依然很有意义。

因为现在:

LLM 的语言能力异常强。

但:

强语言能力 ≠ 强视觉 grounding。


26. TD-Restrict

TD-Restrict 是一个实验分析工具。

作者利用 ground truth:

已经知道哪些 object 不存在。

然后把不存在物体对应词的:

\[ \log P(w) \]

设成极小。

也就是:

强行禁止模型 hallucinate 这些 object。

目的不是提出一个真实可部署的方法,而是测试:

如果我强行消除 hallucination,传统 caption metric 会不会自动变好?

答案:

不一定。

甚至可能:

\[ CHAIR\downarrow \]

但:

\[ CIDEr\downarrow \]

因此再次证明:

CIDEr 不等于 visual faithfulness。


27. Pearson Correlation 在这篇论文里干什么?

论文主要用它回答两个问题。

问题 1:传统指标能不能代表“不 hallucinate”?

计算:

\[ \operatorname{corr} ( CIDEr,\, 1-CHAIR_s ) \]

以及:

\[ \operatorname{corr} ( METEOR,\, 1-CHAIR_s ) \]
\[ \operatorname{corr} ( SPICE,\, 1-CHAIR_s ) \]

结果:

相关性整体比较弱。

所以:

CIDEr 高,不能可靠说明 hallucination 少。


问题 2:CHAIR 能不能提供额外信息?

作者又比较自动指标和 human judgment 的相关性。

例如:

\[ \operatorname{corr} ( CIDEr,\, HumanScore ) \]

再比较:

\[ \operatorname{corr} ( CIDEr + (1-CHAIR),\, HumanScore ) \]

加入 CHAIR 后:

与 human judgment 的相关性提高。

说明:

CHAIR 捕捉到了传统 caption metric 没有捕捉的信息。

这个实验设计非常值得以后科研借鉴。


28. Hallucination 可能会产生连锁反应

论文还发现:

第一次 hallucinate 后,后面的生成轨迹经常也会改变。

因为 caption 是自回归生成:

\[ w_t \rightarrow w_{t+1} \rightarrow w_{t+2} \]

如果:

\[ w_t \]

错了,那么之后所有 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 的关系

以前:

CNN
 ↓
LSTM

后来:

CNN
 ↓
Attention
 ↓
LSTM

现在:

Image
 ↓
ViT
 ↓
Visual Tokens
 ↓
Projector / Cross-modal module
 ↓
LLM
 ↓
Response

架构已经完全不同了。

但核心矛盾几乎没有变:

2018

\[ \text{CNN visual evidence} \quad vs \quad \text{LSTM language prior} \]

现在

\[ \text{ViT visual evidence} \quad vs \quad \text{LLM prior} \]

甚至现代 LLM 的语言先验强得多。

所以一个核心 hallucination 问题依然是:

模型到底是在根据图片回答,还是根据自己强大的世界知识和语言习惯回答?


31. 这篇论文最值得你以后科研借鉴的东西

我觉得不是 FC、NBT 这些旧模型,而是它的研究方法。

① 发现一个现有指标没有覆盖的问题

原来大家看:

\[ CIDEr \]

作者说:

不够,还有 visual hallucination。

于是提出:

\[ CHAIR \]

② 不只提出指标,还验证指标是否有意义

做:

  • Pearson correlation
  • human evaluation
  • TD-Restrict

证明:

CHAIR 不是在重复已有指标。


③ 不只测“有多少错误”,还分析“错误从哪里来”

设计:

  • Image Consistency
  • Language Consistency

把:

\[ \text{phenomenon} \]

进一步变成:

\[ \text{error attribution} \]

这非常值得学习。


④ 做 controlled ablation

不是直接:

TD 比 FC 好,所以 attention 好。

而是:

\[ TD \rightarrow NoAttention \rightarrow NoConv \rightarrow SingleLayer \rightarrow FC \]

逐步隔离因素。

这个实验设计非常漂亮。


⑤ 检查 benchmark optimization 是否产生副作用

Self-Critical:

\[ CIDEr\uparrow \]

但:

\[ CHAIR\uparrow \]

这说明:

优化 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 的核心矛盾之一,就是:

\[ \boxed{ \text{Language Prior} \quad vs \quad \text{Visual Evidence} } \]

当语言先验压过真实视觉证据时:

\[ \boxed{ \text{Hallucination becomes likely} } \]

这也是这篇 2018 年论文到现在依然值得读的核心原因。