Chapter 5:多学科与多步推理基准 (MMMU / MathVista 等)
1. 开篇段落
在多模态大模型(MLLM)的发展历程中,如果说识别物体(Object Detection)和简短问答(VQA)是模型的“眼睛”,那么本章讨论的多学科与多步推理基准则是模型的“大脑前额叶”。
随着 GPT-4V、Gemini 1.5 Pro 等模型的出现,评测的重点已从简单的“图里有什么”转向了“图意味着什么”以及“如何利用图里的信息解决复杂问题”。本章将涵盖 MMMU、MathVista、ScienceQA 以及 A-OKVQA 等高阶基准。这些基准通常具有知识密集(Knowledge-Intensive)和逻辑密集(Logic-Intensive)的双重特征,是区分“玩具模型”与“生产力工具”的分水岭。
本章学习目标:
- 全景理解:深入剖析 MMMU 和 MathVista 等基准的数据构成与难度分级。
- 核心机制:掌握思维链(Chain-of-Thought, CoT)在视觉推理评测中的决定性作用。
- 诊断能力:学会区分感知错误、知识幻觉与推理断裂,并掌握相应的调试方法。
- 评测实战:熟悉针对开放式数理问题的答案提取(Extraction)与归一化(Normalization)协议。
2. 文字论述
5.1 认知金字塔:从感知到专家级推理
视觉理解并非扁平的任务集合,而是一个层级分明的认知金字塔。本章主要关注金字塔顶端的 Level 3 到 Level 5。
[ Level 5: 专家级推理 (Expert Reasoning) ]
需要特定领域的专业教育背景 (e.g., 读病理切片, 分析财报)
---------------------------------------------------
[ Level 4: 多步逻辑推理 (Multi-step Reasoning) ]
A -> B -> C,涉及计算、几何变换、因果推断 (e.g., MathVista)
---------------------------------------------------------
[ Level 3: 知识检索与关联 (Knowledge Retrieval & Grounding) ]
识别物体并调用外部常识 (e.g., 看到埃菲尔铁塔 -> 知道位于巴黎)
---------------------------------------------------------------
[ Level 2: 关系理解 (Relation Understanding) ]
方位、动作、属性 (e.g., 猫在桌子上, 正在跑)
---------------------------------------------------------------------
[ Level 1: 基础感知 (Basic Perception) ]
对象检测, OCR, 颜色识别 (e.g., VQAv2, OCRBench)
5.2 核心基准深度解析
1. MMMU (Massive Multi-discipline Multimodal Understanding)
- 定位:衡量 AGI(通用人工智能)潜力的标尺。
- 数据构成:包含 11.5K 个问题,涵盖 6 大核心学科(艺术、商业、科学、健康、人文、技术)和 30 个子领域。数据来源主要是大学考试题、测验和教科书。
- 难度特征:
- 图文交织:题目不仅仅是配图,很多时候图表(Chart)、乐谱(Sheet Music)、化学结构(Chemical Structure)是解题的唯一依据。
-
专业门槛:没有特定领域的知识(如有机化学反应机理、电路原理),仅靠看图无法作答。
-
Rule of Thumb:
- 及格线:Random Guess 是 25%(四选一)。早期 LLaVA-1.5 约为 30-35%。
- 优秀线:GPT-4V (2024初) 约为 56%。超过 50% 意味着模型具备了本科生级别的跨学科理解能力。
- 专家线:人类专家在该数据集上的平均准确率约为 80%+。
2. MathVista (Visual Mathematical Reasoning)
- 定位:视觉数学推理的集大成者。
- 痛点解决:以往的模型可能由 LLM 解决文字部分,忽略图片。MathVista 专门筛选了 "Visually Essential" 的题目——即如果不看图(例如几何图形的标注、函数曲线的走势、拼图的缺口),完全无法解题。
- 任务类型:包含几何(Geometry)、算术(Arithmetic)、逻辑谜题(Puzzle)、统计图表(Statistical)等。
- 能力要求:模型必须具备精确的 OCR 能力(读数字)、空间几何理解(读角度/边长)以及符号计算能力。
3. ScienceQA
- 特点:首个大规模多模态科学问答数据集。
- 独特价值:包含 Lecture(背景知识) 和 Explanation(解析)。这使得它非常适合用来训练和评测模型的 CoT(思维链) 能力。
- 评测模式:除了看答案对不对,还可以评测生成的解析与标准解析的相似度(尽管自动化评测解析很难)。
4. A-OKVQA / OK-VQA (Outside Knowledge VQA)
- 核心逻辑:Image as Query(图像即查询)。
- 示例:图是一只长颈鹿。
- VQAv2 问:“这是什么动物?”(视觉感知)
- OK-VQA 问:“这种动物的舌头通常是什么颜色的?”(视觉+百科知识)
- A-OKVQA 问:“这种动物为什么进化出这么长的脖子?”(视觉+推理+假说)
5.3 提升推理能力的“配方” (Recipes for Reasoning)
在训练或微调模型以应对这些基准时,以下策略已被证明有效:
-
数据混合 (Data Mixture): * 不能只喂图文对(Caption)。必须混合纯文本的数学/代码数据(提升逻辑)和图文交织的教科书数据(提升对齐)。
-
思维链微调 (CoT Fine-tuning): * 数据格式不应是
Q -> A,而应是Q -> R (Rationale/Reasoning) -> A。让模型学会“先想后答”。 -
高分辨率 (High-Res): * MathVista 和 MMMU 中的很多图表包含密集的小字或精细的刻度。支持动态分辨率(AnyRes)或切片策略(Tile/Crop)是刷榜必备。
-
工具增强 (Tool-use / Code-interpreter): * 对于涉及复杂计算(如 )的题目,让模型生成 Python 代码并执行,比让模型直接输出数字准确率高得多。这在 MathVista 上尤其有效。
5.4 评测协议的复杂性
推理任务的评测远比分类任务复杂,主要体现在答案的提取和判定上。
A. 循环评测 (Circular Evaluation)
LLM 常见的一个毛病是 "Position Bias"(位置偏差),例如倾向于选 "A" 或选最后一个选项。
- 做法:将选项
(A, B, C, D)的内容轮转,例如变成(D, A, B, C),重组 Prompt 再次询问。 - 判定:只有当模型在所有轮转中都指向同一个内容时,才算 Pass。这会显著降低“蒙对”的概率。
B. 开放式答案提取 (Extraction Pipeline)
当模型输出一段长篇大论时,如何判断它对不对?
- Regex 瀑布流:先用复杂的正则表达式匹配
Answer: \d+或\boxed{...}。 - LLM-as-a-Judge:如果正则失败,将“标准答案”和“模型回答”丢给一个强 LLM(如 GPT-4),问它:“这两个答案在数学/语义上是否等价?”
- 例子:标准答案
0.5,模型回答1/2或50%。正则很难覆盖所有情况,但 LLM 裁判可以轻松搞定。
3. 本章小结
- 基准地位:MMMU 和 MathVista 是目前多模态理解的高地,测试的是“系统 2”(慢思考)能力。
- 不仅仅是视觉:这些基准的高分依赖于强大的 LLM 基座(提供知识与逻辑)与精细的视觉编码器(提供细节)的完美对齐。
- CoT 是关键:在推理类任务中,强制模型输出推理步骤(Chain-of-Thought)能显著提升准确率。
- 评测需谨慎:从长文本中提取答案的逻辑极其脆弱,评测脚本的质量直接影响分数的可靠性。
4. 练习题
基础题 (熟悉概念)
Q1: MMMU 中的题目来源主要是什么?这决定了它与 VQAv2 等日常数据集有什么本质区别?
点击查看提示与答案
- 提示:回想一下“教科书”和“街景照片”的区别。
- 答案:
- 来源:MMMU 主要来源于大学水平的考试题、教科书和专业测验。
- 区别:VQAv2 基于 COCO 等日常街景图片,考察的是常识感知(Common Sense Perception);MMMU 考察的是特定领域的专业知识(Domain-specific Knowledge)和逻辑推理。你不需要上大学就能回答 VQAv2,但可能需要专业学位才能回答 MMMU。
Q2: 在 MathVista 数据集中,为什么要强调 "Visually Essential"(视觉必要性)?
点击查看提示与答案
- 提示:如果我想测试你的视力,我能不能给你读这行字?
- 答案:
- 目的:为了防止“盲人摸象”。许多数学题(如简单的算术或定义题)仅通过文本就能解决。如果基准中包含大量此类题目,强大的纯文本 LLM 就能拿高分,从而无法真实评估多模态模型对图像的理解能力。"Visually Essential" 确保了只有真正看懂图(几何关系、图表趋势)才能做对。
Q3: 简述“循环评测 (Circular Evaluation)”的流程,并解释它为什么能降低分数?
点击查看提示与答案
- 提示:猜答案的概率。
- 答案:
- 流程:对于同一个选择题,多次改变选项的顺序(如 ABCD -> BCDA -> CDAB...),分别让模型作答。
- 降低分数原因:它消除了位置偏差(如模型总是喜欢选 A)和随机猜测的收益。模型必须在所有排列组合中都基于“内容”选出正确答案,一次蒙对不算对,必须次次对。这使得评测更加严格,分数通常低于简单的单次评测。
挑战题 (深入思考与实战)
Q4: [诊断分析] 模型在 MathVista 的几何题上表现不佳。经过 Case Study,你发现模型经常把“锐角”看成“直角”,或者忽略图中微小的辅助线。除了增加训练数据,从模型架构或预处理角度,你可以提出哪些改进建议?
点击查看提示与答案
- 提示:视觉编码器(Vision Encoder)的分辨率和特征丢失问题。
- 答案: 1. 提高输入分辨率:CLIP 等常见编码器默认 224x224 或 336x336,对于几何细节是不够的。可以采用 AnyRes / LLaVA-NeXT 的策略,将大图切片(Crop)编码后再拼接,保留局部高频细节。 2. 更换视觉底座:从 CLIP(语义强但细节弱)切换到或增加 DINOv2 或 SigLIP(通常对空间结构和细粒度特征更敏感)。 3. 引入坐标预任务:在微调阶段增加检测或分割任务,强制模型输出关键点的坐标,增强对空间位置的感知。
Q5: [协议设计] 你正在评测一个模型在 ScienceQA 上的 CoT 能力。你发现模型生成的推理过程(Explanation)逻辑是通顺的,但最终选错了选项(Answer)。反之,有时推理胡说八道,却选对了选项。 问题:你会如何设计一个综合评分指标(Metric)来更公正地评价模型?
点击查看提示与答案
- 提示:加权分数,或者惩罚机制。
- 答案:
- 策略:设计一个加权指标,例如 。
- 具体实施: 1. Consistency Check(一致性惩罚):如果推理得出的结论与最终选项不符,给予重罚(即使选项蒙对了)。 2. Explanation Evaluation:使用强模型(如 GPT-4)作为 Judge,对生成的解释进行 1-5 打分,重点看逻辑是否支持最终答案。 3. 最终判定:只有当“答案正确”且“解释逻辑正确且支持答案”时,才给予满分。这能有效剔除“虚假相关”和“幻觉”。
Q6: [数据合成] 你的团队想提升模型在 MMMU 上的表现,决定合成数据。如果利用 GPT-4V 生成数据,应该遵循什么样的 Pipeline 才能保证质量且防止模型只是在“模仿句式”?
点击查看提示与答案
- 提示:从 Text-to-Image 反向思考,或者利用 Code。
- 答案:
- Pipeline 建议: 1. Code-based Data Generation:对于科学/数学图表,不要用画图软件画,而是让 GPT-4 写 Python 代码(Matplotlib/TikZ)来生成图像。这样图像的内容(数值、标签)是 100% 可控且精确的(Ground Truth 已知)。 2. Reasoning-First Generation:先生成复杂的推理步骤和知识点,再根据这些知识点反向设计问题。 3. Hard Negative Mining:生成外观相似但物理意义完全不同的干扰图(例如改动电路图的一根线),强迫模型学会区分细微差别,而不是仅仅模仿 GPT-4V 的说话语气。
Q7: [开放性思考] 为什么在 MathVista 中,引入“Python 代码解释器”(Program-of-Thought)通常比直接输出文本答案(Chain-of-Thought)效果更好?这种方法有什么局限性?
点击查看提示与答案
- 提示:LLM 擅长逻辑还是算术?
- 答案:
- 优势:LLM(语言模型)本质上是概率模型,不擅长精确的浮点运算(Arithmetic Hallucination)。引入 Python 解释器后,模型只需要负责逻辑转化(把文字题目变成代码公式),计算过程交给 CPU,保证了计算的绝对准确。
- 局限性:
1. 无法解决感知问题:代码无法帮模型“看懂”图。如果模型一开始就把图里的数字
3看成了8,代码算得再对也是错的。 2. 非数值问题无效:对于概念性推理或定性分析(“趋势如何变化?”),代码解释器无能为力。
5. 常见陷阱与错误 (Gotchas)
1. 评估脚本的“格式地狱”
- 陷阱:模型输出了
\frac{1}{2},标准答案是0.5;或者模型输出了1,000(带千分位),标准答案是1000。简单的字符串==会判错。 - 调试技巧:
- 不要重新发明轮子,使用成熟的库(如 MathVista 官方提供的评估脚本)。
- 对于数值比较,必须将所有字符串转为 float,并在一定容差(tolerance,如 1e-6)下比较。
- 对于文本单位(kg, m/s),最好在 prompt 中强制模型输出纯数字,或在后处理中用正则剥离单位。
2. Prompt Engineering 的“过拟合”
- 陷阱:为了刷高分,针对 MMMU 专门写了一套极其复杂的 System Prompt,针对 MathVista 又写了另一套。
- 后果:模型变得不可用。在实际应用中,用户不会按照你的 Benchmark Prompt 来提问。
- Rule of Thumb:在报告分数的,最好提供 Zero-shot 和 Standard Few-shot 的结果。虽然特定 Prompt 能涨点,但泛化能力更重要。
3. “假性”推理能力 (Shortcut Learning)
- 陷阱:模型在训练集上看到了很多类似的题,记住了“这种图通常选 C”或者“看到这类波形就是心律不齐”,而没有真正理解原理。
- 检测:做 Adversarial Evaluation(对抗性评测)。手动修改图中的关键信息(例如把波形倒置,或者修改图表中的数值),看模型的回答是否随之改变。如果图变了答案没变,说明模型在“背题”或利用数据集偏差。
4. 忽略了 OCR 的错误级联
- 陷阱:一直在优化推理模块(CoT),但分数上不去。
- 原因:其实是第一步 OCR 就错了。比如化学键少看了一根,后面的推理逻辑再完美,结论也是错的。
- 调试:分步诊断。让模型先输出“我看到了什么(Image Caption/OCR)”,再输出“答案”。检查中间的 OCR 结果,通常 50% 的推理错误源于感知错误。