多模态对齐与幻觉

多模态 RLHF 中,如何定义一条高质量的偏好数据?视觉一致性差但文本通顺的回答算正例吗?¶
多模态 RLHF 的偏好数据通常由三个层次的质量标准构成。
第一层:视觉忠实度——硬性门槛
一条回答首先必须忠实于图像内容。任何包含图像中不存在的事实、错误描述属性或关系的回答,无论文本多么流畅,都不应作为正例。视觉一致性差但文本通顺的回答绝对不能算正例,这正是多模态幻觉的表现形式之一。奖励模型必须对这种回答给予显著低于忠实回答的评分。
第二层:有用性与相关性——核心维度
在通过视觉忠实度门槛后,偏好由以下因素决定:
-
完全回答了用户的问题,无遗漏。
-
逻辑清晰,推理步骤可追溯。
-
提供了用户需要的信息量,不多不少。
第三层:安全性与格式——附加约束
-
避免有害内容、不恰当的猜测。
-
遵循指定的输出格式。
-
适当表达不确定性。
高质量偏好对的具体定义:
一个偏好对 (chosen, rejected) 中:
-
chosen必须满足:视觉忠实度 ≥ 4/5,有用性 ≥ 4/5。 -
rejected可以是:视觉忠实度低(存在幻觉),或有用性差(答非所问、不完整),或安全性问题。 -
两者在其他维度上应尽量相似,只在某一目标维度上有显著差异,以便模型学习到该维度的偏好。
使用 PPO 进行多模态对齐时,价值网络是否也需要视觉输入?还是仅基于文本?¶

价值网络需要视觉输入,原因是:如果没有视觉输入,价值网络无法评估当前生成轨迹是否正在偏离图像内容,只能依赖文本的一致性来判断状态价值。当模型开始编造图像中不存在的内容时,仅基于文本的价值网络可能无法察觉,因为它看到的文本仍然通顺,导致价值估计偏高。价值网络通过接收完整的视觉上下文,可以学习识别幻觉生成的早期迹象,并提供准确的即时反馈信号。
工程实现上,价值网络通常复用策略模型(即 MLLM 本身)的大部分参数,仅替换输出头为单个标量值。这样可以共享视觉和文本编码器的表示,显著降低额外参数开销。如果独立训练价值网络,也需要复制相同的多模态架构。
多模态 DPO 的损失函数如何调整才能同时优化“有用性”和“视觉忠实度”?多个维度的偏好如何统一?¶
多模态 DPO 需要处理多维度的偏好信号。当有用性和视觉忠实度可能冲突时,统一方法如下:
方案一:分离标注,加权融合 对每个偏好对标注两个独立的信号:视觉忠实度偏好 pvfpvf 和有用性偏好 phelpphelp。DPO 损失分解为:

