视觉信息是对的 → 后层被改写 → 幻觉来源于语言先验
Step 1:证明"视觉信息其实是正确的"(排除错误来源)
实验:layer-wise probing(逐层探测)
论文做法:
-
在每一层的 hidden state 上训练一个 probe classifier
-
输入形式:
The image contains <obj>
-
判断模型是否"认为这个物体存在"
相当于在问每一层:
"你现在觉得这个物体在不在?"
结果:
- 模型在中间层可以达到 ≈80% 准确率
- 而且:
- 前层更准
- 后层反而变差
结论 1:
模型已经正确看到了图像内容
也就是说:
❌ 幻觉 ≠ 看不见
✅ 幻觉发生在看到之后
Step 2:发现"信息被改写"(关键现象)
实验:tracking logits across layers(跟踪 token 概率)
论文做法:
-
对每一层都计算:
p(xt∣x<t)ip(x_t | x_{<t})_ip(xt∣x<t)i
-
观察:
- ground-truth token(真实物体)
- hallucinated token(错误物体)
在不同层的概率变化
关键现象:
✔ 真实 token(例如 umbrella)
- 在第 18 层:概率很高 ✅
- 到第 30 层:开始下降 ❌
- 最后一层:被压下去 ❌
✔ 幻觉 token(例如 bird)
- 前层:概率很低
- 后层:突然升高
- 最后一层:超过真实 token
这是整个论文最关键的观察之一:
真实信息在前层是对的,但被后层"压掉了"
结论 2:
存在一个"后层机制"在主动改写预测结果
但此时还不知道是谁在改写。
Step 3:验证"是谁在改写"(核心因果实验)
这是论文最关键的一步。
实验设计:去掉视觉输入(干预变量)
目标:
判断"幻觉 token 是不是来自语言模型本身"
✔ 构造对照实验:
| 条件 | 输入 |
|---|---|
| 正常 | 图像 + 文本 |
| 干预 | ❌ 无图像 + 文本 |
✔ 做法:
-
不输入图像
-
只保留文本上下文
-
得到候选 token 集合:
Vcandidate′V'_{candidate}Vcandidate′
📊关键结果:
幻觉 token(xh)在 Vcandidate′V'_{candidate}Vcandidate′ 中的出现率:
{91.05%}
逻辑推导(核心)
已知事实:
- 前层已经知道真实答案(视觉正确)
- 后层压制了真实 token
- 幻觉 token 在"无图像时"也会出现(91%)
推理:
如果一个 token:
- 不依赖图像也会出现
- 并且在最终层占优
那么它的来源只能是:
语言模型内部知识(language prior)
关键因果结论:
后层并不是"随机出错",而是被语言先验主导