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

发表时间: 2024-02 · arXiv:2402.03300

原文: https://arxiv.org/abs/2402.03300

文章标题:DeepSeekMath: 推动开放语言模型中数学推理的极限
作者/机构:Zhihong Shao, Peiyi Wang, Qihao Zhu, Runxin Xu, Junxiao Song, Xiao Bi, Haowei Zhang, Mingchuan Zhang, Y.K. Li, Y. Wu, Daya Guo; 来自 DeepSeek-AI, 清华大学, 北京大学


速读

一句话结论 本文通过构建1200亿 tokens 的高质量数学语料库并提出无需评论家模型的 GRPO 强化学习算法,训练出了 DeepSeekMath 7B 模型,在数学推理任务上以小模型尺寸达到了与 540B 闭源模型相媲美的顶尖性能。

要解决什么问题 原有的大语言模型在提升数学推理能力时主要面临两个层面的卡点。在预训练阶段,高质量数学数据的规模和来源严重受限,以往模型高度依赖 arXiv 论文,但这类数据规模容易见顶,且对基础数学解题能力的实际提升并不明显。在强化学习微调阶段,主流的近端策略优化算法 PPO 存在严重的显存和计算资源瓶颈。PPO 在训练策略模型时,必须同时训练一个与策略模型参数量相当的价值函数(评论家模型)来估计基线以减少方差,导致显存消耗翻倍。此外,在语言模型生成任务中,通常只有序列末尾的最后一个 token 会被赋予分数,这种极其稀疏的奖励信号使得训练一个能在每个 token 上都给出准确价值预测的评论家模型变得异常困难且低效,严重拖慢了强化学习的迭代效率。

怎么做的 为了绕开上述卡点,本文在数据构建和强化学习算法上进行了核心设计。在数据层面,核心思路是通过迭代式的分类器从海量网页中挖掘高质量数学文本。方法从高质量网页集合 OpenWebMath 作为种子语料库出发,训练 fastText 分类器去 Common Crawl 中召回相似网页。为解决正样本多样性不足,设计了基于域名的迭代扩充机制:将高比例召回的域名标记为数学相关域,人工标注未被召回的 URL 加入种子库重新训练。经过四轮迭代,构建了包含1200亿 tokens 的 DeepSeekMath 语料库。在强化学习层面,提出了组相对策略优化算法 GRPO,核心思路是摒弃 PPO 中极耗资源的价值模型,通过对同个问题采样多个输出,利用组内相对得分估计基线。关键设计包含两种优势计算方式。对于结果监督,GRPO 为每个问题采样 $K$ 个输出,通过奖励模型打分后减去均值并除以标准差进行归一化,将所有 token 的优势值设为该归一化奖励:$$ \hat{A}_{t,k} = \frac{r_k - \text{mean}(r)}{\text{std}(r)} $$对于过程监督,则在每个推理步骤结束时赋予奖励,将 token 的优势值计算为后续所有步骤归一化奖励之和:$$ \hat{A}_{t,k} = \sum_{T_{\text{step}}(j) \ge t} R'_{\text{step}(j)_k} $$这种组内相对比较机制完美契合了奖励模型基于比较数据训练的本质,彻底免去了额外训练价值模型的显存开销。此外,模型在预训练前先进行代码训练,显著提升了后续的数学推理能力。

