这篇论文介绍了一种新方法,通过在数学代码的持续预训练中加入相应的推理步骤,来提高大型语言模型(LLMs)的数学推理能力。研究者们构建了一个高质量的数学持续预训练数据集,包括数学相关的网页数据、教科书、合成数据和使用数学包的代码。然后,他们从收集的数据集中提取LaTeX表达式及其条件和结果,生成相应的代码以准确捕捉数学推理过程。将生成的代码与每个推理步骤配对,形成了由自然语言推理步骤及其对应代码组成的数据。这些数据与原始数据集合并,形成了一个19.2B-token的高性能数学预训练语料库,命名为MathCode-Pile。使用这个语料库训练几种流行的基础模型,显著提高了它们的数学能力,从而创建了MathCoder2模型家族。所有数据处理和训练代码都是开源的,确保了整个数据收集和训练流程的透明度和可复制性。
研究背景以前的研究已经表明,对代码进行训练可以增强大型语言模型的数学推理能力。然而,先前研究中使用的代码主要针对工程、机器学习、信号处理或模块测试等领域,而不是直接关注数学推理。此外,这些代码通常缺乏相应的自然语言解释或上下文,这可能限制了模型的全面理解。
主要贡献提出了一种新颖而有效的方法,用于生成大量带有相应自然语言推理步骤的数学代码,显著提升了预训练结果。创建了MathCode-Pile,这是一个经过精心策划的19.2B-token数据集,用于持续的数学预训练。该数据集包括数学相关的网页数据、合成数据、教科书和模型翻译的数学代码。全面开源了所有数据处理和训练代码,确保了透明度和可复制性,以支持未来的研究。研究方法研究者们首先通过收集和筛选各种数学相关数据源来构建基础数据集,包括网页、模型生成的数据、数学相关代码和教科书。然后,他们提出了一种新方法,通过提取LaTeX表达式及其上下文,将提取的信息翻译成Python代码片段,执行生成的代码片段,并验证其正确性,来生成大量的配对数学推理步骤和相应的Python代码。
实验结果在五个代表性的数学基准数据集上,使用MathCode-Pile进行持续预训练的MathCoder2模型的性能得到了显著提升。例如,MathCoder2-Llama-3-8B在MATH和GSM8K数据集上分别达到了38.4%和69.9%的4-shot准确率,分别比仅在基础数据上训练的基线提高了3.1%和4.1%。
结论本文提出了一个有效的开源持续数学预训练流程,通过精心收集和筛选多样的数学相关文本,如数学网页内容、合成数据、使用数学包的代码和数学教科书,我们策划了一个基础数据集用于持续数学预训练。我们提出了一种新方法,从先前收集的数据集中提取数学推理步骤,并将其翻译成反映底层推理过程的代码片段。通过将基础数据与模型生成的数学代码及其相应的推理步骤结合起来,我们产生了一个19.2B-token的数学预训练语料库,名为MathCode-Pile,显著提高了四种不同基础模型在五个代表性数学基准上的性能。通过开源整个数据处理流程和模型训练代码,我们积极促进了研究社区内的透明度、可复制性和协作,为这一领域的未来研究提供了便利。
一句话总结这篇论文提出了一种新的方法来提高大型语言模型的数学推理能力,通过创建一个包含数学代码和相应推理步骤的大规模预训练数据集,并展示了这种方法在多个数学基准测试中的有效性。
论文链接https://arxiv.org/abs/2410.08196