📖标题:MathCoder2: Better Math Reasoning from Continued Pretraining on Model-translated Mathematical Code
🌐来源:arXiv, 2410.08196
摘要
🔸由于其精确性和准确性,代码已被证明在提高大型语言模型的数学推理能力方面是有效的。以前涉及持续数学预训练的工作通常包括利用数学相关包的代码,这些包主要是为工程、机器学习、信号处理或模块测试等领域设计的,而不是直接专注于数学推理。
🔸本文介绍了一种生成数学代码的新方法,并附有相应的推理步骤,用于连续预训练。我们的方法首先通过整合数学相关的网络数据、使用数学包的代码、数学教科书和合成数据来构建高质量的数学连续预训练数据集。接下来,我们通过从先前收集的数据集中提取LaTeX表达式、表达式所需的条件和表达式的结果来构建推理步骤。基于这些提取的信息,我们生成相应的代码来准确捕捉数学推理过程。将生成的代码附加到每个推理步骤,得到由成对的自然语言推理步骤及其相应代码组成的数据。将这些数据与原始数据集相结合,得到一个19.2字节的高性能数学预训练语料库,我们称之为MathCodePile。
🔸用这个语料库训练几个流行的基础模型可以显著提高他们的数学能力,从而创建MathCoder2系列模型。我们所有的数据处理和训练代码都是开源的,确保了整个数据收集和培训流程的完全透明和易于复制。代码发布于https://github.com/mathllm/MathCoder2。
🛎️文章简介
🔸研究问题:如何通过改进预训练数据集来提升大语言模型(LLM)在数学推理任务中的表现?
🔸主要贡献:论文提出了一种新方法,生成大量伴随自然语言推理步骤的数学代码,并构建了一个名为MathCode-Pile的预训练数据集,显著提升了基础模型在数学基准测试中的表现。
📝重点思路
🔺相关工作
🔸继续数学预训练:一些工作探索了LLM对数学数据的持续预训练,如数学网络内容、合成数据和代码,包括InternLM-Math、DeepSeekMath和Qwen2-Math等。
🔸综合数据:大量微调和预训练研究,探索了使用语言模型或预定义模板生成的合成数据的训练,如MathGLM和InternLM-Math使用模板生成合成数值运算数据。
🔸后训练:监督微调使用各种格式的数学问题和解决方案来调整预训练模型,如CoT、PoT和工具集成推理等,强化学习利用数学偏好数据来调整模型的输出。
🔺论文方案
🔸数据收集:收集了包括与数学相关的网络内容、合成数据、数学包代码和数学教科书,并仔细过滤以确保相关性和质量。
🔸过程提取:通过精心设计的提示,从预训练语料库中提取LaTeX表达式及其相关上下文,包括每个表达式的条件和计算结果。
🔸代码翻译:将这些推理步骤转换为Python代码片段,确保代码能够成功运行并产生预期结果。
🔸数据配对:将这些代码片段与相应的推理步骤配对,生成一个数学代码片段数据集,并结合基本数据生成一个预训练数据集MathCode-Pile。
🔎分析总结
🔸数学推理能力提升:通过在MathCode-Pile数据集上的预训练,显著提升了四个不同基础模型在五个代表性数学基准上的性能,表明该方法有效增强了LLM的数学推理能力。
🔸数据集质量:通过过滤过程,生成的数学代码片段及其对应的推理步骤质量高,显著丰富了原始预训练语料库。
🔸代码帮助:通过消融研究,显示添加数学代码显著增强了模型的微调性能。
💡个人观点
论文的核心是提供了一套构建数学推理中间过程的方法论,并证明训练的有效性。
附录