论文题目:
OPERA: Alleviating Hallucination in Multi-Modal Large Language Models via Over-Trust Penalty and Retrospection-Allocation
论文地址:
https://arxiv.org/abs/2311.17911
代码地址:
https://github.com/shikiw/OPERA
背景
从 LLaVA 到 Qwen-VL,从 GPT-4V 到 Claude 3,幻觉(Hallucination)问题一直是当前多模态大模型(MLLM)的重要问题。当前大多数的多模态大模型对于用户提供的图像和提问,容易因为幻觉给出非常离谱的回答,例如说出图像上根本不存在的事物,识别出与图像上物体的颜色、数量和位置关系不符的特征。
而这一现象,在多模态大模型生成较长回答时尤其常见。试想一下,如果将有严重幻觉问题的多模态大模型部署在自动驾驶上,在高速公路上前方无车的情况下,由于模型出现前方有车的幻觉而下令急刹车,将会导致严重的交通追尾事故。
例如 LLaVA-1.5 的 7B 模型在描述图中的食物时,一开始会表达得较为准确,但随着回答越来越长会说出许多“不存在”的事物:
对于多模态大模型中幻觉问题的成因,研究者们至今仍未找到确切答案。为了解决这一问题,近期提出了多种不同的方法。其中一些方法涉及构建额外的训练数据,并将其融入到训练过程中;而另一些方法则依赖于外部知识或强大的模型来进行辅助。
然而,这些方法通常会带来巨大的额外成本,并且许多方法并未对幻觉的机制与由来进行深入分析。因此,人们不禁思考,多模态幻觉的成因究竟是什么?同时,是否存在一种方法,可以在不需要额外知识和训练的情况下轻松解决多模态大模型的幻觉问题呢?
分析
为此,中科大等单位的研究人员从可视化模型在推理时的 Self-Attention 权重出发,希望寻找得到一些有趣的结论。他们首先观察到,在模型生成幻觉内容时,最后一层的 Self-Attention 权重大概率会在幻觉部分之前呈现出明显的“柱状”特征,这导致幻觉部分的 Self-Attention 权重表现出一种“过度信赖”的趋势。以多模态大模型 InstructBLIP 为例:
可以清晰地观察到,在幻觉句子出现之前,存在一个 token,其对后续所有 token 都具有较高的注意力权值。通常情况下,这种现象并不合乎常理,因为从输出的回答来看,这个词并不一定包含丰富的语义信息。那么问题来了,这些自注意力图上的“柱状”特征究竟是什么呢?
研究者们分析认为,这种现象可能是多模态大模型在生成较长语句时展现的一种“自动总结”本能。这些“柱状”特征所对应的 token 正是模型推理过程中的 summary token,这一观察与同期在 EMNLP best paper 中 “anchor token” [1] 类似,进一步揭示了大模型内部的运作机制。
由于现有多模态大模型的基座取自大语言模型,其因果语言模型的特点使其在浅层时将前文 token 的信息聚合到 summary token,同时在深层时主要利用 summary token 中聚合的信息来预测整个序列的下一个 token(见下图图 a)。
这一现象非常类似于人类在处理长文本时也经常使用的阶段性总结的习惯,有助于更高效地处理大量信息。那么这样的机制又是如何影响到多模态幻觉的产生的呢?
研究者们先让多模态大模型根据给定的图作出较长的回答,再根据各个 summary token 出现的不同位置将模型的回答划分为不同的子句,并且计算每个子句的 CHAIR 指标来评估子句中出现幻觉内容的程度。CHAIR 值越高代表幻觉程度越严重。
如上图图 b、c,随着序列中 summary token 数量的增多,子句的幻觉程度也在逐渐提升。这说明了在序列中出现越多 summary token 会越容易让模型输出幻觉内容。
对此,研究者们给出了基于信息流的解释:他们认为在生成的文本序列越来越长的同时,通常位于序列前段的 vision tokens 所提供的视觉信息会在 summary token 之间信息流动的过程中逐渐被稀释(因为一个 summary token 很难将序列中所有前文 token 所包含的信息都完整地记录)。
因此,越往后生成的 token 越容易忽视 vision tokens,并“过度信赖”某些 summary tokens,从而产生幻觉内容。研究者们将这一现象描述为 “partial over-trust”,并发现大模型的这种阶段性总结可能是导致幻觉问题的一大“元凶”!同时,研究者们进行了数值统计,在不同模型中都观察到了这一现象与幻觉之间的相关性。
研究者们通过随机采样 100 张图像,并向不同的多模态大模型提出问题。他们发现在所有出现幻觉回答的情况下,有 80%~90% 的回答都呈现出了“过度信赖”现象,进一步证实了这一现象与幻觉之间的伴生关系。
方法
为此,研究者们提出了一种名为 OPERA 的解码方法,该方法基于注意力惩罚与回退策略,成功地在不借助外部知识并不引入额外训练的情况下缓解了多模态大模型的幻觉问题。
研究者们希望通过改变解码策略来缓解这种“过度信赖”现象的出现,从而来减轻幻觉问题。在经典解码方法 Beam Search 的基础上,他们首先在解码过程中对每个 token 的输出概率引入了一个额外的惩罚项,来惩罚其出现“过度信赖”的注意力特征。
具体来说,他们首先在自注意力的权重图上划分出一个局部窗口,然后将这些权重在数值进行放大,同时使用列乘法得到一个得分向量,最后选择得分向量中的最大得分作为惩罚得分。这个惩罚得分越大说明出现生成句子中存在“过度信赖”的特征越明显,越可能出现幻觉。
最后,这个惩罚得分的作用会体现在每个序列的 Beam 得分上,得分较低的序列最后将被淘汰。
由于这种“过度信赖”的特征具有“滞后性”,即只有在解码的过程中输出了若干 token 之后才能发现这样的特征。为了解决这种滞后带来的局限性,研究者们还提出了“回退-再分配”的策略。
具体来说,可以计算最近几个 token 的得分向量的最大值下标,并检查该下标连续出现的次数是否大于一定阈值。如果高于阈值,则将当前序列的解码过程回退到这一下标所在 token 的位置,并重新选择词表中概率次高的词(除了之前已经选择的词之外)。
结合所提出的“过度信赖”惩罚与“回退-再分配”策略,研究者们提出一个新的多模态大模型解码方法 OPERA,极大地缓解了模型的尤其是在生成长文的幻觉现象。
实验
研究者们在 InstructBLIP,MiniGPT-4,LLaVA-1.5 以及 Shikra 等多种多模态大模型的 7B 模型上进行了测试,在不同维度上进行了统计验证。相比于之前的解码方法,所提出的 OPERA 解码方法在缓解幻觉上均表现出优越的性能。
此外,研究者们还引入了 GPT-4 和 GPT-4V 进行打分测试,在生成内容的准确程度与具体程度上,OPERA 同样也表现出优越的性能。
同时,研究者们还意外地发现 OPERA 能够帮助 LLaVA-1.5 等多模态模型成功在 MME、MMBench 等多模态 benchmark 上涨点。例如,在 LLaVA-1.5 的 7B 模型上的结果如下:
此外,研究者们还给出了 OPERA 的一些具体表现的实例:
总的来说,本文从一个独特的视角解释了现有多模态大模型幻觉产生的原因。作为一种通过改进解码策略来减轻多模态大模型幻觉的方法,OPERA 具有易于在不同模型和架构上部署的特点,同时也激发了更多研究者从机制层面研究和解决多模态大模型的幻觉问题。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。