Abstract
幻觉是笼罩在快速发展的多模态大语言模型(MLLM)上的一个大阴影,指的是生成的文本与图像内容不一致的现象。为了减轻幻觉,现有的研究主要采用指令调整的方式,需要用特定的数据重新训练模型。在本文中,我们开辟了一条不同的道路,引入了一种名为 Woodpecker 的免训练方法。就像啄木鸟治愈树木一样,它从生成的文本中挑选并纠正幻觉。具体来说,啄木鸟由五个阶段组成:关键概念提取、问题制定、视觉知识验证、视觉主张生成和幻觉纠正。以后补救方式实施,Woodpecker 可以轻松地为不同的 MLLM 提供服务,同时可以通过访问五个阶段的中间输出进行解释。我们对Woodpecker进行了定量和定性评估,并展示了这种新范式的巨大潜力。在 POPE 基准上,我们的方法比基线 MiniGPT-4/mPLUG-Owl 的准确度提高了 30.66%/24.33%。源代码发布于 https://github.com/BradyFU/Woodpecker。
一、简介
多模态大型语言模型(MLLM)[41]现在在研究界蓬勃发展,致力于通用人工智能(AGI)。通过利用强大的大型语言模型 (LLM),研究人员将视觉等外来模态与语言结合起来,并开发具有各种令人兴奋的功能的 MLLM [1,21,40,44,47],例如完整描述给定图像的内容。
然而,尽管这些 MLLM 很强大,但它们有时会输出与输入图像不一致的描述。它被称为幻觉,并且已被发现在 MLLM 中普遍存在[20]。如图1所示,MLLM声称物体不存在,并且无法准确描述图像中物体的属性,我们将其分别归类为物体级幻觉和属性级幻觉。显然,这些幻觉是 MLLM 实际应用的巨大障碍。
为了减轻幻觉,现有的工作通常探索指令调整的方式。一个常见的关键观察结果是,MLLM 在生成较长文本时往往会产生幻觉 ,这会导致不同的问题解决策略。例如,LRV-Instruction 通过限制指令数据的文本长度来采用直观的方法。因此,调整后的模型通常会产生较少的幻觉,但也不太详细的描述。 VIGC采用多步生成方案,并根据文本上下文迭代更新视觉特征,通过牺牲生成效率来缓解幻觉。此外,这两种方法都是基于指令调整的,因此都是数据和计算密集型的。
为了打破限制,我们采取了不同的策略,可以直接纠正幻觉而无需重新训练。如图 2 所示,给定 MLLM 生成的文本以及输入图像,我们的免训练框架 Woodpecker 精心校正文本,同时提供相应的证据,即边界框。它增加了黑盒 MLLM 之外的可解释性和可靠性,提供方便的视觉事实检查。具体来说,我们的框架在彻底诊断后进行校正,总共包含五个阶段:
- 关键概念提取识别生成的句子中提到的主要对象;
- 问题表述围绕提取的对象提出问题,例如它们的数量和属性;
- 视觉知识验证通过专家模型回答所提出的问题。例如,可以利用视觉感知模型来确定物体数量;
- 视觉声明生成将上述问答(QA)对转换为视觉知识库,该知识库由关于输入图像的对象级和属性级声明组成;
- 幻觉矫正在视觉知识库的指导下修正幻觉并添加相应的证据。值得注意的是,管道中的每个步骤都清晰透明,具有良好的可解释性。
图 2.我们的幻觉矫正框架示例。给定 MLLM 的响应,啄木鸟会纠正幻觉部分并合并接地信息以便于验证。
这提供了良好的可解释性。我们通过对 POPE [18]、MME [6] 和 LLaVA-QA90 [21] 数据集进行全面的定量和定性实验来评估我们方法的有效性。结果和相关分析表明了这种新范式的优越性。例如,在 POPE 基准上,我们的方法很大程度上将基线 MiniGPT-4 [47]/mPLUG-Owl [40] 的准确性从 54.67%/62% 提高到 85.33%/86.33%。
概括起来,主要贡献如下:
- 我们提出了一个名为 Woodpecker 的免训练框架来纠正 MLLM 的幻觉。据我们所知,我们是第一个采用矫正方式来解决视幻觉问题的人。
- 我们的框架的设计方式是每个步骤都清晰透明,从而提供良好的可解释性。
- 我们全面评估了我们方法的有效性,巨大的改进表明了其在幻觉矫正方面的巨大潜力。
2.相关工作
2.1. MLLM 中的幻觉
近年来,MLLM的幻觉现象越来越受到人们的关注。这主要是因为该问题直接影响MLLM的可靠性。目前对MLLM幻觉的研究主要集中在评估/检测[8,18,34]和缓解[20,23,33]两个方面。前面的工作通常要么训练分类模型来区分幻觉 [8],要么根据真实答案检查输出文本以确定幻觉是否发生 [18, 34]。
对于缓解幻觉,之前的工作重点是优化数据收集过程和训练方案。 LRV-Instruction [20] 构成负面实例以避免过度自信。此外,GroundTruth 答案的文本长度受到严格控制,因为观察到较短的答案不太可能产生幻觉。类似地,VIGC [33] 采用迭代过程,每次都会生成并连接简短的答案。通过这种方式,它试图在不影响细节的情况下确保准确性。虽然之前的工作试图开发幻觉较少的 MLLM,但我们的主要目标是通过修改幻觉部分来改进 MLLM 的响应。具体来说,我们设计了一个包含现成模型的免培训框架。这免除了收集教学数据和资源密集型培训的复杂性。因此,我们的框架可以轻松地与各种 MLLM 集成,作为通用的即插即用模块。
2.2.知识增强LLM
由于LLMs仅限于从预训练中获得的固有知识,因此各种工作致力于利用来自预定义知识库 [3,5,14,28] 或互联网 [29, 31] 的外部知识来增强LLMs。作为这一想法的自然延伸,最近,研究人员探索使用知识作为证据来减轻LLMs的事实幻觉 [10, 27]。具体来说,这些作品使用相关知识作为背景信息来完善可能错误的输入声明,从而提高响应的真实性。我们的方法与我们使用与给定图像相关的信息来纠正可能错误的主张的想法有共同之处。然而,将这个想法转移到视觉语言领域并非易事。这是因为纯语言对应通常只处理文本并通过检索来获取相关知识,而对于图像文本对来说这样做是不合适的。此外,知识增强型LLMs更注重减少事实谬误,而我们更注重减少幻视。与关键差异相对应,在这项工作中,我们设计了一种策略来构建以图像和查询为条件的结构化视觉知识库。我们还探索如何以有组织的方式解决对象级别和属性级别的幻觉,正如我们稍后将说明的那样。
2.3. LLM-aided Visual Reasoning
----
2.3.LLM辅助视觉推理
根据调查中的分类法[41],我们提出的框架与LLMs辅助视觉推理模型[2,7,13]密切相关。主要思想是,我们可以利用LLMs强大的推理和指令跟踪能力来帮助实现愿景或多模态任务。LLM扮演的典型角色包括任务调度者[9,24,30,38],推理者[37,39,42,46],或语言精炼者[35,43,45,48]。在这项工作中,我们利用LLM强大的推理和语言能力来帮助关键概念提取、问题提出和幻觉纠正的过程。
3. 方法
我们的目标是诊断并纠正 MLLM 产生的反应中的幻觉。关键的挑战在于定位幻觉并确定事实,并以结构化的方式组织起来进行最终纠正。为此,我们将整个过程分解为五个子任务:关键概念提取(第 3.1 节)、问题表述(第 3.2 节)、视觉知识验证(第 3.3 节)、视觉声明生成(第 3.4 节)和幻觉矫正(第 3.5 节)。稍后我们将按顺序说明每个步骤。我们的框架概述如图 3 所示。
图 3.啄木鸟的框架。给定图像和查询,MLLM 输出相应的响应。通过关键概念提取、问题表述、视觉知识验证和视觉声明生成这四个步骤,我们得到了特定于图像和原始响应的视觉知识库。在最后一步中,以边界框作为证据来纠正响应中的幻觉。
3.1.关键概念提取
由于描述通常围绕关键概念,因此第一步是从生成的句子中提取它们。为此,我们确定了句子中提到的主要对象,这些对象是最有可能出现幻视的对象。例如,给定一个句子“The man is wearing a black hat”,对象“man”和“hat”被提取出来,并将作为后续步骤中诊断的中心。鉴于LLM具有较强的泛化能力和丰富的世界知识,我们推荐LLM来完成这项任务。
关键概念提取模板如附录A.1所示,包括系统消息和格式化提示。前者为LLM建立了基本背景,而后者则从任务的一些详细描述和一些要求开始,然后是一些上下文示例和输入。提供上下文示例,以便LLM可以更好地理解任务的要求。
A.1.关键概念提取
系统消息 您是一名语言助手,帮助从给定的句子中提取信息。
提示
给定一个句子,帮我提取句子中存在的实体。提取共同的对象并将其归纳为不重复的大类,合并本质上相似的对象。
避免提取抽象或非特定实体。只提取属于一般类别并在句子中以某种语气描述的具体的、肯定存在的对象。以单数形式提取实体。将所有提取的项目类型输出在一行中,并用句点分隔每个对象类型。如果没有任何内容可输出,则输出一个“None”。
示例:{上下文示例}
句子:{输入句子}
输出:
表 4. 提示 LLM 执行关键概念提取的模板。 {上下文示例}是用于更好地指导LLM完成任务的上下文示例,{输入句子}是从中提取关键概念的输入。
3.2.问题表述
在掌握了关键概念后,我们围绕这些概念提出一系列问题来做出幻觉诊断。我们的问题针对对象层面和属性层面的幻觉。对于前者,我们问:“图像中是否有{object}?有多少个?”,其中“{object}”是前面提取的关键概念。对于后者,可以表述涉及对象属性的各种问题,例如“{object} 在做什么?”、“{object1 在 {object2} 的右侧吗?”以及“{object} 是什么颜色?” }?”,其中“{object1}”和“{object2}”是不同的关键概念。
事实上,对象级问题可以通过感知图像直接验证,而属性级问题则更加多样化并且依赖于上下文。为了促进这种自由形式的问题表述,我们向LLM提供了一些上下文示例,以便提出有意义的问题。提示信息列于附录A.2。
A2。问题表述
系统消息 您是一名语言助理,可以帮助提出有关句子的问题。
提示
给定一个句子,帮我提取句子中存在的实体。给定一个句子和一些由句点连接的实体,要求您针对句子中涉及的指定实体提出一些相关问题,以便这些问题有助于验证句子的真实性。问题可能涉及基本属性,例如句子中提到的颜色和动作。不要询问涉及物体计数或物体是否存在的问题。
当询问有关属性的问题时,请尝试询问仅涉及一个实体的简单问题。
提出可以通过视觉轻松决定的问题。不要问需要复杂推理的问题。
不要问语义相似的问题。不要仅询问有关场景或地点的问题。
使用where类型问题查询涉及实体的位置信息。
不要问关于句子中不确定或推测部分的问题,例如用“也许”或“可能”等描述的部分。
无需涵盖所有指定实体。如果没有问题要问,只需输出“None”。
提出问题时,请勿预先假设描述中的断言是真实的。只提出与句子中的信息相关的问题。
只询问有关常见、特定和具体实体的问题。问题涉及的实体仅限于给定实体范围内。
每行只输出一个问题。对于每一行,首先输出问题,然后输出单个“&”,最后输出问题涉及的实体,如果涉及多个实体,仍然用句点连接。
示例:
{上下文示例}
句子:
{输入句子}
实体:
{输入实体}
问题:
表 5. 问题表述的提示模板。 {上下文示例}是上下文示例。 {输入句子}和{输入实体}是输入,其中后者来自关键概念提取步骤。
3.3.视觉知识验证
这一步负责解决上面两类问题。对于对象级问题,关键在于确定某个对象的存在性和数量。鉴于视觉基础模型强大的感知能力[12,17,25,32,36],我们采用开放集目标检测器作为求解器[22]。对于属性级问题,我们应用预先训练的 VQA 模型 [16] 来回答以图像为条件的问题。与主流 MLLM 相比,VQA 模型往往会生成更短的答案,但幻觉也更少,因此可能是一个合理的选择。
3.4.视觉声明生成
提出并回答问题后,我们将 QA 对组合成视觉声明,并将其组织成视觉知识库,以供下一步参考。视觉知识库的结构如下:
- 物体级主张:这部分信息主要起到减轻物体级幻觉的作用。我们包含从句子中提取的关键概念的对象计数信息(第 3.1 节)。对于现有对象,我们添加一个声明“There are {counts} {name}.”,其中“{counts}”和“{name}”是某种对象的计数和名称。对于不存在的对象,我们使用类似的模板“There is no {name}”。计数信息来自上一步的开集目标检测。
- 属性级声明:我们包含特定于每个对象的属性信息,以减轻属性级幻觉。典型的属性包括位置、颜色、动作等。对于这一部分,我们采用 QA-toClaim 模型 [10] 将问题和答案合并到声明中。为了应对涉及多个对象或前景对象与背景之间的关系的情况,需要更多的全局信息。因此,我们还包括涉及不同对象之间或对象与背景之间的交互的声明,例如“猫躺在狗旁边”。
3.5.幻觉矫正
在视觉声明的指导下,LLM可以充当校正器并修改生成的响应中的幻觉。具体来说,在将视觉知识库与原始回答结合成提示后,我们指示LLM纠正回答并输出精炼后的回答。为了更好的可解释性,我们明确指示 LLM 在引用对象时在表达式后面附加边界框。这种设计促进了响应中提到的实体与图像中的对象实例之间的对应关系,这为检查输出的可靠性提供了方便的访问。更正提示模板见附录A.3
A.3.幻觉矫正
系统消息 您是一名语言助理,可以根据指示帮助完善段落。
提示
给定一段文章和一些补充信息,要求您以流畅自然的方式纠正并输出精炼的文章,遵循以下规则:
1、补充信息可能包括以下部分内容:
“计数”信息,指定存在某种实体的实例数量及其关联的边界框;
“特定”信息,描述每个实体实例特有的属性信息,包括边界框、颜色等。该信息以该实体的“实体1:[bbox]”信息的形式排列。注意,“Specific”信息中的实体与“Count”信息中的实体相对应。
“整体”信息可能涉及多个实体对象的信息。
2. 尽量保留原句,尽量少做改动。
3. 实体实例的数量应与“Count”信息中的数量匹配。如果原句中的数字与计数信息不符,还要更正计数。
4. 如果原句已经正确,则保留它。如果需要重写原句,重写时,尽量在原句的基础上尽量少修改原句,并以补充信息为指导,纠正或丰富原句。
5. 在精炼的段落中,在描述“特定”补充信息中提到的实体时,在其后面的括号中添加其关联的边界框,形式为“entity([bbox])”。如果提及多个同类实体,则用“;”分隔框,形式为“entity([bbox1];[bbox2])”
示例:
{上下文示例} ——————
补充信息:
{输入信息}
段落:
{输入段落}
精炼段落:
表 6. 幻觉纠正提示模板。 {上下文示例}是上下文示例。 {输入信息}是格式化的知识库,{输入段落}是待修正的原始响应。
4. 实验
4.1.实验设置
数据集。 POPE [18] 致力于评估 MLLM 的幻觉。它包含随机、主流和对抗性采样的设置,主要区别在于负样本的构建方式。对于随机设置,对图像中未出现的对象进行随机采样,而对于主流设置,从频率最高的对象池中对不存在的对象进行采样。对于对抗性设置,对最常同时出现但不存在于图像中的对象进行采样。
在采样设置方面,我们采样了 50 个图像,并为每个图像构建 6 个问题。正负样本比例均衡,即50% vs 50%。该设置将对象注释转换为一系列“是或否”问题,并侧重于评估对象级别的幻觉,更具体地说,是存在方面。
因此,MLLM 会被提示回答图像中是否存在对象。因此,评估指标包括准确度、精确度、召回率和 f1 分数。
MME [6]是一个综合基准测试,旨在评估MLLM在各个方面的性能。它分别包含十个感知能力子任务和四个认知能力子任务。在本文中,我们重新利用数据集并选择存在和计数子集来测量对象级幻觉。位置和颜色子集用于测量属性级幻觉。与 POPE 的设置类似,每个子集都由“是或否”问题组成。我们按照官方实施[6]报告分数,即准确度和准确度+的总和,其中分数越高表明表现越好,幻觉越少。
LLaVA-QA90 [21] 也用于评估 MLLM。具体来说,我们采样了 10 个描述类型查询,这些查询以各种形式进行解释,以指示 MLLM 描述图像,例如“描述以下图像”。和“这张照片是关于什么的?”。 LLaVA-QA90 使用来自 COCO [19] 的图像,并采用纯文本 GPT-4 [26] 来组成查询和参考答案。我们丢弃参考答案,直接将图像提供给 GPT-4V [26],并提示它对我们设计的二维(即准确性和细节性)的响应进行评分。提示模板可在附录 A.4 中找到。
A4
提示
您需要对两个人工智能助手描述给定图像的表现进行评分。
需要特别注意的是幻觉,它是指与图像内容不符的描述部分,例如声称存在图像中不存在的东西,或者对图像中不存在的东西的数量、位置或颜色进行错误的描述。
图像中的物体。请注意,描述可能会附带边界框,指示图像中对象的位置,表示为 [x1, y1, x2, y2],浮点数范围从 0 到 1。这些值对应于左上角的 x1 、左上 y1、右下 x2 和右下 y2。请根据以下标准,以 1 至 10 分的标准对助手的回答进行评分,分数越高表示表现越好:
1:准确性:对于图像内容的回答是否准确。幻觉较少的反应应给予较高的分数。
2:详细性:回复是否包含丰富的必要细节。请注意,幻觉描述不应被视为必要的细节。请为每个标准输出一行,仅包含两个值,分别表示助理 1 和 2 的分数。两个分数之间用空格分隔。根据分数,请解释您的评估,避免任何潜在的偏见,并确保回答的顺序不会影响您的判断。
[助理 1]
{回答 1}
[助理 1 结束]
[助理 2]
{回答 2}
[助理 2 结束]
输出格式:
准确度:
两个答案的分数:
原因:
详细度:
两个答案的分数:
原因:
基线。我们选择主流的 MLLM 作为基线模型,包括 mPLUG-Owl [40]、LLaVA [21]、MiniGPT-4 [47] 和 Otter [15]。这四个 MLLM 遵循“视觉编码器界面语言模型”架构 [41],并接受图像文本对的训练。具体来说,LLaVA 和 MiniGPT-4 采用简单的投影层来对齐多模态嵌入。 mPLUG-Owl 使用 Q-Former [16] 将视觉特征压缩为固定数量的标记,这些标记可以与语言嵌入连接起来。 Otter 采用类似的 Perceiver [11] 重采样器来获得令牌压缩。
实施细节。我们的流程无需训练,除了需要校正的 MLLM 之外,还包含三个预训练模型。我们选择LLM,GPT-3.5-turbo [4],来完成关键概念提取、问题表述和幻觉纠正的子任务。对于开放集对象检测,我们使用 Grounding DINO [22] 来提取具有默认检测阈值的对象计数信息。此外,我们利用 BLIP-2-FlanT5XXL [16] 作为 VQA 模型来回答以输入图像为条件的属性相关问题。
对于“是或否”问题,我们发现一些 MLLM 的指令跟踪能力有些弱,经常输出不相关的文本,例如纯表情符号或 URL。这是我们纠正过程中的一个障碍。此外,一些MLLM仅输出单个“是”或“否”,这也对校正提出了挑战。为了解决这些问题,我们设计了两个简单的措施:(1)首先从回答中提取关键词,即“是”和“否”作为答案,然后将问题与答案结合成更具体的主张。例如,给出一个问题:“图像中有一只狗吗?”和一个模型答案“是”,我们编写一个更具体的答案“是的,图像中有一只狗。”; (2)我们在批改过程中额外将问题反馈给LLM,以便LLM更好地掌握上下文和任务要求。