Chapter 5:多学科与多步推理基准 (MMMU / MathVista 等)

1. 开篇段落

在多模态大模型(MLLM)的发展历程中,如果说识别物体(Object Detection)和简短问答(VQA)是模型的“眼睛”,那么本章讨论的多学科与多步推理基准则是模型的“大脑前额叶”。

随着 GPT-4V、Gemini 1.5 Pro 等模型的出现,评测的重点已从简单的“图里有什么”转向了“图意味着什么”以及“如何利用图里的信息解决复杂问题”。本章将涵盖 MMMUMathVistaScienceQA 以及 A-OKVQA 等高阶基准。这些基准通常具有知识密集(Knowledge-Intensive)逻辑密集(Logic-Intensive)的双重特征,是区分“玩具模型”与“生产力工具”的分水岭。

本章学习目标

  1. 全景理解:深入剖析 MMMU 和 MathVista 等基准的数据构成与难度分级。
  2. 核心机制:掌握思维链(Chain-of-Thought, CoT)在视觉推理评测中的决定性作用。
  3. 诊断能力:学会区分感知错误、知识幻觉与推理断裂,并掌握相应的调试方法。
  4. 评测实战:熟悉针对开放式数理问题的答案提取(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)

在训练或微调模型以应对这些基准时,以下策略已被证明有效:

  1. 数据混合 (Data Mixture): * 不能只喂图文对(Caption)。必须混合纯文本的数学/代码数据(提升逻辑)和图文交织的教科书数据(提升对齐)。

  2. 思维链微调 (CoT Fine-tuning): * 数据格式不应是 Q -> A,而应是 Q -> R (Rationale/Reasoning) -> A。让模型学会“先想后答”。

  3. 高分辨率 (High-Res): * MathVista 和 MMMU 中的很多图表包含密集的小字或精细的刻度。支持动态分辨率(AnyRes)或切片策略(Tile/Crop)是刷榜必备。

  4. 工具增强 (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/250%。正则很难覆盖所有情况,但 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(语义强但细节弱)切换到或增加 DINOv2SigLIP(通常对空间结构和细粒度特征更敏感)。 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-shotStandard Few-shot 的结果。虽然特定 Prompt 能涨点,但泛化能力更重要。

3. “假性”推理能力 (Shortcut Learning)

  • 陷阱:模型在训练集上看到了很多类似的题,记住了“这种图通常选 C”或者“看到这类波形就是心律不齐”,而没有真正理解原理。
  • 检测:做 Adversarial Evaluation(对抗性评测)。手动修改图中的关键信息(例如把波形倒置,或者修改图表中的数值),看模型的回答是否随之改变。如果图变了答案没变,说明模型在“背题”或利用数据集偏差。

4. 忽略了 OCR 的错误级联

  • 陷阱:一直在优化推理模块(CoT),但分数上不去。
  • 原因:其实是第一步 OCR 就错了。比如化学键少看了一根,后面的推理逻辑再完美,结论也是错的。
  • 调试分步诊断。让模型先输出“我看到了什么(Image Caption/OCR)”,再输出“答案”。检查中间的 OCR 结果,通常 50% 的推理错误源于感知错误。