本文来自南京大学计算机学院软件研究所,聚焦于开放环境下的智能软件新技术研究,定位国际学术前沿,面向国家关键需求,承担了一系列国家科技部和基金委重大/重点科研项目。团队拥有包括中科院院士等多名国家级人才,重点关注软件和智能方向,研究成果发表于NeurIPS/ICLR/SOSP/ATC/EuroSys/OOPSLA/PLDI/ICSE/FSE等国际顶级会议,其中多篇文章获得相应会议的最佳论文奖。
大型语言模型 (LLM) 在各种自然语言处理和推理任务中表现出卓越的能力,某些应用场景甚至超越了人类的表现。然而,这类模型在最基础的算术问题的表现上却不尽如人意。当遇到算术问题时,LLM 通常依赖记住特定的表达式及其对应结果的方式输出算术问题的结果。通过简单的实验发现,LLM 只在语言层面表达了对算术运算的逻辑理解,但并没有运用计算逻辑解决算术问题,这对 LLM 在相关领域中的应用造成了重大障碍,同时影响了其推广到新场景的能力。
为了解决这个问题,来自南京大学的研究者提出了一种面向 LLM 的可组装算术执行框架 (CAEF),使 LLM 能够通过模仿图灵机的方式来执行算术,从而理解计算逻辑。此外,CAEF 具有高度的可扩展性,允许组合已经学习到的运算符,以降低复杂运算符的学习难度。评估表明,LlaMA 3.1-8B 模型配合 CAEF 可在 7 种经典数学算术运算的测试中实现了近乎 100% 的准确率,且能够支撑 100 位操作数的计算,而同等难度下, GPT-4o 在一些算术问题测试中无法正确给出计算结果。
该工作的贡献主要有以下部分:
LLM 面对数学问题:当前研究主要集中如何在提高 LLM 面对数学任务的解题性能,通常引入外部工具来辅助 LLM 解决计算部分的内容。一类常见的外部工具为计算器,如 Schick et al. (2024) [1] ,该工作引入了一种自监督学习方法,模型在该方法中学习何时通过 API 访问调用外部工具,类似的策略可以在 Gou et al. (2023) [2] 和 He-Yueya et al. (2023) [3] 中也能找到。另一类工具是编程语言解释器,例如 Python,LLM 生成用于解决数学问题的代码,再交由外部解释器执行代码以获得最终的结果。一个典型的例子是 Lu et al. (2024) [4] ,它将 LLM 视为生成代码并将其提交给外部 Python 执行程序以处理表格上下文中的数学问题。Wang et al. (2023) [5] 采用监督学习的方式让 LLM 学习如何通过构建用于解决数学问题的程序,而 Zhou et al. (2023) [6] 提出了一种零样本提示方法,以实现代码驱动的自我验证,从而提高数学解题性能。
LLM 面对算术问题:当前也有一些专注于 LLM 算术方面的研究。这些研究的共同目标是尝试教会 LLM 计算逻辑,并通过分步计算的方法拆解计算过程,以提高计算准确性。在这些研究中,Nye et al. (2021) [7] 是一项早期且影响深远的 方法。它在算术领域引入了类似思维链 (CoT) 的思想拆分计算过程,让语言模型把计算的中间步骤输出到一个被称为 “scratchpad” 的缓冲区,显著提高了 LLM 整数加法的性能。Hu et al. (2024) [8] 观察到 transformers 倾向于使用 “基于记忆样例的推理” 来处理算术问题,并提出了一种遵循规则的微调技术,指导模型逐步执行计算。Zhou et al. (2024) [9] 结合了四种技术(FIRE 位置编码、随机位置编码、反向格式(R2L 格式)和索引提示)开发了一种新模型,该模型在两个整数加法问题上实现了 2.5× 的长度泛化能力。
Step 1 (aligner):
45+67=
Step 2 (executor):
state0: ADD, q0, [HEAD1] |5|4 [HEAD2] |7|6 [C] [OUTPUT]
command0: CMD: [C] 0, [HEAD1] RIGHT, [HEAD2] RIGHT, q1
Step 3 (executor):
state1: ADD, q1, [HEAD1]|5|4 [HEAD2]|7|6 [C] 0 [OUTPUT]
command1: CMD: [C] 1, [OUTPUT] 2, [OUTPUT] RIGHT, [HEAD1] RIGHT, [HEAD2] RIGHT, q1
Step 4 (executor):
state2: ADD, q1, |5 [HEAD1]|4 |7 [HEAD2]|6 [C] 1 |2 [OUTPUT]
command2: CMD: [C] 1, [OUTPUT] 1, [OUTPUT] RIGHT, [HEAD1] RIGHT, [HEAD2] RIGHT, q1
Step 5 (executor):
state3: ADD, q1, |5|4 [HEAD1] |7|6 [HEAD2] [C] 1 |2|1 [OUTPUT]
command3: CMD: [OUTPUT] 1, [OUTPUT], [C], qH
Step 6 (executor):
state4: ADD, qH, |5|4 [HEAD1] |7|6 [HEAD2] [C] 1 |2|1|1
command4: No command to execute. Halt state.
Step 7 (aligner):
45+67=112
Executor composer:以乘法为例,文章介绍 executor composer 的设计过程。乘法可以可以通过加法和小于两个操作符实现。以形式 a×b=c 为例,一种简单的乘法实现可以大致视为循环结构。在循环中使用两个累加器:在每次循环中,一个累加器自增 1,另一个累加器在每次循环中累加 a。当第一个累加器达到 b 时,循环结束,第二个累加器的值即为结果 c。在该过程中,累加器通过现有的加法操作符实现,循环终止条件由小于操作符实现,而乘法自身不参与实际运算,仅驱动该流程的执行。基于该思路,可以构建乘法的抽象执行流程,如图 3 左侧的自动机图所示。以 “89×2=” 这个问题为例,图 3 的右侧展示了 executor 的完整执行流程。
图 3. 89×2 执行过程
通过上述设计,CAEF 赋予了 LLM 执行计算的能力,executor composer 的存在还使得该方法具有很高的扩展性,能够有效处理复杂计算。
该工作评估了不同运算符、不同位数情况下的算术准确率。实验使用 LLaMA 3.1-8B 预训练模型作为基础模型,在 +、−、×、÷、==、> 和 < 这 7 个运算符上和三个基准进行了比较:1)LLaMA 3.1-8B 预训练模型基于 LoRA、在仅给出计算结果的数据集上直接微调得到的模型、2)LLaMA 3.1-8B-Instruct、3)GPT-4o。
表 1. 七种运算符的总体评估结果,“LLaMA 3.1 (L)” 代表 LoRA 微调后的 LLaMA 3.1-8B,“LLaMA 3.1 (I)” 代表 LLaMA 3.1-8B-Instruct 模型
表 1 展示了 7 个运算符的 CAEF 方法和基准的评估结果。与基准相比,CAEF 在不同运算符、不同长度的操作数的设置下表现相对稳定,准确率高。特别是对于长数字的任务,例如 100 位加法,通过 CAEF 指导的 LLM 可以有效地学习到计算逻辑。
为了进一步探索 executor 和 aligner 在计算过程中的实际性能,该工作在同一数据集上分别进行了评估。如表 2 所示,可以观察到,即使 executor 必须以迭代方式反复生成中间计算步骤,而 aligner 只执行两个转换步骤,但 executor 的整体性能仍然优于 aligner。executor 在所有实验设置中都达到了 99% 以上的准确率,说明当提供正确的初始状态和命令时,它在绝大多数情况下都能有效工作。另一方面,在大多数情况下,与转换 executor 的输出相比,aligner 在转换原始输入时表现出较低的精度,这表明整个计算过程的瓶颈在于操作数的翻转,而不是计算本身。
表 2. 七种运算符的 executor 和 aligner 准确率,executor 的准确率统计的是从初始状态到最后一步中,每一步都正确、最终计算正确的情况。aligner 的精度分为两部分:从原始输入到 executor 表示的转换,记为 aligner (I),以及从 executor 表示到输出的转换,记为 aligner (O)。
参考文献:
[1] Timo Schick, Jane Dwivedi-Yu, Roberto Dess`ı, Roberta Raileanu, Maria Lomeli, Eric Hambro, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom. Toolformer: Language models can teach themselves to use tools. Advances in Neural Information Processing Systems, 36, 2024.
[2] Zhibin Gou, Zhihong Shao, Yeyun Gong, Yujiu Yang, Minlie Huang, Nan Duan, Weizhu Chen, et al. Tora: A tool-integrated reasoning agent for mathematical problem solving. arXiv preprint arXiv:2309.17452, 2023.
[3] Joy He-Yueya, Gabriel Poesia, Rose E Wang, and Noah D Goodman. Solving math word problems by combining language models with symbolic solvers. arXiv preprint arXiv:2304.09102, 2023.
[4] Pan Lu, Baolin Peng, Hao Cheng, Michel Galley, Kai-Wei Chang, Ying Nian Wu, Song-Chun Zhu, and Jianfeng Gao. Chameleon: Plug-and-play compositional reasoning with large language models. Advances in Neural Information Processing Systems, 36, 2024.
[5] Ke Wang, Houxing Ren, Aojun Zhou, Zimu Lu, Sichun Luo, Weikang Shi, Renrui Zhang, Linqi Song, Mingjie Zhan, and Hongsheng Li. Mathcoder: Seamless code integration in llms for enhanced mathematical reasoning. arXiv preprint arXiv:2310.03731, 2023.
[6] Aojun Zhou, Ke Wang, Zimu Lu, Weikang Shi, Sichun Luo, Zipeng Qin, Shaoqing Lu, Anya Jia, Linqi Song, Mingjie Zhan, et al. Solving challenging math word problems using gpt-4 code interpreter with code-based self-verification. arXiv preprint arXiv:2308.07921, 2023.
[7] Maxwell Nye, Anders Johan Andreassen, Guy Gur-Ari, Henryk Michalewski, Jacob Austin, David Bieber, David Dohan, Aitor Lewkowycz, Maarten Bosma, David Luan, et al. Show your work: Scratchpads for intermediate computation with language models. arXiv preprint arXiv:2112.00114, 2021.
[8] Yi Hu, Xiaojuan Tang, Haotong Yang, and Muhan Zhang. Case-based or rule-based: How do transformers do the math? arXiv preprint arXiv:2402.17709, 2024.
[9] Yongchao Zhou, Uri Alon, Xinyun Chen, Xuezhi Wang, Rishabh Agarwal, and Denny Zhou. Transformers can achieve length generalization but not robustly. arXiv preprint arXiv:2402.09371, 2024.
文章来自于微信公众号 “机器之心”
【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。
项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file
本地安装:https://www.deepbi.com/
【开源免费】airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。
项目地址:https://github.com/hitsz-ids/airda
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【免费】ffa.chat是一个完全免费的GPT-4o镜像站点,无需魔法付费,即可无限制使用GPT-4o等多个海外模型产品。
在线使用:https://ffa.chat/
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner