DeepSeek Math发布于2024年2月,虽然是一个7B参数量的模型,但在Math基准榜单上的表现却超过了多个30B~70B参数量的开源模型。
一、技术亮点
1. 数据集
使用Common Crawl提取的120B(1200亿个)高质量数学网页数据(具体包括与数学相关的token,以及自然语言和代码数据等),总数据量是开源数据集OpenWebMath的9倍。如此大规模且高质量的数据集为模型提供了丰富的数学知识背景,使得它在处理数学相关任务时具有更强的能力。
2. 训练策略
基于代码领域模型DeepSeek-Coder-v1.5进行初始化,而不是从通用语言模型开始。从而赋予模型更好的数学推理能力。
3. 对齐技术
引入了一种近端策略优化(PPO)的变体——群组相对策略优化(GRPO)。GRPO通过将相似的任务或状态分组,并根据它们之间的相对关系来调整奖励信号,从而增强了模型的泛化能力和推理性能。此外,GRPO丢弃了Critic Model,显著减少了训练所需的显存,提高了训练效率和对齐效果。
4. 数学基准表现
在中文和英文数学基准榜单上,DeepSeek Math的表现超过了Mistral 7B、Llemma-34B等模型,并且其数学推理能力逼近GPT-4,与Minerva 540B的效果相当。
二、数据
1. 数据采集
如图所示,是一个迭代Pipeline,展示了如何从一个种子语料库(例如,一个小规模但质量高的数学相关数据集)开始,系统地从Common Crawl收集大规模数学语料库。
整体数据采集过程是迭代式的。经过四轮数据收集迭代,最终收集了3550万个数学网页,总计1200亿个token。具体流程如下:
- 选择OpenWebMath(一个高质量数学网页文本的集合)作为初始种子语料库。并使用这个语料库,训练fastText模型。
- 利用训练好的FastText模型,在包含400亿网页的Common Crawl中召回更多与数学相关的网页。
- 在召回的数学网页中,通过统计识别出与数学相关的域名(例如,mathoverflow.net)。
- 对这些域名下的URL路径进行人工标注,标记出与数学内容相关的路径(例如,mathoverflow.net/questions)。
- 将这些特定路径下的网页,如果它们未被前述步骤召回,则将它们作为正样本加入到种子集合中,以供下一轮迭代使用。重复这一过程直到完成四轮迭代。
为了避免基准污染,沿用DeepSeek-Coder的n-gram过滤方法,过滤掉包含来自英语数学基准(如GSM8K和MATH)以及中文基准(如CMATH和AGIEval)的问题或答案的网页。过滤标准如下:
- 10-gram匹配:任何包含与评估基准中的子字符串完全匹配的10-gram文本段落都将从数学训练语料库中移除。
- 短文本精确匹配:对于长度不足10-gram但至少有3-gram的基准文本,采用精确匹配方法过滤受污染的网页。
2. 与开源数据对比
为了验证DeepSeekMath数据的质量,采用相同的初始化模型(DeepSeek-Coder-v1.5)和训练设置,在多个不同的数学数据集上分别训练了1500亿个token,并对比最终模型的效果。
如下图展示了不同数学数据集训练模型的效果对比。红线代表使用DeepSeekMath数据训练的模型,其在多个数学基准上的表现显著领先于其他数据集。特别地,在一个epoch范围内(例如对于Proof-Pile-2是50B tokens),DeepSeekMath数据训练的模型效果更好,进一步证明了其数据质量的优越性。
下表展示了更多详细的榜单和数据集结果对比,DeepSeekMath数据在以下几个方面表现出优势:中英双语、更大规模、更高质量。
三、训练设置
DeepSeek Math对一个具有13亿参数的通用预训练语言模型进行数学训练。该模型与DeepSeek LLM采用相同框架,记为DeepSeek LLM 1.3B。在每个数学语料库上分别对模型进行1500亿token的训练。所有实验均使用高效轻量的HAI-LLM训练框架进行。以下是详细的训练设置:
(1) 使用AdamW优化器,参数设置如下:
- 动量参数 (\beta_1 = 0.9)
- 动量参数 (\beta_2 = 0.95)
- 权重衰减系数 (weight_decay = 0.1)
(2) 采用多步学习率调度策略:
- 预热阶段:学习率在前2000个warmup steps后线性增加到最大值。
- 第一阶段:在训练进程的80%时,学习率降低到峰值的31.6%。
- 第二阶段:在训练进程的90%时,学习率进一步降低到峰值的10.0%。
(3) 最大学习率设置为。
(4) 使用400万个token的批量大小(batch size)。
(5) 上下文长度设置为4000个token(context length)。
四、对齐阶段
1. 监督式微调SFT
(1) 数据集
DeepSeek Math构建了一个数学指令微调数据集,涵盖来自不同数学领域、具有不同复杂程度的中英文数学问题。这些问题与链式思维(Chain-of-Thought, CoT)、程序思维(Program-of-Thought, PoT)和工具集成推理格式(Tool-Integrated Reasoning Format)呈现的解决方案一一配对。总共有776,000个训练样本。
- 英语数学数据集:为GSM8K和MATH问题标注了工具集成解决方案,并采用了MathInstruct的一个子集,以及Lila-OOD的训练集,其中的问题通过思维链(CoT)或程序思维(PoT)解决。英文数据集涵盖了数学的多个领域,如代数、概率、数论、微积分和几何等。
- 中国数学数据集:收集了涵盖76个子主题(如线性方程)的中文 K-12 数学问题,并标注了 CoT 和工具集成推理格式的解决方案。
(2) 微调训练
基于 DeepSeekMath-Base 进行数学指令调优,得到DeepSeekMath-Instruct 7B。训练样本随机拼接,直到达到4K token的最大上下文长度。对模型进行500个步骤的训练,批量大小为256,恒定学习率为。
2. 强化学习RL
(1) 从PPO到GRPO
近端策略优化(Proximal Policy Optimization,PPO)是一种基于演员-评论家(actor-critic)的强化学习算法,广泛应用于大语言模型的强化学习微调阶段。PPO通过最大化以下替代目标来优化大模型:
其中,
和
分别是当前策略模型和旧策略模型
- q和o分别是从问题数据集和旧策略模型
中采样得到的问题和输出。
- 参数是PPO中引入的剪切相关超参数,用于稳定训练。
是优势值,通过广义优势估计(Generalized Advantage Estimation, GAE)计算得出。
在PPO中,奖励函数 和一个学习的价值函数 起着关键作用。因此,价值函数需要与策略模型一同训练,为了缓解奖励模型的过优化问题,标准方法是在每个 token 的奖励中添加来自参考模型的每个 token 的 KL 散度惩罚项,即:
其中,
是奖励模型。
是参考模型,通常是初始的监督微调(SFT)模型。
-
是KL惩罚的系数。
由于PPO中使用的价值函数通常是与策略模型规模相当的另一个模型,这带来了巨大的内存和计算负担。此外,在强化学习训练期间,价值函数在优势值计算中被用作基线以减少方差。然而,在大语言模型的情境中,通常只有最后一个 token 由奖励模型赋予奖励分数,这可能会使在每个 token 上都准确的价值函数的训练变得复杂。
为了解决这些问题,DeepSeekMath提出了群组相对策略优化(Group Relative Policy Optimization,GRPO)。GRPO无需像PPO那样进行额外的价值函数近似,而是使用针对同一问题生成的多个采样输出的平均奖励作为基线。如下图所示:
对于每个问题q,GRPO从旧策略中采样
个输出
然后通过最大化以下目标来优化策略模型:
其中,
和
是超参数。
是基于同一组内输出的相对奖励计算的优势值。
具体步骤如下:
① 初始化策略模型:使用初始策略模型。
② 迭代优化:
- 参考模型更新:将当前策略模型
作为参考模型
。
- 采样输出:对于每个问题
,从旧策略模型
中采样
个输出
。
- 计算奖励:使用奖励模型
计算每个采样输出
的奖励
。
- 计算优势值:通过组相对优势估计计算每个 token 的优势值
。
- 更新策略模型:通过最大化 GRPO 目标函数更新策略模型
。
- 更新奖励模型:通过连续训练使用回放机制更新奖励模型
。
GRPO利用组相对的方式计算优势值,这与奖励模型的比较性质非常契合,因为奖励模型通常是在关于同一问题的输出之间的比较数据集上进行训练的。
此外,与PPO中使用的KL惩罚项不同,GRPO通过以下无偏估计器估计KL散度:
(2) 采用GRPO的结果监督强化学习
对于每个问题,从旧策略模型
中采样
个输出
。然后,使用奖励模型对这些输出进行评分,得到
个奖励
。
接下来,这些奖励通过减去组平均值并除以组标准差进行归一化。归一化后的奖励用于设置每个输出的优势值
,即
最后,通过最大化目标函数来优化策略模型。
(3) 采用GRPO的过程监督强化学习
结果监督(Outcome Supervision)仅在每个输出的末尾提供奖励,这在复杂的数学任务中可能不够充分和高效。过程监督(Process Supervision)在每个推理步骤的末尾提供奖励。
具体来说,给定问题和从旧策略模型
中采样的
个输出
,使用过程奖励模型对每个步骤的输出进行评分,得到相应的奖励:
其中,
是第
步的结束token索引。
是第
个输出的总步数。
接下来,这些奖励通过减去组平均值并除以组标准差进行归一化:
然后,过程监督计算每个 token 的优势值为后续步骤的归一化奖励之和:
最后,通过最大化目标函数来优化策略模型。
(4) 迭代强化学习
在强化学习训练过程中,旧的奖励模型可能不足以监督当前的策略模型。因此,DeepSeek Math还探索了迭代强化学习(Iterative RL)与GRPO的结合。
如下算法所示,在迭代 GRPO 中,根据策略模型的采样结果为奖励模型生成新的训练集,并使用一种纳入 10% 历史数据的回放机制持续训练旧的奖励模型。然后,将参考模型设置为策略模型,并使用新的奖励模型持续训练策略模型。
具体步骤详解如下:
(1) 初始化策略模型和奖励模型
。
(2) 迭代过程:
- 参考模型更新:将当前策略模型
作为参考模型
。
- 采样输出:对于每个问题
,从旧策略模型
中采样
个输出
。
- 计算奖励:使用奖励模型
计算每个采样输出
的奖励
。
- 归一化奖励:对奖励进行归一化处理,得到
。
- 计算优势值:计算每个 token 的优势值
为后续步骤的归一化奖励之和。
- 更新策略模型:通过最大化 GRPO 目标函数更新策略模型
。
- 更新奖励模型:通过连续训练使用回放机制更新奖励模型
,并保留10%的历史数据以确保奖励模型的稳定性。
五、模型效果
下表评估的是模型未使用工具情况下,通过自身CoT解决数学题的能力。在MATH数学竞赛数据集上,DeepSeekMath-RL 7B超过了7B~70B所有开源模型,以及大多数闭源模型(例如Inflection-2和Gemini Pro)13%的绝对值,非常接近GPT-4和Gemini Ultra性能。
其中值得注意的是,DeepSeekMath-RL 7B所有评估指标上都超过了基准模型DeepSeekMath-Instruct 7B,展示了GRPO强化学习训练的有效性。
参考:https://arxiv.org/abs/2402.03300