如何自动构造“图像被部分遮挡”时的偏好对,以训练模型的诚实度?¶
训练模型在视觉信息不足时承认不确定性,而非强行编造,需要系统性地构造遮挡场景的偏好对。
构造方法:
-
生成遮挡图像:对清晰图像施加各种遮挡——随机黑色矩形块、高斯模糊区域、过曝/欠曝处理、降低分辨率后局部恢复。遮挡位置应覆盖关键物体或区域。
-
生成两个回答:
- 诚实的回答(chosen):基于被遮挡的图像,要求模型回答。若模型正确识别出遮挡并拒绝编造,或明确说明“被遮挡部分无法确定”,则作为正例。
-
不诚实的回答(rejected):可以故意使用原图(无遮挡)生成的详细描述,或者用模型在无遮挡时强行编造细节的回答。
-
偏好对构造:
(chosen="图像中下方区域被遮挡,无法确定那里是否有物体。", rejected="图像中下方有一只棕色的狗在睡觉。")。 -
自动化流水线:用目标检测模型定位图像中的显著物体,在这些物体区域施加遮挡。用 MLLM 对遮挡图像生成回答,筛选出其中包含被遮挡区域细节的作为负例;用提示工程引导 MLLM 生成承认不确定性的回答作为正例。
多模态模型的“跨模态幻觉”:文本描述与图像中物体关系不符,如何通过训练缓解?¶
跨模态幻觉指模型正确识别了物体,但错误描述了它们之间的空间关系、动作交互或属性绑定(如“红车旁蓝衣人”误描述为“蓝车旁红衣人”)。
缓解策略:
-
细粒度负样本训练:专门构造关系/属性绑定错误的负样本。将正确描述的物体-关系-物体三元组中的关系词或属性词替换为错误的,作为负例,让模型学习区分。
-
单词-区域对齐损失(Word-Region Alignment):在预训练阶段,加入细粒度对齐损失,让文本中的每个实体词与图像中的对应区域尽可能相似,无关区域推远。这强制模型建立精确的跨模态对应。
-
空间位置编码增强:强化视觉 token 的空间位置信息(如使用更显式的 2D 位置编码),并在训练中加入空间关系推理任务(如“A 在 B 的左边还是右边?”)。
-
反事实数据增强:用图像编辑工具交换物体的位置或属性,生成反事实图文对,让模型在对比学习中学习精确绑定。
除了 VCD,还有什么基于解码策略减少幻觉的方法?如 DoLa 能否用于多模态?¶
VCD(Visual Contrastive Decoding) 通过对比原始图像和噪声图像的输出分布来减少幻觉。类似地,还有多种解码策略:
-
DoLa(Decoding by Contrasting Layers):通过对比 LLM 高层和低层的 logits 来减少事实性幻觉,最初用于纯文本 LLM。可以迁移到多模态:在多模态模型中,将视觉 token 和文本 token 一起输入后,通过对比 LLM 中不同层对视觉信息利用的差异来校准输出。但需要额外适配,因为视觉信息主要在特定层被整合。
-
CAD(Context-Aware Decoding):用更强的上下文提示(如“只根据图像回答”)和标准提示的输出进行对比,放大与视觉信息一致的 token 的概率。这是一种简单有效的即插即用方法。
-
ITI(Inference-Time Intervention):在推理时,通过一个轻量级探针检测生成内容是否与视觉信息一致,对不一致的 token 进行概率惩罚或重导向。
-
Self-CD(Self Contrastive Decoding):让模型先生成一个初始草稿答案,然后基于该草稿和原始视觉输入对比生成最终答案,抑制草稿中的幻觉。
-
OPERA(Over-trust Penalty and Retrospection-Allocation):专门针对 MLLM 的束搜索解码,对过度信任某些视觉 token 的行为进行惩罚,减少对图像内容的过度解读。
DoLa 在多模态中的挑战在于:需要确定哪些层的对比对视觉幻觉最敏感,通常需要针对 MLLM 进行层分析实验来找到最优的对比层对。
如何利用“回译”方法检测幻觉:让模型先生成描述,再用文生图模型生成图片,与原图比对。¶
回译检测是一种无参考的幻觉检测方法,利用生成模型的跨模态一致性来校验:
流程:
-
Textualize(图像→文本):用待检测的 MLLM 对输入图像生成详细描述。
-
Visualize(文本→图像):用文生图扩散模型(如 Stable Diffusion)以该描述为条件生成一张“回译图像”。
-
Compare(图像↔图像):计算原图与回译图像之间的语义相似度。可以使用 CLIP 图像嵌入的余弦相似度,或更高级的密集视觉特征匹配(如 DINOv2 特征)。
-
判决:若相似度低,说明生成的描述与原始视觉内容有显著偏差,可能存在幻觉。
关键考量:
-
文生图模型本身有生成偏差和随机性,单次回译不可靠。应多次生成(如5-10次),取平均相似度。
-
文生图模型也可能产生幻觉(如改变物体属性),这会引入噪声。使用高保真度的生成模型和高质量的提示遵循模型(如 SD3)可降低此风险。
-
回译更适合检测全局语义偏差和主要物体的错认,对于细粒度属性(精确数量、微小物体)的幻觉检测能力有限。
-
可结合图像区域级的回译:对描述中提到的每个物体,裁剪对应区域做局部回译和比对,提升细粒度检测能力。
多模态模型生成答案后,是否可以调用目标检测等视觉工具来校验对象是否存在?¶
完全可以,这是构建可靠多模态系统的关键策略——工具增强的事实核查。
实现方案:
-
解析生成内容:从模型输出的答案中提取所有提到的物体实体和它们的属性/数量。使用 NER 或正则表达式提取。
-
调用视觉工具:对图像运行目标检测模型(如 YOLO、DETR)或开放词汇检测模型(如 Grounding DINO、OWL-ViT),获取图像中实际存在的物体列表及其位置、类别、数量。
-
比对与校验:将提取的实体与检测结果比对:
- 若答案声称的物体在检测结果中不存在,标记为“可能幻觉”。
- 若声称的数量与检测计数严重不符,标记。
-
对于属性(如颜色),可调用专门的属性识别模型。
-
反馈与修正:若检测到冲突,系统可以:
- 丢弃生成内容,要求模型重新生成。
- 将检测结果作为额外上下文注入,让模型修正输出。
- 向用户展示警告标记。
优势:目标检测等工具专门训练,比通用 MLLM 在物体存在性判断上更可靠,能有效拦截严重的对象幻觉。局限在于:检测模型的词汇表可能有限,对抽象概念或细粒度类别覆盖不足。
解释“Chain-of-Verification”在多模态中的应用,如何通过提问链来逐步核实信息。¶
Chain-of-Verification(验证链) 是一种让模型自我审查的推理框架,在多模态中通过分解-提问-校验-修正的循环来实现。
应用流程:
-
初始生成:MLLM 基于图像生成初步回答。
-
验证问题生成:模型根据初始回答,自动生成一系列事实核查问题。例如,初始回答“图中三个红苹果放在木桌上”,生成问题:“图中有几个苹果?”、“苹果是什么颜色?”、“苹果放在什么表面上?”
-
独立验证:将这些问题独立地再次询问模型(可附带原始图像,也可仅基于图像特征),获得每个子问题的答案。关键在于独立——每个子问题不应看到其他问题的答案,避免污染。
-
一致性检查:将子问题的答案与初始回答中的对应陈述进行比对。若不一致,记录矛盾点。
-
修正回答:若发现矛盾,模型基于子问题的正确答案修正初始回答,输出最终核实后的答案。
多模态特有的增强:验证问题可以结合视觉定位(如“验证第三个苹果的位置”),让模型在回答子问题时输出注意力区域或坐标,进一步增强可验证性。
如何评估多模态模型的“精确拒绝”能力?即只拒绝回答不可回答的问题,而不拒答能回答的问题。¶
精确拒绝需要模型具备细粒度的知识边界感知,避免过度保守(拒绝能回答的)或过度自信(回答不可回答的)。
评估框架:
- 构建平衡测试集:
- 可回答子集:基于图像内容完全可以回答的问题。这些问题应覆盖不同难度和类型。
-
不可回答子集:问题与图像内容无关(图中无该物体、询问未来事件、询问个人隐私等)。需要仔细设计,确保问题合理但确实无法从图像中得出。
-
定义分类指标:
- 正确回答率:在可回答子集上正确回答的比例。
- 正确拒绝率:在不可回答子集上正确拒绝(输出“无法回答”或类似)的比例。
-
精确拒绝得分:正确回答率和正确拒绝率的调和平均,即 F1 思想的扩展。单一指标会掩盖问题:高回答率可能伴随着乱答不可回答问题。
-
细粒度分析:
- 按不可回答的原因分类(物体不存在、信息不足、超出范围),分别统计拒绝率。
- 检查错误拒答(假阳性)的模式:模型是否在某些图像类型上过于保守。
多模态幻觉的归因分析:是视觉编码器漏检,还是 LLM 忽视了视觉信号,或是投影层丢失信息?如何诊断?¶
幻觉的根因可能出在视觉链路的不同环节。需要系统性的归因分析来定位。
诊断方法:
-
视觉编码器能力探测:冻结视觉编码器,在上面训练线性分类头,检测特定物体/属性。若分类准确率低,说明编码器本身未能提取相应信息——视觉编码器漏检。这是源头的失败。
-
投影层信息保真度检测:将视觉特征投影到 LLM 空间后,再用线性分类头探测。若投影后分类准确率显著低于投影前,说明投影层丢失了信息。
-
LLM 利用视觉信息的能力检测:
- 注意力分析:检查 LLM 的自注意力权重,看视觉 token 是否被充分关注,以及与幻觉相关的文本 token 是否关注了正确的视觉位置。
- 因果干预:将某些视觉 token 置零或替换,观察生成内容的变化。若正确移除某物体的视觉 token 后,模型仍生成该物体的描述,说明模型不依赖视觉信号——LLM 忽视了视觉。
-
表示相似度分析:用线性探针或 CKA 分析 LLM 各层中视觉 token 和文本 token 的表示相似度。若在关键层相似度低,说明融合不充分。
-
对比诊断:对于同一幻觉案例,分别用原始图像和图像的文本描述(作为纯文本输入)让 LLM 回答。若纯文本回答正确,而视觉回答错误,说明问题出在视觉通路而非 LLM 的推理能力。
是否可以通过对抗训练,故意制造包含幻觉的图文对,来训练模型识别并纠正幻觉?¶
可以,且是一种主动防御策略,类似“疫苗原理”:让模型接触可控的“病毒”(幻觉样本),学会免疫。
对抗训练方法:
- 构造幻觉图文对:
- 图像无变化 + 错误描述:给一张苹果的图像,配文“一个红色的苹果”。然后构造对抗样本:图像不变,文本改为“一个绿色的梨”。
-
局部图像编辑:用图像编辑工具将图像中的苹果替换为梨,但文本仍写“苹果”。
-
多任务对抗训练:训练时混合正常样本和对抗样本。对抗样本的标签设为“描述错误”或要求模型输出“文本中的 XX 与图像不符,应该为 YY”。损失函数要求模型先检测不一致,然后生成纠正后的答案。
-
梯度对抗训练:生成使模型最容易产生幻觉的文本扰动,将其加入训练,最小化模型在这些扰动下的错误率。
-
协作对抗训练:用一个“攻击者”模型生成容易引发幻觉的提示,主模型学习抵御。
注意事项:对抗样本的难度需要课程式递增,且比例不能过高(如 5-15%),否则会削弱模型在正常输入上的表现。需配合标准数据一同训练。
在医疗影像的多模态模型中,幻觉可能带来致命后果,应如何从对齐层面设置强约束?¶
医疗领域需要零容忍幻觉的对齐策略,不能仅靠概率性的 RLHF。
强约束设计:
-
绝对知识边界:明确规定模型的知识范围。对于任何不在训练数据覆盖内的罕见病、药物剂量等,必须拒绝回答并建议咨询专业人员。使用规则库或知识图谱硬约束。
-
引用与证据链强制:每个医学结论必须附带图像中的具体区域标注(如激活热力图)和引用的医学知识来源。无证据不得给出结论。
-
不确定性量化与分级输出:根据置信度分级输出:高置信(正常描述)、中置信(附加不确定性声明)、低置信(强制拒绝并引导人工复核)。
-
人机协同环:在关键诊断流程中,模型的输出必须经过认证医生的确认。技术上将模型定位为“辅助筛查工具”而非“独立诊断工具”,从产品和法规层面设限。
-
安全性 RLHF 数据构造:
- 大量构造“宁可保守不可冒险”的偏好对:即使模型有一定把握,当问题可能危及生命时,chosen 回答应为建议就医。
-
加入领域专家的严格审核,所有偏好标签由医学专家标注。
-
对抗性安全测试:组建红队,持续寻找能诱导模型给出危险幻觉的输入,快速迭代更新约束。
多模态模型生成“详细的、视觉上不存在的细节”是哪种幻觉?有什么专门的技术应对?¶
这种幻觉被称为“过度具体化幻觉”或“编造细节幻觉”。表现为模型不仅说图中有什么,还添油加醋地描述了精细的、无法从图像中证实的细节(如“车牌的号码是...”对模糊车牌、或“远处有一个人正在看手机”而图像太模糊无法分辨)。
应对技术:
-
不确定性注入提示:在系统提示中强制要求模型对不确定的细节使用模糊语言(“似乎”、“可能”、“看不清”),并避免精确描述无法确认的细节。
-
基于分辨率的生成约束:检测图像中相关区域的像素面积或清晰度。若目标区域过小或模糊,在输入时附加元信息告知 LLM“该区域细节不可辨”,让模型据此调整生成粒度。
-
最小充分描述训练:构造训练数据,对同一张图同时提供“详细描述”和“最小充分描述”。训练模型学会只在信息充足时详细,不足时概括。
-
解码时的细节惩罚:在解码过程中,对过于具体或低频的细节词(如数字、专有名词)施加额外惩罚,除非模型对视觉证据有极高的注意力权重支撑。
如何让多模态模型在生成回答时,显式输出其“视觉依据”或注意力热图作为支撑?¶
让模型输出可解释的视觉依据,是构建可信 AI 的关键。技术上可通过训练生成定位标记或注意力引导实现。
方法:
-
生成坐标或区域标记:在训练数据中加入带有空间定位的答案,模型学会输出边界框坐标或指向性描述(如“在图像的左上角区域,有一个...”)。这类似于 Kosmos-2 的 grounding 能力。
-
输出注意力热图:模型在生成文本的每个 token 时,可以同时输出该 token 对视觉 token 的注意力权重。将这些注意力权重上采样到原图大小并叠加,即可生成“视觉依据”热图。这通常需要在训练时添加注意力监督损失,促使注意力确实聚焦于相关区域。
-
文本-区域对齐 token:引入特殊 token(如
<region_start>和<region_end>),模型在描述某区域时输出这些 token,其嵌入用于生成掩码。类似于 LISA 的分割输出。 -
后验可视化:若不改变模型架构,可用 Grad-CAM 等方法对特定输出 token 进行反向传播,可视化其对输入图像的依赖区域。但这是解释而非模型主动输出。
视觉 Token 的数量是否会影响幻觉率?过多视觉 token 是否反而引入噪声?¶
是的,视觉 token 数量与幻觉率之间存在 U 型曲线关系。
影响机制:
-
过少:视觉信息压缩过度,细节丢失。模型被迫用文本先验填补空白,容易产生物体缺失、属性错误等幻觉。
-
过多:引入大量低信息量的背景或纹理 token,造成信息稀释。LLM 的自注意力被大量无关视觉 token 分散,难以聚焦于关键物体 token。同时,过多的 token 可能包含混淆信息(相似纹理干扰),反而诱发模型“看到”并不存在的物体。
实证:一些研究表明,将视觉 token 从标准的 256 增加到 576 甚至更多后,在部分细粒度任务上性能提升,但在需要全局语义判断的任务上幻觉率可能上升。最佳 token 数与图像复杂度和任务类型相关。
优化策略:
-
动态 token 压缩:根据图像复杂度自适应选择 token 数量。简单图像少用 token,复杂图像多用。
-
重要性筛选:仅保留与文本相关的 top-K 视觉 token,抑制背景噪声。
-
多尺度视觉特征:融合低分辨率全局特征(少量 token)和高分辨率局部特征(较多 token),平衡全局语义和细节。
为什么多模态模型在计数任务上容易产生幻觉?如“图片中有几个人”,根本原因是什么?¶
计数幻觉是 MLLM 的顽固短板,根本原因是视觉编码器和 LLM 的架构特性均不利于精确计数。
根本原因:
-
视觉编码器的平移不变性与池化:ViT 虽然保留了 patch 的位置,但其自注意力是全局加权平均,本质上对物体的精确数量和位置不敏感。模型更擅长识别“有一群人”而非“有 7 个人”。
-
LLM 的序列本质:LLM 是序列模型,对数量的理解基于文本中出现的数字词频。它在训练中可能学到“多个”常与“3-5”共现,但没有内建的计数机制。
-
缺少显式的计数监督:预训练图文对中,“一群人”、“几个苹果”等模糊量词远多于精确数字。即使有精确数字,也可能与实际图像不符。模型从未被系统性地训练去对图像中的物体逐一计数。
-
物体的重叠与遮挡:现实图像中物体相互遮挡,模型难以感知个体的完整边界,导致漏计或重复计数。
-
注意力分散:当图像中有多个相似物体时,LLM 的注意力可能在它们之间跳转,无法稳定地逐一“点算”。
缓解方向:
-
引入专门的目标检测模块作为计数工具,MLLM 调用该工具获取精确数量。
-
在训练数据中大量加入带有精确计数的标注数据,并用专门的计数损失进行微调。
-
使用视觉编码器的中间层特征进行基于区域的计数预测,作为辅助任务。
多模态对齐中,如何平衡“遵循指令”与“如实描述图像”?冲突时优先级如何设定?¶
这是一对核心矛盾:用户可能要求“请描述图中所有人物的表情”,但图像模糊看不清表情。如果严格遵循指令,可能编造表情;如果如实描述,可能只能说“看不清”。
优先级设定(由高到低):
-
安全与无害:最高优先级。当遵循指令可能产生有害内容(如用户要求识别监控中的人脸)时,必须拒绝。
-
事实忠实(如实描述):第二优先级。当指令与图像事实冲突时,事实优先。模型应首先指出“图像模糊,无法看清表情”,然后在用户允许下提供其他可用信息。
-
遵循指令(用户意图):第三优先级。在安全和事实不冲突的前提下,尽力满足用户指令。即使图像看不清表情,也可描述能看到的部分(如“图中有人,但面部模糊”)。
训练实现:
-
在偏好数据中,将“诚实指出信息不足”的回答放在“编造细节但符合指令”的回答之上。
-
在系统提示中明确此优先级,并将其作为 RLHF 的优化准则。
如何构建一个包含“部分错误视觉信息”的对抗测试集,用于评估模型的鲁棒对齐能力?¶
这个测试集旨在评估当视觉输入本身包含误导信息时,模型是否会被“带偏”。
构建方法:
-
图像局部篡改:用 Photoshop 或图像编辑工具对真实图像进行局部修改,例如将红色的苹果涂成绿色,或将路牌上的文字改成错误的。保持篡改痕迹尽量自然。
-
对抗性补丁:在图像中添加人眼不易察觉但能改变模型视觉特征的对抗性扰动,使视觉编码器提取到错误特征。
-
矛盾图文注入:给一张狗的图片,但用户问题中错误地将其称为猫:“图中的这只猫是什么品种?”看模型是否会纠正用户的错误,还是顺着用户说下去。
-
多模态陷阱:提供两张图,一张是苹果,一张是梨。问:“左边的苹果和右边的梨,哪个更大?”但实际上左右标注相反。测试模型是否会盲从文本中的位置信息。
-
分级评估:
- 完全免疫:模型识别出错误并纠正。
- 部分免疫:模型表达了不确定性。
- 被误导:模型接受了错误信息并生成幻觉。
该测试集应覆盖不同类型的视觉错误,并定期更新,以防止模型过拟合固定的对抗模式。
是否可能通过校准方法,让多模态模型的输出置信度与实际准确率相匹配?¶
可以,且这对安全性至关重要。模型不仅应该说“X”,还应知道“我有多大把握 X 是正确的”。这就是置信度校准。
校准方法:

