DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models


TL;DR

本文介绍了DeepSeekMath,一个通过在精心构建的120B数学语料上进行持续预训练,并采用一种名为GRPO的新型高效强化学习算法,从而将开源模型的数学推理能力推向接近GPT-4水平的7B语言模型。

关键定义

相关工作

当前,顶尖的语言模型如GPT-4和Gemini-Ultra在数学推理方面表现出色,但它们是闭源的,其技术细节和模型权重均未公开。与此同时,现有的开源模型在数学能力上与这些顶尖模型存在显著的性能差距,这构成了该领域的一个关键瓶颈。

本文旨在解决这一具体问题:缩小开源社区与最先进闭源模型在数学推理能力上的差距。通过构建一个更强大、公开可用的数学专用基础模型,推动相关领域的研究和应用。

本文方法

本文通过一个三阶段流程来构建和优化DeepSeekMath模型:大规模数学预训练、监督微调(SFT)和基于GRPO的强化学习(RL)。

阶段一:大规模数学预训练

DeepSeekMath语料库构建

为了获得高质量的数学预训练数据,本文设计了一个从Common Crawl (CC) 中挖掘数学网页的迭代式流程。

迭代式数据收集流程

  1. 初始阶段:使用一个高质量的数学文本集合OpenWebMath作为种子语料,训练一个fastText分类器,用于从海量CC数据中初步召回与数学相关的网页。
  2. 迭代优化:为了提升分类器的多样性和准确性,本文分析了初次召回的网页所属的域名,将数学内容占比较高的域名(如 \(mathoverflow.net\))识别出来。然后,通过人工标注这些域名下的特定URL模式,将更多未被召回的数学网页补充到种子语料中。
  3. 循环与终止:用扩充后的种子语料重新训练分类器,并进行下一轮数据挖掘。此过程重复四次,直到新召回的数据量趋于饱和(第四轮约98%的数据已在第三轮被收集)。最终构建了包含120B token的DeepSeekMath语料库。
  4. 数据去污染:为保证评估的公正性,严格过滤了语料库中与已知数学基准测试(如GSM8K, MATH)问题或答案匹配的n-gram片段。

DeepSeekMath-Base模型训练

训练的起点并非通用语言模型,而是代码预训练模型 \(DeepSeek-Coder-Base-v1.5 7B\)。本文发现,从代码模型开始训练,比从通用模型开始能获得更好的数学能力。

基础模型 \(DeepSeekMath-Base 7B\) 在一个混合数据集上持续训练了500B token,数据构成如下:

这种混合训练不仅提升了数学能力,还保持了强大的代码能力,并增强了模型的通用推理能力。

阶段二:监督微调 (SFT)

在预训练获得强大的 \(DeepSeekMath-Base\) 模型后,本文构建了一个包含776K样本的数学指令微调数据集对其进行SFT,产出 \(DeepSeekMath-Instruct 7B\) 模型。

该数据集覆盖了英汉双语的K-12数学问题,其特点是解题步骤格式多样,包括:

阶段三:强化学习 (RL)

为了进一步激发模型的潜力,本文提出了创新的GRPO算法,并用其训练得到最终的 \(DeepSeekMath-RL 7B\) 模型。

组相对策略优化 (GRPO)

PPO算法需要一个与策略模型大小相当的评论家模型来估计值函数,这带来了巨大的资源开销。GRPO通过以下方式解决了这个问题:

PPO与GRPO对比

\[\mathcal{J}_{GRPO}(\theta)=\mathbb{E}_{[q \sim P(Q),\{o_{i}\}_{i=1}^{G} \sim \pi_{\theta_{old}}(O \mid q)]} \frac{1}{G}\sum_{i=1}^{G}\frac{1}{ \mid o_{i} \mid }\sum_{t=1}^{ \mid o_{i} \mid }\left\{\min\left[\frac{\pi_{\theta}(o_{i,t} \mid q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t} \mid q,o_{i,<t})}\hat{A}_{i,t},\text{clip}\left(\frac{\pi_{\theta}(o_{i,t} \mid q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t} \mid q,o_{i,<t})},1-\varepsilon,1+\varepsilon\right)\hat{A}_{i,t}\right]-\beta\mathbb{D}_{KL}\left[\pi_{\theta} \mid \mid \pi_{ref}\right]\right\}\]

这种方法将优势函数的计算与比较数据的内在结构对齐,且因无需训练评论家模型而变得极为高效。

DeepSeekMath-RL模型训练

\(DeepSeekMath-RL\) 模型是在 \(DeepSeekMath-Instruct 7B\) 的基础上,仅使用SFT数据中与GSM8K和MATH相关的CoT格式问题进行GRPO训练得到的。这一受限的训练数据设置有助于检验RL阶段的泛化能力。

实验结论

本文通过在多个标准数学基准上的全面评估,验证了其方法在各个阶段的有效性。

预训练阶段的有效性

模型 大小 GSM8K MATH MMLU STEM CMATH
闭源基础模型          
Minerva 540B 58.8% 33.6% 63.9% -
开源基础模型          
Mistral 7B 40.3% 14.3% 51.1% 44.9%
Llemma 34B 54.0% 25.3% 52.9% 56.1%
DeepSeekMath-Base 7B 64.2% 36.2% 56.5% 71.7%

表1: DeepSeekMath-Base 7B与强力基础模型的性能对比

模型 大小 GSM8K+Python MATH+Python miniF2F-test
CodeLlama 34B 52.7% 23.5% 18.0%
Llemma 34B 64.6% 26.3% 21.3%
DeepSeekMath-Base 7B 66.9% 31.4% 24.6%

表2: 工具使用和形式化证明能力对比

SFT和RL阶段的有效性

\(DeepSeekMath-RL 7B\) (最终模型) 在所有开源模型中取得了最佳性能,并接近甚至超过了一些强大的闭源模型。

模型 大小 GSM8K (CoT) MATH (CoT) MGSM-zh (CoT) CMATH (CoT)
闭源模型          
Gemini Ultra - 94.4% 53.2% - -
GPT-4 - 92.0% 52.9% - 86.0%
GLM-4 - 87.6% 47.9% - -
开源模型          
InternLM2-Math 20B 82.6% 37.7% - -
Qwen 72B 78.9% 35.2% - -
MetaMath 70B 82.3% 26.6% 66.4% 70.9%
本文模型          
DeepSeekMath-Instruct (SFT) 7B 82.9% 46.8% 73.2% 84.6%
DeepSeekMath-RL (RL) 7B 88.2% 51.7% 79.6% 88.8%

表3: 最终模型与顶尖模型的思维链推理性能对比

最终结论:本文通过高质量的数据工程、巧妙的预训练策略以及高效的强化学习算法GRPO,成功地将一个7B参数量的开源模型在数学推理能力上提升到了业界顶尖水平,为开源社区提供了强大且可复现的数学基础模型。