大语言模型(LLM)在NLP领域的各类下游任务展现出卓越的性能。尤其是先驱大模型如GPT-4和ChatGPT已经在大量文本数据上训练过,使得其具备强大的文本理解和生成能力。然而,尽管GPT-4在各类NLP任务上表现出令人瞩目的能力,但其在数学推理方面却未能表现出相同程度的能力。
一个常见的误解便是 大语言模型并不能精确执行高位数的算数运算,尤其是涉及超过8位数字乘法的运算以及涉及小数、分数的运算 。此外,目前 大语言模型对中文数学问题的解决能力尚未得到充分探索,一个关键性的问题便是大语言模型能解决什么难度的中文数学问题。
基于以上的研究动机,我们提出了一个新的数学模型——MathGLM。
论文链接:https://arxiv.org/abs/2309.03241
Github链接:https://github.com/THUDM/MathGLM
模型下载:https://modelscope.cn/models/ZhipuAI/MathGLM
研究表明:在训练数据充足的情况下, 20亿参数的MathGLM模型能够准确地执行多位算术运算,准确率几乎可以达到100% ,其结果显著超越最强大语言模型GPT-4在相同测试数据上18.84%的准确率。以GLM-10B为基座模型训练得到的MathGLM-10B模型在5000条中文数学的测试数据上实现了接近GPT-4的性能。
图1是MathGLM在算术任务上和GPT-4、ChatGPT的性能对比图。
方法
为了探究大模型在数学推理方面的能力,本文提出了MathGLM模型,旨在增强大模型在数学推理上的性能。
MathGLM模型的主要关注点包括:
1)精确计算算术运算(基础算术运算和复杂混合运算);
2)提升模型的中文数学解决能力。
就算术任务而言,基础算术运算任务是围绕两个数的简单计算。复杂混合运算则是涉及不同算术运算符号(+,-,*,/,^)和不同数字格式(整数、小数、分数、百分数、负数)的带括号组合。
表1展示了MathGLM在算术运算任务的分类。
算术任务
为了增强 MathGLM 的算术能力,本文采用了Transformer的decoder架构,并使用自回归目标(autoregressive objective)在生成的算术数据集上从头训练(from scratch)。
训练数据
算术训练数据集是精心设计的,包含了各类算术任务。该数据集包括了各种运算符,如加法、减法、乘法、除法和求幂等多种运算。
此外,它还包含多种数字格式,例如整数、小数、百分比、分数和负数。为符合人类计算习惯,该数据集采用分步计算策略来进行构建,并且单个算术表达式由 2 到 10 个运算步骤组成。
图3展示了一些从算术数据集中提取的训练示例。
模型和训练
MathGLM包含了一系列训练模型,表2概述了4种不同参数规模的MathGLM模型。最大模型拥有20亿的模型参数量,其具备最强的算术运算能力,其余参数量分别为 500M 、100M 以及最小的 10M 参数模型。
数学应用问题
除了算术任务外,本文还训练(微调)了一系列以GLM为训练基座的,用于解决数学应用题的MathGLM。
训练过程使用了公开的Ape210K 数据集,该数据集包含 21 万道中文小学数学题。该数据集的一个缺点便是每个题的答案都是直接计算得出的,缺乏相应的计算过程。
为了提高 MathGLM 在数学应用题上的性能, 本文采用分步策略来重建 Ape210K 数据集 ,将原始的直接计算得到答案转换为逐步计算每个数学问题答案。
图 4 展示了原始 Ape210K 数据集和重建的Ape210K数据集之间的对比。
本文采用 GLM 的不同变体作为骨干来训练 MathGLM,包括具有 335M 参数的 GLM-large、GLM-6B、GLM2-6B 和 GLM-10B。
此外,本文还使用 ChatGLM-6B 和 ChatGLM2-6B 作为基座模型来训练 MathGLM。这些骨干模型赋予 MathGLM 基本的语言理解能力,使其能够有效理解数学应用题中包含的语言信息。
实验
为了验证MathGLM的有效性,本文设计了两类的实验:算术任务和数学应用题。
对于算术任务,本文预训练了一系列不同模型参数的MathGLM 模型,并在包含9,592条测试数据集上对比了其与引领性的大语言模型GPT-4 和 ChatGPT的性能。
实验结果如表3所示,MathGLM显著优于所有其他模型,表明 MathGLM 在处理算术任务上的卓越性能。
通过比较不同参数规模的MathGLM,研究表明 MathGLM的算术性能与其参数数量密切相关,随着模型参数规模的增加,性能呈现出相应的增强趋势。
例如,MathGLM-10M实现了61.21%的准确率而MathGLM-2B则实现了93.03%的准确率。
尽管性能受到参数数量的影响, 拥有10M参数的MathGLM-10M也在复杂的算术任务中实现了优于 GPT-4 和 ChatGPT的性能 。
此外,研究表明 分步计算策略有助于MathGLM理解和学习潜在的计算逻辑和规则 。
图7展示了分步计算策略对MathGLM性能的影响。结果表明采用分步计算策略可以使得MathGLM-2B的性能从40.76%提升至93.03%,这充分表明分步计算策略在学习复杂算术运算时的重要性。
对于数学应用问题任务,本文训练了一系列基于GLM的MathGLM模型,并在Ape210K的测试数据集上进行了测评。
表8展示了系列MathGLM模型、 GPT-4、ChatGPT的实验测评结果。结果表明,以GLM-10B为骨干的MathGLM 在答案准确性方面实现了与最先进的 GPT-4 模型接近的性能。
为了评估MathGLM模型解决在不同年级数学问题上的能力,本文在收集到的K6数据集上测评了几种不同模型的性能,包括GPT-4、ChatGPT、Chinese-Alpaca-13B、MOSS-16B、Ziya-LLaMA-13B、Baichuan-7B、ChatGLM-6B、ChatGLM2-6B 和 MathGLM-GLM-10B,结果如下图 8 所示。
研究表明 随着年级的增加,LLM解决数学问题的能力呈现下降趋势,这表明高难度的问题要求LLM具备更强的数学概念理解能力 。相比于其他的中文模型,MathGLM在K6数据集上呈现出更强的数学推理能力。
为了探究step-by-step策略对MathGLM性能的影响,本文开展了一些列消融实验。图9展现了基于不同的GLM及其Chat版本的MathGLM的性能对比。
研究表明该策略 可以使得MathGLM更加关注和捕捉基础的数学规则 ,以提升数学推理能力。例如在以GLM-10B为基座的MathGLM上,性能提升了42.29%。
为了进一步分析MathGLM在解决数学应用题上的缺陷,本文展示了MathGLM在解决数学应用题上的错误类型的分布情况。如图12所示,为未来进一步提升数学应用题的性能提供了可能突破的思路。