效果如何 实验基于 7B 参数规模的模型展开,预训练使用5000亿 tokens 混合数据,并在77.6万条数据上进行指令微调,最后仅用约14.4万条思维链数据进行强化学习。对比基线涵盖代表通用大模型的 Mistral 7B、Qwen 72B,代表数学专项预训练的 Llemma 34B,代表数学指令微调与强化学习的 WizardMath、ToRA 34B,以及代表闭源最高水平的 GPT-4、Gemini Ultra 和 Minerva 540B。量化结果显示,预训练阶段的 DeepSeekMath-Base 7B 在 MATH 数据集上比现有开源基础模型高出超10个绝对百分点,并超越了参数量大77倍的 Minerva 540B。强化学习后的 DeepSeekMath-RL 7B 在无工具思维链推理下,在 GSM8K 和 MATH 上分别达到 88.2% 和 51.7% 的准确率,击败所有 7B 到 70B 开源模型。在允许使用 Python 工具辅助的设置下,MATH 准确率接近 60%。实验也揭示了局限:单纯增加 arXiv 论文数据并未带来显著性能提升;若在单阶段预训练中强行混合代码和数学数据,受限于小模型容量,反而会损害无工具的纯数学推理能力。

A1 主要贡献

本文介绍了 DeepSeekMath,一个在数学推理方面取得显著性能的领域特定语言模型。其核心贡献可分为可扩展的数学预训练和对强化学习的探索与分析两个方面。

在可扩展的数学预训练方面:
1. 构建大规模高质量数学语料库:通过精心设计的数据筛选流程,从公开的 Common Crawl 数据中成功构建了包含1200亿词元(token)的高质量数学语料库——DeepSeekMath Corpus。该语料库的规模远超之前的研究,例如是 Minerva 使用的数学网页数据的近7倍,是 OpenWebMath 的9倍。
2. 验证小模型+高质量数据的有效性:预训练的 DeepSeekMath-Base 7B 模型性能可与比其大77倍的 Minerva 540B 相媲美,证明了模型参数量并非数学推理能力的唯一关键因素,在高质量数据上训练的小模型同样能取得强大性能。
3. 探索代码训练对数学推理的助益:研究发现,在进行数学训练之前先进行代码训练,能够提升模型在带工具和不带工具使用场景下的数学问题解决能力,为“代码训练能否提升推理能力”这一长期问题提供了肯定的部分答案。
4. 对 arXiv 论文数据的反思:实验表明,尽管在许多数学相关论文中普遍使用 arXiv 论文进行训练,但在本文所采用的数学基准测试中,并未带来显著的性能提升。

在对强化学习的探索与分析方面:
1. 提出高效的强化学习算法 GRPO:引入了组相对策略优化(Group Relative Policy Optimization, GRPO),这是一种 PPO 的变体。GRPO 无需评论家(critic)模型,而是通过组内分数来估计基线,从而显著减少了与 PPO 相比的训练资源消耗。
2. 验证 GRPO 的有效性:仅使用指令微调数据,GRPO 就显著提升了 DeepSeekMath-Instruct 模型的性能,并且在强化学习过程中观察到模型在领域外任务上的性能也有所提升。
3. 提供统一的分析范式:提出了一个统一的范式来理解包括 RFT、DPO、PPO 和 GRPO 在内的不同训练方法。通过广泛实验深入研究了该范式的关键要素(如在线与离线训练、结果与过程监督、单轮与迭代强化学习等),并基于此探讨了强化学习有效的原因,为未来实现更有效的强化学习总结了潜在方向。


A2 方法细节

2. 数学预训练

2.1. 数据收集与去污染

2.2. 验证DeepSeekMath语料库的质量

2.2.1. 训练设置
2.2.2. 评估结果

2.3. 训练和评估 DeepSeekMath-Base 7B

3. 监督微调

3.1. SFT数据策划

3.2. 训练和评估DeepSeekMath-Instruct 7B

4. 强化学习

4.1. 组相对策略优化

4.1.1. 从PPO到GRPO
4.1.2. 基于结果监督的GRPO强化学习
4.1.3. 基于过程监督的GRPO强化学习
4.1.4. 基于GRPO的迭代强化学习

4.2. 训练和评估DeepSeekMath-RL


A3 背景知识/关键观察/设计原则

5. 讨论

本节分享了在预训练和强化学习实验中的发现。

5.1. 预训练中的经验教训

5.1.1. 代码训练有益于数学推理
5.1.2. ArXiv论文在提升数学推理方面似乎无效