引言

像 GPT-4 和 LLaMA 这样的大型语言模型 (LLMs) 彻底改变了我们与信息交互的方式。它们可以写诗、总结邮件,甚至生成代码。然而,当你把一个复杂的科学问题抛给它们时——比如利用马吕斯定律 (Malus’s law) 计算偏振光的强度,或者解化学反应的微分方程——它们往往会束手无策。

问题并不一定在于这些模型“笨”,而在于科学推理需要两种截然不同的能力:

  1. 领域知识: 了解特定的定律、常数和理论。
  2. 数学精度: 在不产生数字幻觉的情况下进行严谨的计算。

传统上,研究人员试图通过向模型“填鸭式”灌输更多数据来解决这个问题——先是在物理教科书上微调,然后在化学论文上微调,接着是财务报告。但这种方法既昂贵又不可扩展。你无法针对每一个可能的科学领域都对模型进行微调,而且即使你这么做了,LLM 在计算方面也是出了名的糟糕。

在这篇文章中,我们将深入探讨一篇提出不同方法的论文: SCIAGENT 。 研究人员没有试图创造一个全知全能的问题解决者,而是构建了一个熟练的工具使用者 。 就像人类科学家使用 Python 或 WolframAlpha 来解决复杂问题一样,SCIAGENT 教会 LLM 识别问题、找到合适的软件工具 (Python 函数) ,并使用它来获得正确答案。

范式转变: 从解题者到工具使用者

要理解 SCIAGENT 的重要性,我们首先需要看看目前是如何处理科学推理的,以及它与新提出的方法有何不同。

在标准方法中 (如下图左侧所示) ,我们为特定领域 (如数学或物理) 收集大量数据并对 LLM 进行微调。这创造了一个“数学模型”或“物理模型”。如果你想切换到生物学,你必须从头再来。

图 1: 科学推理的两种范式。不同颜色代表不同的科学领域。左图: 逐个领域收集标注并微调 LLM。右图: 我们要提出的工具增强设置。LLM 在数学相关的、工具增强的样本 (红色部分) 上进行微调。当使 LLM 适应特定领域时,只需附加一个可插拔的特定领域工具集。无需进一步的额外微调。

SCIAGENT 方法 (右图) 更加模块化。研究人员主要在数学 (这是大多数科学的基础) 和工具使用上训练 LLM。其核心思想是教给模型一种通用技能: 如何检索和执行函数。

当模型面对物理问题时,你只需附加一个“物理工具集” (一个 Python 函数库) 。当它面对金融问题时,你将其换成“金融工具集”。模型本身不需要改变;它只是拿起了不同的工具箱。

SCIAGENT 架构

那么,SCIAGENT 实际上是如何解决问题的呢?研究人员设计了一个模仿人类推理的四阶段流水线。它不仅仅是脱口而出一个答案;它会进行规划和执行。

图 3: SCIAGENT 的模型架构。给定一个特定领域的工具集,我们的智能体通过四个连续的模块回答问题。(1) 规划: 为该问题提供高层规划。(2) 检索: 从附加的工具集中检索相关函数。(3) 行动: 生成交织着推理过程和程序的低层解决方案。如有必要,程序会使用检索到的函数。(4) 执行: 调用 Python 执行器运行程序并输出最终答案。

以下是图 3 所示工作流程的详细分类:

  1. 规划 (Planning, \(\mathcal{M}_{planning}\)) : 在编写任何代码之前,模型会分析问题并生成一个高层计划。对于一个关于光强的物理问题,计划可能是: “应用马吕斯定律两次,第一次针对第一个偏振片,然后针对第二个。” 这一步至关重要,因为它指导了对正确工具的搜索。

  2. 检索 (Retrieval, \(\mathcal{M}_{retrieval}\)) : 模型获取问题和计划,然后在可用工具库 (Python 函数) 中进行搜索。它会检索最相关的工具。在我们的例子中,它找到了 malus_law_intensity

  3. 行动 (Action, \(\mathcal{M}_{action}\)) : 现在模型开始生成解决方案。它编写混合了自然语言 (推理) 和可执行 Python 代码的内容。关键在于,它将检索到的工具插入到代码中。它不是试图在“脑子”里做乘法 (这是 LLM 不擅长的) ,而是简单地写下 I2 = malus_law_intensity(I1, theta)

  4. 执行 (Execution) : 生成的代码通过 Python 执行器运行。代码的输出即为最终答案。

动力来源: 构建 MATHFUNC 语料库

架构听起来很棒,但我们要从哪里获取训练数据呢?并不存在大规模的“科学问题与 Python 函数及规划步骤配对”的数据集。

为了解决这个问题,研究人员创建了 MATHFUNC , 这是一个包含超过 30,000 个训练样本的语料库。他们使用了一个包含 GPT-4 的巧妙自动化流水线来合成这些数据。

图 2: MATHFUNC 构建的自动流水线。请从左下角开始顺时针查看。为了更通用的标注,我们将工具集 (虚线) 和函数增强样本 (实线) 的构建分离开来。为简洁起见,我们未展示无函数样本。

构建过程 (图 2) 是一个循环:

  1. 输入: 获取一个标准的数学问题 (来自 MATH 数据集) 。
  2. 规划与工具创建: 要求 GPT-4 生成一个计划和一个可以解决此特定问题的 Python 函数。
  3. 修正: 如果代码无法运行,使用错误信息提示 GPT-4 进行修复 (自我修正) 。
  4. “交叉检索”技巧: 这是论文中最精彩的部分。 如果你只是用针对该特定问题创建的函数来训练模型,模型实际上是在“作弊”——它学会了使用一个为它所见的问题完美定制的工具。它并没有学会搜索