-
Platt Scaling:在模型输出 logits 上训练一个逻辑回归模型,输出校准后的概率。
-
训练时校准:在训练中加入校准损失项,惩罚置信度与真实准确率之间的偏差。例如,使用 MMCE(Maximum Mean Calibration Error)损失。
-
集成与MC Dropout:通过多次推理(不同的 Dropout 随机种子)得到预测分布,方差作为不确定性的度量。计算开销大,但可捕获模型不确定性。
-
显式不确定性输出:训练模型在输出答案的同时,输出一个置信度 token(如
<confidence:0.85>)。这需要对应的训练数据,让模型学会评估自己的不确定性。
多模态特殊考量:视觉输入的模糊性(遮挡、低光照)是置信度的重要来源。需要确保校准数据集覆盖各种不确定性场景。可通过向清晰图像添加退化处理,获得“低确定性”的标注样本。
多模态 RLHF 的流程是怎样的?多模态奖励模型需要评估哪些维度?¶
多模态 RLHF 并不只是给 LLM 的 RLHF “打个视觉补丁”,而是对整个对齐流程的重新审视。
流程拆解:
整个流程可以分为四个阶段。
第一阶段是基座模型准备。这里需要一个已经完成多模态预训练和指令微调的 MLLM。它已经能看懂图像、听懂指令,但它的回答可能不够诚实,或者不够有用,这就是我们接下来要解决的。
第二阶段是多模态奖励模型训练。这是多模态 RLHF 最特殊的地方。我们需要收集人类对于(图像,指令,回答)三元组的偏好数据,然后训练一个奖励模型。这个奖励模型的输入不是纯文本,而是图像、指令和回答三者的结合。它的任务是模仿人类判断,给一个好的回答打高分,给一个差的回答打低分。技术上,它通常复用基座 MLLM 的视觉编码器和 LLM 主体,但在最后加上一个输出标量分数的线性头。
第三阶段是PPO 强化学习微调。基座 MLLM 作为策略网络,针对给定的图像和指令生成回答。这个回答会被送到第二步训练好的、已冻结的奖励模型中去打分。PPO 算法根据这个奖励分数来更新策略网络的参数,同时还会加上一个 KL 惩罚项,防止模型为了刷高奖励分数而胡说八道,偏离了原始语言模型的能力太远。
第四阶段是迭代优化。这个过程通常不是一轮就够的。我们会用当前对齐好的模型再去生成新的回答,收集新的人类偏好数据,用来训练一个更好的奖励模型,然后再去对齐策略模型,如此循环往复。
奖励模型需要评估哪些维度?
奖励模型是 RLHF 的“指挥棒”,它评估的维度直接决定了模型最终的行为。这几个维度缺一不可:
-
真实性/视觉忠实度:这是多模态奖励模型的独有和首要维度。回答中的每一个事实性陈述,都必须能在图像中找到依据。绝对不能“指鹿为马”或凭空捏造物体。
-
有用性/指令遵循度:回答是否准确理解了用户的意图?是否完整覆盖了问题的所有要求?对于一个复杂的指令,有没有遗漏任何子任务?
-
无害性/安全性:当图像中包含潜在的有害、暴力或隐私内容时,模型的回答是否恰当?是应该拒绝回答、进行模糊化处理还是给出安全提示?
-
逻辑性与连贯性:回答的推理过程是否清晰?多轮对话中的上下文是否连贯?是否有前后矛盾?
-
语言质量:文本本身是否流畅、简洁、没有语法错误?不必要的重复和啰嗦会被扣分。
这五个维度像一个雷达图,一个优秀的奖励模型需要在这些轴上都能给出接近人类判断的分数。
如何为多模态偏好对(如两个回答的比较)收集数据?构造“选择-拒绝”对时需要注意什么?¶
偏好数据是 RLHF 的“原油”,它的质量直接决定了精炼出来的对齐模型的好坏。
数据收集流程:
首先,我们需要生成多样化的回答。对于同一张图像和同一个问题,我们可以用不同方式得到多个回答。比如,用不同规模或处于不同训练阶段的 MLLM 来生成;或者用同一个模型,但通过调整解码温度、top-p 等参数,得到从保守到奔放的不同回答;还可以针对性地设计一些 Prompt,诱导模型输出包含特定类型错误的回答(比如故意编造细节)。
然后,进入人工标注环节。标注员会看到(图像,指令,回答A,回答B)的四元组。他们的任务是选出更好的那个回答,并标注出另一个回答差在哪里。常见的标注维度可以对应到奖励模型的评估维度上:真实性、有用性、无害性。
最后是偏好数据验证。为了保证数据质量,一个样本通常需要分配给多个标注员。只有当标注结果的一致性(比如 Fleiss' Kappa 系数)达到阈值时,这条数据才被认为是有效的。
构造“选择-拒绝”对的关键注意事项:
这里有三个非常关键的陷阱需要避开。
第一,避免长度偏差。 人类标注员(甚至 GPT-4 这样的 AI 标注员)天然地倾向于选择更长、看起来更“详尽”的回答,即使里面包含了很多废话或编造的内容。这会引导模型变成“废话文学大师”。对策是构造偏好对时,要刻意包含一个“长但失真”和一个“短但精确”的回答,并引导标注员选择后者。
第二,真实性是硬性约束。 绝对不能允许一个文本流畅、结构清晰但存在事实错误的回答,优于一个语言朴实但完全正确的回答。在多模态场景下,这尤其重要。一个回答如果说“一只可爱的柯基犬在草地上奔跑”,但图里其实是只柴犬,那么这个回答无论写得多么优美,都必须是 Rejected。
第三,分歧的归因要清晰。 在一对回答中,最好只在少数几个关键维度上有显著差异。如果两个回答在真实性、有用性、风格上都不同,模型就很难从偏好信号中搞清楚自己到底是因为什么被奖励的。理想的状态是,两个回答在大部分方面相似,唯独一个犯了我们想纠正的错误(比如幻觉),另一个是对的。这样的偏好信号最“干净”,模型学起来也最高效。
DPO 在多模态对齐中的使用和 RLHF 相比有什么优势?损失函数需要做哪些适配?¶
如果说 PPO 是“胡萝卜加大棒”的强化学习,那 DPO 就是更精巧的“榜样学习”。它不需要显式训练一个奖励模型,而是直接在偏好数据上优化策略模型。
DPO 的优势:
-
流程更简单:DPO 砍掉了训练奖励模型和 PPO 强化学习这两个相对独立的阶段。我们不再需要维护一个单独的、跟策略模型一样大的奖励模型,也不需要去处理 PPO 训练中那些令人头疼的超参数调优和不稳定性。
-
训练更稳定:PPO 训练中,策略模型可能会通过“奖励黑客”行为来钻空子拿高分,而不是真正提升回答质量。DPO 直接在偏好对上做二元分类,梯度信号直接而稳定。
-
计算成本更低:相比需要同时加载策略模型、参考模型、奖励模型和价值模型的 PPO,DPO 只需要策略模型和参考模型,显存占用和训练时间都显著减少。
损失函数的适配:
原生 DPO 损失是:

其中 xx 是输入(图像+指令),ywyw 是 Chosen 回答,ylyl 是 Rejected 回答。在多模态对齐中,直接套用这个公式是不够的,需要适配。
首先,DPO 假设“更好”是一个单一的偏好轴。但在多模态中,有用性和真实性经常冲突。比如一个有用但失真 vs 一个真实但简略的回答。解决方法是解耦的多维度偏好。一种做法是,训练时用不同的系统提示来区分维度:[Faithfulness] 提示下的偏好数据只优化真实性,[Helpfulness] 提示下的偏好数据只优化有用性。另一种做法是,对损失函数加权,用不同权重的 DPO 损失项对应不同维度的偏好。
其次,由于视觉 token 带来了额外的信息复杂性,\beta 值的设定可能需要比纯文本模型更小的值,以避免模型对某个维度的偏好变化过于剧烈,导致灾难性遗忘。训练过程需要更精细的监控。
什么是对象幻觉?多模态大模型为什么会在描述图像时“凭空捏造”物体?¶
对象幻觉,简单来说就是“睁眼说瞎话”——模型生成的描述里,包含了图像中压根儿不存在的物体。
比如,给出一张只有“一只狗趴在沙发上”的图,模型的描述却是“一只猫蹲在窗边的沙发上,旁边有一个红色的球”。这里,“猫”、“窗边”、“红色的球”都属于对象幻觉。
为什么会凭空捏造?原因很复杂,但可以归结为以下几点:
-
强大的语言先验:MLLM 的底座 LLM 是在海量文本上训练的。它学到了“猫”和“球”经常一起出现,“沙发”常放在“窗边”。当图像特征不够强,或者视觉信息丢失时,LLM 强大的语言建模能力就会“接管”并自动补全。它像一个经验丰富但眼神不好的画家,没看清细节时,就会不自觉地按照自己的经验去画。
-
视觉编码器的信息瓶颈:高分辨率图像被压缩成几百个 patch token。像远处一个小飞盘这样的细节,可能就在这个压缩过程中被“抽象”掉了。视觉编码器可能只捕捉到了“狗”和“沙发”,而忽略了飞盘。
-
跨模态对齐的错位:即使视觉编码器正确地提取了“狗”的特征,但这个特征向量在映射到 LLM 的语义空间时,可能正好落在了“猫”这个词的嵌入向量附近。模型在生成时,一个小小的随机偏差就可能让它说出“猫”而不是“狗”。
-
训练数据的偏置:预训练数据中大量的图文对,其文本描述可能远丰富于图像实际包含的内容。比如一张只有苹果的图,配文却是“新鲜的水果”。模型被训练成倾向于“脑补”出更丰富的描述,以满足数据分布。
-
自回归生成中的错误累积:LLM 是一个词一个词地往外蹦的。一旦它不小心生成了“球”这个字,后面的生成就会被这个错误引导,去补充描述这个根本不存在的“球”是什么样的,陷入一种“自欺欺人”的循环。
除了对象幻觉,还有哪些类型的多模态幻觉?请举例说明。¶
多模态幻觉远不止“无中生有”这么简单,它是一个家族。
-
属性幻觉:这是最常见的类型之一。模型识别出了正确的物体,但给它安上了错误的属性。比如图里是“一辆蓝色的汽车”,模型却说是“一辆红色的汽车”。这通常是因为模型对主要物体(汽车)的语义抓得准,但对细粒度属性(颜色)不够敏感。
-
关系幻觉:模型能识别出各个物体,但搞错了它们之间的关系。比如“桌上的苹果”,模型识别出“桌子”和“苹果”,却描述成“桌子旁边的苹果”。空间关系(上下左右里外)是多模态模型的薄弱环节。
-
数量幻觉(计数错误):这是非常顽固的问题。图像里有三只猫,模型偏说“有两只猫”。原因在于 ViT 架构本质上不擅长做精确计数,而 LLM 对数字也不敏感,它们更擅长模糊的“多”和“少”。
-
文本/OCR 幻觉:图像中包含了文字,模型在阅读时出错。比如一个写着“STOP”的交通标志,模型可能描述成“一个写着‘禁止通行’的标志”。或者把“39%”看成“89%”。这往往是因为图像分辨率不足或 OCR 能力有限。
-
情感/氛围幻觉:对图像进行过度解读。比如一张人脸表情平静的照片,模型可能描述为“一个表情悲伤的人”。这是模型将文本中的情感共现模式强加给了视觉。
-
上下文/场景幻觉:对图像的整体背景进行错误推理。比如一张在病房里拍摄的宠物狗照片,模型可能忽略宠物,直接说“一个病人在医院接受治疗”。
如何通过改进训练数据来减轻幻觉?介绍几种专门用于增强事实性的数据集构造方法。¶
数据是模型认知的起源,从源头减少虚假信号是缓解幻觉的关键。
- 负样本增强:教会模型“什么是错的”
这是最直接的方法。构造明确包含错误的图文对,并让模型学习拒绝或纠正它们。
-
LRV-Instruction (Large-scale Robust Visual Instruction):这个数据集的做法是,在正面的指令数据中,混入不同比例的负指令数据。这些负指令包含三种类型:(a) 图像不存在的问题,(b) 图像存在但问题不相关,以及 (c) 问题相关但答案被故意写错。通过训练,模型学会了“不是所有问题都值得回答”,并且要忠实于图像。
-
负样本微调:类似地,我们可以直接用模型生成幻觉回答,由人类标注员纠正后,组成
(幻觉回答, 正确回答)的对,通过 DPO 训练,让模型降低生成幻觉回答的概率。 -
事实性增强的Caption数据:教会模型“什么是真实的”
标准的图像描述往往很笼统,对幻觉学习价值不大。
-
细粒度、反事实的描述重写:对于一张“红色的汽车”的图,我们不仅提供正确的描述(“红色的汽车”),还可以用大模型生成反事实的描述(“蓝色的汽车”),并明确告诉模型后者是错误的。这强制模型去关注视觉细节。
-
LLaVA-RLHF 中的 Factually Augmented RLHF:该工作使用一个公开的视觉-语言模型,为图像生成一个非常详细的描述。然后,让一个强大的多模态模型(如 GPT-4V)来检查这个详细描述中每个事实的真假。以此构建关于“事实正确性”的偏好数据,用于训练奖励模型。
-
知识精炼与校验数据:教模型“事实从哪里来”
-
“引用链”训练数据:对于需要外部知识的回答,构造数据时,不仅给出答案,还要求给出“这个知识来源于图像的哪个区域”或者“引用了哪条确定的文本信息”。这有点像写论文要标参考文献,让模型养成“言之有据”的习惯。
视觉对比解码(VCD)是如何利用对比思想来减少幻觉的?¶
VCD 是一种优雅的、无需额外训练的后处理方法,它的核心是“一图两看,信号放大”。
它的做法是:对于同一张输入图像,生成两个不同的版本。一个是原始版本,另一个是失真版本(比如加上高斯噪声或者模糊处理)。然后,模型同时对这两个版本进行前向传播,得到两组下一个 token 的概率分布(logits)。
VCD 的核心公式是:

其中,v 是原始图像,v' 是失真图像。
它为什么有效?
模型在看到原始图像 v 时,其预测既包含视觉信号,也包含强大的语言先验。而当它看到失真图像 v' 时,视觉信号被严重削弱,模型的预测主要由语言先验和残留的粗粒度视觉信息主导。
VCD 用原始图像的 logit 减去失真图像的 logit,实质上是放大了纯净的视觉信号,同时抑制了语言先验带来的“背景噪声”。那些在两个版本中都高概率的词(比如由语言先验驱动的常见搭配,例如“猫”后面跟“老鼠”),在相减后会被抑制。而只在看到清晰图像时才被强烈激活的词(比如某个特定物体的精确名称),则在相减后得到保留和增强。
这就是“对比”的妙处:不是让模型只看,而是让它在“看得清”和“看不清”两种状态下看,然后将两者的差异提取出来,这个差异就是更纯粹的视觉信息,从而引导模型生成更忠实于图像的内容。
在生成过程中,能否使用注意力权重大小来判断模型是否产生了幻觉?可靠性如何?¶
答案是:可以参考,但不能作为唯一依据。 把注意力权重直接当成置信度,是有风险的。
它为什么有一定的指示作用?
如果你看到模型在生成“红气球”这个词的瞬间,交叉注意力(Cross-Attention)的权重精准地、像聚光灯一样集中在了图像中那个红色气球所在的 patch token 上,那这是一个非常强的正面信号,说明模型生成的这个实体“言之有物”。
反之,如果生成“红气球”时,注意力权重要么非常均匀地散落在整张图上,要么错误地聚焦在背景天空上,那这就很可疑了,极有可能是模型在凭空编造。
为什么它不总是可靠?
-
注意力不等于归因:高注意力权重只代表模型“看了”那个地方,但不代表它“理解了”并“正确描述了”那个地方。它可能看到了红色,却错误地说成了“红苹果”。
-
微调会改变注意力模式:经过 RLHF 等对齐训练后,模型的注意力分布可能会变得非常平坦。为了迎合人类偏好,它学会了一种“雨露均沾”的关注方式,但这反而让注意力不再聚焦于关键物体,失去了可解释性。
-
存在多种注意力模式:一个正确的输出,可能对应多种不同的注意力模式。比如,在说出“红气球”之前,模型可能已经通过自注意力机制在上下文中获取了足够信息,而不需要再次去强烈地“凝视”视觉 token。
-
幻觉也有高注意力:模型可能对图像中的某个错误区域表现出极高的“执念”,然后基于这个错误区域生成了幻觉。它的注意力权重依然很高,但指向了错误的东西。
更可靠的用法:将注意力权重与其他信号结合起来判断,比如输出 token 的概率(置信度)。如果一个词的注意力权重低,且输出概率也低,那么它产生幻觉的可能性就很高。
如何让多模态模型在不确定时主动表示“不知道”或“我看不清”?需要什么样的对齐训练?¶
让模型“认怂”,比让它“胡编”难得多,也需要更精细的调教。
核心策略:构造“边界场景”的偏好数据,并进行对齐训练。
具体来说,我们需要系统性地制造大量“应该认怂”的场景,并确保在这些场景下,“认怂”的回答是 rewarded,而“胡编”的回答是 penalized。
-
构造三类“应该认怂”的数据:
-
视觉信息缺失:给清晰图提问,但问题是关于一个被裁切掉、或被遮挡、或根本不在图中的物体。比如一张猫的上半身照片,问“这只猫的尾巴是什么颜色的?”。此时,期望的回答是“抱歉,由于图片只显示了猫的上半身,我无法看到它的尾巴。”而不是去瞎猜“可能是黑色的”。
-
视觉信息模糊/歧义:给模型一张分辨率极低、运动模糊或严重失焦的图像,然后提问。期望的回答是“图像太模糊,我无法分辨出具体的物体/文字。”。
-
超出能力范围/知识边界:提问一些无法仅从图像获知的信息,比如“图中这个人的电话号码是多少?”或者“这只鸟的迁徙路线是什么?”。期望的回答是“这个问题无法仅凭图像回答,需要更多外部信息。”。
-
对齐训练的设计:
-
在 SFT 阶段,混入大量上述数据,教模型在这些场景下的“标准回答模板”。
-
在 RLHF/DPO 阶段,这是关键。我们需要构造一个偏好对:
- Chosen 回答:诚实地说“我看不清/我不知道/这里无法确定”。
- Rejected 回答:强行进行描述或猜测,并且这个猜测是错误的,或者虽然对了但纯属巧合(训练时通常直接让它猜错,以惩罚猜测行为)。
- 通过大量这样的偏好数据训练奖励模型或直接进行 DPO,模型会学到一条铁律:当视觉信息不足以支撑确定性结论时,“承认不知道”比“给出可能错误的猜测”要好得多。 这实际上是在重新定义对齐的价值观,将“诚实”的优先级置于“有用性”之上。
如何衡量多模态对齐带来的“对齐税”?¶
“对齐税”指的是为了变得“更好”(更诚实、更安全、更有用),我们在其他维度上付出的代价。不能只看单一指标。
衡量的维度:
-
幻觉缓解 vs. 描述丰富度:最典型的“对齐税”。经过强对齐的模型,幻觉可能大幅减少,但它可能变得过分保守,描述变得干瘪、短小,不敢使用任何带有推断性或修饰性的语言。我们需要衡量(如幻觉率)下降的同时,(如平均描述长度、独特形容词数量)下降了多少。一个好的对齐是在显著降低幻觉的前提下,尽可能保持描述的生动性。
-
安全性 vs. 过度拒绝:模型在拒绝回答有害或无法回答的问题时,是否也开始拒绝回答一些正常、可回答的问题了?这就是“过度拒绝”。可以通过构建一个“正常问题集”和“边界/安全问题集”,分别测试对齐后模型的应答率和拒绝率,计算出一个类似 F1-Score 的平衡指标。
-
指令遵循 vs. 视觉忠实度:当指令要求模型“详细描述”,但图像本身模糊时,对齐后的模型应该如何做?如果它严格遵循了视觉忠实度而违背了指令(“太模糊无法详细描述”),这体现了对齐成功。但如果它因此对所有“详细描述”的指令都给出简短回答,那就是“税”。评估时,可以对比模型在清晰图和模糊图下的回答详细度。
-
通用能力退化:多模态对齐是否损害了模型纯文本的推理、编码或知识问答能力?我们需要用纯文本的基准测试(如 MMLU, GSM8K)来评估这一点。一个好的对齐过程,应该是对症下药,只影响目标行为,而将附带损害降到最低。
评估多模态幻觉的基准 POPE 是如何构造测试样本的?¶
POPE 巧妙地将幻觉评估转化为一个二分类任务,从而实现了客观、自动的评估。它的核心思想是:问模型一个关于物体存在性的极简单问题,看它会不会答错。
构造流程如下:
-
选定图像和物体:对于每张测试图像,先用一个分割或检测模型,找出图中确定存在的物体(Ground Truth)。同时,从数据集的物体库里,选出一些图中确定不存在的物体。
-
构造问题模板:用简单的模板构造问题,比如“Is there a [object] in the image?” 或 “Is there any [object] in this photo?”。
-
构建正负样本:
- 正样本(Positive):向模型提问图中存在的物体。此时正确答案是“Yes”。如果模型回答“No”,则产生了幻觉(漏检)。
- 负样本(Negative):向模型提问图中不存在的物体。此时正确答案是“No”。如果模型回答“Yes”,则产生了幻觉(误判)。
-
POPE 的关键在于负样本的构造,它提出了三种策略:
- 随机采样:从所有不存在的物体中随机选。
- 热门采样:选择那些在数据集中出现频率最高的物体。这些是模型的语言先验最可能“猜”出来的。
- 对抗采样:选择那些在图中频繁与 Ground Truth 物体共现的物体。比如图中出现了“桌子”,那么对抗负样本可能是“椅子”,因为它们在训练数据中经常一起出现。
-
评估指标:基于这个二分类任务,可以轻松计算准确率(Accuracy)、精确率(Precision)、召回率(Recall)和 F1-Score。一个高度诚实的模型,在负样本上的回答应该有极高的精确率(即几乎不说“Yes”)。
AMBER 基准在评估多模态幻觉时,还关注哪些维度?¶
AMBER 可以看作是 POPE 的“威力加强版”,它不仅考察对象存在性,还深入到了属性和关系的层面,并提供了一个多维度、细粒度的评估。
除了对象存在性,AMBER 还关注:
-
属性幻觉:验证一个存在物体的属性是否正确。它会问“这个物体是什么颜色?”或给出“一个[颜色][物体]”的陈述让模型判断对错。这能揭示模型是否能正确绑定属性和物体。
-
关系幻觉:验证物体之间的关系是否正确。比如问“这个人是在骑马吗?”如果图像中人是站在马旁边,那么回答“是”就意味着关系幻觉。这测试模型的空间和交互关系理解。
-
生成式评估与判别式评估结合:
- 判别式:像 POPE 一样,给出问题让模型回答“是”或“否”。AMBER 包含了大量的这类问题。
-
生成式:直接让模型生成图像描述,然后用自然语言处理工具自动解析生成的描述,将其分解成(物体,属性,关系)三元组,再与图像的真实标注做对比。这能评估模型在没有明确引导时,是否会自发产生幻觉。
-
幻觉严重性分级:AMBER 不仅统计幻觉的有无,还分析幻觉的严重性。比如,是轻微的属性错误,还是严重的、核心物体完全虚构的错误?
在多模态对话中,如何让模型输出的引用更准确,减少错误归因?¶
错误归因也是一种幻觉:模型给了一个看似正确、能被常识接受的答案,但它引用的“视觉证据”却是错的或者不存在的。解决方法需要从数据和模型两个层面入手。
-
训练数据层面:植入“引用”的基因
-
强制引用格式:在构造指令微调数据时,要求所有与视觉相关的回答,都必须采用特定的引用格式。例如:“基于图像[ID]右上角的区域,可以看到一个[物体]。” 这样模型就学会了“引用”这个行为模式。
-
“引用-陈述”配对校验:构造负样本数据。给出一张图和一段描述,故意让模型输出的引用标记指向错误的图像区域或错误的文档,然后标记为负样本。让模型在训练中学会,引用内容本身也必须被验证。
-
模型与解码层面:让引用可验证
-
注意力对齐训练:在模型输出引用标记(如
[1])的瞬间,可以添加一个辅助损失,强制它在该时刻的交叉注意力权重,能够精准定位到它所引用的那个图像 patch token 上。这在内在地建立了“引用”与“视觉焦点”的联系。 -
归因解码:一种后处理或解码时的干预手段。当模型要输出一个引用时,我们可以不让它自由发挥,而是回溯其当前的视觉注意力,找到注意力权重最高的区域,然后将其对应的(预先处理好的)区域 ID 或描述作为引用输出。
-
检索增强生成 (RAG) 思路:将图像中的所有可引用单元(如检测到的物体、OCR 提取的文字块)预先提取出来,作为“知识库”。在生成阶段,模型不是直接引用“图像”,而是引用这个知识库里的条目。这从根本上解决了归因问题,因为信息来源是离散、可追踪的。