: CVPR 2024 Highlight] OPERA:
Alleviating Hallucination in Multi-Modal Large Language Models via
Over-Trust Penalty and Retrospection-Allocation (github.com)
摘要
由于多模态通常是 image-text, 因此 MLLM 可以认为和 LVLM 是等价的.
MLLM 幻觉往往与 self-attention 矩阵中表现出的知识聚合模式 (knowledge
aggregation pattern) 相关, 这是在说, MLLM 往往通过一些 summary token
而不是之前生成的所有 token 来生成新的 token, 称之为 "过度信任
(over-trusted)", 这会导致 MLLM 忽略 image token 从而导致幻觉. OPERA
的主要思想有下面几点:
- 在 beam-search decoding 阶段给模型的 logits 引入罚项
- 用一个 rollback 策略来回顾在前述生成的 token 中是否存在 summary
token, 如果有必要就重新分配选择的 token
Introduction
对 decoded sequence 可视化 self-attention maps, 发现幻觉内容与在一个
columnar attention pattern 之后生成的序列 token 对齐了. 这些 columnar
attention pattern ..
先不看 introduction, 不说人话我的评价是
Method
Input: 记 visual tokens 为 ,
在大多数情况下是固定的, 经过
tokenize 的 input text 得到的 ,
最终将 visual token 和 text token concat 在一起得到最终的输入 .
Model Forward: MLLM 使用有 casual attention mask 的
auto-regressive manner 训练.
,
其中 是 MLLM
最后一层输出的隐状态.
然后 MLLM 用词汇头
对 投影得到下一个 token
预测的 logits (或者说概率), 即 其中 ,
是整个词表, 表示 softmax
得到的向量的 对应的分量.
那这里的
表示什么呢?
Decoding: 有不同的 decoding 策略, 有贪心解码, Beam
Search 以及 DoLa 等. 这里用的是 Beam Search, 是一种累计分数的解码策略,
给定一个 beam size , Beam Search 保留 个候选序列,
每个候选序列是具有 beam score 的解码序列 . 当对
token 解码时,
每一个候选序列假设将会根据 Top- logits 中的概率选择
个候选 token,
最终解码过程将会输出由最高 beam score 的假设.
这说的是人话吗? 也许只是我翻译的不是人话
Over-Trust Logit Penalty
knowledge aggregation pattern 具有明显的滞后性, 即在相关的 token
被解码时 pattern 不能被立刻观察到, 但是在几个 subsequent tokens
被解码后, 幻觉就已经发生了.
Over-Trusted Logit Penalty 是一种在 beam score 中累加的惩罚权重,
可以影响当前 token 和候选序列的选择:
累计较大的惩罚的候选序列会有更低的优先级被选择.
将当前生成的序列记作 , 它们在下一个 token
的预测时的 casual attention 权重为 , 其中
定义 local window attention 为 其中 ,
表示从 attention map
上裁剪的局部窗口的大小, 表示第 个 token 向第 个 token 分配的权值.
这是局部窗口内部所有的自注意力权值构建的矩阵, 用来 characterizing
knowledge pattern. 需要注意:
- , 即窗口不涉及 image
token 或者 prompt token, 这是因为只关注生成的 token 上的 knowledge
aggregation patterns.
- 选择多头注意力中的最大权重并重新归一化.
有了
之后可以用一个简单的度量方式来描述 knowledge pattern, 即 其中 ,
是可配置的缩放系数, 且 是 0,
这部分为什么是 0?
The scheme of calculating the proposed
over-trust penalty term
一句话概括:
就是attention矩阵取一个local
window,乘个系数做缩放,下三角矩阵乘个列向量变成列向量,列向量的最大值就作为penalty,
这个最大值就是所谓的summary
token,加个罚项减少后续token的生成对它的依赖.
RA
The scheme of the proposed Retrospection
strategy
RA 先不想读了, 就这吧.