为了解决这个问题,研究人员将工具集构建与解决方案生成分离开来。他们构建了一个包含所有生成函数的庞大库 (\(F\)) 。然后,对于给定的问题 \(q\),他们从库中移除专门为 \(q\) 创建的函数,并强制模型从其他问题中检索一个相似的函数。

这迫使模型学习如何将现有工具调整后用于新问题——这是现实世界科学推理中必不可少的一项技能。

测试: SCITOOLBENCH

为了评估 SCIAGENT,现有的基准测试是不够的。大多数基准测试只要求一个答案,而不是基于代码和工具的解决方案。作者介绍了 SCITOOLBENCH , 涵盖五个领域: 数学、物理、化学、金融和 EECS (电子工程与计算机科学) 。

该基准测试包含 856 个问题,关键是,还有一个包含 2,446 个 Python 函数的库。

质量重于数量

研究人员确保了工具的高质量和“可组合性”,这意味着它们可以用于多个不同的问题,而不仅仅是一个特定的边缘情况。

图 4: 左图: FPQ (每题函数数) 直方图。数值越高表示可组合性越强。右图: 函数出现频率直方图。数值越高表示通用性越强,应用越广泛。

如图 4 所示,许多函数适用于多个问题 (右侧直方图显示出现次数 \(>1\) 的函数) 。这证明了工具集是通用的。

半自动标注

创建这个基准测试需要一个涉及人类和 AI 的严格流程。

图 5: SCITOOLBENCH 的半自动标注流水线。涉及 GPT-4 和人工标注员。

该流程 (图 5) 包括:

  1. 正样本函数构建: GPT-4 根据问题建议函数。人工标注员对其进行审核,以确保它们不是“捷径” (例如,直接打印答案的函数) 。
  2. 负样本函数构建: 为了增加测试难度,研究人员添加了“干扰项”函数。对于每一个正确的工具 (例如 angular_from_frequency) ,他们生成了相似但不正确或不相关的工具。这迫使 LLM 真正理解工具的作用,而不是仅仅根据关键词进行猜测。

实验与结果

研究人员使用他们的 MATHFUNC 语料库微调了开源模型 (CodeLlama、Mistral 和 DeepSeek-Math) ,创建了 SCIAGENT 系列。他们将这些模型与标准模型甚至 ChatGPT 进行了比较。

结果令人印象深刻。

表 2: 两个基准测试的主要结果。我们用蓝色高亮显示了我们的 SCIAGENT 系列。最好结果 (在所有开源 LLM 中,下同) 以粗体显示,次好结果以此画线显示。

查看表 2,我们可以得出几个主要结论:

  1. 工具有助于所有模型: 几乎每个模型在获得工具集访问权限 (标有对勾 \(\checkmark\)) 时,表现都优于没有工具 (X) 的情况。
  2. SCIAGENT 占据主导地位: 微调后的 SCIAGENT 模型 (底部几行) 大幅优于其基础模型。例如, SCIAGENT-MISTRAL-7B 达到了 34.1% 的准确率,而带有工具的标准 Mistral-7B 仅达到 15.6%
  3. 击败 ChatGPT: 最强的模型 SCIAGENT-DEEPMATH-7B 得分为 46.3% , 显著优于同任务下的 ChatGPT (35.4%) 。它甚至接近了 GPT-4 (49.5%) 的表现,后者是一个庞大得多的专有模型。

模型真的在使用工具吗?

有人可能会问: 模型是真的在使用 Python 函数来解决问题,还是仅仅变得更擅长猜测了?

图 7: SCIAGENT-CODER (带工具集) 和 MAmmoTH-Coder (无工具集) 在 (1) 使用和 (2) 不使用检索函数样本上的表现。

图 7 给出了答案。蓝色柱状图代表 SCIAGENT。

  • “Use funcs” (使用函数) : 当模型在代码中显式调用检索到的函数时,其准确率飙升至 40% 以上。
  • “Not use funcs” (不使用函数) : 即使模型没有直接调用函数,它的表现仍然优于基线 (MAmmoTH-Coder) 。这表明,仅仅看到检索到的函数就能帮助模型更好地理解问题,也许是因为它将函数定义视为提示或公式表。

检索准确率的重要性

研究人员还分析了模型对“检索”步骤的敏感度。如果检索器找到了错误的工具,模型还能解决问题吗?

图 6: 上图: SCIAGENT-CODER 在 SCITOOLBENCH 上使用不同检索器变体的表现。下图: 性能与检索函数命中率 (人工控制) 之间的关系。

图 6 (下图) 显示了直接的线性关系。随着“命中率 (Hit Rate) ” (找到正确工具的百分比) 增加,模型的准确率也随之增加。这凸显了检索是瓶颈 。 即使拥有完美的模型,如果在库中找不到正确的公式,也无法解决问题。

结论与启示

SCIAGENT 论文为 AI 在科学领域的未来提出了令人信服的论点。我们不应该构建越来越大的模型来死记硬背物理、化学和工程学中的每一个公式,而应该构建成为专家级工具使用者的模型。

通过将“推理引擎” (LLM) 与“知识库” (工具集) 分离,我们获得了几个优势:

  1. 适应性: 我们只需更换工具集即可解决新领域 (如生物学或地质学) 的问题,而无需重新训练模型。
  2. 准确性: 使用 Python 函数进行计算消除了 LLM 中常见的算术错误。
  3. 可扩展性: 为新的科学发现编写一个 Python 函数比重新训练基础模型要容易得多。

SCIAGENT 证明,一个相对较小的 7B 参数模型,如果经过适当的工具使用训练,完全可以“以小博大”,在专业的科学任务中胜过像 ChatGPT 这样的通用聊天机器人。展望未来,推理智能体与专用软件库的结合,似乎是通向真正能充当科学家助手的 AI 最有希望的路径。